projects
/
physik
/
posic.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
unstable but might run ...
[physik/posic.git]
/
mdrun.c
diff --git
a/mdrun.c
b/mdrun.c
index
c4b6df2
..
8c5cf71
100644
(file)
--- a/
mdrun.c
+++ b/
mdrun.c
@@
-140,7
+140,7
@@
int mdrun_parse_config(t_mdrun *mdrun) {
char *wptr;
char word[16][32];
int wcnt;
char *wptr;
char word[16][32];
int wcnt;
- int i;
+ int i
,o
;
t_insert_atoms_params iap;
t_continue_params cp;
t_insert_atoms_params iap;
t_continue_params cp;
@@
-201,6
+201,8
@@
int mdrun_parse_config(t_mdrun *mdrun) {
}
else if(!strncmp(word[0],"cutoff",6))
mdrun->cutoff=atof(word[1]);
}
else if(!strncmp(word[0],"cutoff",6))
mdrun->cutoff=atof(word[1]);
+ else if(!strncmp(word[0],"nnd",3))
+ mdrun->nnd=atof(word[1]);
else if(!strncmp(word[0],"intalgo",7)) {
if(!strncmp(word[1],"verlet",5))
mdrun->intalgo=MOLDYN_INTEGRATE_VERLET;
else if(!strncmp(word[0],"intalgo",7)) {
if(!strncmp(word[1],"verlet",5))
mdrun->intalgo=MOLDYN_INTEGRATE_VERLET;
@@
-242,39
+244,18
@@
int mdrun_parse_config(t_mdrun *mdrun) {
}
else if(!strncmp(word[0],"element1",8)) {
mdrun->element1=atoi(word[1]);
}
else if(!strncmp(word[0],"element1",8)) {
mdrun->element1=atoi(word[1]);
- switch(mdrun->element1) {
- case SI:
- mdrun->m1=M_SI;
- break;
- case C:
- mdrun->m1=M_C;
- break;
- default:
- printf("%s unknown element1: %s|%d\n",
- ME,word[1],mdrun->element1);
- return -1;
- }
+ mdrun->m1=pse_mass[mdrun->element1];
}
else if(!strncmp(word[0],"element2",8)) {
mdrun->element2=atoi(word[1]);
}
else if(!strncmp(word[0],"element2",8)) {
mdrun->element2=atoi(word[1]);
- switch(mdrun->element2) {
- case SI:
- mdrun->m2=M_SI;
- break;
- case C:
- mdrun->m2=M_C;
- break;
- default:
- printf("%s unknown element2: %s|%d\n",
- ME,word[1],mdrun->element2);
- return -1;
- }
+ mdrun->m2=pse_mass[mdrun->element2];
}
else if(!strncmp(word[0],"fill",6)) {
// only lc mode by now
mdrun->lx=atoi(word[2]);
mdrun->ly=atoi(word[3]);
mdrun->lz=atoi(word[4]);
}
else if(!strncmp(word[0],"fill",6)) {
// only lc mode by now
mdrun->lx=atoi(word[2]);
mdrun->ly=atoi(word[3]);
mdrun->lz=atoi(word[4]);
+ mdrun->lc=atof(word[5]);
}
else if(!strncmp(word[0],"aattr",5)) {
// for aatrib line we need a special stage
}
else if(!strncmp(word[0],"aattr",5)) {
// for aatrib line we need a special stage
@@
-294,7
+275,7
@@
int mdrun_parse_config(t_mdrun *mdrun) {
break;
}
}
break;
}
}
- i=
1
;
+ i=
2
;
if(cap.type&CHAATTR_REGION) {
cap.x0=atof(word[1]);
cap.y0=atof(word[2]);
if(cap.type&CHAATTR_REGION) {
cap.x0=atof(word[1]);
cap.y0=atof(word[2]);
@@
-308,9
+289,8
@@
int mdrun_parse_config(t_mdrun *mdrun) {
cap.element=atoi(word[i]);
i+=1;
}
cap.element=atoi(word[i]);
i+=1;
}
- wptr=word[i];
- for(i=0;i<strlen(wptr);i++) {
- switch(word[2][i]) {
+ for(o=0;o<strlen(word[i]);o++) {
+ switch(word[i][o]) {
case 'b':
cap.attr|=ATOM_ATTR_VB;
break;
case 'b':
cap.attr|=ATOM_ATTR_VB;
break;
@@
-341,24
+321,31
@@
int mdrun_parse_config(t_mdrun *mdrun) {
else if(!strncmp(word[0],"sattr",5)) {
// for satrib line we need a special stage
// containing one schedule of 0 loops ...
else if(!strncmp(word[0],"sattr",5)) {
// for satrib line we need a special stage
// containing one schedule of 0 loops ...
+ csp.type=0;
for(i=1;i<wcnt;i++) {
if(!strncmp(word[i],"pctrl",5)) {
for(i=1;i<wcnt;i++) {
if(!strncmp(word[i],"pctrl",5)) {
- csp.ptau=atof(word[++i]);
+ csp.ptau=0.01/(atof(word[++i])*GPA);
+ csp.type|=CHSATTR_PCTRL;
}
if(!strncmp(word[i],"tctrl",5)) {
csp.ttau=atof(word[++i]);
}
if(!strncmp(word[i],"tctrl",5)) {
csp.ttau=atof(word[++i]);
+ csp.type|=CHSATTR_TCTRL;
}
if(!strncmp(word[i],"prelax",6)) {
csp.dp=atof(word[++i]);
}
if(!strncmp(word[i],"prelax",6)) {
csp.dp=atof(word[++i]);
+ csp.type|=CHSATTR_PRELAX;
}
if(!strncmp(word[i],"trelax",6)) {
csp.dt=atof(word[++i]);
}
if(!strncmp(word[i],"trelax",6)) {
csp.dt=atof(word[++i]);
+ csp.type|=CHSATTR_TRELAX;
}
if(!strncmp(word[i],"rsteps",6)) {
csp.rsteps=atoi(word[++i]);
}
if(!strncmp(word[i],"rsteps",6)) {
csp.rsteps=atoi(word[++i]);
+ csp.type|=CHSATTR_RSTEPS;
}
if(!strncmp(word[i],"avgrst",6)) {
csp.avgrst=atoi(word[++i]);
}
if(!strncmp(word[i],"avgrst",6)) {
csp.avgrst=atoi(word[++i]);
+ csp.type|=CHSATTR_AVGRST;
}
}
add_stage(mdrun,STAGE_CHSATTR,&csp);
}
}
add_stage(mdrun,STAGE_CHSATTR,&csp);
@@
-654,6
+641,9
@@
int chsattr(t_moldyn *moldyn,t_mdrun *mdrun) {
return 0;
}
return 0;
}
+#define stage_print(m) if(!(stage->executed)) \
+ printf("%s",m)
+
int mdrun_hook(void *ptr1,void *ptr2) {
t_moldyn *moldyn;
int mdrun_hook(void *ptr1,void *ptr2) {
t_moldyn *moldyn;
@@
-689,10
+679,16
@@
int mdrun_hook(void *ptr1,void *ptr2) {
/* check whether relaxation steps are necessary */
if(!((check_pressure(moldyn,mdrun)==FALSE)|\
(check_temperature(moldyn,mdrun)==FALSE))) {
/* check whether relaxation steps are necessary */
if(!((check_pressure(moldyn,mdrun)==FALSE)|\
(check_temperature(moldyn,mdrun)==FALSE))) {
+
+ /* be verbose */
+ stage_print("\n###########################\n");
+ stage_print("# [mdrun] executing stage #\n");
+ stage_print("###########################\n\n");
/* stage specific stuff */
switch(stage->type) {
case STAGE_INSERT_ATOMS:
/* stage specific stuff */
switch(stage->type) {
case STAGE_INSERT_ATOMS:
+ stage_print(" -> insert atoms\n\n");
iap=stage->params;
if(iap->cnt_steps==iap->ins_steps) {
change_stage=TRUE;
iap=stage->params;
if(iap->cnt_steps==iap->ins_steps) {
change_stage=TRUE;
@@
-702,6
+698,7
@@
int mdrun_hook(void *ptr1,void *ptr2) {
iap->cnt_steps+=1;
break;
case STAGE_CONTINUE:
iap->cnt_steps+=1;
break;
case STAGE_CONTINUE:
+ stage_print(" -> continue\n\n");
if(stage->executed==TRUE) {
change_stage=TRUE;
break;
if(stage->executed==TRUE) {
change_stage=TRUE;
break;
@@
-710,6
+707,7
@@
int mdrun_hook(void *ptr1,void *ptr2) {
steps=cp->runs;
break;
case STAGE_ANNEAL:
steps=cp->runs;
break;
case STAGE_ANNEAL:
+ stage_print(" -> anneal\n\n");
ap=stage->params;
if(ap->count==ap->runs) {
change_stage=TRUE;
ap=stage->params;
if(ap->count==ap->runs) {
change_stage=TRUE;
@@
-719,10
+717,12
@@
int mdrun_hook(void *ptr1,void *ptr2) {
ap->count+=1;
break;
case STAGE_CHAATTR:
ap->count+=1;
break;
case STAGE_CHAATTR:
+ stage_print(" -> chaattr\n\n");
chaatr(moldyn,mdrun);
change_stage=TRUE;
break;
case STAGE_CHSATTR:
chaatr(moldyn,mdrun);
change_stage=TRUE;
break;
case STAGE_CHSATTR:
+ stage_print(" -> chsattr\n\n");
chsattr(moldyn,mdrun);
change_stage=TRUE;
break;
chsattr(moldyn,mdrun);
change_stage=TRUE;
break;
@@
-766,8
+766,9
@@
int main(int argc,char **argv) {
t_moldyn moldyn;
t_3dvec o;
t_moldyn moldyn;
t_3dvec o;
- /* clear
mdrun struct
*/
+ /* clear
structs
*/
memset(&mdrun,0,sizeof(t_mdrun));
memset(&mdrun,0,sizeof(t_mdrun));
+ memset(&moldyn,0,sizeof(t_moldyn));
/* parse arguments */
if(mdrun_parse_argv(&mdrun,argc,argv)<0)
/* parse arguments */
if(mdrun_parse_argv(&mdrun,argc,argv)<0)
@@
-818,22
+819,22
@@
int main(int argc,char **argv) {
switch(mdrun.lattice) {
case FCC:
create_lattice(&moldyn,FCC,mdrun.lc,mdrun.element1,
switch(mdrun.lattice) {
case FCC:
create_lattice(&moldyn,FCC,mdrun.lc,mdrun.element1,
- mdrun.m1,
0
,0,mdrun.lx,
+ mdrun.m1,
DEFAULT_ATOM_ATTR
,0,mdrun.lx,
mdrun.ly,mdrun.lz,NULL);
break;
case DIAMOND:
create_lattice(&moldyn,DIAMOND,mdrun.lc,mdrun.element1,
mdrun.ly,mdrun.lz,NULL);
break;
case DIAMOND:
create_lattice(&moldyn,DIAMOND,mdrun.lc,mdrun.element1,
- mdrun.m1,
0
,0,mdrun.lx,
+ mdrun.m1,
DEFAULT_ATOM_ATTR
,0,mdrun.lx,
mdrun.ly,mdrun.lz,NULL);
break;
case ZINCBLENDE:
o.x=0.5*0.25*mdrun.lc; o.y=o.x; o.z=o.x;
create_lattice(&moldyn,FCC,mdrun.lc,mdrun.element1,
mdrun.ly,mdrun.lz,NULL);
break;
case ZINCBLENDE:
o.x=0.5*0.25*mdrun.lc; o.y=o.x; o.z=o.x;
create_lattice(&moldyn,FCC,mdrun.lc,mdrun.element1,
- mdrun.m1,
0
,0,mdrun.lx,
+ mdrun.m1,
DEFAULT_ATOM_ATTR
,0,mdrun.lx,
mdrun.ly,mdrun.lz,&o);
o.x+=0.25*mdrun.lc; o.y=o.x; o.z=o.x;
create_lattice(&moldyn,FCC,mdrun.lc,mdrun.element2,
mdrun.ly,mdrun.lz,&o);
o.x+=0.25*mdrun.lc; o.y=o.x; o.z=o.x;
create_lattice(&moldyn,FCC,mdrun.lc,mdrun.element2,
- mdrun.m2,
0
,1,mdrun.lx,
+ mdrun.m2,
DEFAULT_ATOM_ATTR
,1,mdrun.lx,
mdrun.ly,mdrun.lz,&o);
break;
default:
mdrun.ly,mdrun.lz,&o);
break;
default: