X-Git-Url: https://www.hackdaworld.org/gitweb/?p=physik%2Fposic.git;a=blobdiff_plain;f=sic.c;fp=sic.c;h=dea4d4bf3367e894a22a8860625be55881217650;hp=8901104bb849971bdfbd99bd59f59fc25e1dc2e6;hb=a32468230b319b32819f1b20fd28aa9659574d45;hpb=da2d9866e05b1b7a408ecda2b1695e07c30b0533 diff --git a/sic.c b/sic.c index 8901104..dea4d4b 100644 --- a/sic.c +++ b/sic.c @@ -75,8 +75,8 @@ int insert_atoms(t_moldyn *moldyn) { // 001 dumbbell r.x=(-0.5+0.25)*ALBE_LC_SI; r.y=(-0.5+0.25)*ALBE_LC_SI; - r.z=(-0.5+0.25+0.125)*ALBE_LC_SI; - moldyn->atom[4372].r.z=(-0.5+0.25-0.125)*ALBE_LC_SI; + r.z=(-0.1)*ALBE_LC_SI; + moldyn->atom[4372].r.z=(-0.4)*ALBE_LC_SI; #endif #ifdef INS_USER // 001 dumbbell @@ -86,9 +86,18 @@ int insert_atoms(t_moldyn *moldyn) { #endif #ifdef INS_RAND // random +#ifdef INS_DYNAMIC_LEN + r.x=(rand_get_double(&(moldyn->random))-0.5)*\ + moldyn->dim.x; + r.y=(rand_get_double(&(moldyn->random))-0.5)*\ + moldyn->dim.y; + r.z=(rand_get_double(&(moldyn->random))-0.5)*\ + moldyn->dim.z; +#else r.x=(rand_get_double(&(moldyn->random))-0.5)*INS_LENX; r.y=(rand_get_double(&(moldyn->random))-0.5)*INS_LENY; r.z=(rand_get_double(&(moldyn->random))-0.5)*INS_LENZ; +#endif #endif // offset r.x+=INS_OFFSET; @@ -130,6 +139,7 @@ int sic_hook(void *moldyn,void *hook_params) { int steps; double tau; double dt; + double dp; hp=hook_params; md=moldyn; @@ -139,7 +149,8 @@ int sic_hook(void *moldyn,void *hook_params) { /* switch on t scaling */ if(md->schedule.count==0) - set_pt_scale(md,0,0,T_SCALE_BERENDSEN,T_SCALE_TAU); + set_pt_scale(md,P_SCALE_BERENDSEN,P_SCALE_TAU, + T_SCALE_BERENDSEN,T_SCALE_TAU); /* my lousy state machine ! */ @@ -169,9 +180,12 @@ insert: /* check temperature */ dt=md->t_avg-md->t_ref; + dp=md->p_avg-md->p_ref; if(dt<0) dt=-dt; - if(dt>INS_DELTA_TC) + if(dp<0) + dp=-dp; + if((dt>INS_DELTA_TC)|(dp>INS_DELTA_PC)) goto addsched; /* immediately go on if no job is to be done */ @@ -196,9 +210,12 @@ postrun: /* check temperature */ dt=md->t_avg-md->t_ref; + dp=md->p_avg-md->p_ref; if(dt<0) dt=-dt; - if(dt>POST_DELTA_TC) + if(dp<0) + dp=-dp; + if((dt>POST_DELTA_TC)|(dp>POST_DELTA_PC)) goto addsched; /* immediately return if no job is to be done */ @@ -416,7 +433,7 @@ int main(int argc,char **argv) { 0,LCNTX,LCNTY,LCNTZ,&r); r.x+=0.25*ALBE_LC_SIC; r.y=r.x; r.z=r.x; create_lattice(&md,FCC,ALBE_LC_SIC,C,M_C, - ATOM_ATTR_1BP|ATOM_ATTR_2BP|ATOM_ATTR_3BP|ATOM_ATTR_HB, + ATOM_ATTR_1BP|ATOM_ATTR_2BP|ATOM_ATTR_3BP|ATOM_ATTR_HB|ATOM_ATTR_VB, 1,LCNTX,LCNTY,LCNTZ,&r); #else r.x=0.5*0.25*TM_LC_SIC; r.y=r.x; r.z=r.x; @@ -467,14 +484,14 @@ int main(int argc,char **argv) { /* set temperature & pressure */ set_temperature(&md,atof(argv[2])+273.0); - set_pressure(&md,BAR); + set_pressure(&md,0.0); /* set amount of steps to skip before average calc */ set_avg_skip(&md,AVG_SKIP); /* set p/t scaling */ //set_pt_scale(&md,0,0,T_SCALE_BERENDSEN,100.0); - //set_pt_scale(&md,P_SCALE_BERENDSEN,0.001, + //set_pt_scale(&md,P_SCALE_BERENDSEN,0.01/(100*GPA), // T_SCALE_BERENDSEN,100.0); //set_pt_scale(&md,0,0,T_SCALE_DIRECT,1.0); //set_pt_scale(&md,P_SCALE_BERENDSEN,0.001,0,0); @@ -499,7 +516,8 @@ int main(int argc,char **argv) { moldyn_set_log(&md,LOG_TOTAL_ENERGY,LOG_E); moldyn_set_log(&md,LOG_TEMPERATURE,LOG_T); moldyn_set_log(&md,LOG_PRESSURE,LOG_P); - moldyn_set_log(&md,VISUAL_STEP,LOG_V); + moldyn_set_log(&md,LOG_VOLUME,LOG_V); + moldyn_set_log(&md,VISUAL_STEP,LOG_A); moldyn_set_log(&md,SAVE_STEP,LOG_S); moldyn_set_log(&md,CREATE_REPORT,0);