Changeset 27709
- Timestamp:
- 04/26/23 17:17:41 (23 months ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 2 added
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/Makefile.am
r27696 r27709 89 89 ./classes/Misfit.cpp \ 90 90 ./classes/Cfsurfacesquare.cpp \ 91 ./classes/Cfsurfacesquaretransient.cpp \ 91 92 ./classes/Cfdragcoeffabsgrad.cpp \ 92 93 ./classes/Cfrheologybbarabsgrad.cpp \ -
issm/trunk-jpl/src/c/classes/IoModel.cpp
r27696 r27709 2385 2385 /*Assign output pointers: */ 2386 2386 *pstrings=strings; 2387 *pnumstrings=num_instances;2387 if(pnumstrings) *pnumstrings=num_instances; 2388 2388 } 2389 2389 /*}}}*/ -
issm/trunk-jpl/src/c/classes/IoModel.h
r27696 r27709 154 154 void FetchMultipleData(int*** pmatrices,int** pmdims,int** pndims, int* pnumrecords,const char* data_name); 155 155 void FetchMultipleData(int** pvector, int* pnum_instances,const char* data_name); 156 void FetchMultipleData(IssmDouble** pvector, int* p num_instances,const char* data_name);156 void FetchMultipleData(IssmDouble** pvector, int* pM,const char* data_name); 157 157 fpos_t* SetFilePointersToData(int** pcodes,int** pvector_types, int* pnum_instances, const char* data_name); 158 158 FILE* SetFilePointerToData(int* pcode,int* pvector_type, const char* data_name); -
issm/trunk-jpl/src/c/classes/classes.h
r27696 r27709 24 24 #include "./Numberedcostfunction.h" 25 25 #include "./Cfsurfacesquare.h" 26 #include "./Cfsurfacesquaretransient.h" 26 27 #include "./Cfdragcoeffabsgrad.h" 27 28 #include "./Cfrheologybbarabsgrad.h" -
issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateOutputDefinitions.cpp
r27686 r27709 244 244 /*}}}*/ 245 245 } 246 else if (output_definition_enums[i]==CfsurfacesquaretransientEnum){ 247 /*Deal with cfsurfacesquaretransient: {{{*/ 248 249 /*cfsurfacesquaretransient variables: */ 250 int num_cfsurfacesquaretransients,test; 251 char **cfssqt_name_s = NULL; 252 char **cfssqt_definitionstring_s = NULL; 253 char **cfssqt_model_string_s = NULL; 254 IssmDouble **cfssqt_observations_s = NULL; 255 char **cfssqt_observations_string_s = NULL; 256 int *cfssqt_observations_M_s = NULL; 257 int *cfssqt_observations_N_s = NULL; 258 IssmDouble **cfssqt_weights_s = NULL; 259 int *cfssqt_weights_M_s = NULL; 260 int *cfssqt_weights_N_s = NULL; 261 char **cfssqt_weights_string_s = NULL; 262 IssmDouble **cfssqt_datatimes_s = NULL; 263 int *cfssqt_datatimes_M_s = NULL; 264 int *cfssqt_datatimes_N_s = NULL; 265 266 /*Fetch name, model_string, observation, observation_string, etc ... (see src/m/classes/cfsurfacesquaretransient.m): */ 267 iomodel->FetchMultipleData(&cfssqt_name_s,&num_cfsurfacesquaretransients,"md.cfsurfacesquaretransient.name"); 268 iomodel->FetchMultipleData(&cfssqt_definitionstring_s,&test,"md.cfsurfacesquaretransient.definitionstring"); _assert_(test==num_cfsurfacesquaretransients); 269 iomodel->FetchMultipleData(&cfssqt_model_string_s,&test,"md.cfsurfacesquaretransient.model_string"); _assert_(test==num_cfsurfacesquaretransients); 270 iomodel->FetchMultipleData(&cfssqt_observations_s,&cfssqt_observations_M_s,&cfssqt_observations_N_s,NULL, "md.cfsurfacesquaretransient.observations"); 271 iomodel->FetchMultipleData(&cfssqt_observations_string_s, NULL,"md.cfsurfacesquaretransient.observation_string"); 272 iomodel->FetchMultipleData(&cfssqt_weights_s,&cfssqt_weights_M_s,&cfssqt_weights_N_s,NULL,"md.cfsurfacesquaretransient.weights"); 273 iomodel->FetchMultipleData(&cfssqt_weights_string_s,NULL,"md.cfsurfacesquaretransient.weights_string"); 274 iomodel->FetchMultipleData(&cfssqt_datatimes_s,&cfssqt_datatimes_M_s,&cfssqt_datatimes_N_s,NULL,"md.cfsurfacesquaretransient.datatimes"); 275 276 for(j=0;j<num_cfsurfacesquaretransients;j++){ 277 278 /*Check that we can use P1 inputs*/ 279 if (cfssqt_observations_M_s[j]==iomodel->numberofvertices) _error_("only P1 fields are allowed for now"); 280 if (cfssqt_observations_M_s[j]==cfssqt_weights_M_s[j]) _error_("observations and weights do not have the same number of rows"); 281 if (cfssqt_observations_N_s[j]==cfssqt_weights_N_s[j]) _error_("observations and weights do not have the same number of columns"); 282 if (cfssqt_datatimes_M_s[j]==1) _error_("datatime should have only one row"); 283 if (cfssqt_datatimes_N_s[j]==cfssqt_weights_N_s[j]) _error_("datatime should have the same number of columns as the observations"); 284 285 /*First create a cfsurfacesquaretransient object for that specific string (cfssqt_model_string_s[j]):*/ 286 output_definitions->AddObject(new Cfsurfacesquaretransient(cfssqt_name_s[j], StringToEnumx(cfssqt_definitionstring_s[j]), StringToEnumx(cfssqt_model_string_s[j]), cfssqt_datatimes_N_s[j], cfssqt_datatimes_s[j])); 287 288 /*Now, for this particular cfsurfacesquaretransient object, make sure we plug into the elements: the observation, and the weights.*/ 289 for(Object* & object : elements->objects){ 290 Element* element=xDynamicCast<Element*>(object); 291 _error_("need to implement transient inputs?"); 292 //element->DatasetInputAdd(StringToEnumx(cfssqt_definitionstring_s[j]),cfssqt_observations_s[j],inputs,iomodel,cfssqt_observations_M_s[j],cfssqt_observations_N_s[j],obs_vector_type,StringToEnumx(cfssqt_observations_string_s[j]),7,SurfaceObservationEnum); 293 //element->DatasetInputAdd(StringToEnumx(cfssqt_definitionstring_s[j]),cfssqt_weights_s[j],inputs,iomodel,cfssqt_weights_M_s[j],cfssqt_weights_N_s[j],weight_vector_type,StringToEnumx(cfssqt_weights_string_s[j]),7,WeightsSurfaceObservationEnum); 294 295 } 296 297 } 298 299 /*Free resources:*/ 300 for(j=0;j<num_cfsurfacesquaretransients;j++){ 301 char* string=NULL; 302 IssmDouble* matrix = NULL; 303 string = cfssqt_definitionstring_s[j]; xDelete<char>(string); 304 string = cfssqt_observations_string_s[j]; xDelete<char>(string); 305 string = cfssqt_model_string_s[j]; xDelete<char>(string); 306 string = cfssqt_weights_string_s[j]; xDelete<char>(string); 307 string = cfssqt_name_s[j]; xDelete<char>(string); 308 matrix = cfssqt_observations_s[j]; xDelete<IssmDouble>(matrix); 309 matrix = cfssqt_weights_s[j]; xDelete<IssmDouble>(matrix); 310 } 311 xDelete<char*>(cfssqt_name_s); 312 xDelete<char*>(cfssqt_model_string_s); 313 xDelete<char*>(cfssqt_definitionstring_s); 314 xDelete<IssmDouble*>(cfssqt_observations_s); 315 xDelete<char*>(cfssqt_observations_string_s); 316 xDelete<int>(cfssqt_observations_M_s); 317 xDelete<int>(cfssqt_observations_N_s); 318 xDelete<IssmDouble*>(cfssqt_weights_s); 319 xDelete<int>(cfssqt_weights_M_s); 320 xDelete<int>(cfssqt_weights_N_s); 321 xDelete<char*>(cfssqt_weights_string_s); 322 xDelete<IssmDouble>(cfssqt_datatimes_s); 323 /*}}}*/ 324 } 246 325 else if (output_definition_enums[i]==CfdragcoeffabsgradEnum){ 247 326 /*Deal with cfdragcoeffabsgrad: {{{*/ -
issm/trunk-jpl/src/c/shared/Enum/Enum.vim
r27696 r27709 1396 1396 syn keyword cConstant CfsurfacelogvelEnum 1397 1397 syn keyword cConstant CfsurfacesquareEnum 1398 syn keyword cConstant CfsurfacesquaretransientEnum 1398 1399 syn keyword cConstant CflevelsetmisfitEnum 1399 1400 syn keyword cConstant ChannelEnum -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r27696 r27709 1395 1395 CfsurfacelogvelEnum, 1396 1396 CfsurfacesquareEnum, 1397 CfsurfacesquaretransientEnum, 1397 1398 CflevelsetmisfitEnum, 1398 1399 ChannelEnum, -
issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
r27696 r27709 1398 1398 case CfsurfacelogvelEnum : return "Cfsurfacelogvel"; 1399 1399 case CfsurfacesquareEnum : return "Cfsurfacesquare"; 1400 case CfsurfacesquaretransientEnum : return "Cfsurfacesquaretransient"; 1400 1401 case CflevelsetmisfitEnum : return "Cflevelsetmisfit"; 1401 1402 case ChannelEnum : return "Channel"; -
issm/trunk-jpl/src/c/shared/Enum/Enumjl.vim
r27696 r27709 1389 1389 syn keyword juliaConstC CfsurfacelogvelEnum 1390 1390 syn keyword juliaConstC CfsurfacesquareEnum 1391 syn keyword juliaConstC CfsurfacesquaretransientEnum 1391 1392 syn keyword juliaConstC CflevelsetmisfitEnum 1392 1393 syn keyword juliaConstC ChannelEnum -
issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
r27696 r27709 1431 1431 else if (strcmp(name,"Cfsurfacelogvel")==0) return CfsurfacelogvelEnum; 1432 1432 else if (strcmp(name,"Cfsurfacesquare")==0) return CfsurfacesquareEnum; 1433 else if (strcmp(name,"Cfsurfacesquaretransient")==0) return CfsurfacesquaretransientEnum; 1433 1434 else if (strcmp(name,"Cflevelsetmisfit")==0) return CflevelsetmisfitEnum; 1434 1435 else if (strcmp(name,"Channel")==0) return ChannelEnum; … … 1489 1490 else if (strcmp(name,"FSSolver")==0) return FSSolverEnum; 1490 1491 else if (strcmp(name,"FSpressure")==0) return FSpressureEnum; 1491 else if (strcmp(name,"FSvelocity")==0) return FSvelocityEnum;1492 1492 else stage=13; 1493 1493 } 1494 1494 if(stage==13){ 1495 if (strcmp(name,"FemModel")==0) return FemModelEnum; 1495 if (strcmp(name,"FSvelocity")==0) return FSvelocityEnum; 1496 else if (strcmp(name,"FemModel")==0) return FemModelEnum; 1496 1497 else if (strcmp(name,"FileParam")==0) return FileParamEnum; 1497 1498 else if (strcmp(name,"FixedTimestepping")==0) return FixedTimesteppingEnum; … … 1612 1613 else if (strcmp(name,"Mathydro")==0) return MathydroEnum; 1613 1614 else if (strcmp(name,"MatrixParam")==0) return MatrixParamEnum; 1614 else if (strcmp(name,"MaxAbsVx")==0) return MaxAbsVxEnum;1615 1615 else stage=14; 1616 1616 } 1617 1617 if(stage==14){ 1618 if (strcmp(name,"MaxAbsVy")==0) return MaxAbsVyEnum; 1618 if (strcmp(name,"MaxAbsVx")==0) return MaxAbsVxEnum; 1619 else if (strcmp(name,"MaxAbsVy")==0) return MaxAbsVyEnum; 1619 1620 else if (strcmp(name,"MaxAbsVz")==0) return MaxAbsVzEnum; 1620 1621 else if (strcmp(name,"MaxDivergence")==0) return MaxDivergenceEnum; … … 1735 1736 else if (strcmp(name,"StressIntensityFactor")==0) return StressIntensityFactorEnum; 1736 1737 else if (strcmp(name,"StressbalanceAnalysis")==0) return StressbalanceAnalysisEnum; 1737 else if (strcmp(name,"StressbalanceConvergenceNumSteps")==0) return StressbalanceConvergenceNumStepsEnum;1738 1738 else stage=15; 1739 1739 } 1740 1740 if(stage==15){ 1741 if (strcmp(name,"StressbalanceSIAAnalysis")==0) return StressbalanceSIAAnalysisEnum; 1741 if (strcmp(name,"StressbalanceConvergenceNumSteps")==0) return StressbalanceConvergenceNumStepsEnum; 1742 else if (strcmp(name,"StressbalanceSIAAnalysis")==0) return StressbalanceSIAAnalysisEnum; 1742 1743 else if (strcmp(name,"StressbalanceSolution")==0) return StressbalanceSolutionEnum; 1743 1744 else if (strcmp(name,"StressbalanceVerticalAnalysis")==0) return StressbalanceVerticalAnalysisEnum;
Note:
See TracChangeset
for help on using the changeset viewer.