version 1.220 | version 1.221 |
---|
| |
#endif | #endif |
| |
int qsize, fsize, bsize; | int qsize, fsize, bsize; |
int alchFepOn, alchThermIntOn, lesOn, lesFactor, pairOn, selfOn, numGrids; | int alchOn, alchFepOn, alchThermIntOn, lesOn, lesFactor, pairOn, selfOn, numGrids; |
int alchDecouple; | int alchDecouple; |
int offload; | int offload; |
BigReal alchElecLambdaStart; | BigReal alchElecLambdaStart; |
| |
| |
alchLambda = -1.; // illegal value to catch if not updated | alchLambda = -1.; // illegal value to catch if not updated |
| |
| alchOn = simParams->alchOn; |
alchFepOn = simParams->alchFepOn; | alchFepOn = simParams->alchFepOn; |
alchThermIntOn = simParams->alchThermIntOn; | alchThermIntOn = simParams->alchThermIntOn; |
alchDecouple = (alchFepOn || alchThermIntOn) && (simParams->alchDecouple); | alchDecouple = alchOn && simParams->alchDecouple; |
alchElecLambdaStart = (alchFepOn || alchThermIntOn) ? | alchElecLambdaStart = alchOn ? simParams->alchElecLambdaStart : 0; |
simParams->alchElecLambdaStart : 0; | if (alchOn) { |
if (alchFepOn || alchThermIntOn) { | |
numGrids = 2; | numGrids = 2; |
if (alchDecouple) numGrids += 2; | if (alchDecouple) numGrids += 2; |
if (alchElecLambdaStart || alchThermIntOn) numGrids ++; | if (alchElecLambdaStart || alchThermIntOn) numGrids ++; |
| |
| |
offload = simParams->PMEOffload; | offload = simParams->PMEOffload; |
| |
| alchOn = simParams->alchOn; |
alchFepOn = simParams->alchFepOn; | alchFepOn = simParams->alchFepOn; |
alchThermIntOn = simParams->alchThermIntOn; | alchThermIntOn = simParams->alchThermIntOn; |
alchDecouple = (alchFepOn || alchThermIntOn) && (simParams->alchDecouple); | alchDecouple = alchOn && simParams->alchDecouple; |
alchElecLambdaStart = (alchFepOn || alchThermIntOn) ? | alchElecLambdaStart = alchOn ? simParams->alchElecLambdaStart : 0; |
simParams->alchElecLambdaStart : 0; | |
| |
if (alchFepOn || alchThermIntOn) { | if (alchOn) { |
numGrids = 2; | numGrids = 2; |
if (alchDecouple) numGrids += 2; | if (alchDecouple) numGrids += 2; |
if (alchElecLambdaStart || alchThermIntOn) numGrids ++; | if (alchElecLambdaStart || alchThermIntOn) numGrids ++; |
| |
} | } |
| |
// copy to other grids if needed | // copy to other grids if needed |
if ( ((alchFepOn || alchThermIntOn) && (!alchDecouple)) || lesOn ) { | if ( (alchOn && (!alchDecouple)) || lesOn ) { |
for ( g=0; g<numGrids; ++g ) { | for ( g=0; g<numGrids; ++g ) { |
PmeParticle *lgd = localGridData[g]; | PmeParticle *lgd = localGridData[g]; |
int nga = 0; | int nga = 0; |
| |
} | } |
numGridAtoms[g] = nga; | numGridAtoms[g] = nga; |
} | } |
} else if ( (alchFepOn || alchThermIntOn) && alchDecouple) { | } else if ( alchOn && alchDecouple) { |
// alchemical decoupling: four grids | // alchemical decoupling: four grids |
// g=0: partition 0 and partition 1 | // g=0: partition 0 and partition 1 |
// g=1: partition 0 and partition 2 | // g=1: partition 0 and partition 2 |
| |
localResults_alloc.resize(numLocalAtoms* ((numGrids>1 || selfOn)?2:1)); | localResults_alloc.resize(numLocalAtoms* ((numGrids>1 || selfOn)?2:1)); |
Vector *localResults = localResults_alloc.begin(); | Vector *localResults = localResults_alloc.begin(); |
Vector *gridResults; | Vector *gridResults; |
if ( alchFepOn || alchThermIntOn || lesOn || selfOn || pairOn ) { | if ( alchOn || lesOn || selfOn || pairOn ) { |
for(int i=0; i<numLocalAtoms; ++i) { localResults[i] = 0.; } | for(int i=0; i<numLocalAtoms; ++i) { localResults[i] = 0.; } |
gridResults = localResults + numLocalAtoms; | gridResults = localResults + numLocalAtoms; |
} else { | } else { |
| |
} | } |
scale_forces(gridResults, numGridAtoms[g], lattice); | scale_forces(gridResults, numGridAtoms[g], lattice); |
| |
if ( alchFepOn || alchThermIntOn ) { | if (alchOn) { |
float scale = 1.; | float scale = 1.; |
BigReal elecLambdaUp, elecLambdaDown; | BigReal elecLambdaUp, elecLambdaDown; |
if ( simParams->alchFepWhamOn ) { | if ( simParams->alchFepWhamOn ) { |
| |
| |
for ( int g=0; g<numGrids; ++g ) { | for ( int g=0; g<numGrids; ++g ) { |
float scale = 1.; | float scale = 1.; |
if ( alchFepOn || alchThermIntOn ) { | if (alchOn) { |
BigReal elecLambdaUp, elecLambdaDown; | BigReal elecLambdaUp, elecLambdaDown; |
if( simParams->alchFepWhamOn ) { | if( simParams->alchFepWhamOn ) { |
if( simParams->alchFepElecOn ) { | if( simParams->alchFepElecOn ) { |