| 581 |
|
double *posX, *posY, *posZ; |
| 582 |
|
double pos[3], posA[3], posB[3]; |
| 583 |
|
|
| 584 |
< |
const double waterFudge = 5.0; |
| 584 |
> |
const double waterFudge = 6.0; |
| 585 |
|
|
| 586 |
|
int i,j,k,l; |
| 587 |
|
int nAtoms, atomIndex, molIndex, molID; |
| 597 |
|
int targetWaters; |
| 598 |
|
|
| 599 |
|
Atom** atoms; |
| 600 |
– |
SimInfo* simnfo; |
| 600 |
|
SimInfo* testInfo; |
| 601 |
|
coord testSite; |
| 602 |
|
SimState* theConfig; |
| 611 |
|
int targetNlipids, targetNwaters; |
| 612 |
|
double targetWaterLipidRatio; |
| 613 |
|
double maxZ, minZ, zHeight; |
| 615 |
– |
double maxY, minY; |
| 616 |
– |
double maxX, minX; |
| 614 |
|
|
| 615 |
|
molStart = NULL; |
| 616 |
|
|
| 620 |
– |
// create the simInfo objects |
| 621 |
– |
|
| 622 |
– |
simnfo = new SimInfo; |
| 623 |
– |
|
| 617 |
|
// set the the lipidStamp |
| 618 |
|
|
| 619 |
|
foundLipid = 0; |
| 687 |
|
} |
| 688 |
|
zHeight = maxZ - minZ; |
| 689 |
|
|
| 690 |
< |
nCells = (int) sqrt( (double)targetNlipids * bLat / (4.0 * aLat) ); |
| 690 |
> |
std::cerr << "aLat = " << aLat << "; bLat = " << bLat << "\n"; |
| 691 |
> |
|
| 692 |
> |
nCells = (int)ceil( sqrt( (double)targetNlipids * bLat / (4.0 * aLat) )); |
| 693 |
|
|
| 694 |
|
nx = nCells; |
| 695 |
|
ny = (int) ((double)nCells * aLat / bLat); |
| 696 |
|
|
| 697 |
+ |
std::cerr << "nx = " << nx << "; ny = " << ny << "\n"; |
| 698 |
+ |
|
| 699 |
|
boxX = nx * aLat; |
| 700 |
|
boxY = ny * bLat; |
| 701 |
|
|
| 786 |
|
|
| 787 |
|
atoms[0]->getPos( myPos ); |
| 788 |
|
|
| 792 |
– |
maxX = myPos[0]; |
| 793 |
– |
minX = myPos[0]; |
| 794 |
– |
|
| 795 |
– |
maxY = myPos[1]; |
| 796 |
– |
minY = myPos[1]; |
| 797 |
– |
|
| 789 |
|
maxZ = myPos[2]; |
| 790 |
|
minZ = myPos[2]; |
| 791 |
|
|
| 792 |
|
for(i=0;i<nAtoms;i++){ |
| 793 |
|
atoms[i]->getPos( myPos ); |
| 803 |
– |
minX = (minX > myPos[0]) ? myPos[0] : minX; |
| 804 |
– |
maxX = (maxX < myPos[0]) ? myPos[0] : maxX; |
| 794 |
|
|
| 806 |
– |
minY = (minY > myPos[1]) ? myPos[1] : minY; |
| 807 |
– |
maxY = (maxY < myPos[1]) ? myPos[1] : maxY; |
| 808 |
– |
|
| 795 |
|
minZ = (minZ > myPos[2]) ? myPos[2] : minZ; |
| 796 |
|
maxZ = (maxZ < myPos[2]) ? myPos[2] : maxZ; |
| 797 |
|
} |
| 798 |
|
|
| 813 |
– |
boxX = (maxX - minX)+2.0; |
| 814 |
– |
boxY = (maxY - minY)+2.0; |
| 799 |
|
boxZ = (maxZ - minZ)+2.0; |
| 800 |
|
|
| 801 |
|
double centerX, centerY, centerZ; |
| 802 |
|
|
| 803 |
< |
centerX = ((maxX - minX) / 2.0) + minX; |
| 804 |
< |
centerY = ((maxY - minY) / 2.0) + minY; |
| 803 |
> |
centerX = (boxX / 2.0); |
| 804 |
> |
centerY = (boxY / 2.0); |
| 805 |
|
centerZ = ((maxZ - minZ) / 2.0) + minZ; |
| 806 |
|
|
| 807 |
|
// set up water coordinates |
| 888 |
|
|
| 889 |
|
// create the real Atom arrays |
| 890 |
|
|
| 891 |
< |
theConfig = simnfo->getConfiguration(); |
| 891 |
> |
delete[] (mainInfo->atoms); |
| 892 |
> |
theConfig = mainInfo->getConfiguration(); |
| 893 |
|
theConfig->createArrays( nAtoms ); |
| 894 |
< |
simnfo->atoms = new Atom*[nAtoms]; |
| 895 |
< |
simnfo->n_atoms = nAtoms; |
| 896 |
< |
atoms = simnfo->atoms; |
| 894 |
> |
mainInfo->atoms = new Atom*[nAtoms]; |
| 895 |
> |
mainInfo->n_atoms = nAtoms; |
| 896 |
> |
atoms = mainInfo->atoms; |
| 897 |
|
|
| 898 |
|
// wrap back to <0,0,0> as center |
| 899 |
|
|
| 912 |
|
Hmat[2][2] = boxZ; |
| 913 |
|
|
| 914 |
|
mainInfo->setBoxM( Hmat ); |
| 930 |
– |
simnfo->setBoxM( Hmat ); |
| 915 |
|
|
| 916 |
|
for(j=0;j<nLipids;j++){ |
| 917 |
|
|
| 919 |
|
lipidSites[j].pos[1] -= centerY; |
| 920 |
|
lipidSites[j].pos[2] -= centerZ; |
| 921 |
|
|
| 922 |
< |
simnfo->wrapVector( lipidSites[j].pos ); |
| 922 |
> |
mainInfo->wrapVector( lipidSites[j].pos ); |
| 923 |
|
} |
| 924 |
|
|
| 925 |
|
for(j=0;j<nWaters;j++){ |
| 928 |
|
waterSites[j].pos[1] -= centerY; |
| 929 |
|
waterSites[j].pos[2] -= centerZ; |
| 930 |
|
|
| 931 |
< |
simnfo->wrapVector( waterSites[j].pos ); |
| 931 |
> |
mainInfo->wrapVector( waterSites[j].pos ); |
| 932 |
|
} |
| 933 |
|
|
| 934 |
|
// initialize lipid positions |
| 950 |
|
molIndex++; |
| 951 |
|
} |
| 952 |
|
|
| 969 |
– |
strcpy( simnfo->sampleName, mainInfo->sampleName ); |
| 970 |
– |
strcpy( simnfo->finalName, mainInfo->finalName ); |
| 971 |
– |
|
| 953 |
|
// set up the writer and write out |
| 954 |
|
|
| 955 |
< |
writer = new DumpWriter( simnfo ); |
| 955 |
> |
writer = new DumpWriter( mainInfo ); |
| 956 |
|
writer->writeFinal( 0.0 ); |
| 957 |
|
|
| 958 |
|
std::cout << "\n" |