APBS 3.0.0
Loading...
Searching...
No Matches
pbamparm.c
Go to the documentation of this file.
1
57#include "pbamparm.h"
58
59VEMBED(rcsid="$Id$")
60
61#if !defined(VINLINE_MGPARM)
62
63#endif /* if !defined(VINLINE_MGPARM) */
64
65
67
68 /* Set up the structure */
69 PBAMparm *thee = VNULL;
70 thee = (PBAMparm*)Vmem_malloc(VNULL, 1, sizeof(PBAMparm));
71 VASSERT( thee != VNULL);
72 VASSERT( PBAMparm_ctor2(thee, type) == VRC_SUCCESS );
73
74 return thee;
75}
76
77VPUBLIC Vrc_Codes PBAMparm_ctor2(PBAMparm *thee, PBAMparm_CalcType type) {
78
79 int i;
80
81 if (thee == VNULL) return VRC_FAILURE;
82
83 thee->parsed = 0;
84 thee->type = type;
85 thee->salt = 0;
86
87 thee->setsalt = 0;
88 thee->setruntype = 0;
89 thee->setrunname = 0;
90 thee->setunits = 0;
91
92 thee->setrandorient = 0;
93
94 thee->setpbcs = 0;
95 thee->pbcboxlen = 1e15;
96
97 // Electrostatics
98 thee->gridpt = 15;
99 printf("Found a pts flag in ctor: %d\n", thee->gridpt);
100 thee->setgridpt = 0;
101 thee->set3dmap = 0;
102 thee->setgrid2Dname = 0;
103 thee->grid2Dct = 0;
104 thee->setdxname = 0;
105
106 //Dynamics
107 thee->ntraj = 1;
108 thee->setntraj = 0;
109
110 thee->settermcombine = 0;
111 thee->diffct = 0;
112
113 thee->termct = 0;
114 thee->setterm = 0;
115
116 thee->setxyz = 0;
117 for (i = 0; i<PBAMPARM_MAXMOL; i++) thee->xyzct[i] = 0;
118
119 return VRC_SUCCESS;
120}
121
122VPUBLIC void PBAMparm_dtor(PBAMparm **thee) {
123 if ((*thee) != VNULL) {
124 PBAMparm_dtor2(*thee);
125 Vmem_free(VNULL, 1, sizeof(PBAMparm), (void **)thee);
126 (*thee) = VNULL;
127 }
128}
129
130VPUBLIC void PBAMparm_dtor2(PBAMparm *thee) { ; }
131
132VPUBLIC Vrc_Codes PBAMparm_check(PBAMparm *thee) {
133
134 Vrc_Codes rc;
135
136 rc = VRC_SUCCESS;
137
138 Vnm_print(0, "PBAMparm_check: checking PBAMparm object of type %d.\n",
139 thee->type);
140
141 /* Check to see if we were even filled... */
142 if (!thee->parsed) {
143 Vnm_print(2, "PBAMparm_check: not filled!\n");
144 return VRC_FAILURE;
145 }
146
147
148 /* Check type settings */
149 if(thee->type != PBAMCT_AUTO) {
150 Vnm_print(2,"PBAMparm_check: type not set");
151 rc = VRC_FAILURE;
152 }
153
154 return rc;
155}
156
157VPUBLIC void PBAMparm_copy(PBAMparm *thee, PBAMparm *parm) {
158 int i, j, k;
159 VASSERT(thee != VNULL);
160 VASSERT(parm != VNULL);
161
162 thee->type = parm->type;
163 thee->parsed = parm->parsed;
164
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;
169
170 for (i=0; i<CHR_MAXLEN; i++) thee->runname[i] = parm->runname[i];
171 thee->setrunname = parm->setrunname;
172
173 thee->setrandorient = parm->setrandorient;
174
175 thee->setpbcs = parm->setpbcs;
176 thee->pbcboxlen = parm->pbcboxlen;
177
178 for (i=0; i<CHR_MAXLEN; i++) thee->units[i] = parm->units[i];
179 thee->setunits = parm->setunits;
180
181 // Electrostatic parts
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;
186
187
188 thee->grid2Dct = parm->grid2Dct;
189 for (i=0; i<PBAMPARM_MAXWRITE; i++)
190 {
191 for (j=0; j<CHR_MAXLEN; j++)
192 {
193 thee->grid2Dname[i][j] = parm->grid2Dname[i][j];
194 thee->grid2Dax[i][j] = parm->grid2Dax[i][j];
195 }
196 thee->grid2Dloc[i] = parm->grid2Dloc[i];
197 }
198
199 for (i=0; i<CHR_MAXLEN; i++) thee->dxname[i] = parm->dxname[i];
200 thee->setdxname = parm->setdxname;
201
202 // Dynamics parts
203 thee->ntraj = parm->ntraj;
204 thee->setntraj = parm->setntraj;
205
206 for (i=0; i<CHR_MAXLEN; i++) thee->termcombine[i] = parm->termcombine[i];
207 thee->settermcombine = parm->settermcombine;
208
209 thee->diffct = parm->diffct;
210
211 for (i=0; i<PBAMPARM_MAXMOL; i++)
212 {
213 for (j=0; j<CHR_MAXLEN; j++)
214 {
215 thee->moveType[i][j] = parm->moveType[i][j];
216 }
217 thee->transDiff[i] = parm->transDiff[i];
218 thee->rotDiff[i] = parm->rotDiff[i];
219 }
220
221 thee->termct = parm->termct;
222 thee->setterm = parm->setterm;
223 thee->confilct = parm->confilct;
224
225 for (i=0; i<PBAMPARM_MAXWRITE; i++)
226 {
227 for (j=0; j<CHR_MAXLEN; j++)
228 {
229 thee->termnam[i][j] = parm->termnam[i][j];
230 thee->confil[i][j] = parm->confil[i][j];
231 }
232 thee->termVal[i] = parm->termVal[i];
233 thee->termnu[i][0] = parm->termnu[i][0];
234 }
235
236 thee->setxyz = parm->setxyz;
237 for (i = 0; i<PBAMPARM_MAXMOL; i++)
238 {
239 thee->xyzct[i] = parm->xyzct[i];
240 for (j = 0; j<PBAMPARM_MAXWRITE; j++)
241 {
242 for (k = 0; k<CHR_MAXLEN; k++)
243 {
244 thee->xyzfil[i][j][k] = parm->xyzfil[i][j][k];
245 }
246 }
247 }
248
249}
250
251
252VPRIVATE Vrc_Codes PBAMparm_parseSalt(PBAMparm *thee, Vio *sock){
253 const char* name = "salt";
254 char tok[VMAX_BUFSIZE];
255 double tf;
256 if(Vio_scanf(sock, "%s", tok) == 0) {
257 Vnm_print(2, "parsePBAM: ran out of tokens on %s!\n", name);
258 return VRC_WARNING;
259 }
260
261 if (sscanf(tok, "%lf", &tf) == 0){
262 Vnm_print(2, "NOsh: Read non-float (%s) while parsing %s keyword!\n", tok, name);
263 return VRC_WARNING;
264 }else{
265 thee->salt = tf;
266 }
267 thee->setsalt = 1;
268 return VRC_SUCCESS;
269}
270
271VPRIVATE Vrc_Codes PBAMparm_parseRunType(PBAMparm *thee, Vio *sock){
272 const char* name = "runtype";
273 char tok[VMAX_BUFSIZE];
274
275 if(Vio_scanf(sock, "%s", tok) == 0) {
276 Vnm_print(2, "parsePBAM: ran out of tokens on %s!\n", name);
277 return VRC_WARNING;
278 } else if(Vstring_strcasecmp(tok, "dynamics") == 0){
279 Vnm_print(2, "parsePBAM: Dynamics has been moved out of the ELEC section!\n");
280 return VRC_WARNING;
281 } else {
282 strncpy(thee->runtype, tok, CHR_MAXLEN);
283 thee->setruntype=1;
284 }
285
286 return VRC_SUCCESS;
287}
288
289VPRIVATE Vrc_Codes PBAMparm_parseRunName(PBAMparm *thee, Vio *sock){
290 const char* name = "runname";
291 char tok[VMAX_BUFSIZE];
292
293 if(Vio_scanf(sock, "%s", tok) == 0) {
294 Vnm_print(2, "parsePBAM: ran out of tokens on %s!\n", name);
295 return VRC_WARNING;
296 } else {
297 strncpy(thee->runname, tok, CHR_MAXLEN);
298 thee->setrunname=1;
299 }
300
301 return VRC_SUCCESS;
302}
303
304VPRIVATE Vrc_Codes PBAMparm_parseRandorient(PBAMparm *thee, Vio *sock){
305 const char* name = "randorient";
306 thee->setrandorient=1;
307 return VRC_SUCCESS;
308}
309
310VPRIVATE Vrc_Codes PBAMparm_parsePBCS(PBAMparm *thee, Vio *sock){
311 const char* name = "pbc";
312 char tok[VMAX_BUFSIZE];
313 double tf;
314 int td;
315 if(Vio_scanf(sock, "%s", tok) == 0) {
316 Vnm_print(2, "parsePBAM: ran out of tokens on %s!\n", name);
317 return VRC_WARNING;
318 }
319
320 if (sscanf(tok, "%d", &td) == 0) {
321 Vnm_print(2, "parsePBAM: Read non-int (%s) while parsing pbc keyword!\n", tok);
322 return VRC_FAILURE;
323 } else{
324 thee->setpbcs = td;
325 }
326
327 if (sscanf(tok, "%lf", &tf) == 0){
328 Vnm_print(2, "NOsh: Read non-float (%s) while parsing %s keyword!\n", tok, name);
329 return VRC_WARNING;
330 }else{
331 thee->pbcboxlen = tf;
332 }
333 return VRC_SUCCESS;
334}
335
336VPRIVATE Vrc_Codes PBAMparm_parseUnits(PBAMparm *thee, Vio *sock){
337 const char* name = "units";
338 char tok[VMAX_BUFSIZE];
339
340 if(Vio_scanf(sock, "%s", tok) == 0) {
341 Vnm_print(2, "parsePBAM: ran out of tokens on %s!\n", name);
342 return VRC_WARNING;
343 } else {
344 strncpy(thee->units, tok, CHR_MAXLEN);
345 thee->setunits=1;
346 }
347
348 return VRC_SUCCESS;
349}
350
351VPRIVATE Vrc_Codes PBAMparm_parseGridPts(PBAMparm *thee, Vio *sock){
352 const char* name = "dime";
353 char tok[VMAX_BUFSIZE];
354 int td;
355 if(Vio_scanf(sock, "%s", tok) == 0) {
356 Vnm_print(2, "parsePBAM: ran out of tokens on %s!\n", name);
357 return VRC_WARNING;
358 }
359
360 if (sscanf(tok, "%d", &td) == 0){
361 Vnm_print(2, "NOsh: Read non-integer (%s) while parsing %s keyword!\n", tok, name);
362 return VRC_WARNING;
363 }else{
364 printf("Found a dime flag in parse: %d\n", td);
365 thee->gridpt = td;
366 }
367 thee->setgridpt = 1;
368 return VRC_SUCCESS;
369}
370
371VPRIVATE Vrc_Codes PBAMparm_parse3Dmap(PBAMparm *thee, Vio *sock){
372 const char* name = "3dmap";
373 char tok[VMAX_BUFSIZE];
374
375 Vnm_print(2, "PBAM: 3dmap keyword has been deprecated! Please use in conjuction with the write keyword.");
376 return VRC_FAILURE;
377
378 /*
379 if(Vio_scanf(sock, "%s", tok) == 0) {
380 Vnm_print(2, "parsePBAM: ran out of tokens on %s!\n", name);
381 return VRC_WARNING;
382 } else {
383 strncpy(thee->map3dname, tok, CHR_MAXLEN);
384 thee->set3dmap=1;
385 }
386
387 return VRC_SUCCESS;
388 */
389}
390
391VPRIVATE Vrc_Codes PBAMparm_parseGrid2D(PBAMparm *thee, Vio *sock){
392 const char* name = "grid2d";
393 char tok[VMAX_BUFSIZE];
394 double tf;
395
396 if(Vio_scanf(sock, "%s", tok) == 0) {
397 Vnm_print(2, "parsePBAM: ran out of tokens on %s!\n", name);
398 return VRC_WARNING;
399 } else {
400 strncpy(thee->grid2Dname[thee->grid2Dct], tok, CHR_MAXLEN);
401 thee->setgrid2Dname=1;
402 }
403
404 if(Vio_scanf(sock, "%s", tok) == 0) {
405 Vnm_print(2, "parsePBAM: ran out of tokens on %s!\n", name);
406 return VRC_WARNING;
407 } else {
408 strncpy(thee->grid2Dax[thee->grid2Dct], tok, CHR_MAXLEN);
409 }
410
411 if(Vio_scanf(sock, "%s", tok) == 0) {
412 Vnm_print(2, "parsePBAM: ran out of tokens on %s!\n", name);
413 return VRC_WARNING;
414 }
415
416 if (sscanf(tok, "%lf", &tf) == 0){
417 Vnm_print(2, "NOsh: Read non-float (%s) while parsing %s keyword!\n", tok, name);
418 return VRC_WARNING;
419 }else{
420 thee->grid2Dloc[thee->grid2Dct] = tf;
421 thee->grid2Dct = thee->grid2Dct+1;
422 }
423 return VRC_SUCCESS;
424}
425
426VPRIVATE Vrc_Codes PBAMparm_parseDX(PBAMparm *thee, Vio *sock){
427 Vnm_print(2, "PBAM's dx keyword is deprecated. Please use the write keyword!\n");
428 return VRC_FAILURE;
429 /*
430 const char* name = "dx";
431 char tok[VMAX_BUFSIZE];
432
433 if(Vio_scanf(sock, "%s", tok) == 0) {
434 Vnm_print(2, "parsePBAM: ran out of tokens on %s!\n", name);
435 return VRC_WARNING;
436 } else {
437 strncpy(thee->dxname, tok, CHR_MAXLEN);
438 thee->setdxname=1;
439 }
440 return VRC_SUCCESS;
441 */
442}
443
444VPRIVATE Vrc_Codes PBAMparm_parseTermcombine(PBAMparm *thee, Vio *sock){
445 const char* name = "termcombine";
446 char tok[VMAX_BUFSIZE];
447
448 if(Vio_scanf(sock, "%s", tok) == 0) {
449 Vnm_print(2, "parsePBAM: ran out of tokens on %s!\n", name);
450 return VRC_WARNING;
451 } else {
452 strncpy(thee->termcombine, tok, CHR_MAXLEN);
453 thee->settermcombine=1;
454 }
455 return VRC_SUCCESS;
456}
457
458VPRIVATE Vrc_Codes PBAMparm_parseNtraj(PBAMparm *thee, Vio *sock){
459 const char* name = "ntraj";
460 char tok[VMAX_BUFSIZE];
461 int td;
462 if(Vio_scanf(sock, "%s", tok) == 0) {
463 Vnm_print(2, "parsePBAM: ran out of tokens on %s!\n", name);
464 return VRC_WARNING;
465 }
466
467 if (sscanf(tok, "%d", &td) == 0){
468 Vnm_print(2, "NOsh: Read non-integer (%s) while parsing %s keyword!\n", tok, name);
469 return VRC_WARNING;
470 }else{
471 thee->ntraj = td;
472 }
473 thee->setntraj = 1;
474 return VRC_SUCCESS;
475}
476
477VPRIVATE Vrc_Codes PBAMparm_parseDiff(PBAMparm *thee, Vio *sock){
478 const char* name = "diff";
479 char tok[VMAX_BUFSIZE];
480 int molind;
481 double tf;
482
483 if(Vio_scanf(sock, "%s", tok) == 0) {
484 Vnm_print(2, "parsePBAM: ran out of tokens on %s!\n", name);
485 return VRC_WARNING;
486 }
487
488 // // looking for index
489 if (sscanf(tok, "%d", &molind) == 0){
490 Vnm_print(2, "NOsh: Read non-int (%s) while parsing %s keyword!\n", tok, name);
491 return VRC_WARNING;
492 }
493
494 molind -= 1;
495 // looking for move type = move, stat, rot
496 if(Vio_scanf(sock, "%s", tok) == 0) {
497 Vnm_print(2, "parsePBAM: ran out of tokens on %s!\n", name);
498 return VRC_WARNING;
499 } else {
500 strncpy(thee->moveType[molind], tok, CHR_MAXLEN);
501 thee->diffct += 1;
502 }
503
504 if (strncmp(thee->moveType[molind], "move", 4) == 0)
505 {
506 if(Vio_scanf(sock, "%s", tok) == 0) {
507 Vnm_print(2, "parsePBAM: ran out of tokens on %s!\n", name);
508 return VRC_WARNING;
509 }
510 if (sscanf(tok, "%lf", &tf) == 0){
511 Vnm_print(2, "NOsh: Read non-float (%s) while parsing %s keyword!\n", tok, name);
512 return VRC_WARNING;
513 }else{
514 thee->transDiff[molind] = tf;
515 }
516
517 // rot diffusion coeff
518 if(Vio_scanf(sock, "%s", tok) == 0) {
519 Vnm_print(2, "parsePBAM: ran out of tokens on %s!\n", name);
520 return VRC_WARNING;
521 }
522 if (sscanf(tok, "%lf", &tf) == 0){
523 Vnm_print(2, "NOsh: Read non-float (%s) while parsing %s keyword!\n", tok, name);
524 return VRC_WARNING;
525 }else{
526 thee->rotDiff[molind] = tf;
527 }
528 } else if (strncmp(thee->moveType[molind], "rot", 3) == 0)
529 {
530 if(Vio_scanf(sock, "%s", tok) == 0) {
531 Vnm_print(2, "parsePBAM: ran out of tokens on %s!\n", name);
532 return VRC_WARNING;
533 }
534 if (sscanf(tok, "%lf", &tf) == 0){
535 Vnm_print(2, "NOsh: Read non-float (%s) while parsing %s keyword!\n", tok, name);
536 return VRC_WARNING;
537 }else{
538 thee->rotDiff[molind] = tf;
539 thee->transDiff[molind] = 0.0;
540 }
541 } else{
542 thee->transDiff[molind] = 0.0;
543 thee->rotDiff[molind] = 0.0;
544 }
545
546 return VRC_SUCCESS;
547}
548
549VPRIVATE Vrc_Codes PBAMparm_parseTerm(PBAMparm *thee, Vio *sock){
550 const char* name = "term";
551 char tok[VMAX_BUFSIZE];
552 double tf;
553 int td;
554
555 // looking for term name
556 if(Vio_scanf(sock, "%s", tok) == 0) {
557 Vnm_print(2, "parsePBAM: ran out of tokens on %s!\n", name);
558 return VRC_WARNING;
559 }else {
560 if(strncmp(tok, "position", 8)==0){
561 return PBAMparm_parseTerm(thee, sock);
562 }else{
563 strncpy(thee->termnam[thee->termct], tok, CHR_MAXLEN);
564 }
565 }
566
567 if (strncmp(thee->termnam[thee->termct], "contact", 7) == 0)
568 {
569 if(Vio_scanf(sock, "%s", tok) == 0) {
570 Vnm_print(2, "parsePBAM: ran out of tokens on %s!\n", name);
571 return VRC_WARNING;
572 }else{
573 strncpy(thee->confil[thee->confilct], tok, CHR_MAXLEN);
574 }
575
576 if(Vio_scanf(sock, "%s", tok) == 0) {
577 Vnm_print(2, "parsePBAM: ran out of tokens on %s!\n", name);
578 return VRC_WARNING;
579 }
580 if (sscanf(tok, "%lf", &tf) == 0){
581 Vnm_print(2, "NOsh: Read non-float (%s) while parsing %s keyword!\n", tok, name);
582 return VRC_WARNING;
583 }else
584 {
585 thee->termVal[thee->termct] = tf;
586 thee->termnu[thee->termct][0] = 0;
587 thee->confilct += 1;
588 }
589 } else if (strncmp(thee->termnam[thee->termct], "time", 4) == 0)
590 {
591 if(Vio_scanf(sock, "%s", tok) == 0) {
592 Vnm_print(2, "parsePBAM: ran out of tokens on %s!\n", name);
593 return VRC_WARNING;
594 }
595 if (sscanf(tok, "%lf", &tf) == 0){
596 Vnm_print(2, "NOsh: Read non-float (%s) while parsing %s keyword!\n", tok, name);
597 return VRC_WARNING;
598 }else{
599 thee->termVal[thee->termct] = tf;
600 thee->termnu[thee->termct][0] = 0;
601 }
602 } else //if (strncmp(thee->termnam[thee->termct], "position", 8) == 0)
603 {
604 if(Vio_scanf(sock, "%s", tok) == 0) {
605 Vnm_print(2, "parsePBAM: ran out of tokens on %s!\n", name);
606 return VRC_WARNING;
607 }
608 if (sscanf(tok, "%lf", &tf) == 0){
609 Vnm_print(2, "NOsh: Read non-float (%s) while parsing %s keyword!\n", tok, name);
610 return VRC_WARNING;
611 }else{
612 thee->termVal[thee->termct] = tf;
613 }
614
615 if(Vio_scanf(sock, "%s", tok) == 0) {
616 Vnm_print(2, "parsePBAM: ran out of tokens on %s!\n", name);
617 return VRC_WARNING;
618 }
619 if (sscanf(tok, "%d", &td) == 0){
620 Vnm_print(2, "NOsh: Read non-float (%s) while parsing %s keyword!\n", tok, name);
621 return VRC_WARNING;
622 }else{
623 thee->termnu[thee->termct][0] = td-1;
624 }
625 }
626
627 thee->setterm = 1;
628 thee->termct += 1;
629 return VRC_SUCCESS;
630}
631
632VPRIVATE Vrc_Codes PBAMparm_parseXYZ(PBAMparm *thee, Vio *sock){
633 const char* name = "xyz";
634 char tok[VMAX_BUFSIZE];
635 int td, mol;
636
637 if(Vio_scanf(sock, "%s", tok) == 0) {
638 Vnm_print(2, "parsePBAM: ran out of tokens on %s!\n", name);
639 return VRC_WARNING;
640 }
641
642 // // looking for index
643 if (sscanf(tok, "%d", &td) == 0){
644 Vnm_print(2, "NOsh: Read non-int (%s) while parsing %s keyword!\n", tok, name);
645 return VRC_WARNING;
646 } else{
647 printf("This is my mol in parseXYZ: %d", td);
648 mol = td-1;
649 }
650
651 // looking for move type = move, stat, rot
652 if(Vio_scanf(sock, "%s", tok) == 0) {
653 Vnm_print(2, "parsePBAM: ran out of tokens on %s!\n", name);
654 return VRC_WARNING;
655 } else {
656 strncpy(thee->xyzfil[mol][thee->xyzct[mol]], tok, CHR_MAXLEN);
657 thee->xyzct[mol] += 1;
658 }
659 return VRC_SUCCESS;
660}
661
662VPUBLIC Vrc_Codes PBAMparm_parseToken(PBAMparm *thee, char tok[VMAX_BUFSIZE],
663 Vio *sock) {
664
665 if (thee == VNULL) {
666 Vnm_print(2, "parsePBAM: got NULL thee!\n");
667 return VRC_WARNING;
668 }
669 if (sock == VNULL) {
670 Vnm_print(2, "parsePBAM: got NULL socket!\n");
671 return VRC_WARNING;
672 }
673
674 Vnm_print(0, "PBAMparm_parseToken: trying %s...\n", tok);
675
676 // General terms to parse
677 if (Vstring_strcasecmp(tok, "salt") == 0) {
678 return PBAMparm_parseSalt(thee, sock);
679 }else if (Vstring_strcasecmp(tok, "runtype") == 0) {
680 return PBAMparm_parseRunType(thee, sock);
681 }else if (Vstring_strcasecmp(tok, "runname") == 0) {
682 return PBAMparm_parseRunName(thee, sock);
683 }else if (Vstring_strcasecmp(tok, "randorient") == 0) {
684 return PBAMparm_parseRandorient(thee, sock);
685 }else if (Vstring_strcasecmp(tok, "pbc") == 0) {
686 return PBAMparm_parsePBCS(thee, sock);
687 }else if (Vstring_strcasecmp(tok, "units") == 0) {
688 return PBAMparm_parseUnits(thee, sock);
689 }
690
691 // Electrostatic parsing
692 else if (Vstring_strcasecmp(tok, "dime") == 0) {
693 return PBAMparm_parseGridPts(thee, sock);
694 }else if (Vstring_strcasecmp(tok, "3dmap") == 0) {
695 return PBAMparm_parse3Dmap(thee, sock);
696 }else if (Vstring_strcasecmp(tok, "grid2d") == 0) {
697 return PBAMparm_parseGrid2D(thee, sock);
698 }else if (Vstring_strcasecmp(tok, "dx") == 0) {
699 return PBAMparm_parseDX(thee, sock);
700 }
701
702 // Dynamics parsing
703 else if (Vstring_strcasecmp(tok, "ntraj") == 0) {
704 return PBAMparm_parseNtraj(thee, sock);
705 }else if (Vstring_strcasecmp(tok, "termcombine") == 0) {
706 return PBAMparm_parseTermcombine(thee, sock);
707 }else if (Vstring_strcasecmp(tok, "diff") == 0) {
708 return PBAMparm_parseDiff(thee, sock);
709 }else if (Vstring_strcasecmp(tok, "term") == 0) {
710 return PBAMparm_parseTerm(thee, sock);
711 }else if (Vstring_strcasecmp(tok, "xyz") == 0) {
712 return PBAMparm_parseXYZ(thee, sock);
713 }
714
715
716 else
717 return 0;
718
719 /*else {
720 Vnm_print(2, "parsePBAM: Unrecognized keyword (%s)!\n", tok);
721 return VRC_WARNING;
722 }
723 return VRC_FAILURE;
724 */
725}
VPRIVATE Vrc_Codes PBAMparm_parse3Dmap(PBAMparm *thee, Vio *sock)
Find 3D map filename and save it.
Definition pbamparm.c:371
VPUBLIC void PBAMparm_dtor2(PBAMparm *thee)
FORTRAN stub for object destructor ?????????!!!!!!!!!!!!
Definition pbamparm.c:130
enum ePBAMparm_CalcType PBAMparm_CalcType
Declare PBAMparm_CalcType type.
Definition pbamparm.h:95
VPUBLIC void PBAMparm_copy(PBAMparm *thee, PBAMparm *parm)
copy PBAMparm object int thee.
Definition pbamparm.c:157
VPRIVATE Vrc_Codes PBAMparm_parseDX(PBAMparm *thee, Vio *sock)
Find DX filename and save it.
Definition pbamparm.c:426
VPUBLIC void PBAMparm_dtor(PBAMparm **thee)
Object destructor.
Definition pbamparm.c:122
VPUBLIC Vrc_Codes PBAMparm_ctor2(PBAMparm *thee, PBAMparm_CalcType type)
FORTRAN stub to construct PBAMparm object ?????????!!!!!!!
Definition pbamparm.c:77
VPRIVATE Vrc_Codes PBAMparm_parsePBCS(PBAMparm *thee, Vio *sock)
Find PBC flag and save the type and the boxlength.
Definition pbamparm.c:310
VPRIVATE Vrc_Codes PBAMparm_parseTermcombine(PBAMparm *thee, Vio *sock)
Find Termination logic and save it.
Definition pbamparm.c:444
VPRIVATE Vrc_Codes PBAMparm_parseGridPts(PBAMparm *thee, Vio *sock)
Find Grid points and save them.
Definition pbamparm.c:351
VPUBLIC Vrc_Codes PBAMparm_check(PBAMparm *thee)
Consistency check for parameter values stored in object.
Definition pbamparm.c:132
VPRIVATE Vrc_Codes PBAMparm_parseSalt(PBAMparm *thee, Vio *sock)
Find salt conc and save it as a structure variable.
Definition pbamparm.c:252
VPUBLIC PBAMparm * PBAMparm_ctor(PBAMparm_CalcType type)
Construct PBAMparm object.
Definition pbamparm.c:66
#define CHR_MAXLEN
Number of things that can be written out in a single calculation.
Definition pbamparm.h:76
VPRIVATE Vrc_Codes PBAMparm_parseGrid2D(PBAMparm *thee, Vio *sock)
Find 2D grid filename and save it.
Definition pbamparm.c:391
VPRIVATE Vrc_Codes PBAMparm_parseXYZ(PBAMparm *thee, Vio *sock)
Find xyz files for each molecule for each traj and save them.
Definition pbamparm.c:632
VPRIVATE Vrc_Codes PBAMparm_parseDiff(PBAMparm *thee, Vio *sock)
Find diffusion coeffs for each molecule and save them.
Definition pbamparm.c:477
VPUBLIC Vrc_Codes PBAMparm_parseToken(PBAMparm *thee, char tok[VMAX_BUFSIZE], Vio *sock)
Parse an MG keyword from an input file.
Definition pbamparm.c:662
VPRIVATE Vrc_Codes PBAMparm_parseRunType(PBAMparm *thee, Vio *sock)
Find runType and save it as a structure variable.
Definition pbamparm.c:271
VPRIVATE Vrc_Codes PBAMparm_parseRunName(PBAMparm *thee, Vio *sock)
Find runName and save it as a structure variable.
Definition pbamparm.c:289
VPRIVATE Vrc_Codes PBAMparm_parseRandorient(PBAMparm *thee, Vio *sock)
Find randomorientation flag and save it as a boolean.
Definition pbamparm.c:304
VPRIVATE Vrc_Codes PBAMparm_parseUnits(PBAMparm *thee, Vio *sock)
Find units flag and save units.
Definition pbamparm.c:336
@ PBAMCT_AUTO
Definition pbamparm.h:87
#define VEMBED(rctag)
Allows embedding of RCS ID tags in object files.
Definition vhal.h:556
@ VRC_FAILURE
Definition vhal.h:69
@ VRC_SUCCESS
Definition vhal.h:70
VPUBLIC int Vstring_strcasecmp(const char *s1, const char *s2)
Case-insensitive string comparison (BSD standard)
Definition vstring.c:66
Contains declarations for class PBAMparm.
Parameter structure for PBAM-specific variables from input files.
Definition pbamparm.h:105
int parsed
Definition pbamparm.h:108
PBAMparm_CalcType type
Definition pbamparm.h:107