Changeset 25066


Ignore:
Timestamp:
06/18/20 18:48:50 (5 years ago)
Author:
Eric.Larour
Message:

CHG: moved GiaIvinsAnalysis to GiaAnalysis.
Made giamme the default gia offline class.
Made giacore handle giaivins, giamme and giacaron classes.
Added gia core to transient core.
Remove gia logic from sea level rise core, back into gia core.

Location:
issm/trunk-jpl/src
Files:
26 edited
2 moved

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/Makefile.am

    r24985 r25066  
    499499#}}}
    500500#Gia sources (only if have fortran){{{
    501 if GIAIVINS
     501if GIA
    502502if FORTRAN
    503503issm_sources += \
    504504        ./cores/gia_core.cpp \
    505         ./analyses/GiaIvinsAnalysis.cpp \
     505        ./analyses/GiaAnalysis.cpp \
    506506        ./modules/GiaDeflectionCorex/GiaDeflectionCorex.cpp \
    507507        ./modules/GiaDeflectionCorex/distme.f \
  • issm/trunk-jpl/src/c/analyses/EnumToAnalysis.cpp

    r23936 r25066  
    6565                case GLheightadvectionAnalysisEnum : return new GLheightadvectionAnalysis();
    6666                #endif
    67                 #ifdef _HAVE_GIAIVINS_
    68                 case GiaIvinsAnalysisEnum : return new GiaIvinsAnalysis();
     67                #ifdef _HAVE_GIA_
     68                case GiaAnalysisEnum : return new GiaAnalysis();
    6969                #endif
    7070                #ifdef _HAVE_HYDROLOGYDCEFFICIENT_
  • issm/trunk-jpl/src/c/analyses/GiaAnalysis.cpp

    r25065 r25066  
    1 #include "./GiaIvinsAnalysis.h"
     1#include "./GiaAnalysis.h"
    22#include "../toolkits/toolkits.h"
    33#include "../classes/classes.h"
     
    66
    77/*Model processing*/
    8 void GiaIvinsAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
     8void GiaAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
    99        /*No constraints*/
    1010}/*}}}*/
    11 void GiaIvinsAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
     11void GiaAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
    1212        /*No loads*/
    1313}/*}}}*/
    14 void GiaIvinsAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
    15         ::CreateNodes(nodes,iomodel,GiaIvinsAnalysisEnum,P1Enum);
     14void GiaAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
     15        ::CreateNodes(nodes,iomodel,GiaAnalysisEnum,P1Enum);
    1616}/*}}}*/
    17 int  GiaIvinsAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
     17int  GiaAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
    1818        return 1;
    1919}/*}}}*/
    20 void GiaIvinsAnalysis::UpdateElements(Elements* elements,Inputs2* inputs2,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
     20void GiaAnalysis::UpdateElements(Elements* elements,Inputs2* inputs2,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
     21
     22        int giamodel=0;
     23        int nummodels=0;
    2124
    2225        /*Update elements: */
     
    3033        }
    3134
    32         iomodel->FetchDataToInput(inputs2,elements,"md.geometry.thickness",ThicknessEnum);
    33         iomodel->FetchDataToInput(inputs2,elements,"md.gia.mantle_viscosity",GiaMantleViscosityEnum);
    34         iomodel->FetchDataToInput(inputs2,elements,"md.gia.lithosphere_thickness",GiaLithosphereThicknessEnum);
    35         iomodel->FetchDataToInput(inputs2,elements,"md.mask.ice_levelset",MaskIceLevelsetEnum);
     35        /*fetch gia model type: */
     36        iomodel->FetchData(&giamodel,"md.gia.model");
     37        if(giamodel==1){ //GiaIvins
     38                iomodel->FetchDataToInput(inputs2,elements,"md.geometry.thickness",ThicknessEnum);
     39                iomodel->FetchDataToInput(inputs2,elements,"md.gia.mantle_viscosity",GiaMantleViscosityEnum);
     40                iomodel->FetchDataToInput(inputs2,elements,"md.gia.lithosphere_thickness",GiaLithosphereThicknessEnum);
     41                iomodel->FetchDataToInput(inputs2,elements,"md.mask.ice_levelset",MaskIceLevelsetEnum);
     42        }
     43        else if(giamodel==2){ //GiaCaron: not implemneted yet
     44        }
     45        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                }
     58        }
    3659}/*}}}*/
    37 void GiaIvinsAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
     60void GiaAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
    3861
    39         parameters->AddObject(iomodel->CopyConstantObject("md.gia.cross_section_shape",GiaCrossSectionShapeEnum));
     62        int                 giamodel;
     63        IssmDouble          modelid;
     64        int                 nummodels;
     65
     66        /*find gia model type: */
     67        parameters->AddObject(iomodel->CopyConstantObject("md.gia.model",GiaModelEnum));
     68        parameters->FindParam(&giamodel,GiaModelEnum);
     69
     70        if(giamodel==1){ //GiaIvins
     71                parameters->AddObject(iomodel->CopyConstantObject("md.gia.cross_section_shape",GiaCrossSectionShapeEnum));
     72                parameters->AddObject(iomodel->CopyConstantObject("md.materials.lithosphere_shear_modulus",MaterialsLithosphereShearModulusEnum));
     73                parameters->AddObject(iomodel->CopyConstantObject("md.materials.lithosphere_density",MaterialsLithosphereDensityEnum));
     74                parameters->AddObject(iomodel->CopyConstantObject("md.materials.mantle_shear_modulus",MaterialsMantleShearModulusEnum));
     75                parameters->AddObject(iomodel->CopyConstantObject("md.materials.mantle_density",MaterialsMantleDensityEnum));
     76        }
     77        else if(giamodel==2){ //GiaCaron
     78        }
     79        else if(giamodel==3){ //GiaMme
     80               
     81                parameters->AddObject(iomodel->CopyConstantObject("md.gia.nummodels",GiaNummodelsEnum));
     82                parameters->FindParam(&nummodels,GiaNummodelsEnum);
     83
     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));
     89
     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                }
     94        }
     95
    4096
    4197}/*}}}*/
    4298
    4399/*Finite Element Analysis*/
    44 void           GiaIvinsAnalysis::Core(FemModel* femmodel){/*{{{*/
     100void           GiaAnalysis::Core(FemModel* femmodel){/*{{{*/
    45101        _error_("not implemented");
    46102}/*}}}*/
    47 ElementVector* GiaIvinsAnalysis::CreateDVector(Element* element){/*{{{*/
     103ElementVector* GiaAnalysis::CreateDVector(Element* element){/*{{{*/
    48104        /*Default, return NULL*/
    49105        return NULL;
    50106}/*}}}*/
    51 ElementMatrix* GiaIvinsAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
     107ElementMatrix* GiaAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/
    52108_error_("Not implemented");
    53109}/*}}}*/
    54 ElementMatrix* GiaIvinsAnalysis::CreateKMatrix(Element* element){/*{{{*/
     110ElementMatrix* GiaAnalysis::CreateKMatrix(Element* element){/*{{{*/
    55111        _error_("not implemented yet");
    56112}/*}}}*/
    57 ElementVector* GiaIvinsAnalysis::CreatePVector(Element* element){/*{{{*/
     113ElementVector* GiaAnalysis::CreatePVector(Element* element){/*{{{*/
    58114_error_("not implemented yet");
    59115}/*}}}*/
    60 void           GiaIvinsAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
     116void           GiaAnalysis::GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element){/*{{{*/
    61117           _error_("not implemented yet");
    62118}/*}}}*/
    63 void           GiaIvinsAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
     119void           GiaAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
    64120        _error_("Not implemented yet");
    65121}/*}}}*/
    66 void           GiaIvinsAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
     122void           GiaAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
    67123        _error_("not implemented yet");
    68124}/*}}}*/
    69 void           GiaIvinsAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
     125void           GiaAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
    70126        /*Default, do nothing*/
    71127        return;
  • issm/trunk-jpl/src/c/analyses/GiaAnalysis.h

    r25065 r25066  
    1 /*! \file GiaIvinsAnalysis.h
     1/*! \file GiaAnalysis.h
    22 *  \brief: header file for generic external result object
    33 */
    44
    5 #ifndef _GiaIvinsAnalysis_
    6 #define _GiaIvinsAnalysis_
     5#ifndef _GiaAnalysis_
     6#define _GiaAnalysis_
    77
    88/*Headers*/
    99#include "./Analysis.h"
    1010
    11 class GiaIvinsAnalysis: public Analysis{
     11class GiaAnalysis: public Analysis{
    1212
    1313        public:
  • issm/trunk-jpl/src/c/analyses/SealevelriseAnalysis.cpp

    r25060 r25066  
    2424        int geodetic=0;
    2525        int dslmodel=0;
    26         int giamodel=0;
    2726
    2827        /*Update elements: */
     
    4443        iomodel->FetchDataToInput(inputs2,elements,"md.slr.sealevel",SealevelEnum,0);
    4544        iomodel->FetchDataToInput(inputs2,elements,"md.geometry.bed",BedEnum);
    46         iomodel->FetchDataToInput(inputs2,elements,"md.slr.Ngia",SealevelNGiaRateEnum);
    47         iomodel->FetchDataToInput(inputs2,elements,"md.slr.Ugia",SealevelUGiaRateEnum);
    4845        iomodel->FetchDataToInput(inputs2,elements,"md.slr.hydro_rate",SealevelriseHydroRateEnum);
    4946               
     
    267264        else _error_("Dsl model " << dslmodel << " not implemented yet!");
    268265               
    269         /*gia mme model: */
    270         iomodel->FetchData(&giamodel,"md.gia.model");
    271         if(giamodel==3){
    272                 /*deal with Ngia and Ugia: */
    273                 iomodel->FetchDataToDatasetInput(inputs2,elements,"md.gia.Ngia",GiaMmeNgiaEnum);
    274                 iomodel->FetchDataToDatasetInput(inputs2,elements,"md.gia.Ugia",GiaMmeUgiaEnum);
    275         }
     266       
    276267
    277268        /*Initialize cumdeltalthickness and sealevel rise rate input*/
     
    291282        IssmDouble* love_l=NULL;
    292283        int         dslmodel=0;
    293         int         giamodel=0;
    294284
    295285        IssmDouble* G_rigid = NULL;
     
    317307        /*some constant parameters: */
    318308        parameters->AddObject(iomodel->CopyConstantObject("md.dsl.model",DslModelEnum));
    319         parameters->AddObject(iomodel->CopyConstantObject("md.gia.model",GiaModelEnum));
    320309        parameters->AddObject(iomodel->CopyConstantObject("md.slr.geodetic_run_frequency",SealevelriseGeodeticRunFrequencyEnum));
    321310        parameters->AddObject(iomodel->CopyConstantObject("md.slr.reltol",SealevelriseReltolEnum));
     
    357346                if(modelid<=0 || modelid>nummodels)_error_("modelid field in dslmme object of md.dsl field should be between 1 and the number of ensemble runs!");
    358347        } /*}}}*/
    359         /*Deal with gia multi-model ensembles: {{{*/
    360         iomodel->FetchData(&giamodel,"md.gia.model");
    361         if(giamodel==3){
    362                 IssmDouble modelid;
    363                 int nummodels;
    364 
    365                 parameters->AddObject(iomodel->CopyConstantObject("md.gia.nummodels",GiaNummodelsEnum));
    366                 iomodel->FetchData(&modelid,"md.gia.modelid");
    367                 /*create double param, not int param, because Dakota will be updating it as
    368                  * a double potentially: */
    369                 parameters->AddObject(new DoubleParam(GiaModelidEnum,modelid));
    370 
    371                 iomodel->FetchData(&nummodels,"md.gia.nummodels");
    372 
    373                 /*quick checks: */
    374                 if(nummodels<=0)_error_("giamme object in  md.gia field should contain at least 1 ensemble model!");
    375                 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!");
    376         } /*}}}*/
    377348        /*Deal with elasticity {{{*/
    378349        /*love numbers: */
  • issm/trunk-jpl/src/c/analyses/analyses.h

    r23936 r25066  
    2323#include "./FreeSurfaceBaseAnalysis.h"
    2424#include "./FreeSurfaceTopAnalysis.h"
    25 #include "./GiaIvinsAnalysis.h"
     25#include "./GiaAnalysis.h"
    2626#include "./GLheightadvectionAnalysis.h"
    2727#include "./LoveAnalysis.h"
  • issm/trunk-jpl/src/c/classes/Elements/Element.h

    r24947 r25066  
    366366                virtual void       WriteFieldIsovalueSegment(DataSet* segments,int fieldenum,IssmDouble fieldvalue){_error_("not implemented yet");};
    367367
    368                 #ifdef _HAVE_GIAIVINS_
     368                #ifdef _HAVE_GIA_
    369369                virtual void       GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,IssmDouble* x,IssmDouble* y)=0;
    370370                #endif
  • issm/trunk-jpl/src/c/classes/Elements/Penta.cpp

    r25024 r25066  
    47064706/*}}}*/
    47074707
    4708 #ifdef _HAVE_GIAIVINS_
     4708#ifdef _HAVE_GIA_
    47094709void       Penta::GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,IssmDouble* x,IssmDouble* y){/*{{{*/
    47104710        _error_("GIA deflection not implemented yet!");
  • issm/trunk-jpl/src/c/classes/Elements/Penta.h

    r24947 r25066  
    204204                #endif
    205205
    206                 #ifdef _HAVE_GIAIVINS_
     206                #ifdef _HAVE_GIA_
    207207                void           GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,IssmDouble* x,IssmDouble* y);
    208208                #endif
  • issm/trunk-jpl/src/c/classes/Elements/Seg.h

    r24947 r25066  
    164164                IssmDouble     GetAreaSpherical(void){_error_("not implemented yet!");};
    165165
    166 #ifdef _HAVE_GIAIVINS_
     166#ifdef _HAVE_GIA_
    167167                void        GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,IssmDouble* x,IssmDouble* y){_error_("not implemented yet");};
    168168#endif
  • issm/trunk-jpl/src/c/classes/Elements/Tetra.h

    r24947 r25066  
    170170                void        ViscousHeating(IssmDouble* pphi,IssmDouble* xyz_list,Gauss* gauss,Input2* vx_input,Input2* vy_input,Input2* vz_input);
    171171
    172 #ifdef _HAVE_GIAIVINS_
     172#ifdef _HAVE_GIA_
    173173                void        GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,IssmDouble* x,IssmDouble* y){_error_("not implemented yet");};
    174174#endif
  • issm/trunk-jpl/src/c/classes/Elements/Tria.cpp

    r25024 r25066  
    2121#include "../Inputs2/TransientInput2.h"
    2222#include "../../shared/shared.h"
    23 #ifdef _HAVE_GIAIVINS_
     23#ifdef _HAVE_GIA_
    2424#include "../../modules/GiaDeflectionCorex/GiaDeflectionCorex.h"
    2525#endif
     
    49514951/*}}}*/
    49524952
    4953 #ifdef _HAVE_GIAIVINS_
     4953#ifdef _HAVE_GIA_
    49544954void       Tria::GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,IssmDouble* x, IssmDouble* y){/*{{{*/
    49554955
  • issm/trunk-jpl/src/c/classes/Elements/Tria.h

    r24968 r25066  
    155155                void                    WriteFieldIsovalueSegment(DataSet* segments,int fieldenum,IssmDouble fieldvalue);
    156156
    157                 #ifdef _HAVE_GIAIVINS_
     157                #ifdef _HAVE_GIA_
    158158                void   GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,IssmDouble* x,IssmDouble* y);
    159159                #endif
  • issm/trunk-jpl/src/c/classes/FemModel.cpp

    r24998 r25066  
    770770
    771771                case GiaSolutionEnum:
    772                         analyses_temp[numanalyses++]=GiaIvinsAnalysisEnum;
     772                        analyses_temp[numanalyses++]=GiaAnalysisEnum;
    773773                        break;
    774774
     
    783783                case SealevelriseSolutionEnum:
    784784                        analyses_temp[numanalyses++]=SealevelriseAnalysisEnum;
     785                        analyses_temp[numanalyses++]=GiaAnalysisEnum;
    785786                        break;
    786787
     
    845846                        }
    846847                        if(isslr){
     848                                analyses_temp[numanalyses++]=GiaAnalysisEnum;
    847849                                analyses_temp[numanalyses++]=SealevelriseAnalysisEnum;
    848850                        }
     
    851853                        }
    852854                        if(isgia){
    853                                 analyses_temp[numanalyses++]=GiaIvinsAnalysisEnum;
     855                                analyses_temp[numanalyses++]=GiaAnalysisEnum;
    854856                        }
    855857
     
    46024604/*}}}*/
    46034605#endif
    4604 #ifdef _HAVE_GIAIVINS_
     4606#ifdef _HAVE_GIA_
    46054607void FemModel::Deflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt, IssmDouble* x, IssmDouble* y){ /*{{{*/
    46064608
  • issm/trunk-jpl/src/c/classes/FemModel.h

    r24984 r25066  
    155155                void ThicknessAbsGradientx( IssmDouble* pJ);
    156156                void ThicknessPositivex(IssmDouble* pJ);
    157                 #ifdef _HAVE_GIAIVINS_
     157                #ifdef _HAVE_GIA_
    158158                void Deflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt, IssmDouble* x, IssmDouble* y);
    159159                #endif
  • issm/trunk-jpl/src/c/cores/CorePointerFromSolutionEnum.cpp

    r24984 r25066  
    6666                        break;
    6767                case GiaSolutionEnum:
    68                         #if _HAVE_GIAIVINS_
     68                        #if _HAVE_GIA_
    6969                        solutioncore=&gia_core;
    7070                        #else
  • issm/trunk-jpl/src/c/cores/gia_core.cpp

    r23589 r25066  
    66#include "../toolkits/toolkits.h"
    77#include "../classes/classes.h"
     8#include "../classes/Inputs2/TriaInput2.h"
     9#include "../classes/Inputs2/DatasetInput2.h"
    810#include "../shared/shared.h"
    911#include "../modules/modules.h"
     
    1113void gia_core(FemModel* femmodel){
    1214
    13         /*Start profiler*/
    14         femmodel->profiler->Start(GIACORE);
    15 
    1615        Vector<IssmDouble> *wg    = NULL;
    1716        Vector<IssmDouble> *dwdtg = NULL;
    1817        IssmDouble          *x    = NULL;
    1918        IssmDouble          *y    = NULL;
     19        int nummodels,giamodel;
     20        IssmDouble modelid;
    2021
    2122        /*parameters: */
    2223        bool save_results;
    2324        int  gsize;
     25       
     26        /*Start profiler*/
     27        femmodel->profiler->Start(GIACORE);
    2428
    2529        /*Recover some parameters: */
     
    2933
    3034        /*Call on core computations: */
    31         femmodel->SetCurrentConfiguration(GiaIvinsAnalysisEnum);
     35        femmodel->SetCurrentConfiguration(GiaAnalysisEnum);
    3236
    33         /*Figure out size of g-set deflection vector and allocate solution vector: */
    34         gsize      = femmodel->nodes->NumberOfDofs(GsetEnum);
    35         wg = new Vector<IssmDouble>(gsize);
    36         dwdtg = new Vector<IssmDouble>(gsize);
     37        /*Figure out type of gia model:*/
     38        femmodel->parameters->FindParam(&giamodel,GiaModelEnum);
    3739
    38         /*first, recover x and y vectors from vertices: */
    39         VertexCoordinatesx(&x,&y,NULL,femmodel->vertices); //no need for z coordinate
     40        if(giamodel==1){ //GiaIvins
     41                /*Figure out size of g-set deflection vector and allocate solution vector: */
     42                gsize      = femmodel->nodes->NumberOfDofs(GsetEnum);
     43                wg = new Vector<IssmDouble>(gsize);
     44                dwdtg = new Vector<IssmDouble>(gsize);
    4045
    41         /*call the main module: */
    42         femmodel->Deflection(wg,dwdtg,x,y);
     46                /*first, recover x and y vectors from vertices: */
     47                VertexCoordinatesx(&x,&y,NULL,femmodel->vertices); //no need for z coordinate
    4348
    44         /*assemble vector: */
    45         wg->Assemble();
    46         dwdtg->Assemble();
     49                /*call the main module: */
     50                femmodel->Deflection(wg,dwdtg,x,y);
    4751
    48         InputUpdateFromVectorx(femmodel,wg,GiaWEnum,VertexSIdEnum);
    49         InputUpdateFromVectorx(femmodel,dwdtg,GiadWdtEnum,VertexSIdEnum);
     52                /*assemble vector: */
     53                wg->Assemble();
     54                dwdtg->Assemble();
    5055
    51         if(save_results){
    52                 if(VerboseSolution()) _printf0_("   saving results\n");
    53                 int outputs[2] = {GiaWEnum,GiadWdtEnum};
    54                 femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],2);
     56                InputUpdateFromVectorx(femmodel,wg,UGiaEnum,VertexSIdEnum);
     57                InputUpdateFromVectorx(femmodel,dwdtg,UGiaRateEnum,VertexSIdEnum);
     58
     59                if(save_results){
     60                        if(VerboseSolution()) _printf0_("   saving results\n");
     61                        int outputs[2] = {UGiaEnum,UGiaRateEnum};
     62                        femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],2);
     63                }
     64
     65                xDelete<IssmDouble>(x);
     66                xDelete<IssmDouble>(y);
    5567        }
     68        else if(giamodel==2){ //GiaCaron
     69                /*not implemneted yet*/
     70        }
     71        else if(giamodel==3){ //GiaMme
     72               
    5673
    57         xDelete<IssmDouble>(x);
    58         xDelete<IssmDouble>(y);
     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
     79
     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                }
     95        }
    5996       
    6097        /*End profiler*/
  • issm/trunk-jpl/src/c/cores/sealevelchange_core.cpp

    r25060 r25066  
    191191                InputUpdateFromVectorx(femmodel,U_esa_rate,SealevelUEsaRateEnum,VertexSIdEnum);
    192192                InputUpdateFromVectorx(femmodel,N_esa_rate,SealevelNEsaRateEnum,VertexSIdEnum);
    193                 InputUpdateFromVectorx(femmodel,U_gia_rate,SealevelUGiaRateEnum,VertexSIdEnum);
    194                 InputUpdateFromVectorx(femmodel,N_gia_rate,SealevelNGiaRateEnum,VertexSIdEnum);
     193                InputUpdateFromVectorx(femmodel,U_gia_rate,UGiaRateEnum,VertexSIdEnum);
     194                InputUpdateFromVectorx(femmodel,N_gia_rate,NGiaRateEnum,VertexSIdEnum);
    195195                InputUpdateFromVectorx(femmodel,RSLg_rate,SealevelRSLRateEnum,VertexSIdEnum);
    196196                InputUpdateFromVectorx(femmodel,U_esa,SealevelUEsaEnum,VertexSIdEnum);
    197197                InputUpdateFromVectorx(femmodel,N_esa,SealevelNEsaEnum,VertexSIdEnum);
    198                 InputUpdateFromVectorx(femmodel,U_gia,SealevelUGiaEnum,VertexSIdEnum);
    199                 InputUpdateFromVectorx(femmodel,N_gia,SealevelNGiaEnum,VertexSIdEnum);
     198                InputUpdateFromVectorx(femmodel,U_gia,UGiaEnum,VertexSIdEnum);
     199                InputUpdateFromVectorx(femmodel,N_gia,NGiaEnum,VertexSIdEnum);
    200200                InputUpdateFromVectorx(femmodel,RSLg,SealevelRSLEnum,VertexSIdEnum);
    201201                InputUpdateFromVectorx(femmodel,RSLg_eustatic,SealevelRSLEustaticEnum,VertexSIdEnum);
     
    210210                /*transfer sea level back to ice caps:*/
    211211                TransferSealevel(femmodel,SealevelNEsaRateEnum);
    212                 TransferSealevel(femmodel,SealevelNGiaRateEnum);
     212                TransferSealevel(femmodel,NGiaRateEnum);
    213213                TransferSealevel(femmodel,SealevelUEsaRateEnum);
    214                 TransferSealevel(femmodel,SealevelUGiaRateEnum);
     214                TransferSealevel(femmodel,UGiaRateEnum);
    215215
    216216                //reset cumdeltathickness  to 0:
     
    286286        if(geodetic){
    287287                GetVectorFromInputsx(&U_esa_rate,femmodel,SealevelUEsaRateEnum,VertexSIdEnum);
    288                 GetVectorFromInputsx(&U_gia_rate,femmodel,SealevelUGiaRateEnum,VertexSIdEnum);
     288                GetVectorFromInputsx(&U_gia_rate,femmodel,UGiaRateEnum,VertexSIdEnum);
    289289                GetVectorFromInputsx(&N_esa_rate,femmodel,SealevelNEsaRateEnum,VertexSIdEnum);
    290                 GetVectorFromInputsx(&N_gia_rate,femmodel,SealevelNGiaRateEnum,VertexSIdEnum);
     290                GetVectorFromInputsx(&N_gia_rate,femmodel,NGiaRateEnum,VertexSIdEnum);
    291291        }
    292292
     
    625625        /*parameters:*/
    626626        int                                     frequency;
    627         int                 giamodel;
    628         IssmDouble          modelid;
    629627        IssmDouble          dt;
    630628       
     
    634632        femmodel->parameters->FindParam(&frequency,SealevelriseGeodeticRunFrequencyEnum);
    635633        femmodel->parameters->FindParam(&dt,TimesteppingTimeStepEnum);
    636         femmodel->parameters->FindParam(&giamodel,GiaModelEnum);
    637 
    638         if(giamodel==3){
    639                 /*need to actively get GIA from the MME ensemble, and plug it into
    640                  * the elements as inputs SealevelUGiaRateEnum and SealevelNGiaRateEnum :*/
    641                 femmodel->parameters->FindParam(&modelid,GiaModelidEnum);
    642                
    643                 modelid--; //from matlab
    644 
    645                 /*find the GiaMmeNgiaEnum dataset:*/
    646                 DatasetInput2* dataset_input_ngia=femmodel->inputs2->GetDatasetInput2(GiaMmeNgiaEnum);
    647                 DatasetInput2* dataset_input_ugia=femmodel->inputs2->GetDatasetInput2(GiaMmeUgiaEnum);
    648 
    649                 /*Go find the modelid'th input:*/
    650                 TriaInput2* tria_input_ngia=dataset_input_ngia->GetTriaInputByOffset(modelid);
    651                 TriaInput2* tria_input_ugia=dataset_input_ugia->GetTriaInputByOffset(modelid);
    652 
    653                 /*Plug into SealevelUGiaRate and SealevelNGiaRate inputs:*/
    654                 Input2* tria_input_copy_ngia=tria_input_ngia->copy();
    655                 Input2* tria_input_copy_ugia=tria_input_ugia->copy();
    656                 tria_input_copy_ngia->ChangeEnum(SealevelNGiaRateEnum);
    657                 tria_input_copy_ugia->ChangeEnum(SealevelUGiaRateEnum);
    658                 femmodel->inputs2->AddInput(tria_input_copy_ngia);
    659                 femmodel->inputs2->AddInput(tria_input_copy_ugia);
    660         }
    661        
     634
    662635        /*recover GIA rates:*/
    663         GetVectorFromInputsx(&U_gia,femmodel,SealevelUGiaRateEnum,VertexSIdEnum);
    664         GetVectorFromInputsx(&N_gia,femmodel,SealevelNGiaRateEnum,VertexSIdEnum);
     636        GetVectorFromInputsx(&U_gia,femmodel,UGiaRateEnum,VertexSIdEnum);
     637        GetVectorFromInputsx(&N_gia,femmodel,NGiaRateEnum,VertexSIdEnum);
    665638
    666639        /*we just loaded rates, that's not what's being asked, scale by time:*/
  • issm/trunk-jpl/src/c/cores/transient_core.cpp

    r24984 r25066  
    217217                if(isgia){
    218218                        if(VerboseSolution()) _printf0_("   computing glacial isostatic adjustment\n");
    219                         #ifdef _HAVE_GIAIVINS_
     219                        #ifdef _HAVE_GIA_
    220220                        gia_core(femmodel);
    221221                        #else
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp

    r24903 r25066  
    326326                        parameters->AddObject(iomodel->CopyConstantObject("md.constants.g",ConstantsGEnum));
    327327                        parameters->AddObject(iomodel->CopyConstantObject("md.materials.rheology_law",MaterialsRheologyLawEnum));
    328 
    329                         /*gia: */
    330                         parameters->AddObject(iomodel->CopyConstantObject("md.materials.lithosphere_shear_modulus",MaterialsLithosphereShearModulusEnum));
    331                         parameters->AddObject(iomodel->CopyConstantObject("md.materials.lithosphere_density",MaterialsLithosphereDensityEnum));
    332                         parameters->AddObject(iomodel->CopyConstantObject("md.materials.mantle_shear_modulus",MaterialsMantleShearModulusEnum));
    333                         parameters->AddObject(iomodel->CopyConstantObject("md.materials.mantle_density",MaterialsMantleDensityEnum));
    334 
    335                         /*slr:*/
    336328                        parameters->AddObject(iomodel->CopyConstantObject("md.materials.earth_density",MaterialsEarthDensityEnum));
     329
    337330                        break;
    338331                case MaterialsEnum:{
     
    365358                                                parameters->AddObject(iomodel->CopyConstantObject("md.materials.rheology_law",MaterialsRheologyLawEnum));
    366359
    367                                                 /*gia: */
    368                                                 parameters->AddObject(iomodel->CopyConstantObject("md.materials.lithosphere_shear_modulus",MaterialsLithosphereShearModulusEnum));
    369                                                 parameters->AddObject(iomodel->CopyConstantObject("md.materials.lithosphere_density",MaterialsLithosphereDensityEnum));
    370                                                 parameters->AddObject(iomodel->CopyConstantObject("md.materials.mantle_shear_modulus",MaterialsMantleShearModulusEnum));
    371                                                 parameters->AddObject(iomodel->CopyConstantObject("md.materials.mantle_density",MaterialsMantleDensityEnum));
    372 
    373360                                                /*slr:*/
    374361                                                parameters->AddObject(iomodel->CopyConstantObject("md.materials.earth_density",MaterialsEarthDensityEnum));
  • issm/trunk-jpl/src/c/shared/Enum/Enum.vim

    r25060 r25066  
    588588syn keyword cConstant GiaLithosphereThicknessEnum
    589589syn keyword cConstant GiaMantleViscosityEnum
    590 syn keyword cConstant GiaWEnum
    591 syn keyword cConstant GiadWdtEnum
     590syn keyword cConstant NGiaEnum
     591syn keyword cConstant NGiaRateEnum
     592syn keyword cConstant UGiaEnum
     593syn keyword cConstant UGiaRateEnum
    592594syn keyword cConstant GradientEnum
    593595syn keyword cConstant GroundinglineHeightEnum
     
    675677syn keyword cConstant SealevelNEsaEnum
    676678syn keyword cConstant SealevelNEsaRateEnum
    677 syn keyword cConstant SealevelNGiaEnum
    678 syn keyword cConstant SealevelNGiaRateEnum
    679679syn keyword cConstant SealevelRSLEnum
    680680syn keyword cConstant SealevelRSLEustaticEnum
     
    684684syn keyword cConstant SealevelUEsaEnum
    685685syn keyword cConstant SealevelUEsaRateEnum
    686 syn keyword cConstant SealevelUGiaEnum
    687 syn keyword cConstant SealevelUGiaRateEnum
    688686syn keyword cConstant SealevelUNorthEsaEnum
    689687syn keyword cConstant SealevelriseCumDeltathicknessEnum
     
    10801078syn keyword cConstant GenericOptionEnum
    10811079syn keyword cConstant GenericParamEnum
    1082 syn keyword cConstant GiaIvinsAnalysisEnum
     1080syn keyword cConstant GiaAnalysisEnum
    10831081syn keyword cConstant GiaSolutionEnum
    10841082syn keyword cConstant Gradient1Enum
     
    14901488syn keyword cType FreeSurfaceTopAnalysis
    14911489syn keyword cType GLheightadvectionAnalysis
    1492 syn keyword cType GiaIvinsAnalysis
     1490syn keyword cType GiaAnalysis
    14931491syn keyword cType HydrologyDCEfficientAnalysis
    14941492syn keyword cType HydrologyDCInefficientAnalysis
  • issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

    r25060 r25066  
    585585        GiaLithosphereThicknessEnum,
    586586        GiaMantleViscosityEnum,
    587         GiaWEnum,
    588         GiadWdtEnum,
     587        NGiaEnum,
     588        NGiaRateEnum,
     589        UGiaEnum,
     590        UGiaRateEnum,
    589591        GradientEnum,
    590592        GroundinglineHeightEnum,
     
    672674        SealevelNEsaEnum,
    673675        SealevelNEsaRateEnum,
    674         SealevelNGiaEnum,
    675         SealevelNGiaRateEnum,
    676676        SealevelRSLEnum,
    677677        SealevelRSLEustaticEnum,
     
    681681        SealevelUEsaEnum,
    682682        SealevelUEsaRateEnum,
    683         SealevelUGiaEnum,
    684         SealevelUGiaRateEnum,
    685683        SealevelUNorthEsaEnum,
    686684        SealevelriseCumDeltathicknessEnum,
     
    10801078        GenericOptionEnum,
    10811079        GenericParamEnum,
    1082         GiaIvinsAnalysisEnum,
     1080        GiaAnalysisEnum,
    10831081        GiaSolutionEnum,
    10841082        Gradient1Enum,
  • issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp

    r25060 r25066  
    590590                case GiaLithosphereThicknessEnum : return "GiaLithosphereThickness";
    591591                case GiaMantleViscosityEnum : return "GiaMantleViscosity";
    592                 case GiaWEnum : return "GiaW";
    593                 case GiadWdtEnum : return "GiadWdt";
     592                case NGiaEnum : return "NGia";
     593                case NGiaRateEnum : return "NGiaRate";
     594                case UGiaEnum : return "UGia";
     595                case UGiaRateEnum : return "UGiaRate";
    594596                case GradientEnum : return "Gradient";
    595597                case GroundinglineHeightEnum : return "GroundinglineHeight";
     
    677679                case SealevelNEsaEnum : return "SealevelNEsa";
    678680                case SealevelNEsaRateEnum : return "SealevelNEsaRate";
    679                 case SealevelNGiaEnum : return "SealevelNGia";
    680                 case SealevelNGiaRateEnum : return "SealevelNGiaRate";
    681681                case SealevelRSLEnum : return "SealevelRSL";
    682682                case SealevelRSLEustaticEnum : return "SealevelRSLEustatic";
     
    686686                case SealevelUEsaEnum : return "SealevelUEsa";
    687687                case SealevelUEsaRateEnum : return "SealevelUEsaRate";
    688                 case SealevelUGiaEnum : return "SealevelUGia";
    689                 case SealevelUGiaRateEnum : return "SealevelUGiaRate";
    690688                case SealevelUNorthEsaEnum : return "SealevelUNorthEsa";
    691689                case SealevelriseCumDeltathicknessEnum : return "SealevelriseCumDeltathickness";
     
    10821080                case GenericOptionEnum : return "GenericOption";
    10831081                case GenericParamEnum : return "GenericParam";
    1084                 case GiaIvinsAnalysisEnum : return "GiaIvinsAnalysis";
     1082                case GiaAnalysisEnum : return "GiaAnalysis";
    10851083                case GiaSolutionEnum : return "GiaSolution";
    10861084                case Gradient1Enum : return "Gradient1";
  • issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp

    r25060 r25066  
    602602              else if (strcmp(name,"GiaLithosphereThickness")==0) return GiaLithosphereThicknessEnum;
    603603              else if (strcmp(name,"GiaMantleViscosity")==0) return GiaMantleViscosityEnum;
    604               else if (strcmp(name,"GiaW")==0) return GiaWEnum;
    605               else if (strcmp(name,"GiadWdt")==0) return GiadWdtEnum;
     604              else if (strcmp(name,"NGia")==0) return NGiaEnum;
     605              else if (strcmp(name,"NGiaRate")==0) return NGiaRateEnum;
     606              else if (strcmp(name,"UGia")==0) return UGiaEnum;
     607              else if (strcmp(name,"UGiaRate")==0) return UGiaRateEnum;
    606608              else if (strcmp(name,"Gradient")==0) return GradientEnum;
    607609              else if (strcmp(name,"GroundinglineHeight")==0) return GroundinglineHeightEnum;
     
    627629              else if (strcmp(name,"HydrologyHeadOld")==0) return HydrologyHeadOldEnum;
    628630              else if (strcmp(name,"HydrologyMoulinInput")==0) return HydrologyMoulinInputEnum;
    629               else if (strcmp(name,"HydrologyNeumannflux")==0) return HydrologyNeumannfluxEnum;
    630               else if (strcmp(name,"HydrologyReynolds")==0) return HydrologyReynoldsEnum;
    631631         else stage=6;
    632632   }
    633633   if(stage==6){
    634               if (strcmp(name,"HydrologySheetConductivity")==0) return HydrologySheetConductivityEnum;
     634              if (strcmp(name,"HydrologyNeumannflux")==0) return HydrologyNeumannfluxEnum;
     635              else if (strcmp(name,"HydrologyReynolds")==0) return HydrologyReynoldsEnum;
     636              else if (strcmp(name,"HydrologySheetConductivity")==0) return HydrologySheetConductivityEnum;
    635637              else if (strcmp(name,"HydrologySheetThickness")==0) return HydrologySheetThicknessEnum;
    636638              else if (strcmp(name,"HydrologySheetThicknessOld")==0) return HydrologySheetThicknessOldEnum;
     
    692694              else if (strcmp(name,"SealevelNEsa")==0) return SealevelNEsaEnum;
    693695              else if (strcmp(name,"SealevelNEsaRate")==0) return SealevelNEsaRateEnum;
    694               else if (strcmp(name,"SealevelNGia")==0) return SealevelNGiaEnum;
    695               else if (strcmp(name,"SealevelNGiaRate")==0) return SealevelNGiaRateEnum;
    696696              else if (strcmp(name,"SealevelRSL")==0) return SealevelRSLEnum;
    697697              else if (strcmp(name,"SealevelRSLEustatic")==0) return SealevelRSLEustaticEnum;
     
    701701              else if (strcmp(name,"SealevelUEsa")==0) return SealevelUEsaEnum;
    702702              else if (strcmp(name,"SealevelUEsaRate")==0) return SealevelUEsaRateEnum;
    703               else if (strcmp(name,"SealevelUGia")==0) return SealevelUGiaEnum;
    704               else if (strcmp(name,"SealevelUGiaRate")==0) return SealevelUGiaRateEnum;
    705703              else if (strcmp(name,"SealevelUNorthEsa")==0) return SealevelUNorthEsaEnum;
    706704              else if (strcmp(name,"SealevelriseCumDeltathickness")==0) return SealevelriseCumDeltathicknessEnum;
     
    752750              else if (strcmp(name,"SmbEC")==0) return SmbECEnum;
    753751              else if (strcmp(name,"SmbECDt")==0) return SmbECDtEnum;
     752              else if (strcmp(name,"SmbECini")==0) return SmbECiniEnum;
     753              else if (strcmp(name,"SmbEla")==0) return SmbElaEnum;
    754754         else stage=7;
    755755   }
    756756   if(stage==7){
    757               if (strcmp(name,"SmbECini")==0) return SmbECiniEnum;
    758               else if (strcmp(name,"SmbEla")==0) return SmbElaEnum;
    759               else if (strcmp(name,"SmbEvaporation")==0) return SmbEvaporationEnum;
     757              if (strcmp(name,"SmbEvaporation")==0) return SmbEvaporationEnum;
    760758              else if (strcmp(name,"SmbFAC")==0) return SmbFACEnum;
    761759              else if (strcmp(name,"SmbGdn")==0) return SmbGdnEnum;
     
    875873              else if (strcmp(name,"VzHO")==0) return VzHOEnum;
    876874              else if (strcmp(name,"VzMesh")==0) return VzMeshEnum;
     875              else if (strcmp(name,"VzSSA")==0) return VzSSAEnum;
     876              else if (strcmp(name,"WaterColumnOld")==0) return WaterColumnOldEnum;
    877877         else stage=8;
    878878   }
    879879   if(stage==8){
    880               if (strcmp(name,"VzSSA")==0) return VzSSAEnum;
    881               else if (strcmp(name,"WaterColumnOld")==0) return WaterColumnOldEnum;
    882               else if (strcmp(name,"Watercolumn")==0) return WatercolumnEnum;
     880              if (strcmp(name,"Watercolumn")==0) return WatercolumnEnum;
    883881              else if (strcmp(name,"WaterfractionDrainage")==0) return WaterfractionDrainageEnum;
    884882              else if (strcmp(name,"WaterfractionDrainageIntegrated")==0) return WaterfractionDrainageIntegratedEnum;
     
    998996              else if (strcmp(name,"Arrhenius")==0) return ArrheniusEnum;
    999997              else if (strcmp(name,"AutodiffJacobian")==0) return AutodiffJacobianEnum;
     998              else if (strcmp(name,"Balancethickness2Analysis")==0) return Balancethickness2AnalysisEnum;
     999              else if (strcmp(name,"Balancethickness2Solution")==0) return Balancethickness2SolutionEnum;
    10001000         else stage=9;
    10011001   }
    10021002   if(stage==9){
    1003               if (strcmp(name,"Balancethickness2Analysis")==0) return Balancethickness2AnalysisEnum;
    1004               else if (strcmp(name,"Balancethickness2Solution")==0) return Balancethickness2SolutionEnum;
    1005               else if (strcmp(name,"BalancethicknessAnalysis")==0) return BalancethicknessAnalysisEnum;
     1003              if (strcmp(name,"BalancethicknessAnalysis")==0) return BalancethicknessAnalysisEnum;
    10061004              else if (strcmp(name,"BalancethicknessApparentMassbalance")==0) return BalancethicknessApparentMassbalanceEnum;
    10071005              else if (strcmp(name,"BalancethicknessSoftAnalysis")==0) return BalancethicknessSoftAnalysisEnum;
     
    11061104              else if (strcmp(name,"GenericOption")==0) return GenericOptionEnum;
    11071105              else if (strcmp(name,"GenericParam")==0) return GenericParamEnum;
    1108               else if (strcmp(name,"GiaIvinsAnalysis")==0) return GiaIvinsAnalysisEnum;
     1106              else if (strcmp(name,"GiaAnalysis")==0) return GiaAnalysisEnum;
    11091107              else if (strcmp(name,"GiaSolution")==0) return GiaSolutionEnum;
    11101108              else if (strcmp(name,"Gradient1")==0) return Gradient1Enum;
     
    11211119              else if (strcmp(name,"Hook")==0) return HookEnum;
    11221120              else if (strcmp(name,"HydrologyDCEfficientAnalysis")==0) return HydrologyDCEfficientAnalysisEnum;
     1121              else if (strcmp(name,"HydrologyDCInefficientAnalysis")==0) return HydrologyDCInefficientAnalysisEnum;
     1122              else if (strcmp(name,"HydrologyGlaDSAnalysis")==0) return HydrologyGlaDSAnalysisEnum;
    11231123         else stage=10;
    11241124   }
    11251125   if(stage==10){
    1126               if (strcmp(name,"HydrologyDCInefficientAnalysis")==0) return HydrologyDCInefficientAnalysisEnum;
    1127               else if (strcmp(name,"HydrologyGlaDSAnalysis")==0) return HydrologyGlaDSAnalysisEnum;
    1128               else if (strcmp(name,"HydrologyGlaDS")==0) return HydrologyGlaDSEnum;
     1126              if (strcmp(name,"HydrologyGlaDS")==0) return HydrologyGlaDSEnum;
    11291127              else if (strcmp(name,"HydrologyPismAnalysis")==0) return HydrologyPismAnalysisEnum;
    11301128              else if (strcmp(name,"HydrologyShaktiAnalysis")==0) return HydrologyShaktiAnalysisEnum;
     
    12441242              else if (strcmp(name,"P1P1GLS")==0) return P1P1GLSEnum;
    12451243              else if (strcmp(name,"P1bubble")==0) return P1bubbleEnum;
     1244              else if (strcmp(name,"P1bubblecondensed")==0) return P1bubblecondensedEnum;
     1245              else if (strcmp(name,"P1xP2")==0) return P1xP2Enum;
    12461246         else stage=11;
    12471247   }
    12481248   if(stage==11){
    1249               if (strcmp(name,"P1bubblecondensed")==0) return P1bubblecondensedEnum;
    1250               else if (strcmp(name,"P1xP2")==0) return P1xP2Enum;
    1251               else if (strcmp(name,"P1xP3")==0) return P1xP3Enum;
     1249              if (strcmp(name,"P1xP3")==0) return P1xP3Enum;
    12521250              else if (strcmp(name,"P1xP4")==0) return P1xP4Enum;
    12531251              else if (strcmp(name,"P2")==0) return P2Enum;
     
    13671365              else if (strcmp(name,"EtaAbsGradient")==0) return EtaAbsGradientEnum;
    13681366              else if (strcmp(name,"MeshZ")==0) return MeshZEnum;
     1367              else if (strcmp(name,"NearestInterp")==0) return NearestInterpEnum;
     1368              else if (strcmp(name,"OutputdefinitionList")==0) return OutputdefinitionListEnum;
    13691369         else stage=12;
    13701370   }
    13711371   if(stage==12){
    1372               if (strcmp(name,"NearestInterp")==0) return NearestInterpEnum;
    1373               else if (strcmp(name,"OutputdefinitionList")==0) return OutputdefinitionListEnum;
    1374               else if (strcmp(name,"SealevelObs")==0) return SealevelObsEnum;
     1372              if (strcmp(name,"SealevelObs")==0) return SealevelObsEnum;
    13751373              else if (strcmp(name,"SealevelWeights")==0) return SealevelWeightsEnum;
    13761374              else if (strcmp(name,"StrainRate")==0) return StrainRateEnum;
  • issm/trunk-jpl/src/c/shared/io/Marshalling/IoCodeConversions.cpp

    r24753 r25066  
    168168                fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
    169169        }
    170         else if(strcmp(string_in,"SealevelNGiaRate")==0){
    171                 const char* field = "md.slr.Ngia";
    172                 input_enum        = SealevelNGiaRateEnum;
     170        else if(strcmp(string_in,"NGiaRate")==0){
     171                const char* field = "md.gia.Ngia";
     172                input_enum        = NGiaRateEnum;
    173173                fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
    174174        }
     
    183183                fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
    184184        }
    185         else if(strcmp(string_in,"SealevelUGiaRate")==0){
    186                 const char* field = "md.slr.Ugia";
    187                 input_enum        = SealevelUGiaRateEnum;
     185        else if(strcmp(string_in,"UGiaRate")==0){
     186                const char* field = "md.gia.Ugia";
     187                input_enum        = UGiaRateEnum;
    188188                fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1));
    189189        }
  • issm/trunk-jpl/src/m/classes/giamme.m

    r25056 r25066  
    3333
    3434                        self.modelid=0;
    35                         self.Ngia={};
    36                         self.Ugia={};
     35                        self.Ngia=[];
     36                        self.Ugia=[];
    3737
    3838                end % }}}
     
    4444                        md = checkfield(md,'field',self.Ngia,'NaN',1,'Inf',1);
    4545                        md = checkfield(md,'field',self.Ugia,'NaN',1,'Inf',1);
    46                         md = checkfield(md,'field',self.modelid,'NaN',1,'Inf',1,'>=',1,'<=',length(self.Ngia));
     46                        md = checkfield(md,'field',self.modelid,'NaN',1,'Inf',1,'>=',0,'<=',length(self.Ngia));
    4747                end % }}}
    4848                function disp(self) % {{{
     
    5656
    5757                        WriteData(fid,prefix,'name','md.gia.model','data',3,'format','Integer');
    58                         WriteData(fid,prefix,'name','md.gia.nummodels','data',length(self.Ngia),'format','Integer');
     58                        WriteData(fid,prefix,'name','md.gia.nummodels','data',size(self.Ngia,2),'format','Integer');
    5959                        WriteData(fid,prefix,'object',self,'fieldname','modelid','format','Double');
    60                         WriteData(fid,prefix,'object',self,'fieldname','Ngia','format','DoubleMat');
    61                         WriteData(fid,prefix,'object',self,'fieldname','Ugia','format','DoubleMat');
    62 
     60                        if size(self.Ngia,2)==0,
     61                                WriteData(fid,prefix,'data',zeros(md.mesh.numberofvertices,1),'format','DoubleMat','mattype',1,'name','md.gia.Ngia');
     62                                WriteData(fid,prefix,'data',zeros(md.mesh.numberofvertices,1),'format','DoubleMat','mattype',1,'name','md.gia.Ugia');
     63                        else
     64                                WriteData(fid,prefix,'object',self,'fieldname','Ngia','format','DoubleMat');
     65                                WriteData(fid,prefix,'object',self,'fieldname','Ugia','format','DoubleMat');
     66                        end
    6367                end % }}}
    6468                function savemodeljs(self,fid,modelname) % {{{
  • issm/trunk-jpl/src/m/classes/model.m

    r24861 r25066  
    136136                        end
    137137                        %2017 April 10th
    138                         if isa(md.gia,'gia'), md.gia=giaivins(); end
     138                        if isa(md.gia,'gia'), md.gia=giamme(); end
    139139                        %2017 May 4th
    140140                        if isa(md.amr,'double'); md.amr=amr(); end
     
    12291229                        md.calving          = calving();
    12301230                        md.frontalforcings  = frontalforcings();
    1231                         md.gia                          = giaivins();
     1231                        md.gia                          = giamme();
    12321232                        md.esa              = esa();
    12331233                        md.love             = fourierlove();
  • issm/trunk-jpl/src/m/classes/slr.m

    r24960 r25066  
    3030                degacc                 = 0;
    3131                horiz                  = 0;
    32                 Ngia                   = NaN;
    33                 Ugia                   = NaN;
    3432                planetradius           = planetradius('earth');
    3533
     
    125123                        md = checkfield(md,'fieldname','slr.requested_outputs','stringrow',1);
    126124                        md = checkfield(md,'fieldname','slr.horiz','NaN',1,'Inf',1,'values',[0 1]);
    127                         md = checkfield(md,'fieldname','slr.Ngia','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
    128                         md = checkfield(md,'fieldname','slr.Ugia','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
    129125
    130126                        %check that love numbers are provided at the same level of accuracy:
     
    179175                        fielddisplay(self,'ocean_area_scaling','correction for model representation of ocean area [default: No correction]');
    180176                        fielddisplay(self,'hydro_rate','rate of hydrological expansion (in mm/yr)');
    181                         fielddisplay(self,'Ngia','rate of viscous (GIA) geoid expansion (in mm/yr)');
    182                         fielddisplay(self,'Ugia','rate of viscous (GIA) bedrock uplift (in mm/yr)');
    183177                        fielddisplay(self,'geodetic','compute geodetic SLR? ( in addition to steric?) default 0');
    184178                        fielddisplay(self,'geodetic_run_frequency','how many time steps we skip before we run SLR solver during transient (default: 1)');
     
    215209                        WriteData(fid,prefix,'object',self,'fieldname','geodetic_run_frequency','format','Integer');
    216210                        WriteData(fid,prefix,'object',self,'fieldname','hydro_rate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts,'scale',1e-3/md.constants.yts);
    217                         WriteData(fid,prefix,'object',self,'fieldname','Ngia','format','DoubleMat','mattype',1,'scale',1e-3/md.constants.yts);
    218                         WriteData(fid,prefix,'object',self,'fieldname','Ugia','format','DoubleMat','mattype',1,'scale',1e-3/md.constants.yts);
    219211                        WriteData(fid,prefix,'object',self,'fieldname','degacc','format','Double');
    220212                        WriteData(fid,prefix,'object',self,'fieldname','transitions','format','MatArray');
Note: See TracChangeset for help on using the changeset viewer.