| 549 | 
  | 
  simInit->setSimInfo( mainInfo ); | 
| 550 | 
  | 
  simInit->suspendInit(); | 
| 551 | 
  | 
  simInit->parseFile( inName ); | 
| 552 | 
< | 
   simInit->createSim(); | 
| 552 | 
> | 
  simInit->createSim(); | 
| 553 | 
  | 
 | 
| 554 | 
  | 
  delete simInit; | 
| 555 | 
  | 
 | 
| 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" |