ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE/libBASS/Globals.cpp
(Generate patch)

Comparing:
branches/mmeineke/OOPSE/libBASS/Globals.cpp (file contents), Revision 377 by mmeineke, Fri Mar 21 17:42:12 2003 UTC vs.
trunk/OOPSE/libBASS/Globals.cpp (file contents), Revision 745 by mmeineke, Thu Sep 4 21:48:07 2003 UTC

# Line 25 | Line 25
25   #define G_RUNTIME     6
26  
27   //optional parameters
28 < #define G_INITIALCONFIG 7
29 < #define G_FINALCONFIG   8
30 < #define G_NMOL          9
31 < #define G_DENSITY       10
32 < #define G_BOX           11
33 < #define G_BOXX          12
34 < #define G_BOXY          13
35 < #define G_BOXZ          14
36 < #define G_SAMPLETIME    15
37 < #define G_STATUSTIME    16
38 < #define G_RRF           17
39 < #define G_DIELECTRIC    18
40 < #define G_TEMPSET       19
41 < #define G_THERMALTIME   20
42 < #define G_USEPBC 21
43 < #define G_MIXINGRULE 22
28 > #define G_INITIALCONFIG   7
29 > #define G_FINALCONFIG     8
30 > #define G_NMOL            9
31 > #define G_DENSITY        10
32 > #define G_BOX            11
33 > #define G_BOXX           12
34 > #define G_BOXY           13
35 > #define G_BOXZ           14
36 > #define G_SAMPLETIME     15
37 > #define G_STATUSTIME     16
38 > #define G_ECR            17
39 > #define G_DIELECTRIC     18
40 > #define G_TEMPSET        19
41 > #define G_THERMALTIME    20
42 > #define G_USEPBC         21
43 > #define G_MIXINGRULE     22
44 > #define G_EST            23
45 > #define G_USERF          24
46 > #define G_TARGETPRESSURE 25
47 > #define G_TAUTHERMOSTAT  26
48 > #define G_TAUBAROSTAT    27
49 > #define G_ZCONSTIME      28
50 > #define G_NZCONSTRAINTS  29
51 > #define G_ZCONSTOL       30
52 > #define G_ZCONSFORCEPOLICY 31
53 > #define G_SEED           32
54 > #define G_RESETTIME      33
55  
45
56   Globals::Globals(){
57    
58    int i;
# Line 69 | Line 79 | Globals::Globals(){
79    addHash( "boxY",          G_BOXY );
80    addHash( "boxZ",          G_BOXZ );
81    addHash( "sampleTime",    G_SAMPLETIME );
82 +  addHash( "resetTime",     G_RESETTIME );
83    addHash( "statusTime",    G_STATUSTIME );
84 <  addHash( "rRF",           G_RRF );
84 >  addHash( "electrostaticCutoffRadius",            G_ECR );
85    addHash( "dielectric",    G_DIELECTRIC );
86    addHash( "tempSet",       G_TEMPSET );
87    addHash( "thermalTime",   G_THERMALTIME );
88    addHash( "mixingRule",    G_MIXINGRULE);
89 <  addHash( "periodicBox",   G_USEPBC);
90 <  
89 >  addHash( "usePeriodicBoundaryConditions",        G_USEPBC);
90 >  addHash( "electrostaticSkinThickness",           G_EST );
91 >  addHash( "useReactionField",                     G_USERF );
92 >  addHash( "targetPressure",                       G_TARGETPRESSURE);
93 >  addHash( "tauThermostat",                        G_TAUTHERMOSTAT);
94 >  addHash( "tauBarostat",                          G_TAUBAROSTAT);
95 >  addHash( "zconsTime",                            G_ZCONSTIME);
96 >  addHash( "nZconstraints",                        G_NZCONSTRAINTS);
97 >  addHash( "zconsTol",                             G_ZCONSTOL);
98 >  addHash( "zconsForcePolicy",                     G_ZCONSFORCEPOLICY);
99 >  addHash( "seed",                                 G_SEED);
100 >        
101 >        
102    // define some default values
103  
104    strcpy( mixingRule,"standard");  //default mixing rules to standard.
105    usePBC = 1; //default  periodic boundry conditions to on
106 +  useRF  = 0;
107    
85
108    have_force_field =  0;
109    have_n_components = 0;
110    have_target_temp =  0;
# Line 101 | Line 123 | Globals::Globals(){
123    have_box_z =          0;
124    have_sample_time =    0;
125    have_status_time =    0;
126 +  have_reset_time =     0;
127    have_thermal_time =   0;
128 <  have_rrf =            0;
128 >  have_ecr =            0;
129    have_dielectric =     0;
130    have_tempSet =        0;
131 < }
131 >  have_est =            0;
132 >  have_target_pressure =0;
133 >  have_q_mass =         0;
134 >  have_tau_thermostat = 0;
135 >  have_tau_barostat   = 0;
136 >  have_zcons_time     = 0;
137 >  have_n_zConstraints = 0;
138 >  have_zConstraints   = 0;
139 >  have_zcons_tol = 0;
140 >  have_seed = 0;
141  
142 + }
143 +
144   Globals::~Globals(){
145    int i;
146  
# Line 179 | Line 213 | int Globals::componentStartIndex( event* the_event ){
213    return 0;
214   }
215  
216 < int Globals::componentStartIndex( event* the_event ){
216 > int Globals::componentEnd( event* the_event ){
217  
218 <  current_component->startIndex( the_event->evt.si.array,
219 <                                 the_event->evt.si.n_elements );
218 >  the_event->err_msg = current_component->checkMe();
219 >  if( the_event->err_msg != NULL ) return 0;
220 >
221    return 1;
222   }
223  
224 < int Globals::componentEnd( event* the_event ){
224 > int Globals::newZconstraint( event* the_event ){
225 >  
226  
227 <  the_event->err_msg = current_component->checkMe();
227 >  int index = the_event->evt.blk_index;
228 >  char err[200];
229 >  current_zConstraint = new ZconStamp( index );
230 >  
231 >  have_zConstraints = 1;
232 >
233 >  if( have_n_zConstraints && index < n_zConstraints )
234 >    zConstraints[index] = current_zConstraint;
235 >  else{
236 >    if( have_n_zConstraints ){
237 >      sprintf( err, "Globals error, %d out of nZconstraints range",
238 >               index );
239 >      the_event->err_msg = strdup( err );
240 >      return 0;
241 >    }
242 >    else{
243 >      the_event->err_msg = strdup("Globals error, nZconstraints"
244 >                                  " not given before"
245 >                                  " first zConstraint declaration." );
246 >      return 0;
247 >    }
248 >  }  
249 >
250 >  return 1;
251 > }
252 >
253 >
254 >
255 > int Globals::zConstraintAssign( event* the_event ){
256 >
257 >  switch( the_event->evt.asmt.asmt_type ){
258 >    
259 >  case STRING:
260 >    return current_zConstraint->assignString( the_event->evt.asmt.lhs,
261 >                                              the_event->evt.asmt.rhs.sval,
262 >                                              &(the_event->err_msg));
263 >    break;
264 >    
265 >  case DOUBLE:
266 >    return current_zConstraint->assignDouble( the_event->evt.asmt.lhs,
267 >                                              the_event->evt.asmt.rhs.dval,
268 >                                              &(the_event->err_msg));
269 >    break;
270 >    
271 >  case INT:
272 >    return current_zConstraint->assignInt( the_event->evt.asmt.lhs,
273 >                                           the_event->evt.asmt.rhs.ival,
274 >                                           &(the_event->err_msg));
275 >    break;
276 >    
277 >  default:
278 >    the_event->err_msg = strdup( "Globals error. Invalid zConstraint"
279 >                                 " assignment type" );
280 >    return 0;
281 >    break;
282 >  }
283 >  return 0;
284 > }
285 >
286 > int Globals::zConstraintEnd( event* the_event ){
287 >
288 >  the_event->err_msg = current_zConstraint->checkMe();
289    if( the_event->err_msg != NULL ) return 0;
290  
291    return 1;
# Line 243 | Line 340 | int Globals::globalAssign( event* the_event ){
340          return 1;
341        }
342        break;
343 +
344 +    case G_NZCONSTRAINTS:
345 +      if( the_type == STRING ){
346 +        the_event->err_msg =
347 +          strdup("Global error. nZconstraints is not a double or an int.\n" );
348 +        return 0;
349 +      }
350 +      
351 +      else if( the_type == DOUBLE ){
352 +        n_zConstraints = (int)the_event->evt.asmt.rhs.dval;
353 +        zConstraints = new ZconStamp*[n_zConstraints];
354 +        have_n_zConstraints = 1;
355 +        return 1;
356 +      }
357 +      
358 +      else{
359 +        n_zConstraints = the_event->evt.asmt.rhs.ival;
360 +        zConstraints = new ZconStamp*[n_zConstraints];
361 +        have_n_zConstraints = 1;
362 +        return 1;
363 +      }
364 +      break;
365        
366      case G_TARGETTEMP:
367        switch( the_type ){
# Line 610 | Line 729 | int Globals::globalAssign( event* the_event ){
729        }
730        break;
731  
732 <   case G_THERMALTIME:
732 >    case G_RESETTIME:
733 >      switch( the_type ){
734 >        
735 >      case STRING:
736 >        the_event->err_msg =
737 >          strdup( "Global error. resetTime is not a double or int.\n" );
738 >        return 0;
739 >        break;
740 >        
741 >      case DOUBLE:
742 >        resetTime = the_event->evt.asmt.rhs.dval;
743 >        have_reset_time = 1;
744 >        return 1;
745 >        break;
746 >        
747 >      case INT:
748 >        resetTime = (double)the_event->evt.asmt.rhs.ival;
749 >        have_reset_time = 1;
750 >        return 1;
751 >        break;
752 >        
753 >      default:
754 >        the_event->err_msg =
755 >          strdup( "Global error. resetTime unrecognized.\n" );
756 >        return 0;
757 >        break;
758 >      }
759 >      break;
760 >
761 >    case G_THERMALTIME:
762        switch( the_type ){
763          
764        case STRING:
# Line 639 | Line 787 | int Globals::globalAssign( event* the_event ){
787        }
788        break;
789        
790 <    case G_RRF:
790 >    case G_ECR:
791        switch( the_type ){
792          
793        case STRING:
794          the_event->err_msg =
795 <          strdup( "Global error. rRF is not a double or int.\n" );
795 >          strdup( "Global error. electrostaticCutoffRadius is not a double or int.\n" );
796          return 0;
797          break;
798          
799        case DOUBLE:
800 <        rRF = the_event->evt.asmt.rhs.dval;
801 <        have_rrf = 1;
800 >        ecr = the_event->evt.asmt.rhs.dval;
801 >        have_ecr = 1;
802          return 1;
803          break;
804          
805        case INT:
806 <        rRF = (double)the_event->evt.asmt.rhs.ival;
807 <        have_rrf = 1;
806 >        ecr = (double)the_event->evt.asmt.rhs.ival;
807 >        have_ecr = 1;
808          return 1;
809          break;
810          
811        default:
812          the_event->err_msg =
813 <          strdup( "Global error. rRF unrecognized.\n" );
813 >          strdup( "Global error. electrostaticCutoffRadius unrecognized.\n" );
814 >        return 0;
815 >        break;
816 >      }
817 >      break;
818 >
819 >    case G_EST:
820 >      switch( the_type ){
821 >        
822 >      case STRING:
823 >        the_event->err_msg =
824 >          strdup( "Global error. electrostaticSkinThickness is not a double or int.\n" );
825 >        return 0;
826 >        break;
827 >        
828 >      case DOUBLE:
829 >        est = the_event->evt.asmt.rhs.dval;
830 >        have_est = 1;
831 >        return 1;
832 >        break;
833 >        
834 >      case INT:
835 >        est = (double)the_event->evt.asmt.rhs.ival;
836 >        have_est = 1;
837 >        return 1;
838 >        break;
839 >        
840 >      default:
841 >        the_event->err_msg =
842 >          strdup( "Global error. electrostaticSkinThickness unrecognized.\n" );
843          return 0;
844          break;
845        }
# Line 700 | Line 877 | int Globals::globalAssign( event* the_event ){
877      case G_TEMPSET:
878        if( the_type == STRING ){
879          
880 <        if( !strcmp( "true", the_event->evt.asmt.rhs.sval )) tempSet = 1;
881 <        else if( !strcmp( "false", the_event->evt.asmt.rhs.sval )) tempSet = 0;
880 >        if( !strcasecmp( "true", the_event->evt.asmt.rhs.sval )) tempSet = 1;
881 >        else if( !strcasecmp( "false", the_event->evt.asmt.rhs.sval )) tempSet = 0;
882          else{
883            the_event->err_msg =
884              strdup( "Global error. tempSet was not \"true\" or \"false\".\n" );
# Line 719 | Line 896 | int Globals::globalAssign( event* the_event ){
896      case G_USEPBC:
897        if( the_type == STRING ){
898          
899 <        if( !strcmp( "true", the_event->evt.asmt.rhs.sval )) usePBC = 1;
900 <        else if( !strcmp( "false", the_event->evt.asmt.rhs.sval )) usePBC = 0;
899 >        if( !strcasecmp( "true", the_event->evt.asmt.rhs.sval )) usePBC = 1;
900 >        else if( !strcasecmp( "false", the_event->evt.asmt.rhs.sval )) usePBC = 0;
901          else{
902            the_event->err_msg =
903 <            strdup( "Global error. periodicBoundryConditions was not \"true\" or \"false\".\n" );
903 >            strdup( "Global error. usePeriodicBoundaryConditions was not \"true\" or \"false\".\n" );
904            return 0;
905          }
906          return 1;
907        }
908        
909        the_event->err_msg =
910 <        strdup( "Global error. tempSet was not \"true\" or \"false\".\n" );
910 >        strdup( "Global error. usePeriodicBoundaryConditions was not \"true\" or \"false\".\n" );
911        return 0;
912 +      break;
913 +
914 +    case G_USERF:
915 +      if( the_type == STRING ){
916 +        
917 +        if( !strcasecmp( "true", the_event->evt.asmt.rhs.sval )) useRF = 1;
918 +        else if( !strcasecmp( "false", the_event->evt.asmt.rhs.sval )) useRF = 0;
919 +        else{
920 +          the_event->err_msg =
921 +            strdup( "Global error. useReactionField was not \"true\" or \"false\".\n" );
922 +          return 0;
923 +        }
924 +        return 1;
925 +      }
926 +      
927 +      the_event->err_msg =
928 +        strdup( "Global error. useReactionField was not \"true\" or \"false\".\n" );
929 +      return 0;
930 +      break;
931 +
932 +    case G_TARGETPRESSURE:
933 +      switch( the_type ){
934 +        
935 +      case STRING:
936 +        the_event->err_msg =
937 +          strdup( "Global error. targetPressure is not a double or int.\n" );
938 +        return 0;
939 +        break;
940 +        
941 +      case DOUBLE:
942 +        target_pressure = the_event->evt.asmt.rhs.dval;
943 +        have_target_pressure = 1;
944 +        return 1;
945 +        break;
946 +        
947 +      case INT:
948 +        target_pressure = (double)the_event->evt.asmt.rhs.ival;
949 +        have_target_pressure = 1;
950 +        return 1;
951 +        break;
952 +        
953 +      default:
954 +        the_event->err_msg =
955 +          strdup( "Global error. targetPressure unrecognized.\n" );
956 +        return 0;
957 +        break;
958 +      }
959 +      break;
960 +
961 +    case G_TAUTHERMOSTAT:
962 +      switch( the_type ){
963 +        
964 +      case STRING:
965 +        the_event->err_msg =
966 +          strdup( "Global error. tauThermostat is not a double or int.\n" );
967 +        return 0;
968 +        break;
969 +        
970 +      case DOUBLE:
971 +        tau_thermostat = the_event->evt.asmt.rhs.dval;
972 +        have_tau_thermostat = 1;
973 +        return 1;
974 +        break;
975 +        
976 +      case INT:
977 +        tau_thermostat = (double)the_event->evt.asmt.rhs.ival;
978 +        have_tau_thermostat = 1;
979 +        return 1;
980 +        break;
981 +        
982 +      default:
983 +        the_event->err_msg =
984 +          strdup( "Global error. tauThermostat unrecognized.\n" );
985 +        return 0;
986 +        break;
987 +      }
988 +      break;
989 +
990 +    case G_TAUBAROSTAT:
991 +      switch( the_type ){
992 +        
993 +      case STRING:
994 +        the_event->err_msg =
995 +          strdup( "Global error. tauBarostat is not a double or int.\n" );
996 +        return 0;
997 +        break;
998 +        
999 +      case DOUBLE:
1000 +        tau_barostat = the_event->evt.asmt.rhs.dval;
1001 +        have_tau_barostat = 1;
1002 +        return 1;
1003 +        break;
1004 +        
1005 +      case INT:
1006 +        tau_barostat = (double)the_event->evt.asmt.rhs.ival;
1007 +        have_tau_barostat = 1;
1008 +        return 1;
1009 +        break;
1010 +        
1011 +      default:
1012 +        the_event->err_msg =
1013 +          strdup( "Global error. tauBarostat unrecognized.\n" );
1014 +        return 0;
1015 +        break;
1016 +      }
1017 +      break;
1018 +      
1019 +    case G_ZCONSTIME:
1020 +      switch( the_type ){
1021 +        
1022 +      case STRING:
1023 +        the_event->err_msg =
1024 +          strdup( "Global error. zcons_time is not a double or int.\n" );
1025 +        return 0;
1026 +        break;
1027 +        
1028 +      case DOUBLE:
1029 +        zcons_time = the_event->evt.asmt.rhs.dval;
1030 +        have_zcons_time = 1;
1031 +        return 1;
1032 +        break;
1033 +        
1034 +      case INT:
1035 +        zcons_time = (double)the_event->evt.asmt.rhs.ival;
1036 +        have_zcons_time = 1;
1037 +        return 1;
1038 +        break;
1039 +        
1040 +      default:
1041 +        the_event->err_msg =
1042 +          strdup( "Global error. zcons_time unrecognized.\n" );
1043 +        return 0;
1044 +        break;
1045 +      }
1046        break;
1047 +
1048 +    case G_ZCONSTOL:
1049 +      switch( the_type ){
1050 +        
1051 +      case STRING:
1052 +        the_event->err_msg =
1053 +          strdup( "Global error. zcons_tol is not a double or int.\n" );
1054 +        return 0;
1055 +        break;
1056 +        
1057 +      case DOUBLE:
1058 +        zcons_tol = the_event->evt.asmt.rhs.dval;
1059 +        have_zcons_tol = 1;
1060 +        return 1;
1061 +        break;
1062 +        
1063 +      case INT:
1064 +        zcons_tol = (double)the_event->evt.asmt.rhs.ival;
1065 +        have_zcons_tol = 1;
1066 +        return 1;
1067 +        break;
1068 +        
1069 +      default:
1070 +        the_event->err_msg =
1071 +          strdup( "Global error. zcons_ol unrecognized.\n" );
1072 +        return 0;
1073 +        break;
1074 +      }
1075 +      break;
1076 +  
1077 +    case G_ZCONSFORCEPOLICY:
1078 +      switch( the_type ){
1079 +        
1080 +      case STRING:
1081 +   strcpy(zconsForcePolicy, the_event->evt.asmt.rhs.sval);
1082 +
1083 +   for(int i = 0; zconsForcePolicy[i] != '\0'; i++)
1084 +        {
1085 +      zconsForcePolicy[i] = toupper(zconsForcePolicy[i]);
1086 +   }
1087 +        have_zcons_force_policy = 1;
1088 +   return 1;
1089 +        break;
1090 +        
1091 +      case DOUBLE:
1092 +        the_event->err_msg =
1093 +          strdup( "Global error. zconsForcePolicy is not a double or int.\n" );
1094 +        return 0;
1095 +        break;
1096 +        
1097 +      case INT:
1098 +        the_event->err_msg =
1099 +          strdup( "Global error. zconsForcePolicy is not a double or int.\n" );
1100 +        return 0;
1101 +        break;
1102 +        
1103 +      default:
1104 +        the_event->err_msg =
1105 +          strdup( "Global error. zconsForcePolicy unrecognized.\n" );
1106 +        return 0;
1107 +        break;
1108 +      }
1109 +      break;
1110 +      // add more token cases here.
1111 +    case G_SEED:
1112 +      switch( the_type ){
1113 +        
1114 +      case STRING:
1115 +   the_event->err_msg =
1116 +          strdup( "Global error. seed is not a string.\n" );
1117 +        return 0;
1118 +   return 0;
1119 +        break;
1120 +        
1121 +      case DOUBLE:
1122 +   have_seed = 1;
1123 +   seed = (int)the_event->evt.asmt.rhs.dval;
1124 +        return 1;
1125 +        break;
1126 +        
1127 +      case INT:
1128 +   have_seed = 1;
1129 +   seed =  the_event->evt.asmt.rhs.ival ;
1130 +        return 1;
1131 +        break;
1132 +        
1133 +      default:
1134 +        the_event->err_msg =
1135 +          strdup( "Global error. seed unrecognized.\n" );
1136 +        return 0;
1137 +        break;
1138 +      }
1139 +      break;
1140 +      // add more token cases here.
1141 +
1142      }
1143    }
1144    

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines