Changeset 25080


Ignore:
Timestamp:
06/19/20 17:51:42 (5 years ago)
Author:
Eric.Larour
Message:

CHG: scaling of Gia inputs from mm/yr to m/yr into the ISSM C++ SI system of units.
Also changed the logic for a default giamme that has not been configured -> marshall one model with 0 Ngia and Ugia

Location:
issm/trunk-jpl/src
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/analyses/GiaAnalysis.cpp

    r25066 r25080  
    4444        }
    4545        else if(giamodel==3){
    46                 int nummodels=0;
    47                 iomodel->FetchData(&nummodels,"md.gia.nummodels");
    48                 if(nummodels){
    49                         /*take Ngia and Ugia from the offline models and plug into the element inputs:*/
    50                         iomodel->FetchDataToDatasetInput(inputs2,elements,"md.gia.Ngia",GiaMmeNgiaEnum);
    51                         iomodel->FetchDataToDatasetInput(inputs2,elements,"md.gia.Ugia",GiaMmeUgiaEnum);
    52                 }
    53                 else{
    54                         /*we have been provided no models, just an zero array, use it to fill NGiaRate and UGiaRate:*/
    55                         iomodel->FetchDataToInput(inputs2,elements,"md.gia.Ngia",NGiaRateEnum);
    56                         iomodel->FetchDataToInput(inputs2,elements,"md.gia.Ugia",UGiaRateEnum);
    57                 }
     46                /*take Ngia and Ugia from the offline models and plug into the element inputs:*/
     47                iomodel->FetchDataToDatasetInput(inputs2,elements,"md.gia.Ngia",GiaMmeNgiaEnum);
     48                iomodel->FetchDataToDatasetInput(inputs2,elements,"md.gia.Ugia",GiaMmeUgiaEnum);
    5849        }
    5950}/*}}}*/
     
    8273                parameters->FindParam(&nummodels,GiaNummodelsEnum);
    8374
    84                 if(nummodels){
    85                         iomodel->FetchData(&modelid,"md.gia.modelid");
    86                         /*create double param, not int param, because Dakota will be updating it as
    87                          * a double potentially: */
    88                         parameters->AddObject(new DoubleParam(GiaModelidEnum,modelid));
     75                /*create double param, not int param, because Dakota will be updating it as
     76                 * a double potentially: */
     77                iomodel->FetchData(&modelid,"md.gia.modelid");
     78                parameters->AddObject(new DoubleParam(GiaModelidEnum,modelid));
    8979
    90                         /*quick checks: */
    91                         if(nummodels<=0)_error_("giamme object in  md.gia field should contain at least 1 ensemble model!");
    92                         if(modelid<=0 || modelid>nummodels)_error_("modelid field in giamme object of md.gia field should be between 1 and the number of ensemble runs!");
    93                 }
     80                /*quick checks: */
     81                if(nummodels<=0)_error_("giamme object in  md.gia field should contain at least 1 ensemble model!");
     82                if(modelid<=0 || modelid>nummodels)_error_("modelid field in giamme object of md.gia field should be between 1 and the number of ensemble runs!");
    9483        }
    9584
  • issm/trunk-jpl/src/c/cores/gia_core.cpp

    r25066 r25080  
    7171        else if(giamodel==3){ //GiaMme
    7272               
     73                /*Go grab the values for Ngia and Ugia in the offline GiaMme class:*/
     74                femmodel->parameters->FindParam(&modelid,GiaModelidEnum);
     75                modelid--; //from matlab
    7376
    74                 /*Go grab the values for Ngia and Ugia in the offline GiaMme class:*/
    75                 femmodel->parameters->FindParam(&nummodels,GiaNummodelsEnum);
    76                 if(nummodels){
    77                         femmodel->parameters->FindParam(&modelid,GiaModelidEnum);
    78                         modelid--; //from matlab
     77                /*find the Ngia and Ugia dataset:*/
     78                DatasetInput2* dataset_input_ngia=femmodel->inputs2->GetDatasetInput2(GiaMmeNgiaEnum);
     79                DatasetInput2* dataset_input_ugia=femmodel->inputs2->GetDatasetInput2(GiaMmeUgiaEnum);
     80                /*Go find the modelid'th input:*/
     81                TriaInput2* tria_input_ngia=dataset_input_ngia->GetTriaInputByOffset(modelid);
     82                TriaInput2* tria_input_ugia=dataset_input_ugia->GetTriaInputByOffset(modelid);
    7983
    80                         /*find the Ngia and Ugia dataset:*/
    81                         DatasetInput2* dataset_input_ngia=femmodel->inputs2->GetDatasetInput2(GiaMmeNgiaEnum);
    82                         DatasetInput2* dataset_input_ugia=femmodel->inputs2->GetDatasetInput2(GiaMmeUgiaEnum);
    83                         /*Go find the modelid'th input:*/
    84                         TriaInput2* tria_input_ngia=dataset_input_ngia->GetTriaInputByOffset(modelid);
    85                         TriaInput2* tria_input_ugia=dataset_input_ugia->GetTriaInputByOffset(modelid);
    86 
    87                         /*Plug into SealevelUGiaRate and SealevelNGiaRate inputs:*/
    88                         Input2* tria_input_copy_ngia=tria_input_ngia->copy();
    89                         Input2* tria_input_copy_ugia=tria_input_ugia->copy();
    90                         tria_input_copy_ngia->ChangeEnum(NGiaRateEnum);
    91                         tria_input_copy_ugia->ChangeEnum(UGiaRateEnum);
    92                         femmodel->inputs2->AddInput(tria_input_copy_ngia);
    93                         femmodel->inputs2->AddInput(tria_input_copy_ugia);
    94                 }
     84                /*Plug into SealevelUGiaRate and SealevelNGiaRate inputs:*/
     85                Input2* tria_input_copy_ngia=tria_input_ngia->copy();
     86                Input2* tria_input_copy_ugia=tria_input_ugia->copy();
     87                tria_input_copy_ngia->ChangeEnum(NGiaRateEnum);
     88                tria_input_copy_ugia->ChangeEnum(UGiaRateEnum);
     89                femmodel->inputs2->AddInput(tria_input_copy_ngia);
     90                femmodel->inputs2->AddInput(tria_input_copy_ugia);
    9591        }
    9692       
  • issm/trunk-jpl/src/m/classes/giamme.m

    r25066 r25080  
    5050                        disp(sprintf('   gia mme parameters:'));
    5151                        fielddisplay(self,'modelid','index into the multi-model ensemble, determines which field will be used.');
    52                         fielddisplay(self,'Ngia','geoid (m/yr).');
    53                         fielddisplay(self,'Ugia','uplift (m/yr).');
     52                        fielddisplay(self,'Ngia','geoid (mm/yr).');
     53                        fielddisplay(self,'Ugia','uplift (mm/yr).');
    5454                end % }}}
    5555                function marshall(self,prefix,md,fid) % {{{
    56 
    5756                        WriteData(fid,prefix,'name','md.gia.model','data',3,'format','Integer');
    58                         WriteData(fid,prefix,'name','md.gia.nummodels','data',size(self.Ngia,2),'format','Integer');
    59                         WriteData(fid,prefix,'object',self,'fieldname','modelid','format','Double');
    6057                        if size(self.Ngia,2)==0,
    6158                                WriteData(fid,prefix,'data',zeros(md.mesh.numberofvertices,1),'format','DoubleMat','mattype',1,'name','md.gia.Ngia');
    6259                                WriteData(fid,prefix,'data',zeros(md.mesh.numberofvertices,1),'format','DoubleMat','mattype',1,'name','md.gia.Ugia');
     60                                WriteData(fid,prefix,'data',1,'name','modelid','format','Double');
     61                                WriteData(fid,prefix,'name','md.gia.nummodels','data',1,'format','Integer');
    6362                        else
    64                                 WriteData(fid,prefix,'object',self,'fieldname','Ngia','format','DoubleMat');
    65                                 WriteData(fid,prefix,'object',self,'fieldname','Ugia','format','DoubleMat');
     63                                WriteData(fid,prefix,'object',self,'fieldname','Ngia','format','DoubleMat','scale',1/1000);
     64                                WriteData(fid,prefix,'object',self,'fieldname','Ugia','format','DoubleMat','scale',1/1000);
     65                                WriteData(fid,prefix,'object',self,'fieldname','modelid','format','Double');
     66                                WriteData(fid,prefix,'name','md.gia.nummodels','data',size(self.Ngia,2),'format','Integer');
    6667                        end
    6768                end % }}}
Note: See TracChangeset for help on using the changeset viewer.