| 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 ) { |