| 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(); } |