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

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

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines