| 824 |
|
// set the easy ones first |
| 825 |
|
|
| 826 |
|
for (i = 0; i < nInfo; i++){ |
| 827 |
< |
info[i].target_temp = globals->getTargetTemp(); |
| 828 |
< |
info[i].dt = globals->getDt(); |
| 829 |
< |
info[i].run_time = globals->getRunTime(); |
| 830 |
< |
} |
| 827 |
> |
if (globals->haveTargetTemp()) { |
| 828 |
> |
info[i].target_temp = globals->getTargetTemp(); |
| 829 |
> |
info[i].have_target_temp = 1; |
| 830 |
> |
} else { |
| 831 |
> |
info[i].have_target_temp = 0; |
| 832 |
> |
} |
| 833 |
> |
if (globals->haveDt()) { |
| 834 |
> |
info[i].dt = globals->getDt(); |
| 835 |
> |
} |
| 836 |
> |
if (globals->haveRunTime()) { |
| 837 |
> |
info[i].run_time = globals->getRunTime(); |
| 838 |
> |
} |
| 839 |
> |
} |
| 840 |
|
n_components = globals->getNComponents(); |
| 841 |
|
|
| 842 |
|
|
| 869 |
|
|
| 870 |
|
// get the ensemble |
| 871 |
|
|
| 863 |
– |
strcpy(ensemble, globals->getEnsemble()); |
| 872 |
|
|
| 873 |
< |
if (!strcasecmp(ensemble, "NVE")){ |
| 874 |
< |
ensembleCase = NVE_ENS; |
| 875 |
< |
} |
| 876 |
< |
else if (!strcasecmp(ensemble, "NVT")){ |
| 877 |
< |
ensembleCase = NVT_ENS; |
| 878 |
< |
} |
| 879 |
< |
else if (!strcasecmp(ensemble, "NPTi") || !strcasecmp(ensemble, "NPT")){ |
| 880 |
< |
ensembleCase = NPTi_ENS; |
| 881 |
< |
} |
| 882 |
< |
else if (!strcasecmp(ensemble, "NPTf")){ |
| 883 |
< |
ensembleCase = NPTf_ENS; |
| 884 |
< |
} |
| 885 |
< |
else if (!strcasecmp(ensemble, "NPTxyz")){ |
| 886 |
< |
ensembleCase = NPTxyz_ENS; |
| 887 |
< |
} |
| 888 |
< |
else{ |
| 889 |
< |
sprintf(painCave.errMsg, |
| 890 |
< |
"SimSetup Warning. Unrecognized Ensemble -> %s \n" |
| 891 |
< |
"\treverting to NVE for this simulation.\n", |
| 892 |
< |
ensemble); |
| 893 |
< |
painCave.isFatal = 0; |
| 894 |
< |
simError(); |
| 895 |
< |
strcpy(ensemble, "NVE"); |
| 896 |
< |
ensembleCase = NVE_ENS; |
| 897 |
< |
} |
| 898 |
< |
|
| 899 |
< |
for (i = 0; i < nInfo; i++){ |
| 900 |
< |
strcpy(info[i].ensemble, ensemble); |
| 873 |
> |
if (globals->haveEnsemble()) { |
| 874 |
> |
|
| 875 |
> |
strcpy(ensemble, globals->getEnsemble()); |
| 876 |
> |
|
| 877 |
> |
if (!strcasecmp(ensemble, "NVE")){ |
| 878 |
> |
ensembleCase = NVE_ENS; |
| 879 |
> |
} |
| 880 |
> |
else if (!strcasecmp(ensemble, "NVT")){ |
| 881 |
> |
ensembleCase = NVT_ENS; |
| 882 |
> |
} |
| 883 |
> |
else if (!strcasecmp(ensemble, "NPTi") || !strcasecmp(ensemble, "NPT")){ |
| 884 |
> |
ensembleCase = NPTi_ENS; |
| 885 |
> |
} |
| 886 |
> |
else if (!strcasecmp(ensemble, "NPTf")){ |
| 887 |
> |
ensembleCase = NPTf_ENS; |
| 888 |
> |
} |
| 889 |
> |
else if (!strcasecmp(ensemble, "NPTxyz")){ |
| 890 |
> |
ensembleCase = NPTxyz_ENS; |
| 891 |
> |
} |
| 892 |
> |
else{ |
| 893 |
> |
sprintf(painCave.errMsg, |
| 894 |
> |
"SimSetup Warning. Unrecognized Ensemble -> %s \n" |
| 895 |
> |
"\treverting to NVE for this simulation.\n", |
| 896 |
> |
ensemble); |
| 897 |
> |
painCave.isFatal = 0; |
| 898 |
> |
simError(); |
| 899 |
> |
strcpy(ensemble, "NVE"); |
| 900 |
> |
ensembleCase = NVE_ENS; |
| 901 |
> |
} |
| 902 |
> |
|
| 903 |
> |
for (i = 0; i < nInfo; i++) |
| 904 |
> |
strcpy(info[i].ensemble, ensemble); |
| 905 |
> |
|
| 906 |
> |
|
| 907 |
> |
//check whether sample time, status time, thermal time and reset time are divisble by dt |
| 908 |
> |
if (globals->haveSampleTime() && !isDivisible(globals->getSampleTime(), globals->getDt())){ |
| 909 |
> |
sprintf(painCave.errMsg, |
| 910 |
> |
"Sample time is not divisible by dt.\n" |
| 911 |
> |
"\tThis will result in samples that are not uniformly\n" |
| 912 |
> |
"\tdistributed in time. If this is a problem, change\n" |
| 913 |
> |
"\tyour sampleTime variable.\n"); |
| 914 |
> |
painCave.isFatal = 0; |
| 915 |
> |
simError(); |
| 916 |
> |
} |
| 917 |
> |
|
| 918 |
> |
if (globals->haveStatusTime() && !isDivisible(globals->getStatusTime(), globals->getDt())){ |
| 919 |
> |
sprintf(painCave.errMsg, |
| 920 |
> |
"Status time is not divisible by dt.\n" |
| 921 |
> |
"\tThis will result in status reports that are not uniformly\n" |
| 922 |
> |
"\tdistributed in time. If this is a problem, change \n" |
| 923 |
> |
"\tyour statusTime variable.\n"); |
| 924 |
> |
painCave.isFatal = 0; |
| 925 |
> |
simError(); |
| 926 |
> |
} |
| 927 |
> |
|
| 928 |
> |
if (globals->haveThermalTime() && !isDivisible(globals->getThermalTime(), globals->getDt())){ |
| 929 |
> |
sprintf(painCave.errMsg, |
| 930 |
> |
"Thermal time is not divisible by dt.\n" |
| 931 |
> |
"\tThis will result in thermalizations that are not uniformly\n" |
| 932 |
> |
"\tdistributed in time. If this is a problem, change \n" |
| 933 |
> |
"\tyour thermalTime variable.\n"); |
| 934 |
> |
painCave.isFatal = 0; |
| 935 |
> |
simError(); |
| 936 |
> |
} |
| 937 |
> |
|
| 938 |
> |
if (globals->haveResetTime() && !isDivisible(globals->getResetTime(), globals->getDt())){ |
| 939 |
> |
sprintf(painCave.errMsg, |
| 940 |
> |
"Reset time is not divisible by dt.\n" |
| 941 |
> |
"\tThis will result in integrator resets that are not uniformly\n" |
| 942 |
> |
"\tdistributed in time. If this is a problem, change\n" |
| 943 |
> |
"\tyour resetTime variable.\n"); |
| 944 |
> |
painCave.isFatal = 0; |
| 945 |
> |
simError(); |
| 946 |
> |
} |
| 947 |
> |
|
| 948 |
> |
// set the status, sample, and thermal kick times |
| 949 |
> |
|
| 950 |
> |
for (i = 0; i < nInfo; i++){ |
| 951 |
> |
if (globals->haveSampleTime()){ |
| 952 |
> |
info[i].sampleTime = globals->getSampleTime(); |
| 953 |
> |
info[i].statusTime = info[i].sampleTime; |
| 954 |
> |
} |
| 955 |
> |
else{ |
| 956 |
> |
info[i].sampleTime = globals->getRunTime(); |
| 957 |
> |
info[i].statusTime = info[i].sampleTime; |
| 958 |
> |
} |
| 959 |
> |
|
| 960 |
> |
if (globals->haveStatusTime()){ |
| 961 |
> |
info[i].statusTime = globals->getStatusTime(); |
| 962 |
> |
} |
| 963 |
> |
|
| 964 |
> |
if (globals->haveThermalTime()){ |
| 965 |
> |
info[i].thermalTime = globals->getThermalTime(); |
| 966 |
> |
} else { |
| 967 |
> |
info[i].thermalTime = globals->getRunTime(); |
| 968 |
> |
} |
| 969 |
> |
|
| 970 |
> |
info[i].resetIntegrator = 0; |
| 971 |
> |
if( globals->haveResetTime() ){ |
| 972 |
> |
info[i].resetTime = globals->getResetTime(); |
| 973 |
> |
info[i].resetIntegrator = 1; |
| 974 |
> |
} |
| 975 |
> |
} |
| 976 |
|
|
| 977 |
+ |
|
| 978 |
+ |
for (i=0; i < nInfo; i++) { |
| 979 |
+ |
|
| 980 |
+ |
// check for the temperature set flag |
| 981 |
+ |
|
| 982 |
+ |
if (globals->haveTempSet()) |
| 983 |
+ |
info[i].setTemp = globals->getTempSet(); |
| 984 |
+ |
|
| 985 |
+ |
// check for the extended State init |
| 986 |
+ |
|
| 987 |
+ |
info[i].useInitXSstate = globals->getUseInitXSstate(); |
| 988 |
+ |
info[i].orthoTolerance = globals->getOrthoBoxTolerance(); |
| 989 |
+ |
|
| 990 |
+ |
// check for thermodynamic integration |
| 991 |
+ |
if (globals->getUseSolidThermInt() && !globals->getUseLiquidThermInt()) { |
| 992 |
+ |
if (globals->haveThermIntLambda() && globals->haveThermIntK()) { |
| 993 |
+ |
info[i].useSolidThermInt = globals->getUseSolidThermInt(); |
| 994 |
+ |
info[i].thermIntLambda = globals->getThermIntLambda(); |
| 995 |
+ |
info[i].thermIntK = globals->getThermIntK(); |
| 996 |
+ |
|
| 997 |
+ |
Restraints *myRestraint = new Restraints(tot_nmol, info[i].thermIntLambda, info[i].thermIntK); |
| 998 |
+ |
info[i].restraint = myRestraint; |
| 999 |
+ |
} |
| 1000 |
+ |
else { |
| 1001 |
+ |
sprintf(painCave.errMsg, |
| 1002 |
+ |
"SimSetup Error:\n" |
| 1003 |
+ |
"\tKeyword useSolidThermInt was set to 'true' but\n" |
| 1004 |
+ |
"\tthermodynamicIntegrationLambda (and/or\n" |
| 1005 |
+ |
"\tthermodynamicIntegrationK) was not specified.\n" |
| 1006 |
+ |
"\tPlease provide a lambda value and k value in your .bass file.\n"); |
| 1007 |
+ |
painCave.isFatal = 1; |
| 1008 |
+ |
simError(); |
| 1009 |
+ |
} |
| 1010 |
+ |
} |
| 1011 |
+ |
else if(globals->getUseLiquidThermInt()) { |
| 1012 |
+ |
if (globals->getUseSolidThermInt()) { |
| 1013 |
+ |
sprintf( painCave.errMsg, |
| 1014 |
+ |
"SimSetup Warning: It appears that you have both solid and\n" |
| 1015 |
+ |
"\tliquid thermodynamic integration activated in your .bass\n" |
| 1016 |
+ |
"\tfile. To avoid confusion, specify only one technique in\n" |
| 1017 |
+ |
"\tyour .bass file. Liquid-state thermodynamic integration\n" |
| 1018 |
+ |
"\twill be assumed for the current simulation. If this is not\n" |
| 1019 |
+ |
"\twhat you desire, set useSolidThermInt to 'true' and\n" |
| 1020 |
+ |
"\tuseLiquidThermInt to 'false' in your .bass file.\n"); |
| 1021 |
+ |
painCave.isFatal = 0; |
| 1022 |
+ |
simError(); |
| 1023 |
+ |
} |
| 1024 |
+ |
if (globals->haveThermIntLambda() && globals->haveThermIntK()) { |
| 1025 |
+ |
info[i].useLiquidThermInt = globals->getUseLiquidThermInt(); |
| 1026 |
+ |
info[i].thermIntLambda = globals->getThermIntLambda(); |
| 1027 |
+ |
info[i].thermIntK = globals->getThermIntK(); |
| 1028 |
+ |
} |
| 1029 |
+ |
else { |
| 1030 |
+ |
sprintf(painCave.errMsg, |
| 1031 |
+ |
"SimSetup Error:\n" |
| 1032 |
+ |
"\tKeyword useLiquidThermInt was set to 'true' but\n" |
| 1033 |
+ |
"\tthermodynamicIntegrationLambda (and/or\n" |
| 1034 |
+ |
"\tthermodynamicIntegrationK) was not specified.\n" |
| 1035 |
+ |
"\tPlease provide a lambda value and k value in your .bass file.\n"); |
| 1036 |
+ |
painCave.isFatal = 1; |
| 1037 |
+ |
simError(); |
| 1038 |
+ |
} |
| 1039 |
+ |
} |
| 1040 |
+ |
else if(globals->haveThermIntLambda() || globals->haveThermIntK()){ |
| 1041 |
+ |
sprintf(painCave.errMsg, |
| 1042 |
+ |
"SimSetup Warning: If you want to use Thermodynamic\n" |
| 1043 |
+ |
"\tIntegration, set useSolidThermInt or useLiquidThermInt to\n" |
| 1044 |
+ |
"\t'true' in your .bass file. These keywords are set to\n" |
| 1045 |
+ |
"\t'false' by default, so your lambda and/or k values are\n" |
| 1046 |
+ |
"\tbeing ignored.\n"); |
| 1047 |
+ |
painCave.isFatal = 0; |
| 1048 |
+ |
simError(); |
| 1049 |
+ |
} |
| 1050 |
+ |
} |
| 1051 |
+ |
} |
| 1052 |
+ |
|
| 1053 |
+ |
for (i = 0; i < nInfo; i++) { |
| 1054 |
|
// get the mixing rule |
| 1055 |
< |
|
| 1055 |
> |
|
| 1056 |
|
strcpy(info[i].mixingRule, globals->getMixingRule()); |
| 1057 |
|
info[i].usePBC = globals->getPBC(); |
| 1058 |
|
} |
| 1059 |
< |
|
| 1059 |
> |
|
| 1060 |
|
// get the components and calculate the tot_nMol and indvidual n_mol |
| 1061 |
< |
|
| 1061 |
> |
|
| 1062 |
|
the_components = globals->getComponents(); |
| 1063 |
|
components_nmol = new int[n_components]; |
| 1064 |
< |
|
| 905 |
< |
|
| 1064 |
> |
|
| 1065 |
|
if (!globals->haveNMol()){ |
| 1066 |
|
// we don't have the total number of molecules, so we assume it is |
| 1067 |
|
// given in each component |
| 1091 |
|
painCave.isFatal = 1; |
| 1092 |
|
simError(); |
| 1093 |
|
} |
| 1094 |
+ |
|
| 1095 |
|
|
| 936 |
– |
//check whether sample time, status time, thermal time and reset time are divisble by dt |
| 937 |
– |
if (globals->haveSampleTime() && !isDivisible(globals->getSampleTime(), globals->getDt())){ |
| 938 |
– |
sprintf(painCave.errMsg, |
| 939 |
– |
"Sample time is not divisible by dt.\n" |
| 940 |
– |
"\tThis will result in samples that are not uniformly\n" |
| 941 |
– |
"\tdistributed in time. If this is a problem, change\n" |
| 942 |
– |
"\tyour sampleTime variable.\n"); |
| 943 |
– |
painCave.isFatal = 0; |
| 944 |
– |
simError(); |
| 945 |
– |
} |
| 946 |
– |
|
| 947 |
– |
if (globals->haveStatusTime() && !isDivisible(globals->getStatusTime(), globals->getDt())){ |
| 948 |
– |
sprintf(painCave.errMsg, |
| 949 |
– |
"Status time is not divisible by dt.\n" |
| 950 |
– |
"\tThis will result in status reports that are not uniformly\n" |
| 951 |
– |
"\tdistributed in time. If this is a problem, change \n" |
| 952 |
– |
"\tyour statusTime variable.\n"); |
| 953 |
– |
painCave.isFatal = 0; |
| 954 |
– |
simError(); |
| 955 |
– |
} |
| 956 |
– |
|
| 957 |
– |
if (globals->haveThermalTime() && !isDivisible(globals->getThermalTime(), globals->getDt())){ |
| 958 |
– |
sprintf(painCave.errMsg, |
| 959 |
– |
"Thermal time is not divisible by dt.\n" |
| 960 |
– |
"\tThis will result in thermalizations that are not uniformly\n" |
| 961 |
– |
"\tdistributed in time. If this is a problem, change \n" |
| 962 |
– |
"\tyour thermalTime variable.\n"); |
| 963 |
– |
painCave.isFatal = 0; |
| 964 |
– |
simError(); |
| 965 |
– |
} |
| 966 |
– |
|
| 967 |
– |
if (globals->haveResetTime() && !isDivisible(globals->getResetTime(), globals->getDt())){ |
| 968 |
– |
sprintf(painCave.errMsg, |
| 969 |
– |
"Reset time is not divisible by dt.\n" |
| 970 |
– |
"\tThis will result in integrator resets that are not uniformly\n" |
| 971 |
– |
"\tdistributed in time. If this is a problem, change\n" |
| 972 |
– |
"\tyour resetTime variable.\n"); |
| 973 |
– |
painCave.isFatal = 0; |
| 974 |
– |
simError(); |
| 975 |
– |
} |
| 976 |
– |
|
| 977 |
– |
// set the status, sample, and thermal kick times |
| 978 |
– |
|
| 979 |
– |
for (i = 0; i < nInfo; i++){ |
| 980 |
– |
if (globals->haveSampleTime()){ |
| 981 |
– |
info[i].sampleTime = globals->getSampleTime(); |
| 982 |
– |
info[i].statusTime = info[i].sampleTime; |
| 983 |
– |
} |
| 984 |
– |
else{ |
| 985 |
– |
info[i].sampleTime = globals->getRunTime(); |
| 986 |
– |
info[i].statusTime = info[i].sampleTime; |
| 987 |
– |
} |
| 988 |
– |
|
| 989 |
– |
if (globals->haveStatusTime()){ |
| 990 |
– |
info[i].statusTime = globals->getStatusTime(); |
| 991 |
– |
} |
| 992 |
– |
|
| 993 |
– |
if (globals->haveThermalTime()){ |
| 994 |
– |
info[i].thermalTime = globals->getThermalTime(); |
| 995 |
– |
} else { |
| 996 |
– |
info[i].thermalTime = globals->getRunTime(); |
| 997 |
– |
} |
| 998 |
– |
|
| 999 |
– |
info[i].resetIntegrator = 0; |
| 1000 |
– |
if( globals->haveResetTime() ){ |
| 1001 |
– |
info[i].resetTime = globals->getResetTime(); |
| 1002 |
– |
info[i].resetIntegrator = 1; |
| 1003 |
– |
} |
| 1004 |
– |
|
| 1005 |
– |
// check for the temperature set flag |
| 1006 |
– |
|
| 1007 |
– |
if (globals->haveTempSet()) |
| 1008 |
– |
info[i].setTemp = globals->getTempSet(); |
| 1009 |
– |
|
| 1010 |
– |
// check for the extended State init |
| 1011 |
– |
|
| 1012 |
– |
info[i].useInitXSstate = globals->getUseInitXSstate(); |
| 1013 |
– |
info[i].orthoTolerance = globals->getOrthoBoxTolerance(); |
| 1096 |
|
|
| 1015 |
– |
// check for thermodynamic integration |
| 1016 |
– |
if (globals->getUseSolidThermInt() && !globals->getUseLiquidThermInt()) { |
| 1017 |
– |
if (globals->haveThermIntLambda() && globals->haveThermIntK()) { |
| 1018 |
– |
info[i].useSolidThermInt = globals->getUseSolidThermInt(); |
| 1019 |
– |
info[i].thermIntLambda = globals->getThermIntLambda(); |
| 1020 |
– |
info[i].thermIntK = globals->getThermIntK(); |
| 1021 |
– |
|
| 1022 |
– |
Restraints *myRestraint = new Restraints(tot_nmol, info[i].thermIntLambda, info[i].thermIntK); |
| 1023 |
– |
info[i].restraint = myRestraint; |
| 1024 |
– |
} |
| 1025 |
– |
else { |
| 1026 |
– |
sprintf(painCave.errMsg, |
| 1027 |
– |
"SimSetup Error:\n" |
| 1028 |
– |
"\tKeyword useSolidThermInt was set to 'true' but\n" |
| 1029 |
– |
"\tthermodynamicIntegrationLambda (and/or\n" |
| 1030 |
– |
"\tthermodynamicIntegrationK) was not specified.\n" |
| 1031 |
– |
"\tPlease provide a lambda value and k value in your .bass file.\n"); |
| 1032 |
– |
painCave.isFatal = 1; |
| 1033 |
– |
simError(); |
| 1034 |
– |
} |
| 1035 |
– |
} |
| 1036 |
– |
else if(globals->getUseLiquidThermInt()) { |
| 1037 |
– |
if (globals->getUseSolidThermInt()) { |
| 1038 |
– |
sprintf( painCave.errMsg, |
| 1039 |
– |
"SimSetup Warning: It appears that you have both solid and\n" |
| 1040 |
– |
"\tliquid thermodynamic integration activated in your .bass\n" |
| 1041 |
– |
"\tfile. To avoid confusion, specify only one technique in\n" |
| 1042 |
– |
"\tyour .bass file. Liquid-state thermodynamic integration\n" |
| 1043 |
– |
"\twill be assumed for the current simulation. If this is not\n" |
| 1044 |
– |
"\twhat you desire, set useSolidThermInt to 'true' and\n" |
| 1045 |
– |
"\tuseLiquidThermInt to 'false' in your .bass file.\n"); |
| 1046 |
– |
painCave.isFatal = 0; |
| 1047 |
– |
simError(); |
| 1048 |
– |
} |
| 1049 |
– |
if (globals->haveThermIntLambda() && globals->haveThermIntK()) { |
| 1050 |
– |
info[i].useLiquidThermInt = globals->getUseLiquidThermInt(); |
| 1051 |
– |
info[i].thermIntLambda = globals->getThermIntLambda(); |
| 1052 |
– |
info[i].thermIntK = globals->getThermIntK(); |
| 1053 |
– |
} |
| 1054 |
– |
else { |
| 1055 |
– |
sprintf(painCave.errMsg, |
| 1056 |
– |
"SimSetup Error:\n" |
| 1057 |
– |
"\tKeyword useLiquidThermInt was set to 'true' but\n" |
| 1058 |
– |
"\tthermodynamicIntegrationLambda (and/or\n" |
| 1059 |
– |
"\tthermodynamicIntegrationK) was not specified.\n" |
| 1060 |
– |
"\tPlease provide a lambda value and k value in your .bass file.\n"); |
| 1061 |
– |
painCave.isFatal = 1; |
| 1062 |
– |
simError(); |
| 1063 |
– |
} |
| 1064 |
– |
} |
| 1065 |
– |
else if(globals->haveThermIntLambda() || globals->haveThermIntK()){ |
| 1066 |
– |
sprintf(painCave.errMsg, |
| 1067 |
– |
"SimSetup Warning: If you want to use Thermodynamic\n" |
| 1068 |
– |
"\tIntegration, set useSolidThermInt or useLiquidThermInt to\n" |
| 1069 |
– |
"\t'true' in your .bass file. These keywords are set to\n" |
| 1070 |
– |
"\t'false' by default, so your lambda and/or k values are\n" |
| 1071 |
– |
"\tbeing ignored.\n"); |
| 1072 |
– |
painCave.isFatal = 0; |
| 1073 |
– |
simError(); |
| 1074 |
– |
} |
| 1075 |
– |
} |
| 1097 |
|
|
| 1098 |
|
//setup seed for random number generator |
| 1099 |
|
int seedValue; |
| 1806 |
|
else |
| 1807 |
|
myNVT = new NVT<RealIntegrator>(&(info[k]), the_ff); |
| 1808 |
|
|
| 1809 |
< |
myNVT->setTargetTemp(globals->getTargetTemp()); |
| 1809 |
> |
|
| 1810 |
> |
if (globals->haveTargetTemp()) |
| 1811 |
> |
myNVT->setTargetTemp(globals->getTargetTemp()); |
| 1812 |
> |
else{ |
| 1813 |
> |
sprintf(painCave.errMsg, |
| 1814 |
> |
"SimSetup error: If you use the NVT\n" |
| 1815 |
> |
"\tensemble, you must set targetTemp.\n"); |
| 1816 |
> |
painCave.isFatal = 1; |
| 1817 |
> |
simError(); |
| 1818 |
> |
} |
| 1819 |
|
|
| 1820 |
|
if (globals->haveTauThermostat()) |
| 1821 |
|
myNVT->setTauThermostat(globals->getTauThermostat()); |
| 1838 |
|
else |
| 1839 |
|
myNPTi = new NPTi<NPT<RealIntegrator> >(&(info[k]), the_ff); |
| 1840 |
|
|
| 1841 |
< |
myNPTi->setTargetTemp(globals->getTargetTemp()); |
| 1841 |
> |
if (globals->haveTargetTemp()) |
| 1842 |
> |
myNPTi->setTargetTemp(globals->getTargetTemp()); |
| 1843 |
> |
else{ |
| 1844 |
> |
sprintf(painCave.errMsg, |
| 1845 |
> |
"SimSetup error: If you use a constant pressure\n" |
| 1846 |
> |
"\tensemble, you must set targetTemp.\n"); |
| 1847 |
> |
painCave.isFatal = 1; |
| 1848 |
> |
simError(); |
| 1849 |
> |
} |
| 1850 |
|
|
| 1851 |
|
if (globals->haveTargetPressure()) |
| 1852 |
|
myNPTi->setTargetPressure(globals->getTargetPressure()); |
| 1889 |
|
else |
| 1890 |
|
myNPTf = new NPTf<NPT <RealIntegrator> >(&(info[k]), the_ff); |
| 1891 |
|
|
| 1892 |
< |
myNPTf->setTargetTemp(globals->getTargetTemp()); |
| 1892 |
> |
if (globals->haveTargetTemp()) |
| 1893 |
> |
myNPTf->setTargetTemp(globals->getTargetTemp()); |
| 1894 |
> |
else{ |
| 1895 |
> |
sprintf(painCave.errMsg, |
| 1896 |
> |
"SimSetup error: If you use a constant pressure\n" |
| 1897 |
> |
"\tensemble, you must set targetTemp.\n"); |
| 1898 |
> |
painCave.isFatal = 1; |
| 1899 |
> |
simError(); |
| 1900 |
> |
} |
| 1901 |
|
|
| 1902 |
|
if (globals->haveTargetPressure()) |
| 1903 |
|
myNPTf->setTargetPressure(globals->getTargetPressure()); |
| 1942 |
|
else |
| 1943 |
|
myNPTxyz = new NPTxyz<NPT <RealIntegrator> >(&(info[k]), the_ff); |
| 1944 |
|
|
| 1945 |
< |
myNPTxyz->setTargetTemp(globals->getTargetTemp()); |
| 1945 |
> |
if (globals->haveTargetTemp()) |
| 1946 |
> |
myNPTxyz->setTargetTemp(globals->getTargetTemp()); |
| 1947 |
> |
else{ |
| 1948 |
> |
sprintf(painCave.errMsg, |
| 1949 |
> |
"SimSetup error: If you use a constant pressure\n" |
| 1950 |
> |
"\tensemble, you must set targetTemp.\n"); |
| 1951 |
> |
painCave.isFatal = 1; |
| 1952 |
> |
simError(); |
| 1953 |
> |
} |
| 1954 |
|
|
| 1955 |
|
if (globals->haveTargetPressure()) |
| 1956 |
|
myNPTxyz->setTargetPressure(globals->getTargetPressure()); |