Changeset 26252
- Timestamp:
- 05/10/21 05:41:58 (4 years ago)
- Location:
- issm/trunk-jpl/src
- Files:
-
- 3 added
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/Makefile.am
r26227 r26252 91 91 ./classes/Cfdragcoeffabsgrad.cpp \ 92 92 ./classes/Cfsurfacelogvel.cpp \ 93 ./classes/Cflevelsetmisfit.cpp \ 93 94 ./classes/Regionaloutput.cpp \ 94 95 ./classes/Nodalvalue.cpp \ -
issm/trunk-jpl/src/c/classes/classes.h
r26227 r26252 26 26 #include "./Cfdragcoeffabsgrad.h" 27 27 #include "./Cfsurfacelogvel.h" 28 #include "./Cflevelsetmisfit.h" 28 29 #include "./Masscon.h" 29 30 #include "./Massconaxpby.h" -
issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateOutputDefinitions.cpp
r25539 r26252 170 170 int* cfsurfacesquare_weights_N_s = NULL; 171 171 char** cfsurfacesquare_weights_string_s = NULL; 172 int* cfsurfacesquare_datatime_s = NULL;172 IssmDouble* cfsurfacesquare_datatime_s = NULL; 173 173 174 174 /*Fetch name, model_string, observation, observation_string, etc ... (see src/m/classes/cfsurfacesquare.m): */ … … 241 241 xDelete<int>(cfsurfacesquare_weights_N_s); 242 242 xDelete<char*>(cfsurfacesquare_weights_string_s); 243 xDelete< int>(cfsurfacesquare_datatime_s);243 xDelete<IssmDouble>(cfsurfacesquare_datatime_s); 244 244 /*}}}*/ 245 245 } … … 323 323 int* cfsurfacelogvel_weights_N = NULL; 324 324 char** cfsurfacelogvel_weightstring = NULL; 325 int*cfsurfacelogvel_datatime = NULL;325 IssmDouble* cfsurfacelogvel_datatime = NULL; 326 326 327 327 /*Fetch name, modeltring, observation, observationtring, etc ... (see src/m/classes/cfsurfacelogvel.m): */ … … 399 399 xDelete<int>(cfsurfacelogvel_weights_N); 400 400 xDelete<char*>(cfsurfacelogvel_weightstring); 401 xDelete<int>(cfsurfacelogvel_datatime); 401 xDelete<IssmDouble>(cfsurfacelogvel_datatime); 402 /*}}}*/ 403 } 404 else if (output_definition_enums[i]==CflevelsetmisfitEnum){ 405 /*Deal with cflevelsetmisfit: {{{*/ 406 407 /*cflevelsetmisfit variables: */ 408 int num_cflevelsetmisfits; 409 char** cflevelsetmisfit_name_s = NULL; 410 char** cflevelsetmisfit_definitionstring_s = NULL; 411 char** cflevelsetmisfit_model_string_s = NULL; 412 IssmDouble** cflevelsetmisfit_observation_s = NULL; 413 char** cflevelsetmisfit_observation_string_s = NULL; 414 int* cflevelsetmisfit_observation_M_s = NULL; 415 int* cflevelsetmisfit_observation_N_s = NULL; 416 IssmDouble** cflevelsetmisfit_weights_s = NULL; 417 int* cflevelsetmisfit_weights_M_s = NULL; 418 int* cflevelsetmisfit_weights_N_s = NULL; 419 char** cflevelsetmisfit_weights_string_s = NULL; 420 IssmDouble* cflevelsetmisfit_datatime_s = NULL; 421 422 /*Fetch name, model_string, observation, observation_string, etc ... (see src/m/classes/cflevelsetmisfit.m): */ 423 iomodel->FetchMultipleData(&cflevelsetmisfit_name_s,&num_cflevelsetmisfits, "md.cflevelsetmisfit.name"); 424 iomodel->FetchMultipleData(&cflevelsetmisfit_definitionstring_s,&num_cflevelsetmisfits, "md.cflevelsetmisfit.definitionstring"); 425 iomodel->FetchMultipleData(&cflevelsetmisfit_model_string_s,&num_cflevelsetmisfits, "md.cflevelsetmisfit.model_string"); 426 iomodel->FetchMultipleData(&cflevelsetmisfit_observation_s,&cflevelsetmisfit_observation_M_s,&cflevelsetmisfit_observation_N_s,&num_cflevelsetmisfits, "md.cflevelsetmisfit.observation"); 427 iomodel->FetchMultipleData(&cflevelsetmisfit_observation_string_s,&num_cflevelsetmisfits, "md.cflevelsetmisfit.observation_string"); 428 iomodel->FetchMultipleData(&cflevelsetmisfit_weights_s,&cflevelsetmisfit_weights_M_s,&cflevelsetmisfit_weights_N_s,&num_cflevelsetmisfits, "md.cflevelsetmisfit.weights"); 429 iomodel->FetchMultipleData(&cflevelsetmisfit_weights_string_s,&num_cflevelsetmisfits, "md.cflevelsetmisfit.weights_string"); 430 iomodel->FetchMultipleData(&cflevelsetmisfit_datatime_s,&num_cflevelsetmisfits, "md.cflevelsetmisfit.datatime"); 431 432 for(j=0;j<num_cflevelsetmisfits;j++){ 433 int obs_vector_type=0; 434 if ((cflevelsetmisfit_observation_M_s[j]==iomodel->numberofvertices) || (cflevelsetmisfit_observation_M_s[j]==iomodel->numberofvertices+1)){ 435 obs_vector_type=1; 436 } 437 else if ((cflevelsetmisfit_observation_M_s[j]==iomodel->numberofelements) || (cflevelsetmisfit_observation_M_s[j]==iomodel->numberofelements+1)){ 438 obs_vector_type=2; 439 } 440 else 441 _error_("cflevelsetmisfit observation size not supported yet"); 442 443 int weight_vector_type=0; 444 if ((cflevelsetmisfit_weights_M_s[j]==iomodel->numberofvertices) || (cflevelsetmisfit_weights_M_s[j]==iomodel->numberofvertices+1)){ 445 weight_vector_type=1; 446 } 447 else if ((cflevelsetmisfit_weights_M_s[j]==iomodel->numberofelements) || (cflevelsetmisfit_weights_M_s[j]==iomodel->numberofelements+1)){ 448 weight_vector_type=2; 449 } 450 else 451 _error_("cflevelsetmisfit weight size not supported yet"); 452 453 /*First create a cflevelsetmisfit object for that specific string (cflevelsetmisfit_model_string_s[j]):*/ 454 output_definitions->AddObject(new Cflevelsetmisfit(cflevelsetmisfit_name_s[j],StringToEnumx(cflevelsetmisfit_definitionstring_s[j]),StringToEnumx(cflevelsetmisfit_model_string_s[j]),StringToEnumx(cflevelsetmisfit_observation_string_s[j]),StringToEnumx(cflevelsetmisfit_weights_string_s[j]),cflevelsetmisfit_datatime_s[j],false)); 455 456 /*Now, for this particular cflevelsetmisfit object, make sure we plug into the elements: the observation, and the weights.*/ 457 for(Object* & object : elements->objects){ 458 Element* element=xDynamicCast<Element*>(object); 459 element->DatasetInputAdd(StringToEnumx(cflevelsetmisfit_definitionstring_s[j]),cflevelsetmisfit_observation_s[j],inputs,iomodel,cflevelsetmisfit_observation_M_s[j],cflevelsetmisfit_observation_N_s[j],obs_vector_type,StringToEnumx(cflevelsetmisfit_observation_string_s[j]),7,LevelsetObservationEnum); 460 element->DatasetInputAdd(StringToEnumx(cflevelsetmisfit_definitionstring_s[j]),cflevelsetmisfit_weights_s[j],inputs,iomodel,cflevelsetmisfit_weights_M_s[j],cflevelsetmisfit_weights_N_s[j],weight_vector_type,StringToEnumx(cflevelsetmisfit_weights_string_s[j]),7,WeightsLevelsetObservationEnum); 461 } 462 } 463 464 /*Free ressources:*/ 465 for(j=0;j<num_cflevelsetmisfits;j++){ 466 char* string=NULL; 467 IssmDouble* matrix = NULL; 468 469 string = cflevelsetmisfit_definitionstring_s[j]; xDelete<char>(string); 470 string = cflevelsetmisfit_observation_string_s[j]; xDelete<char>(string); 471 string = cflevelsetmisfit_model_string_s[j]; xDelete<char>(string); 472 string = cflevelsetmisfit_weights_string_s[j]; xDelete<char>(string); 473 string = cflevelsetmisfit_name_s[j]; xDelete<char>(string); 474 matrix = cflevelsetmisfit_observation_s[j]; xDelete<IssmDouble>(matrix); 475 matrix = cflevelsetmisfit_weights_s[j]; xDelete<IssmDouble>(matrix); 476 } 477 xDelete<char*>(cflevelsetmisfit_name_s); 478 xDelete<char*>(cflevelsetmisfit_model_string_s); 479 xDelete<char*>(cflevelsetmisfit_definitionstring_s); 480 xDelete<IssmDouble*>(cflevelsetmisfit_observation_s); 481 xDelete<char*>(cflevelsetmisfit_observation_string_s); 482 xDelete<int>(cflevelsetmisfit_observation_M_s); 483 xDelete<int>(cflevelsetmisfit_observation_N_s); 484 xDelete<IssmDouble*>(cflevelsetmisfit_weights_s); 485 xDelete<int>(cflevelsetmisfit_weights_M_s); 486 xDelete<int>(cflevelsetmisfit_weights_N_s); 487 xDelete<char*>(cflevelsetmisfit_weights_string_s); 488 xDelete<IssmDouble>(cflevelsetmisfit_datatime_s); 402 489 /*}}}*/ 403 490 } -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r26242 r26252 707 707 LevelsetfunctionSlopeXEnum, 708 708 LevelsetfunctionSlopeYEnum, 709 LevelsetObservationEnum, 709 710 LoadingforceXEnum, 710 711 LoadingforceYEnum, … … 712 713 MaskOceanLevelsetEnum, 713 714 MaskIceLevelsetEnum, 715 MaskIceRefLevelsetEnum, 714 716 MasstransportSpcthicknessEnum, 715 717 MaterialsRheologyBEnum, … … 1012 1014 WaterfractionEnum, 1013 1015 WaterheightEnum, 1016 WeightsLevelsetObservationEnum, 1014 1017 WeightsSurfaceObservationEnum, 1015 1018 OldAccumulatedDeltaBottomPressureEnum, … … 1157 1160 CfsurfacelogvelEnum, 1158 1161 CfsurfacesquareEnum, 1162 CflevelsetmisfitEnum, 1159 1163 ChannelEnum, 1160 1164 ChannelAreaEnum, -
issm/trunk-jpl/src/m/classes/cfsurfacelogvel.m
r25405 r26252 101 101 WriteData(fid,prefix,'data',self.weights,'name','md.cfsurfacelogvel.weights','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts); 102 102 WriteData(fid,prefix,'data',self.weights_string,'name','md.cfsurfacelogvel.weights_string','format','String'); 103 WriteData(fid,prefix,'data',round(self.datatime*md.constants.yts),'name','md.cfsurfacelogvel.datatime','format',' Integer');103 WriteData(fid,prefix,'data',round(self.datatime*md.constants.yts),'name','md.cfsurfacelogvel.datatime','format','Double'); 104 104 end % }}} 105 105 end -
issm/trunk-jpl/src/m/classes/cfsurfacesquare.m
r22508 r26252 98 98 WriteData(fid,prefix,'data',self.weights,'name','md.cfsurfacesquare.weights','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts); 99 99 WriteData(fid,prefix,'data',self.weights_string,'name','md.cfsurfacesquare.weights_string','format','String'); 100 WriteData(fid,prefix,'data',round(self.datatime*md.constants.yts),'name','md.cfsurfacesquare.datatime','format',' Integer');100 WriteData(fid,prefix,'data',round(self.datatime*md.constants.yts),'name','md.cfsurfacesquare.datatime','format','Double'); 101 101 end % }}} 102 102 end
Note:
See TracChangeset
for help on using the changeset viewer.