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