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 699 by tim, Fri Aug 15 19:24:13 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  
45
54   Globals::Globals(){
55    
56    int i;
# Line 70 | Line 78 | Globals::Globals(){
78    addHash( "boxZ",          G_BOXZ );
79    addHash( "sampleTime",    G_SAMPLETIME );
80    addHash( "statusTime",    G_STATUSTIME );
81 <  addHash( "rRF",           G_RRF );
81 >  addHash( "electrostaticCutoffRadius",            G_ECR );
82    addHash( "dielectric",    G_DIELECTRIC );
83    addHash( "tempSet",       G_TEMPSET );
84    addHash( "thermalTime",   G_THERMALTIME );
85    addHash( "mixingRule",    G_MIXINGRULE);
86 <  addHash( "periodicBox",   G_USEPBC);
87 <  
86 >  addHash( "usePeriodicBoundaryConditions",        G_USEPBC);
87 >  addHash( "electrostaticSkinThickness",           G_EST );
88 >  addHash( "useReactionField",                     G_USERF );
89 >  addHash( "targetPressure",                       G_TARGETPRESSURE);
90 >  addHash( "tauThermostat",                        G_TAUTHERMOSTAT);
91 >  addHash( "tauBarostat",                          G_TAUBAROSTAT);
92 >  addHash( "zconsTime",                            G_ZCONSTIME);
93 >  addHash( "nZconstraints",                        G_NZCONSTRAINTS);
94 >  addHash( "zconsTol",                               G_ZCONSTOL);
95 >  addHash( "zconsForcePolicy",                    G_ZCONSFORCEPOLICY);
96 >        
97 >        
98    // define some default values
99  
100    strcpy( mixingRule,"standard");  //default mixing rules to standard.
101    usePBC = 1; //default  periodic boundry conditions to on
102 +  useRF  = 0;
103    
85
104    have_force_field =  0;
105    have_n_components = 0;
106    have_target_temp =  0;
# Line 102 | Line 120 | Globals::Globals(){
120    have_sample_time =    0;
121    have_status_time =    0;
122    have_thermal_time =   0;
123 <  have_rrf =            0;
123 >  have_ecr =            0;
124    have_dielectric =     0;
125    have_tempSet =        0;
126 < }
126 >  have_est =            0;
127 >  have_target_pressure =0;
128 >  have_q_mass =         0;
129 >  have_tau_thermostat = 0;
130 >  have_tau_barostat   = 0;
131 >  have_zcons_time     = 0;
132 >  have_n_zConstraints = 0;
133 >  have_zConstraints   = 0;
134 >  have_zcons_tol = 0;
135  
136 + }
137 +
138   Globals::~Globals(){
139    int i;
140  
# Line 179 | Line 207 | int Globals::componentStartIndex( event* the_event ){
207    return 0;
208   }
209  
210 < int Globals::componentStartIndex( event* the_event ){
210 > int Globals::componentEnd( event* the_event ){
211  
212 <  current_component->startIndex( the_event->evt.si.array,
213 <                                 the_event->evt.si.n_elements );
212 >  the_event->err_msg = current_component->checkMe();
213 >  if( the_event->err_msg != NULL ) return 0;
214 >
215    return 1;
216   }
217  
218 < int Globals::componentEnd( event* the_event ){
218 > int Globals::newZconstraint( event* the_event ){
219 >  
220  
221 <  the_event->err_msg = current_component->checkMe();
221 >  int index = the_event->evt.blk_index;
222 >  char err[200];
223 >  current_zConstraint = new ZconStamp( index );
224 >  
225 >  have_zConstraints = 1;
226 >
227 >  if( have_n_zConstraints && index < n_zConstraints )
228 >    zConstraints[index] = current_zConstraint;
229 >  else{
230 >    if( have_n_zConstraints ){
231 >      sprintf( err, "Globals error, %d out of nZconstraints range",
232 >               index );
233 >      the_event->err_msg = strdup( err );
234 >      return 0;
235 >    }
236 >    else{
237 >      the_event->err_msg = strdup("Globals error, nZconstraints"
238 >                                  " not given before"
239 >                                  " first zConstraint declaration." );
240 >      return 0;
241 >    }
242 >  }  
243 >
244 >  return 1;
245 > }
246 >
247 >
248 >
249 > int Globals::zConstraintAssign( event* the_event ){
250 >
251 >  switch( the_event->evt.asmt.asmt_type ){
252 >    
253 >  case STRING:
254 >    return current_zConstraint->assignString( the_event->evt.asmt.lhs,
255 >                                              the_event->evt.asmt.rhs.sval,
256 >                                              &(the_event->err_msg));
257 >    break;
258 >    
259 >  case DOUBLE:
260 >    return current_zConstraint->assignDouble( the_event->evt.asmt.lhs,
261 >                                              the_event->evt.asmt.rhs.dval,
262 >                                              &(the_event->err_msg));
263 >    break;
264 >    
265 >  case INT:
266 >    return current_zConstraint->assignInt( the_event->evt.asmt.lhs,
267 >                                           the_event->evt.asmt.rhs.ival,
268 >                                           &(the_event->err_msg));
269 >    break;
270 >    
271 >  default:
272 >    the_event->err_msg = strdup( "Globals error. Invalid zConstraint"
273 >                                 " assignment type" );
274 >    return 0;
275 >    break;
276 >  }
277 >  return 0;
278 > }
279 >
280 > int Globals::zConstraintEnd( event* the_event ){
281 >
282 >  the_event->err_msg = current_zConstraint->checkMe();
283    if( the_event->err_msg != NULL ) return 0;
284  
285    return 1;
# Line 243 | Line 334 | int Globals::globalAssign( event* the_event ){
334          return 1;
335        }
336        break;
337 +
338 +    case G_NZCONSTRAINTS:
339 +      if( the_type == STRING ){
340 +        the_event->err_msg =
341 +          strdup("Global error. nZconstraints is not a double or an int.\n" );
342 +        return 0;
343 +      }
344        
345 +      else if( the_type == DOUBLE ){
346 +        n_zConstraints = (int)the_event->evt.asmt.rhs.dval;
347 +        zConstraints = new ZconStamp*[n_zConstraints];
348 +        have_n_zConstraints = 1;
349 +        return 1;
350 +      }
351 +      
352 +      else{
353 +        n_zConstraints = the_event->evt.asmt.rhs.ival;
354 +        zConstraints = new ZconStamp*[n_zConstraints];
355 +        have_n_zConstraints = 1;
356 +        return 1;
357 +      }
358 +      break;
359 +      
360      case G_TARGETTEMP:
361        switch( the_type ){
362          
# Line 610 | Line 723 | int Globals::globalAssign( event* the_event ){
723        }
724        break;
725  
726 <   case G_THERMALTIME:
726 >    case G_THERMALTIME:
727        switch( the_type ){
728          
729        case STRING:
# Line 639 | Line 752 | int Globals::globalAssign( event* the_event ){
752        }
753        break;
754        
755 <    case G_RRF:
755 >    case G_ECR:
756        switch( the_type ){
757          
758        case STRING:
759          the_event->err_msg =
760 <          strdup( "Global error. rRF is not a double or int.\n" );
760 >          strdup( "Global error. electrostaticCutoffRadius is not a double or int.\n" );
761          return 0;
762          break;
763          
764        case DOUBLE:
765 <        rRF = the_event->evt.asmt.rhs.dval;
766 <        have_rrf = 1;
765 >        ecr = the_event->evt.asmt.rhs.dval;
766 >        have_ecr = 1;
767          return 1;
768          break;
769          
770        case INT:
771 <        rRF = (double)the_event->evt.asmt.rhs.ival;
772 <        have_rrf = 1;
771 >        ecr = (double)the_event->evt.asmt.rhs.ival;
772 >        have_ecr = 1;
773          return 1;
774          break;
775          
776        default:
777          the_event->err_msg =
778 <          strdup( "Global error. rRF unrecognized.\n" );
778 >          strdup( "Global error. electrostaticCutoffRadius unrecognized.\n" );
779          return 0;
780          break;
781        }
782        break;
783 +
784 +    case G_EST:
785 +      switch( the_type ){
786 +        
787 +      case STRING:
788 +        the_event->err_msg =
789 +          strdup( "Global error. electrostaticSkinThickness is not a double or int.\n" );
790 +        return 0;
791 +        break;
792 +        
793 +      case DOUBLE:
794 +        est = the_event->evt.asmt.rhs.dval;
795 +        have_est = 1;
796 +        return 1;
797 +        break;
798 +        
799 +      case INT:
800 +        est = (double)the_event->evt.asmt.rhs.ival;
801 +        have_est = 1;
802 +        return 1;
803 +        break;
804 +        
805 +      default:
806 +        the_event->err_msg =
807 +          strdup( "Global error. electrostaticSkinThickness unrecognized.\n" );
808 +        return 0;
809 +        break;
810 +      }
811 +      break;
812        
813      case G_DIELECTRIC:
814        switch( the_type ){
# Line 700 | Line 842 | int Globals::globalAssign( event* the_event ){
842      case G_TEMPSET:
843        if( the_type == STRING ){
844          
845 <        if( !strcmp( "true", the_event->evt.asmt.rhs.sval )) tempSet = 1;
846 <        else if( !strcmp( "false", the_event->evt.asmt.rhs.sval )) tempSet = 0;
845 >        if( !strcasecmp( "true", the_event->evt.asmt.rhs.sval )) tempSet = 1;
846 >        else if( !strcasecmp( "false", the_event->evt.asmt.rhs.sval )) tempSet = 0;
847          else{
848            the_event->err_msg =
849              strdup( "Global error. tempSet was not \"true\" or \"false\".\n" );
# Line 719 | Line 861 | int Globals::globalAssign( event* the_event ){
861      case G_USEPBC:
862        if( the_type == STRING ){
863          
864 <        if( !strcmp( "true", the_event->evt.asmt.rhs.sval )) usePBC = 1;
865 <        else if( !strcmp( "false", the_event->evt.asmt.rhs.sval )) usePBC = 0;
864 >        if( !strcasecmp( "true", the_event->evt.asmt.rhs.sval )) usePBC = 1;
865 >        else if( !strcasecmp( "false", the_event->evt.asmt.rhs.sval )) usePBC = 0;
866          else{
867            the_event->err_msg =
868 <            strdup( "Global error. periodicBoundryConditions was not \"true\" or \"false\".\n" );
868 >            strdup( "Global error. usePeriodicBoundaryConditions was not \"true\" or \"false\".\n" );
869            return 0;
870          }
871          return 1;
872        }
873        
874        the_event->err_msg =
875 <        strdup( "Global error. tempSet was not \"true\" or \"false\".\n" );
875 >        strdup( "Global error. usePeriodicBoundaryConditions was not \"true\" or \"false\".\n" );
876        return 0;
877 +      break;
878 +
879 +    case G_USERF:
880 +      if( the_type == STRING ){
881 +        
882 +        if( !strcasecmp( "true", the_event->evt.asmt.rhs.sval )) useRF = 1;
883 +        else if( !strcasecmp( "false", the_event->evt.asmt.rhs.sval )) useRF = 0;
884 +        else{
885 +          the_event->err_msg =
886 +            strdup( "Global error. useReactionField was not \"true\" or \"false\".\n" );
887 +          return 0;
888 +        }
889 +        return 1;
890 +      }
891 +      
892 +      the_event->err_msg =
893 +        strdup( "Global error. useReactionField was not \"true\" or \"false\".\n" );
894 +      return 0;
895 +      break;
896 +
897 +    case G_TARGETPRESSURE:
898 +      switch( the_type ){
899 +        
900 +      case STRING:
901 +        the_event->err_msg =
902 +          strdup( "Global error. targetPressure is not a double or int.\n" );
903 +        return 0;
904 +        break;
905 +        
906 +      case DOUBLE:
907 +        target_pressure = the_event->evt.asmt.rhs.dval;
908 +        have_target_pressure = 1;
909 +        return 1;
910 +        break;
911 +        
912 +      case INT:
913 +        target_pressure = (double)the_event->evt.asmt.rhs.ival;
914 +        have_target_pressure = 1;
915 +        return 1;
916 +        break;
917 +        
918 +      default:
919 +        the_event->err_msg =
920 +          strdup( "Global error. targetPressure unrecognized.\n" );
921 +        return 0;
922 +        break;
923 +      }
924 +      break;
925 +
926 +    case G_TAUTHERMOSTAT:
927 +      switch( the_type ){
928 +        
929 +      case STRING:
930 +        the_event->err_msg =
931 +          strdup( "Global error. tauThermostat is not a double or int.\n" );
932 +        return 0;
933 +        break;
934 +        
935 +      case DOUBLE:
936 +        tau_thermostat = the_event->evt.asmt.rhs.dval;
937 +        have_tau_thermostat = 1;
938 +        return 1;
939 +        break;
940 +        
941 +      case INT:
942 +        tau_thermostat = (double)the_event->evt.asmt.rhs.ival;
943 +        have_tau_thermostat = 1;
944 +        return 1;
945 +        break;
946 +        
947 +      default:
948 +        the_event->err_msg =
949 +          strdup( "Global error. tauThermostat unrecognized.\n" );
950 +        return 0;
951 +        break;
952 +      }
953 +      break;
954 +
955 +    case G_TAUBAROSTAT:
956 +      switch( the_type ){
957 +        
958 +      case STRING:
959 +        the_event->err_msg =
960 +          strdup( "Global error. tauBarostat is not a double or int.\n" );
961 +        return 0;
962 +        break;
963 +        
964 +      case DOUBLE:
965 +        tau_barostat = the_event->evt.asmt.rhs.dval;
966 +        have_tau_barostat = 1;
967 +        return 1;
968 +        break;
969 +        
970 +      case INT:
971 +        tau_barostat = (double)the_event->evt.asmt.rhs.ival;
972 +        have_tau_barostat = 1;
973 +        return 1;
974 +        break;
975 +        
976 +      default:
977 +        the_event->err_msg =
978 +          strdup( "Global error. tauBarostat unrecognized.\n" );
979 +        return 0;
980 +        break;
981 +      }
982        break;
983 +      
984 +    case G_ZCONSTIME:
985 +      switch( the_type ){
986 +        
987 +      case STRING:
988 +        the_event->err_msg =
989 +          strdup( "Global error. zcons_time is not a double or int.\n" );
990 +        return 0;
991 +        break;
992 +        
993 +      case DOUBLE:
994 +        zcons_time = the_event->evt.asmt.rhs.dval;
995 +        have_zcons_time = 1;
996 +        return 1;
997 +        break;
998 +        
999 +      case INT:
1000 +        zcons_time = (double)the_event->evt.asmt.rhs.ival;
1001 +        have_zcons_time = 1;
1002 +        return 1;
1003 +        break;
1004 +        
1005 +      default:
1006 +        the_event->err_msg =
1007 +          strdup( "Global error. zcons_time unrecognized.\n" );
1008 +        return 0;
1009 +        break;
1010 +      }
1011 +      break;
1012 +
1013 +    case G_ZCONSTOL:
1014 +      switch( the_type ){
1015 +        
1016 +      case STRING:
1017 +        the_event->err_msg =
1018 +          strdup( "Global error. zcons_tol is not a double or int.\n" );
1019 +        return 0;
1020 +        break;
1021 +        
1022 +      case DOUBLE:
1023 +        zcons_tol = the_event->evt.asmt.rhs.dval;
1024 +        have_zcons_tol = 1;
1025 +        return 1;
1026 +        break;
1027 +        
1028 +      case INT:
1029 +        zcons_tol = (double)the_event->evt.asmt.rhs.ival;
1030 +        have_zcons_tol = 1;
1031 +        return 1;
1032 +        break;
1033 +        
1034 +      default:
1035 +        the_event->err_msg =
1036 +          strdup( "Global error. zcons_ol unrecognized.\n" );
1037 +        return 0;
1038 +        break;
1039 +      }
1040 +      break;
1041 +  
1042 +    case G_ZCONSFORCEPOLICY:
1043 +      switch( the_type ){
1044 +        
1045 +      case STRING:
1046 +   strcpy(zconsForcePolicy, the_event->evt.asmt.rhs.sval);
1047 +
1048 +   for(int i = 0; zconsForcePolicy[i] != '\0'; i++)
1049 +        {
1050 +      zconsForcePolicy[i] = toupper(zconsForcePolicy[i]);
1051 +   }
1052 +        have_zcons_force_policy = 1;
1053 +   return 1;
1054 +        break;
1055 +        
1056 +      case DOUBLE:
1057 +        the_event->err_msg =
1058 +          strdup( "Global error. zconsForcePolicy is not a double or int.\n" );
1059 +        return 0;
1060 +        break;
1061 +        
1062 +      case INT:
1063 +        the_event->err_msg =
1064 +          strdup( "Global error. zconsForcePolicy is not a double or int.\n" );
1065 +        return 0;
1066 +        break;
1067 +        
1068 +      default:
1069 +        the_event->err_msg =
1070 +          strdup( "Global error. zconsForcePolicy unrecognized.\n" );
1071 +        return 0;
1072 +        break;
1073 +      }
1074 +      break;
1075 +      // add more token cases here.
1076 +
1077      }
1078    }
1079    

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines