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

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines