3 |
|
# program that builds water boxes |
4 |
|
|
5 |
|
# author = "Chris Fennell |
6 |
< |
# version = "$Revision: 1.2 $" |
7 |
< |
# date = "$Date: 2006-09-01 22:58:33 $" |
6 |
> |
# version = "$Revision: 1.3 $" |
7 |
> |
# date = "$Date: 2006-10-02 23:27:40 $" |
8 |
|
# copyright = "Copyright (c) 2006 by the University of Notre Dame" |
9 |
|
# license = "OOPSE" |
10 |
|
|
23 |
|
$alphaInt = 0.5125; |
24 |
|
$alphaSlope = 0.025; |
25 |
|
$invalidWater = 0; |
26 |
+ |
$waterCase = -1; |
27 |
|
|
28 |
|
# get our options |
29 |
|
getopts('hmrvd:l:n:w:'); |
208 |
|
return $ret; |
209 |
|
} |
210 |
|
|
211 |
< |
sub writeOutFile{ |
211 |
> |
sub writeOutFile { |
212 |
|
# write out the header |
213 |
|
print OUTFILE "<OOPSE version=4>\n"; |
214 |
|
findCutoff(); |
268 |
|
forceField = \"DUFF\"; |
269 |
|
electrostaticSummationMethod = \"shifted_force\"; |
270 |
|
electrostaticScreeningMethod = \"damped\"; |
270 |
– |
dampingAlpha = $alpha; |
271 |
|
cutoffRadius = $cutoff; |
272 |
|
|
273 |
|
targetTemp = 300; |
286 |
|
</MetaData>\n"; |
287 |
|
} |
288 |
|
|
289 |
< |
sub findCutoff{ |
289 |
> |
sub findCutoff { |
290 |
|
$boxLength2 = 0.5*$boxLength; |
291 |
|
if ($boxLength2 > $cutoff){ |
292 |
|
# the default is good |
295 |
|
} |
296 |
|
} |
297 |
|
|
298 |
< |
sub findAlpha{ |
298 |
> |
sub findAlpha { |
299 |
|
$alpha = $alphaInt - $cutoff*$alphaSlope; |
300 |
|
} |
301 |
|
|
302 |
< |
sub printFrameData{ |
302 |
> |
sub printFrameData { |
303 |
|
print OUTFILE |
304 |
|
" <Snapshot> |
305 |
|
<FrameData> |
308 |
|
</FrameData>\n"; |
309 |
|
} |
310 |
|
|
311 |
< |
sub printWaterMD{ |
311 |
> |
sub printWaterMD { |
312 |
|
open(WATERMD, ">./water.md") || die "\tError: can't open file water.md\n"; |
313 |
+ |
$waterFileHandle = 'WATERMD'; |
314 |
|
|
315 |
|
print WATERMD "#ifndef _WATER_MD_\n#define _WATER_MD_\n"; |
316 |
|
printCl(); |
331 |
|
print WATERMD "\n\n#endif"; |
332 |
|
} |
333 |
|
|
334 |
< |
sub printCl{ |
334 |
> |
sub printCl { |
335 |
|
print $waterFileHandle "\n\nmolecule{ |
336 |
|
name = \"Cl-\"; |
337 |
|
|
342 |
|
}" |
343 |
|
} |
344 |
|
|
345 |
< |
sub printNa{ |
345 |
> |
sub printNa { |
346 |
|
print $waterFileHandle "\n\nmolecule{ |
347 |
|
name = \"Na+\"; |
348 |
|
|
353 |
|
}" |
354 |
|
} |
355 |
|
|
356 |
< |
sub printSSD_E{ |
356 |
> |
sub printSSD_E { |
357 |
|
print $waterFileHandle "\n\nmolecule{ |
358 |
|
name = \"SSD_E\"; |
359 |
|
|
365 |
|
}" |
366 |
|
} |
367 |
|
|
368 |
< |
sub printSSD_RF{ |
368 |
> |
sub printSSD_RF { |
369 |
|
print $waterFileHandle "\n\nmolecule{ |
370 |
|
name = \"SSD_RF\"; |
371 |
|
|
377 |
|
}" |
378 |
|
} |
379 |
|
|
380 |
< |
sub printSSD{ |
380 |
> |
sub printSSD { |
381 |
|
print $waterFileHandle "\n\nmolecule{ |
382 |
|
name = \"SSD\"; |
383 |
|
|
389 |
|
}" |
390 |
|
} |
391 |
|
|
392 |
< |
sub printSSD1{ |
392 |
> |
sub printSSD1 { |
393 |
|
print $waterFileHandle "\n\nmolecule{ |
394 |
|
name = \"SSD1\"; |
395 |
|
|
401 |
|
}" |
402 |
|
} |
403 |
|
|
404 |
< |
sub printTRED{ |
404 |
> |
sub printTRED { |
405 |
|
print $waterFileHandle "\n\nmolecule{ |
406 |
|
name = \"TRED\"; |
407 |
|
|
425 |
|
}" |
426 |
|
} |
427 |
|
|
428 |
< |
sub printTIP3P{ |
428 |
> |
sub printTIP3P { |
429 |
|
print $waterFileHandle "\n\nmolecule{ |
430 |
|
name = \"TIP3P\"; |
431 |
|
|
452 |
|
}" |
453 |
|
} |
454 |
|
|
455 |
< |
sub printTIP4P{ |
455 |
> |
sub printTIP4P { |
456 |
|
print $waterFileHandle "\n\nmolecule{ |
457 |
|
name = \"TIP4P\"; |
458 |
|
|
483 |
|
}" |
484 |
|
} |
485 |
|
|
486 |
< |
sub printTIP4PEw{ |
486 |
> |
sub printTIP4PEw { |
487 |
|
print $waterFileHandle "\n\nmolecule{ |
488 |
|
name = \"TIP4P-Ew\"; |
489 |
|
|
514 |
|
}" |
515 |
|
} |
516 |
|
|
517 |
< |
sub printTIP5P{ |
517 |
> |
sub printTIP5P { |
518 |
|
print $waterFileHandle "\n\nmolecule{ |
519 |
|
name = \"TIP5P\"; |
520 |
|
|
549 |
|
}" |
550 |
|
} |
551 |
|
|
552 |
< |
sub printTIP5PE{ |
552 |
> |
sub printTIP5PE { |
553 |
|
print $waterFileHandle "\n\nmolecule{ |
554 |
|
name = \"TIP5P-E\"; |
555 |
|
|
584 |
|
}" |
585 |
|
} |
586 |
|
|
587 |
< |
sub printSPCE{ |
587 |
> |
sub printSPCE { |
588 |
|
print $waterFileHandle "\n\nmolecule{ |
589 |
|
name = \"SPCE\"; |
590 |
|
|
611 |
|
}" |
612 |
|
} |
613 |
|
|
614 |
< |
sub printSPC{ |
614 |
> |
sub printSPC { |
615 |
|
print $waterFileHandle "\n\nmolecule{ |
616 |
|
name = \"SPC\"; |
617 |
|
|
638 |
|
}" |
639 |
|
} |
640 |
|
|
641 |
< |
sub printDPD{ |
641 |
> |
sub printDPD { |
642 |
|
print $waterFileHandle "\n\nmolecule{ |
643 |
|
name = \"DPD\"; |
644 |
|
|
650 |
|
} |
651 |
|
|
652 |
|
|
653 |
< |
sub printFakeWater{ |
653 |
> |
sub printFakeWater { |
654 |
|
print $waterFileHandle "\n\nmolecule{ |
655 |
|
name = \"$waterName\"; |
656 |
|
|
662 |
|
} |
663 |
|
|
664 |
|
|
665 |
< |
sub validateWater{ |
665 |
> |
sub validateWater { |
666 |
|
if ($waterName eq 'Cl-') { $waterCase = 0; } |
667 |
|
elsif ($waterName eq 'Na+') { $waterCase = 1; } |
668 |
|
elsif ($waterName eq 'SSD_E') { $waterCase = 2; } |
680 |
|
else { $invalidWater = 1; } |
681 |
|
} |
682 |
|
|
683 |
< |
sub printWaterModel{ |
683 |
> |
sub printWaterModel { |
684 |
|
if ($waterCase == 0) { printCl(); } |
685 |
|
elsif ($waterCase == 1) { printNa(); } |
686 |
|
elsif ($waterCase == 2) { printSSD_E(); } |