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

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines