| 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 .md 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 .md\n" |
| 1016 |
+ |
"\tfile. To avoid confusion, specify only one technique in\n" |
| 1017 |
+ |
"\tyour .md 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 .md 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 .md 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 .md 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 |
< |
|
| 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 |
< |
} |
| 1094 |
> |
|
| 1095 |
|
|
| 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 |
– |
} |
| 1096 |
|
|
| 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(); |
| 1014 |
– |
|
| 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; |
| 1305 |
|
} |
| 1306 |
|
else{ |
| 1307 |
|
|
| 1308 |
< |
// no init from bass |
| 1308 |
> |
// no init from md file |
| 1309 |
|
|
| 1310 |
|
sprintf(painCave.errMsg, |
| 1311 |
|
"Cannot intialize a simulation without an initial configuration file.\n"); |
| 1323 |
|
|
| 1324 |
|
void SimSetup::makeOutNames(void){ |
| 1325 |
|
int k; |
| 1326 |
+ |
string prefix; |
| 1327 |
|
|
| 1306 |
– |
|
| 1328 |
|
for (k = 0; k < nInfo; k++){ |
| 1329 |
|
#ifdef IS_MPI |
| 1330 |
|
if (worldRank == 0){ |
| 1331 |
|
#endif // is_mpi |
| 1332 |
+ |
|
| 1333 |
+ |
if(globals->haveFinalConfig()) |
| 1334 |
+ |
prefix = getPrefix(globals->getFinalConfig()); |
| 1335 |
+ |
else |
| 1336 |
+ |
prefix = getPrefix(info[k].finalName); |
| 1337 |
|
|
| 1338 |
< |
if (globals->haveFinalConfig()){ |
| 1339 |
< |
strcpy(info[k].finalName, globals->getFinalConfig()); |
| 1340 |
< |
} |
| 1315 |
< |
else{ |
| 1316 |
< |
strcpy(info[k].finalName, inFileName); |
| 1317 |
< |
char* endTest; |
| 1318 |
< |
int nameLength = strlen(info[k].finalName); |
| 1319 |
< |
endTest = &(info[k].finalName[nameLength - 5]); |
| 1320 |
< |
if (!strcmp(endTest, ".bass")){ |
| 1321 |
< |
strcpy(endTest, ".eor"); |
| 1322 |
< |
} |
| 1323 |
< |
else if (!strcmp(endTest, ".BASS")){ |
| 1324 |
< |
strcpy(endTest, ".eor"); |
| 1325 |
< |
} |
| 1326 |
< |
else{ |
| 1327 |
< |
endTest = &(info[k].finalName[nameLength - 4]); |
| 1328 |
< |
if (!strcmp(endTest, ".bss")){ |
| 1329 |
< |
strcpy(endTest, ".eor"); |
| 1330 |
< |
} |
| 1331 |
< |
else if (!strcmp(endTest, ".mdl")){ |
| 1332 |
< |
strcpy(endTest, ".eor"); |
| 1333 |
< |
} |
| 1334 |
< |
else{ |
| 1335 |
< |
strcat(info[k].finalName, ".eor"); |
| 1336 |
< |
} |
| 1337 |
< |
} |
| 1338 |
< |
} |
| 1339 |
< |
|
| 1340 |
< |
// make the sample and status out names |
| 1341 |
< |
|
| 1342 |
< |
strcpy(info[k].sampleName, inFileName); |
| 1343 |
< |
char* endTest; |
| 1344 |
< |
int nameLength = strlen(info[k].sampleName); |
| 1345 |
< |
endTest = &(info[k].sampleName[nameLength - 5]); |
| 1346 |
< |
if (!strcmp(endTest, ".bass")){ |
| 1347 |
< |
strcpy(endTest, ".dump"); |
| 1348 |
< |
} |
| 1349 |
< |
else if (!strcmp(endTest, ".BASS")){ |
| 1350 |
< |
strcpy(endTest, ".dump"); |
| 1351 |
< |
} |
| 1352 |
< |
else{ |
| 1353 |
< |
endTest = &(info[k].sampleName[nameLength - 4]); |
| 1354 |
< |
if (!strcmp(endTest, ".bss")){ |
| 1355 |
< |
strcpy(endTest, ".dump"); |
| 1356 |
< |
} |
| 1357 |
< |
else if (!strcmp(endTest, ".mdl")){ |
| 1358 |
< |
strcpy(endTest, ".dump"); |
| 1359 |
< |
} |
| 1360 |
< |
else{ |
| 1361 |
< |
strcat(info[k].sampleName, ".dump"); |
| 1362 |
< |
} |
| 1363 |
< |
} |
| 1364 |
< |
|
| 1365 |
< |
strcpy(info[k].statusName, inFileName); |
| 1366 |
< |
nameLength = strlen(info[k].statusName); |
| 1367 |
< |
endTest = &(info[k].statusName[nameLength - 5]); |
| 1368 |
< |
if (!strcmp(endTest, ".bass")){ |
| 1369 |
< |
strcpy(endTest, ".stat"); |
| 1370 |
< |
} |
| 1371 |
< |
else if (!strcmp(endTest, ".BASS")){ |
| 1372 |
< |
strcpy(endTest, ".stat"); |
| 1373 |
< |
} |
| 1374 |
< |
else{ |
| 1375 |
< |
endTest = &(info[k].statusName[nameLength - 4]); |
| 1376 |
< |
if (!strcmp(endTest, ".bss")){ |
| 1377 |
< |
strcpy(endTest, ".stat"); |
| 1378 |
< |
} |
| 1379 |
< |
else if (!strcmp(endTest, ".mdl")){ |
| 1380 |
< |
strcpy(endTest, ".stat"); |
| 1381 |
< |
} |
| 1382 |
< |
else{ |
| 1383 |
< |
strcat(info[k].statusName, ".stat"); |
| 1384 |
< |
} |
| 1385 |
< |
} |
| 1386 |
< |
|
| 1387 |
< |
strcpy(info[k].rawPotName, inFileName); |
| 1388 |
< |
nameLength = strlen(info[k].rawPotName); |
| 1389 |
< |
endTest = &(info[k].rawPotName[nameLength - 5]); |
| 1390 |
< |
if (!strcmp(endTest, ".bass")){ |
| 1391 |
< |
strcpy(endTest, ".raw"); |
| 1392 |
< |
} |
| 1393 |
< |
else if (!strcmp(endTest, ".BASS")){ |
| 1394 |
< |
strcpy(endTest, ".raw"); |
| 1395 |
< |
} |
| 1396 |
< |
else{ |
| 1397 |
< |
endTest = &(info[k].rawPotName[nameLength - 4]); |
| 1398 |
< |
if (!strcmp(endTest, ".bss")){ |
| 1399 |
< |
strcpy(endTest, ".raw"); |
| 1400 |
< |
} |
| 1401 |
< |
else if (!strcmp(endTest, ".mdl")){ |
| 1402 |
< |
strcpy(endTest, ".raw"); |
| 1403 |
< |
} |
| 1404 |
< |
else{ |
| 1405 |
< |
strcat(info[k].rawPotName, ".raw"); |
| 1406 |
< |
} |
| 1407 |
< |
} |
| 1338 |
> |
info[k].finalName = prefix + ".eor"; |
| 1339 |
> |
info[k].sampleName = prefix + ".dump"; |
| 1340 |
> |
info[k].statusName = prefix + ".stat"; |
| 1341 |
|
|
| 1342 |
|
#ifdef IS_MPI |
| 1343 |
|
|
| 1718 |
|
else |
| 1719 |
|
myNVT = new NVT<RealIntegrator>(&(info[k]), the_ff); |
| 1720 |
|
|
| 1721 |
< |
myNVT->setTargetTemp(globals->getTargetTemp()); |
| 1721 |
> |
|
| 1722 |
> |
if (globals->haveTargetTemp()) |
| 1723 |
> |
myNVT->setTargetTemp(globals->getTargetTemp()); |
| 1724 |
> |
else{ |
| 1725 |
> |
sprintf(painCave.errMsg, |
| 1726 |
> |
"SimSetup error: If you use the NVT\n" |
| 1727 |
> |
"\tensemble, you must set targetTemp.\n"); |
| 1728 |
> |
painCave.isFatal = 1; |
| 1729 |
> |
simError(); |
| 1730 |
> |
} |
| 1731 |
|
|
| 1732 |
|
if (globals->haveTauThermostat()) |
| 1733 |
|
myNVT->setTauThermostat(globals->getTauThermostat()); |
| 1750 |
|
else |
| 1751 |
|
myNPTi = new NPTi<NPT<RealIntegrator> >(&(info[k]), the_ff); |
| 1752 |
|
|
| 1753 |
< |
myNPTi->setTargetTemp(globals->getTargetTemp()); |
| 1753 |
> |
if (globals->haveTargetTemp()) |
| 1754 |
> |
myNPTi->setTargetTemp(globals->getTargetTemp()); |
| 1755 |
> |
else{ |
| 1756 |
> |
sprintf(painCave.errMsg, |
| 1757 |
> |
"SimSetup error: If you use a constant pressure\n" |
| 1758 |
> |
"\tensemble, you must set targetTemp.\n"); |
| 1759 |
> |
painCave.isFatal = 1; |
| 1760 |
> |
simError(); |
| 1761 |
> |
} |
| 1762 |
|
|
| 1763 |
|
if (globals->haveTargetPressure()) |
| 1764 |
|
myNPTi->setTargetPressure(globals->getTargetPressure()); |
| 1801 |
|
else |
| 1802 |
|
myNPTf = new NPTf<NPT <RealIntegrator> >(&(info[k]), the_ff); |
| 1803 |
|
|
| 1804 |
< |
myNPTf->setTargetTemp(globals->getTargetTemp()); |
| 1804 |
> |
if (globals->haveTargetTemp()) |
| 1805 |
> |
myNPTf->setTargetTemp(globals->getTargetTemp()); |
| 1806 |
> |
else{ |
| 1807 |
> |
sprintf(painCave.errMsg, |
| 1808 |
> |
"SimSetup error: If you use a constant pressure\n" |
| 1809 |
> |
"\tensemble, you must set targetTemp.\n"); |
| 1810 |
> |
painCave.isFatal = 1; |
| 1811 |
> |
simError(); |
| 1812 |
> |
} |
| 1813 |
|
|
| 1814 |
|
if (globals->haveTargetPressure()) |
| 1815 |
|
myNPTf->setTargetPressure(globals->getTargetPressure()); |
| 1854 |
|
else |
| 1855 |
|
myNPTxyz = new NPTxyz<NPT <RealIntegrator> >(&(info[k]), the_ff); |
| 1856 |
|
|
| 1857 |
< |
myNPTxyz->setTargetTemp(globals->getTargetTemp()); |
| 1857 |
> |
if (globals->haveTargetTemp()) |
| 1858 |
> |
myNPTxyz->setTargetTemp(globals->getTargetTemp()); |
| 1859 |
> |
else{ |
| 1860 |
> |
sprintf(painCave.errMsg, |
| 1861 |
> |
"SimSetup error: If you use a constant pressure\n" |
| 1862 |
> |
"\tensemble, you must set targetTemp.\n"); |
| 1863 |
> |
painCave.isFatal = 1; |
| 1864 |
> |
simError(); |
| 1865 |
> |
} |
| 1866 |
|
|
| 1867 |
|
if (globals->haveTargetPressure()) |
| 1868 |
|
myNPTxyz->setTargetPressure(globals->getTargetPressure()); |