Changeset 19286


Ignore:
Timestamp:
04/13/15 10:44:40 (10 years ago)
Author:
Eric.Larour
Message:

CHG: first implementation of the esmf compliant binders for ISSM. Inspired from Bin Zhao's work
at Goddard GMAO. The esmf binders consist of three binders:
InitializeISSM, RunISSM and FinalizeISSm, which mirror the main.cpp structure.

These binders will be linked to the GEOS-5 framework, so they are compiled in the libISSMCore only.

The InitializeISSM is concerned mainly with bypassing the forcings that were initialized in ModelProcessorx
with the forcings coming from the GEOS-5 framework. This is accomplished by plugging IssmDouble inputs (from
the gcm forcings) into each element. SurfaceMassBalancex is then modified to basically ignore the initial
setup (for a standard ISSM run) in favor of the forcing we just plugged in.

RunISSM is concerned (for now) with setting the start and final times according to the specified GEOS-5 dt
interval to be run.

FinalizeISSm deletes the ISSM model, standard procedure.

Location:
issm/trunk-jpl/src
Files:
1 added
6 edited

Legend:

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

    r19172 r19286  
    449449endif
    450450#}}}
     451#Esmf sources  {{{
     452if ESMF
     453issm_sources += ./main/esmfbinders.cpp
     454endif
     455#}}}
    451456
    452457#Wrapper sources
  • issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.cpp

    r19236 r19286  
    5959                        if(VerboseSolution())_printf0_("  call smb Melt Components module\n");
    6060                        SmbMeltComponentsx(femmodel);
     61                        break;
     62                case SMBgcmEnum:
     63                        /*Nothing to be done*/
    6164                        break;
    6265                default:
  • issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

    r19215 r19286  
    382382        SurfaceforcingsMeltEnum,
    383383        SurfaceforcingsRefreezeEnum,
     384        SMBgcmEnum,
    384385        /*TO BE REMOVED*/
    385386        SurfaceforcingsIspddEnum,
  • issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp

    r19215 r19286  
    386386                case SurfaceforcingsMeltEnum : return "SurfaceforcingsMelt";
    387387                case SurfaceforcingsRefreezeEnum : return "SurfaceforcingsRefreeze";
     388                case SMBgcmEnum : return "SMBgcm";
    388389                case SurfaceforcingsIspddEnum : return "SurfaceforcingsIspdd";
    389390                case SurfaceforcingsIssmbgradientsEnum : return "SurfaceforcingsIssmbgradients";
  • issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp

    r19215 r19286  
    395395              else if (strcmp(name,"SurfaceforcingsMelt")==0) return SurfaceforcingsMeltEnum;
    396396              else if (strcmp(name,"SurfaceforcingsRefreeze")==0) return SurfaceforcingsRefreezeEnum;
     397              else if (strcmp(name,"SMBgcm")==0) return SMBgcmEnum;
    397398              else if (strcmp(name,"SurfaceforcingsIspdd")==0) return SurfaceforcingsIspddEnum;
    398399              else if (strcmp(name,"SurfaceforcingsIssmbgradients")==0) return SurfaceforcingsIssmbgradientsEnum;
     
    505506              else if (strcmp(name,"Matdamageice")==0) return MatdamageiceEnum;
    506507              else if (strcmp(name,"Matpar")==0) return MatparEnum;
    507               else if (strcmp(name,"Node")==0) return NodeEnum;
    508508         else stage=5;
    509509   }
    510510   if(stage==5){
    511               if (strcmp(name,"Numericalflux")==0) return NumericalfluxEnum;
     511              if (strcmp(name,"Node")==0) return NodeEnum;
     512              else if (strcmp(name,"Numericalflux")==0) return NumericalfluxEnum;
    512513              else if (strcmp(name,"NumericalfluxType")==0) return NumericalfluxTypeEnum;
    513514              else if (strcmp(name,"Param")==0) return ParamEnum;
     
    628629              else if (strcmp(name,"StressTensorxy")==0) return StressTensorxyEnum;
    629630              else if (strcmp(name,"StressTensorxz")==0) return StressTensorxzEnum;
    630               else if (strcmp(name,"StressTensoryy")==0) return StressTensoryyEnum;
    631631         else stage=6;
    632632   }
    633633   if(stage==6){
    634               if (strcmp(name,"StressTensoryz")==0) return StressTensoryzEnum;
     634              if (strcmp(name,"StressTensoryy")==0) return StressTensoryyEnum;
     635              else if (strcmp(name,"StressTensoryz")==0) return StressTensoryzEnum;
    635636              else if (strcmp(name,"StressTensorzz")==0) return StressTensorzzEnum;
    636637              else if (strcmp(name,"StressMaxPrincipal")==0) return StressMaxPrincipalEnum;
     
    751752              else if (strcmp(name,"Outputdefinition63")==0) return Outputdefinition63Enum;
    752753              else if (strcmp(name,"Outputdefinition64")==0) return Outputdefinition64Enum;
    753               else if (strcmp(name,"Outputdefinition65")==0) return Outputdefinition65Enum;
    754754         else stage=7;
    755755   }
    756756   if(stage==7){
    757               if (strcmp(name,"Outputdefinition66")==0) return Outputdefinition66Enum;
     757              if (strcmp(name,"Outputdefinition65")==0) return Outputdefinition65Enum;
     758              else if (strcmp(name,"Outputdefinition66")==0) return Outputdefinition66Enum;
    758759              else if (strcmp(name,"Outputdefinition67")==0) return Outputdefinition67Enum;
    759760              else if (strcmp(name,"Outputdefinition68")==0) return Outputdefinition68Enum;
     
    874875              else if (strcmp(name,"Regular")==0) return RegularEnum;
    875876              else if (strcmp(name,"Scaled")==0) return ScaledEnum;
    876               else if (strcmp(name,"Separate")==0) return SeparateEnum;
    877877         else stage=8;
    878878   }
    879879   if(stage==8){
    880               if (strcmp(name,"Sset")==0) return SsetEnum;
     880              if (strcmp(name,"Separate")==0) return SeparateEnum;
     881              else if (strcmp(name,"Sset")==0) return SsetEnum;
    881882              else if (strcmp(name,"Verbose")==0) return VerboseEnum;
    882883              else if (strcmp(name,"TriangleInterp")==0) return TriangleInterpEnum;
  • issm/trunk-jpl/src/m/enum/EnumDefinitions.py

    r19215 r19286  
    378378def SurfaceforcingsMeltEnum(): return StringToEnum("SurfaceforcingsMelt")[0]
    379379def SurfaceforcingsRefreezeEnum(): return StringToEnum("SurfaceforcingsRefreeze")[0]
     380def SMBgcmEnum(): return StringToEnum("SMBgcm")[0]
    380381def SurfaceforcingsIspddEnum(): return StringToEnum("SurfaceforcingsIspdd")[0]
    381382def SurfaceforcingsIssmbgradientsEnum(): return StringToEnum("SurfaceforcingsIssmbgradients")[0]
Note: See TracChangeset for help on using the changeset viewer.