61 #if !defined(VINLINE_MGPARM) 71 VASSERT( thee != VNULL);
92 thee->setrandorient = 0;
95 thee->pbcboxlen = 1e15;
99 printf(
"Found a pts flag in ctor: %d\n", thee->gridpt);
102 thee->setgrid2Dname = 0;
110 thee->settermcombine = 0;
117 for (i = 0; i<PBAMPARM_MAXMOL; i++) thee->xyzct[i] = 0;
123 if ((*thee) != VNULL) {
125 Vmem_free(VNULL, 1,
sizeof(
PBAMparm), (
void **)thee);
138 Vnm_print(0,
"PBAMparm_check: checking PBAMparm object of type %d.\n",
143 Vnm_print(2,
"PBAMparm_check: not filled!\n");
150 Vnm_print(2,
"PBAMparm_check: type not set");
159 VASSERT(thee != VNULL);
160 VASSERT(parm != VNULL);
165 thee->salt = parm->salt;
166 thee->setsalt = parm->setsalt;
167 for (i=0; i<
CHR_MAXLEN; i++) thee->runtype[i] = parm->runtype[i];
168 thee->setruntype = parm->setruntype;
170 for (i=0; i<
CHR_MAXLEN; i++) thee->runname[i] = parm->runname[i];
171 thee->setrunname = parm->setrunname;
173 thee->setrandorient = parm->setrandorient;
175 thee->setpbcs = parm->setpbcs;
176 thee->pbcboxlen = parm->pbcboxlen;
178 for (i=0; i<
CHR_MAXLEN; i++) thee->units[i] = parm->units[i];
179 thee->setunits = parm->setunits;
182 thee->gridpt = parm->gridpt;
183 thee->setgridpt = parm->setgridpt;
184 for (i=0; i<
CHR_MAXLEN; i++) thee->map3dname[i] = parm->map3dname[i];
185 thee->set3dmap = parm->set3dmap;
188 thee->grid2Dct = parm->grid2Dct;
189 for (i=0; i<PBAMPARM_MAXWRITE; i++)
193 thee->grid2Dname[i][j] = parm->grid2Dname[i][j];
194 thee->grid2Dax[i][j] = parm->grid2Dax[i][j];
196 thee->grid2Dloc[i] = parm->grid2Dloc[i];
199 for (i=0; i<
CHR_MAXLEN; i++) thee->dxname[i] = parm->dxname[i];
200 thee->setdxname = parm->setdxname;
203 thee->ntraj = parm->ntraj;
204 thee->setntraj = parm->setntraj;
206 for (i=0; i<
CHR_MAXLEN; i++) thee->termcombine[i] = parm->termcombine[i];
207 thee->settermcombine = parm->settermcombine;
209 thee->diffct = parm->diffct;
211 for (i=0; i<PBAMPARM_MAXMOL; i++)
215 thee->moveType[i][j] = parm->moveType[i][j];
217 thee->transDiff[i] = parm->transDiff[i];
218 thee->rotDiff[i] = parm->rotDiff[i];
221 thee->termct = parm->termct;
222 thee->setterm = parm->setterm;
223 thee->confilct = parm->confilct;
225 for (i=0; i<PBAMPARM_MAXWRITE; i++)
229 thee->termnam[i][j] = parm->termnam[i][j];
230 thee->confil[i][j] = parm->confil[i][j];
232 thee->termVal[i] = parm->termVal[i];
233 thee->termnu[i][0] = parm->termnu[i][0];
236 thee->setxyz = parm->setxyz;
237 for (i = 0; i<PBAMPARM_MAXMOL; i++)
239 thee->xyzct[i] = parm->xyzct[i];
240 for (j = 0; j<PBAMPARM_MAXWRITE; j++)
244 thee->xyzfil[i][j][k] = parm->xyzfil[i][j][k];
253 const char* name =
"salt";
254 char tok[VMAX_BUFSIZE];
256 if(Vio_scanf(sock,
"%s", tok) == 0) {
257 Vnm_print(2,
"parsePBAM: ran out of tokens on %s!\n", name);
261 if (sscanf(tok,
"%lf", &tf) == 0){
262 Vnm_print(2,
"NOsh: Read non-float (%s) while parsing %s keyword!\n", tok, name);
272 const char* name =
"runtype";
273 char tok[VMAX_BUFSIZE];
275 if(Vio_scanf(sock,
"%s", tok) == 0) {
276 Vnm_print(2,
"parsePBAM: ran out of tokens on %s!\n", name);
287 const char* name =
"runname";
288 char tok[VMAX_BUFSIZE];
290 if(Vio_scanf(sock,
"%s", tok) == 0) {
291 Vnm_print(2,
"parsePBAM: ran out of tokens on %s!\n", name);
302 const char* name =
"randorient";
303 thee->setrandorient=1;
308 const char* name =
"pbc";
309 char tok[VMAX_BUFSIZE];
312 if(Vio_scanf(sock,
"%s", tok) == 0) {
313 Vnm_print(2,
"parsePBAM: ran out of tokens on %s!\n", name);
317 if (sscanf(tok,
"%d", &td) == 0) {
318 Vnm_print(2,
"parsePBAM: Read non-int (%s) while parsing pbc keyword!\n", tok);
324 if (sscanf(tok,
"%lf", &tf) == 0){
325 Vnm_print(2,
"NOsh: Read non-float (%s) while parsing %s keyword!\n", tok, name);
328 thee->pbcboxlen = tf;
334 const char* name =
"units";
335 char tok[VMAX_BUFSIZE];
337 if(Vio_scanf(sock,
"%s", tok) == 0) {
338 Vnm_print(2,
"parsePBAM: ran out of tokens on %s!\n", name);
349 const char* name =
"gridpts";
350 char tok[VMAX_BUFSIZE];
352 if(Vio_scanf(sock,
"%s", tok) == 0) {
353 Vnm_print(2,
"parsePBAM: ran out of tokens on %s!\n", name);
357 if (sscanf(tok,
"%d", &td) == 0){
358 Vnm_print(2,
"NOsh: Read non-integer (%s) while parsing %s keyword!\n", tok, name);
361 printf(
"Found a pts flag in parse: %d\n", td);
369 const char* name =
"3dmap";
370 char tok[VMAX_BUFSIZE];
372 if(Vio_scanf(sock,
"%s", tok) == 0) {
373 Vnm_print(2,
"parsePBAM: ran out of tokens on %s!\n", name);
384 const char* name =
"grid2d";
385 char tok[VMAX_BUFSIZE];
388 if(Vio_scanf(sock,
"%s", tok) == 0) {
389 Vnm_print(2,
"parsePBAM: ran out of tokens on %s!\n", name);
392 strncpy(thee->grid2Dname[thee->grid2Dct], tok,
CHR_MAXLEN);
393 thee->setgrid2Dname=1;
396 if(Vio_scanf(sock,
"%s", tok) == 0) {
397 Vnm_print(2,
"parsePBAM: ran out of tokens on %s!\n", name);
400 strncpy(thee->grid2Dax[thee->grid2Dct], tok,
CHR_MAXLEN);
403 if(Vio_scanf(sock,
"%s", tok) == 0) {
404 Vnm_print(2,
"parsePBAM: ran out of tokens on %s!\n", name);
408 if (sscanf(tok,
"%lf", &tf) == 0){
409 Vnm_print(2,
"NOsh: Read non-float (%s) while parsing %s keyword!\n", tok, name);
412 thee->grid2Dloc[thee->grid2Dct] = tf;
413 thee->grid2Dct = thee->grid2Dct+1;
419 const char* name =
"dx";
420 char tok[VMAX_BUFSIZE];
422 if(Vio_scanf(sock,
"%s", tok) == 0) {
423 Vnm_print(2,
"parsePBAM: ran out of tokens on %s!\n", name);
433 const char* name =
"termcombine";
434 char tok[VMAX_BUFSIZE];
436 if(Vio_scanf(sock,
"%s", tok) == 0) {
437 Vnm_print(2,
"parsePBAM: ran out of tokens on %s!\n", name);
441 thee->settermcombine=1;
446 VPRIVATE Vrc_Codes PBAMparm_parseNtraj(
PBAMparm *thee, Vio *sock){
447 const char* name =
"ntraj";
448 char tok[VMAX_BUFSIZE];
450 if(Vio_scanf(sock,
"%s", tok) == 0) {
451 Vnm_print(2,
"parsePBAM: ran out of tokens on %s!\n", name);
455 if (sscanf(tok,
"%d", &td) == 0){
456 Vnm_print(2,
"NOsh: Read non-integer (%s) while parsing %s keyword!\n", tok, name);
466 const char* name =
"diff";
467 char tok[VMAX_BUFSIZE];
471 if(Vio_scanf(sock,
"%s", tok) == 0) {
472 Vnm_print(2,
"parsePBAM: ran out of tokens on %s!\n", name);
477 if (sscanf(tok,
"%d", &molind) == 0){
478 Vnm_print(2,
"NOsh: Read non-int (%s) while parsing %s keyword!\n", tok, name);
484 if(Vio_scanf(sock,
"%s", tok) == 0) {
485 Vnm_print(2,
"parsePBAM: ran out of tokens on %s!\n", name);
488 strncpy(thee->moveType[molind], tok,
CHR_MAXLEN);
492 if (strncmp(thee->moveType[molind],
"move", 4) == 0)
494 if(Vio_scanf(sock,
"%s", tok) == 0) {
495 Vnm_print(2,
"parsePBAM: ran out of tokens on %s!\n", name);
498 if (sscanf(tok,
"%lf", &tf) == 0){
499 Vnm_print(2,
"NOsh: Read non-float (%s) while parsing %s keyword!\n", tok, name);
502 thee->transDiff[molind] = tf;
506 if(Vio_scanf(sock,
"%s", tok) == 0) {
507 Vnm_print(2,
"parsePBAM: ran out of tokens on %s!\n", name);
510 if (sscanf(tok,
"%lf", &tf) == 0){
511 Vnm_print(2,
"NOsh: Read non-float (%s) while parsing %s keyword!\n", tok, name);
514 thee->rotDiff[molind] = tf;
516 }
else if (strncmp(thee->moveType[molind],
"rot", 3) == 0)
518 if(Vio_scanf(sock,
"%s", tok) == 0) {
519 Vnm_print(2,
"parsePBAM: ran out of tokens on %s!\n", name);
522 if (sscanf(tok,
"%lf", &tf) == 0){
523 Vnm_print(2,
"NOsh: Read non-float (%s) while parsing %s keyword!\n", tok, name);
526 thee->rotDiff[molind] = tf;
527 thee->transDiff[molind] = 0.0;
530 thee->transDiff[molind] = 0.0;
531 thee->rotDiff[molind] = 0.0;
537 VPRIVATE Vrc_Codes PBAMparm_parseTerm(
PBAMparm *thee, Vio *sock){
538 const char* name =
"term";
539 char tok[VMAX_BUFSIZE];
544 if(Vio_scanf(sock,
"%s", tok) == 0) {
545 Vnm_print(2,
"parsePBAM: ran out of tokens on %s!\n", name);
548 strncpy(thee->termnam[thee->termct], tok,
CHR_MAXLEN);
551 if (strncmp(thee->termnam[thee->termct],
"contact", 7) == 0)
553 if(Vio_scanf(sock,
"%s", tok) == 0) {
554 Vnm_print(2,
"parsePBAM: ran out of tokens on %s!\n", name);
557 strncpy(thee->confil[thee->confilct], tok,
CHR_MAXLEN);
560 if(Vio_scanf(sock,
"%s", tok) == 0) {
561 Vnm_print(2,
"parsePBAM: ran out of tokens on %s!\n", name);
564 if (sscanf(tok,
"%lf", &tf) == 0){
565 Vnm_print(2,
"NOsh: Read non-float (%s) while parsing %s keyword!\n", tok, name);
569 thee->termVal[thee->termct] = tf;
570 thee->termnu[thee->termct][0] = 0;
573 }
else if (strncmp(thee->termnam[thee->termct],
"time", 4) == 0)
575 if(Vio_scanf(sock,
"%s", tok) == 0) {
576 Vnm_print(2,
"parsePBAM: ran out of tokens on %s!\n", name);
579 if (sscanf(tok,
"%lf", &tf) == 0){
580 Vnm_print(2,
"NOsh: Read non-float (%s) while parsing %s keyword!\n", tok, name);
583 thee->termVal[thee->termct] = tf;
584 thee->termnu[thee->termct][0] = 0;
588 if(Vio_scanf(sock,
"%s", tok) == 0) {
589 Vnm_print(2,
"parsePBAM: ran out of tokens on %s!\n", name);
592 if (sscanf(tok,
"%lf", &tf) == 0){
593 Vnm_print(2,
"NOsh: Read non-float (%s) while parsing %s keyword!\n", tok, name);
596 thee->termVal[thee->termct] = tf;
599 if(Vio_scanf(sock,
"%s", tok) == 0) {
600 Vnm_print(2,
"parsePBAM: ran out of tokens on %s!\n", name);
603 if (sscanf(tok,
"%d", &td) == 0){
604 Vnm_print(2,
"NOsh: Read non-float (%s) while parsing %s keyword!\n", tok, name);
607 thee->termnu[thee->termct][0] = td-1;
617 const char* name =
"xyz";
618 char tok[VMAX_BUFSIZE];
621 if(Vio_scanf(sock,
"%s", tok) == 0) {
622 Vnm_print(2,
"parsePBAM: ran out of tokens on %s!\n", name);
627 if (sscanf(tok,
"%d", &td) == 0){
628 Vnm_print(2,
"NOsh: Read non-int (%s) while parsing %s keyword!\n", tok, name);
631 printf(
"This is my mol in parseXYZ: %d", td);
636 if(Vio_scanf(sock,
"%s", tok) == 0) {
637 Vnm_print(2,
"parsePBAM: ran out of tokens on %s!\n", name);
640 strncpy(thee->xyzfil[mol][thee->xyzct[mol]], tok,
CHR_MAXLEN);
641 thee->xyzct[mol] += 1;
650 Vnm_print(2,
"parsePBAM: got NULL thee!\n");
654 Vnm_print(2,
"parsePBAM: got NULL socket!\n");
658 Vnm_print(0,
"PBAMparm_parseToken: trying %s...\n", tok);
688 return PBAMparm_parseNtraj(thee, sock);
694 return PBAMparm_parseTerm(thee, sock);
VPRIVATE Vrc_Codes PBAMparm_parseGrid2D(PBAMparm *thee, Vio *sock)
Find 2D grid filename and save it.
VPRIVATE Vrc_Codes PBAMparm_parse3Dmap(PBAMparm *thee, Vio *sock)
Find 3D map filename and save it.
#define CHR_MAXLEN
Number of things that can be written out in a single calculation.
VPRIVATE Vrc_Codes PBAMparm_parseRandorient(PBAMparm *thee, Vio *sock)
Find randomorientation flag and save it as a boolean.
VPRIVATE Vrc_Codes PBAMparm_parseDiff(PBAMparm *thee, Vio *sock)
Find diffusion coeffs for each molecule and save them.
Parameter structure for PBAM-specific variables from input files.
VPRIVATE Vrc_Codes PBAMparm_parseDX(PBAMparm *thee, Vio *sock)
Find DX filename and save it.
VPRIVATE Vrc_Codes PBAMparm_parseRunName(PBAMparm *thee, Vio *sock)
Find runName and save it as a structure variable.
VPUBLIC void PBAMparm_dtor(PBAMparm **thee)
Object destructor.
VPRIVATE Vrc_Codes PBAMparm_parseRunType(PBAMparm *thee, Vio *sock)
Find runType and save it as a structure variable.
enum ePBAMparm_CalcType PBAMparm_CalcType
Declare PBAMparm_CalcType type.
VPUBLIC void PBAMparm_copy(PBAMparm *thee, PBAMparm *parm)
copy PBAMparm object int thee.
Contains declarations for class PBAMparm.
#define VEMBED(rctag)
Allows embedding of RCS ID tags in object files.
VPUBLIC int Vstring_strcasecmp(const char *s1, const char *s2)
Case-insensitive string comparison (BSD standard)
VPRIVATE Vrc_Codes PBAMparm_parseSalt(PBAMparm *thee, Vio *sock)
Find salt conc and save it as a structure variable.
VPUBLIC Vrc_Codes PBAMparm_ctor2(PBAMparm *thee, PBAMparm_CalcType type)
FORTRAN stub to construct PBAMparm object ?????????!!!!!!!
VPRIVATE Vrc_Codes PBAMparm_parseTermcombine(PBAMparm *thee, Vio *sock)
Find Termination logic and save it.
VPRIVATE Vrc_Codes PBAMparm_parsePBCS(PBAMparm *thee, Vio *sock)
Find PBC flag and save the type and the boxlength.
VPUBLIC void PBAMparm_dtor2(PBAMparm *thee)
FORTRAN stub for object destructor ?????????!!!!!!!!!!!!
VPUBLIC Vrc_Codes PBAMparm_parseToken(PBAMparm *thee, char tok[VMAX_BUFSIZE], Vio *sock)
Parse an MG keyword from an input file.
VPRIVATE Vrc_Codes PBAMparm_parseUnits(PBAMparm *thee, Vio *sock)
Find units flag and save units.
VPUBLIC PBAMparm * PBAMparm_ctor(PBAMparm_CalcType type)
Construct PBAMparm object.
VPRIVATE Vrc_Codes PBAMparm_parseGridPts(PBAMparm *thee, Vio *sock)
Find Grid points and save them.
VPUBLIC Vrc_Codes PBAMparm_check(PBAMparm *thee)
Consistency check for parameter values stored in object.
VPRIVATE Vrc_Codes PBAMparm_parseXYZ(PBAMparm *thee, Vio *sock)
Find xyz files for each molecule for each traj and save them.