Changeset 14724 for issm/trunk-jpl/src


Ignore:
Timestamp:
04/23/13 14:52:18 (12 years ago)
Author:
Eric.Larour
Message:

CHG: introduced all the enums necessary for element inputs to the GiaDeflectionCore.
Introduced new fields in materials to include some of the material properties of the mantle
and lithosphere.
Introduced new class gia in model to control the lithosphere thickness.

Location:
issm/trunk-jpl/src
Files:
8 added
8 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/EnumDefinitions/EnumDefinitions.h

    r14688 r14724  
    141141        MaterialsThermalExchangeVelocityEnum,
    142142        MaterialsThermalconductivityEnum,
     143        MaterialsLithosphereShearModulusEnum,
     144        MaterialsLithosphereDensityEnum,
     145        MaterialsMantleShearModulusEnum,
     146        MaterialsMantleViscosityEnum,
     147        MaterialsMantleDensityEnum,
    143148        MeshAverageVertexConnectivityEnum,
    144149        MeshDimensionEnum,
     
    219224        ThermalStabilizationEnum,
    220225        ThermalIsenthalpyEnum,
     226        GiaLithosphereThicknessEnum,
    221227        ThicknessEnum,
    222228        TimesteppingStartTimeEnum,
  • issm/trunk-jpl/src/c/modules/EnumToStringx/EnumToStringx.cpp

    r14688 r14724  
    146146                case MaterialsThermalExchangeVelocityEnum : return "MaterialsThermalExchangeVelocity";
    147147                case MaterialsThermalconductivityEnum : return "MaterialsThermalconductivity";
     148                case MaterialsLithosphereShearModulusEnum : return "MaterialsLithosphereShearModulus";
     149                case MaterialsLithosphereDensityEnum : return "MaterialsLithosphereDensity";
     150                case MaterialsMantleShearModulusEnum : return "MaterialsMantleShearModulus";
     151                case MaterialsMantleViscosityEnum : return "MaterialsMantleViscosity";
     152                case MaterialsMantleDensityEnum : return "MaterialsMantleDensity";
    148153                case MeshAverageVertexConnectivityEnum : return "MeshAverageVertexConnectivity";
    149154                case MeshDimensionEnum : return "MeshDimension";
     
    224229                case ThermalStabilizationEnum : return "ThermalStabilization";
    225230                case ThermalIsenthalpyEnum : return "ThermalIsenthalpy";
     231                case GiaLithosphereThicknessEnum : return "GiaLithosphereThickness";
    226232                case ThicknessEnum : return "Thickness";
    227233                case TimesteppingStartTimeEnum : return "TimesteppingStartTime";
  • issm/trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp

    r14688 r14724  
    150150              else if (strcmp(name,"MaterialsThermalExchangeVelocity")==0) return MaterialsThermalExchangeVelocityEnum;
    151151              else if (strcmp(name,"MaterialsThermalconductivity")==0) return MaterialsThermalconductivityEnum;
     152              else if (strcmp(name,"MaterialsLithosphereShearModulus")==0) return MaterialsLithosphereShearModulusEnum;
     153              else if (strcmp(name,"MaterialsLithosphereDensity")==0) return MaterialsLithosphereDensityEnum;
     154              else if (strcmp(name,"MaterialsMantleShearModulus")==0) return MaterialsMantleShearModulusEnum;
     155              else if (strcmp(name,"MaterialsMantleViscosity")==0) return MaterialsMantleViscosityEnum;
     156              else if (strcmp(name,"MaterialsMantleDensity")==0) return MaterialsMantleDensityEnum;
    152157              else if (strcmp(name,"MeshAverageVertexConnectivity")==0) return MeshAverageVertexConnectivityEnum;
    153158              else if (strcmp(name,"MeshDimension")==0) return MeshDimensionEnum;
     
    228233              else if (strcmp(name,"ThermalStabilization")==0) return ThermalStabilizationEnum;
    229234              else if (strcmp(name,"ThermalIsenthalpy")==0) return ThermalIsenthalpyEnum;
     235              else if (strcmp(name,"GiaLithosphereThickness")==0) return GiaLithosphereThicknessEnum;
    230236              else if (strcmp(name,"Thickness")==0) return ThicknessEnum;
    231237              else if (strcmp(name,"TimesteppingStartTime")==0) return TimesteppingStartTimeEnum;
     
    255261              else if (strcmp(name,"WeakBalancethicknessSolution")==0) return WeakBalancethicknessSolutionEnum;
    256262              else if (strcmp(name,"BedSlopeAnalysis")==0) return BedSlopeAnalysisEnum;
    257               else if (strcmp(name,"BedSlopeSolution")==0) return BedSlopeSolutionEnum;
     263         else stage=3;
     264   }
     265   if(stage==3){
     266              if (strcmp(name,"BedSlopeSolution")==0) return BedSlopeSolutionEnum;
    258267              else if (strcmp(name,"BedSlopeXAnalysis")==0) return BedSlopeXAnalysisEnum;
    259268              else if (strcmp(name,"BedSlopeYAnalysis")==0) return BedSlopeYAnalysisEnum;
     
    261270              else if (strcmp(name,"DiagnosticHutterAnalysis")==0) return DiagnosticHutterAnalysisEnum;
    262271              else if (strcmp(name,"DiagnosticSolution")==0) return DiagnosticSolutionEnum;
    263          else stage=3;
    264    }
    265    if(stage==3){
    266               if (strcmp(name,"DiagnosticVertAnalysis")==0) return DiagnosticVertAnalysisEnum;
     272              else if (strcmp(name,"DiagnosticVertAnalysis")==0) return DiagnosticVertAnalysisEnum;
    267273              else if (strcmp(name,"EnthalpyAnalysis")==0) return EnthalpyAnalysisEnum;
    268274              else if (strcmp(name,"EnthalpySolution")==0) return EnthalpySolutionEnum;
     
    378384              else if (strcmp(name,"Fill")==0) return FillEnum;
    379385              else if (strcmp(name,"FractionIncrement")==0) return FractionIncrementEnum;
    380               else if (strcmp(name,"Friction")==0) return FrictionEnum;
     386         else stage=4;
     387   }
     388   if(stage==4){
     389              if (strcmp(name,"Friction")==0) return FrictionEnum;
    381390              else if (strcmp(name,"GroundinglineMeltingRate")==0) return GroundinglineMeltingRateEnum;
    382391              else if (strcmp(name,"Internal")==0) return InternalEnum;
     
    384393              else if (strcmp(name,"MassFlux")==0) return MassFluxEnum;
    385394              else if (strcmp(name,"MaxPenetration")==0) return MaxPenetrationEnum;
    386          else stage=4;
    387    }
    388    if(stage==4){
    389               if (strcmp(name,"MeltingOffset")==0) return MeltingOffsetEnum;
     395              else if (strcmp(name,"MeltingOffset")==0) return MeltingOffsetEnum;
    390396              else if (strcmp(name,"Misfit")==0) return MisfitEnum;
    391397              else if (strcmp(name,"NumberNodeToElementConnectivity")==0) return NumberNodeToElementConnectivityEnum;
     
    501507              else if (strcmp(name,"Adjoint")==0) return AdjointEnum;
    502508              else if (strcmp(name,"Colinear")==0) return ColinearEnum;
    503               else if (strcmp(name,"ControlSteady")==0) return ControlSteadyEnum;
     509         else stage=5;
     510   }
     511   if(stage==5){
     512              if (strcmp(name,"ControlSteady")==0) return ControlSteadyEnum;
    504513              else if (strcmp(name,"Fset")==0) return FsetEnum;
    505514              else if (strcmp(name,"Gradient1")==0) return Gradient1Enum;
     
    507516              else if (strcmp(name,"Gradient3")==0) return Gradient3Enum;
    508517              else if (strcmp(name,"Gradient")==0) return GradientEnum;
    509          else stage=5;
    510    }
    511    if(stage==5){
    512               if (strcmp(name,"GroundinglineMigration")==0) return GroundinglineMigrationEnum;
     518              else if (strcmp(name,"GroundinglineMigration")==0) return GroundinglineMigrationEnum;
    513519              else if (strcmp(name,"Gset")==0) return GsetEnum;
    514520              else if (strcmp(name,"Index")==0) return IndexEnum;
  • issm/trunk-jpl/src/c/shared/Numerics/UnitConversion.cpp

    r14175 r14724  
    7171                case MassFluxEnum:                           scale=pow((IssmDouble)10,-12)*yts;break; // (GigaTon/year)
    7272                case TotalSmbEnum:                           scale=pow((IssmDouble)10,-12)*yts;break; // (GigaTon/year)
     73                case GiaLithosphereThicknessEnum:            scale=pow((IssmDouble)10,-3);break; // (km)
     74                case MaterialsLithosphereDensityEnum:        scale=pow((IssmDouble)10,-3);break; // (km)
     75                case MaterialsMantleDensityEnum:             scale=pow((IssmDouble)10,-3);break; // (km)
    7376                default: scale=1.0; break;
    7477        }
  • issm/trunk-jpl/src/m/classes/matice.m

    r14141 r14724  
    2020                rheology_n   = NaN;
    2121                rheology_law = '';
     22
     23                %gia:
     24                lithosphere_shear_modulus  = 0.;
     25                lithosphere_density        = 0.;
     26                mantle_shear_modulus       = 0.;
     27                mantle_viscosity           = 0.;
     28                mantle_density             = 0.;
     29
    2230        end
    2331        methods
     
    7886                        %available: none, paterson and arrhenius
    7987                        obj.rheology_law='Paterson';
     88
     89                        %GIA:
     90                        obj.lithosphere_shear_modulus  = 6.7*10^10; %(Pa)
     91                        obj.lithosphere_density        = 3.32; %(g/cm^-3)
     92                        obj.mantle_shear_modulus       = 1.45*10^11; %(Pa)
     93                        obj.mantle_viscosity           = 10^21; %(Pa.s)
     94                        obj.mantle_density             = 3.34; %(g/cm^-3)
     95
    8096                end % }}}
    8197                function md = checkconsistency(obj,md,solution,analyses) % {{{
     
    87103                        md = checkfield(md,'materials.rheology_n','>',0,'size',[md.mesh.numberofelements 1]);
    88104                        md = checkfield(md,'materials.rheology_law','values',{'None' 'Paterson' 'Arrhenius'});
     105                        md = checkfield(md,'materials.lithosphere_shear_modulus','>',0);
     106                        md = checkfield(md,'materials.lithosphere_density','>',0);
     107                        md = checkfield(md,'materials.mantle_shear_modulus','>',0);
     108                        md = checkfield(md,'materials.mantle_viscosity','>',0);
     109                        md = checkfield(md,'materials.mantle_density','>',0);
     110
    89111                end % }}}
    90112                function disp(obj) % {{{
     
    105127                        fielddisplay(obj,'rheology_n','Glen''s flow law exponent');
    106128                        fielddisplay(obj,'rheology_law','law for the temperature dependance of the rheology: ''None'', ''Paterson'' or ''Arrhenius''');
     129                        fielddisplay(obj,'lithosphere_shear_modulus','Lithosphere shear modulus [Pa]');
     130                        fielddisplay(obj,'lithosphere_density','Lithosphere density [g/cm^-3]');
     131                        fielddisplay(obj,'mantle_shear_modulus','Mantle shear modulus [Pa]');
     132                        fielddisplay(obj,'mantle_viscosity','Mantle viscosity [Pa.s]');
     133                        fielddisplay(obj,'mantle_density','Mantle density [g/cm^-3]');
    107134                end % }}}
    108135                function marshall(obj,fid) % {{{
     
    122149                        WriteData(fid,'object',obj,'class','materials','fieldname','rheology_n','format','DoubleMat','mattype',2);
    123150                        WriteData(fid,'data',StringToEnum(obj.rheology_law),'enum',MaterialsRheologyLawEnum(),'format','Integer');
     151                       
     152                        WriteData(fid,'object',obj,'class','materials','fieldname','lithosphere_shear_modulus','format','Double');
     153                        WriteData(fid,'object',obj,'class','materials','fieldname','lithosphere_density','format','Double');
     154                        WriteData(fid,'object',obj,'class','materials','fieldname','mantle_shear_modulus','format','Double');
     155                        WriteData(fid,'object',obj,'class','materials','fieldname','mantle_viscosity','format','Double');
     156                        WriteData(fid,'object',obj,'class','materials','fieldname','mantle_density','format','Double');
    124157                end % }}}
    125158        end
  • issm/trunk-jpl/src/m/classes/model/model.m

    r14631 r14724  
    3636                steadystate      = 0;
    3737                transient        = 0;
     38                gia              = 0;
    3839
    3940                autodiff         = 0;
     
    208209                        md.geometry.surface=project2d(md,md.geometry.surface,1);
    209210                        md.geometry.thickness=project2d(md,md.geometry.thickness,1);
     211                        md.gia.lithosphere_thickness=project2d(md,md.gia.lithosphere_thickness,1);
    210212                        md.geometry.bed=project2d(md,md.geometry.bed,1);
    211213                        md.geometry.bathymetry=project2d(md,md.geometry.bathymetry,1);
     
    753755                        md.geometry.surface=project3d(md,'vector',md.geometry.surface,'type','node');
    754756                        md.geometry.thickness=project3d(md,'vector',md.geometry.thickness,'type','node');
     757                        md.gia.lithosphere_thickness=project3d(md,'vector',md.gia.lithosphere_thickness,'type','node');
    755758                        md.geometry.hydrostatic_ratio=project3d(md,'vector',md.geometry.hydrostatic_ratio,'type','node');
    756759                        md.geometry.bed=project3d(md,'vector',md.geometry.bed,'type','node');
     
    10961099                        md.steadystate      = steadystate();
    10971100                        md.transient        = transient();
     1101                        md.gia              = gia();
    10981102                        md.autodiff         = autodiff();
    10991103                        md.flaim            = flaim();
     
    11321136                        disp(sprintf('%19s: %-22s -- %s','steadystate'     ,['[1x1 ' class(obj.steadystate) ']'],'parameters for steadystate solution'));
    11331137                        disp(sprintf('%19s: %-22s -- %s','transient'       ,['[1x1 ' class(obj.transient) ']'],'parameters for transient solution'));
     1138                        disp(sprintf('%19s: %-22s -- %s','gia'       ,['[1x1 ' class(obj.gia) ']'],'parameters for gia solution'));
    11341139                        disp(sprintf('%19s: %-22s -- %s','autodiff'        ,['[1x1 ' class(obj.autodiff) ']'],'automatic differentiation parameters'));
    11351140                        disp(sprintf('%19s: %-22s -- %s','flaim'           ,['[1x1 ' class(obj.flaim) ']'],'flaim parameters'));
  • issm/trunk-jpl/src/m/enum/EnumDefinitions.py

    r14689 r14724  
    12991299        return StringToEnum('MaterialsThermalconductivity')[0]
    13001300
     1301def MaterialsLithosphereShearModulusEnum():
     1302        """
     1303        MATERIALSLITHOSPHERESHEARMODULUSENUM - Enum of MaterialsLithosphereShearModulus
     1304
     1305           Usage:
     1306              macro=MaterialsLithosphereShearModulusEnum()
     1307        """
     1308
     1309        return StringToEnum('MaterialsLithosphereShearModulus')[0]
     1310
     1311def MaterialsLithosphereDensityEnum():
     1312        """
     1313        MATERIALSLITHOSPHEREDENSITYENUM - Enum of MaterialsLithosphereDensity
     1314
     1315           Usage:
     1316              macro=MaterialsLithosphereDensityEnum()
     1317        """
     1318
     1319        return StringToEnum('MaterialsLithosphereDensity')[0]
     1320
     1321def MaterialsMantleShearModulusEnum():
     1322        """
     1323        MATERIALSMANTLESHEARMODULUSENUM - Enum of MaterialsMantleShearModulus
     1324
     1325           Usage:
     1326              macro=MaterialsMantleShearModulusEnum()
     1327        """
     1328
     1329        return StringToEnum('MaterialsMantleShearModulus')[0]
     1330
     1331def MaterialsMantleViscosityEnum():
     1332        """
     1333        MATERIALSMANTLEVISCOSITYENUM - Enum of MaterialsMantleViscosity
     1334
     1335           Usage:
     1336              macro=MaterialsMantleViscosityEnum()
     1337        """
     1338
     1339        return StringToEnum('MaterialsMantleViscosity')[0]
     1340
     1341def MaterialsMantleDensityEnum():
     1342        """
     1343        MATERIALSMANTLEDENSITYENUM - Enum of MaterialsMantleDensity
     1344
     1345           Usage:
     1346              macro=MaterialsMantleDensityEnum()
     1347        """
     1348
     1349        return StringToEnum('MaterialsMantleDensity')[0]
     1350
    13011351def MeshAverageVertexConnectivityEnum():
    13021352        """
     
    20792129        return StringToEnum('ThermalIsenthalpy')[0]
    20802130
     2131def GiaLithosphereThicknessEnum():
     2132        """
     2133        GIALITHOSPHERETHICKNESSENUM - Enum of GiaLithosphereThickness
     2134
     2135           Usage:
     2136              macro=GiaLithosphereThicknessEnum()
     2137        """
     2138
     2139        return StringToEnum('GiaLithosphereThickness')[0]
     2140
    20812141def ThicknessEnum():
    20822142        """
     
    51975257        """
    51985258
    5199         return 518
    5200 
     5259        return 524
     5260
  • issm/trunk-jpl/src/m/enum/MaximumNumberOfEnums.m

    r14689 r14724  
    99%      macro=MaximumNumberOfEnums()
    1010
    11 macro=518;
     11macro=524;
Note: See TracChangeset for help on using the changeset viewer.