Changeset 25775
- Timestamp:
- 11/20/20 17:24:18 (4 years ago)
- Location:
- issm/trunk-jpl/src
- Files:
-
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/FreeSurfaceBaseAnalysis.cpp
r25763 r25775 97 97 break; 98 98 case MismipFloatingMeltRateEnum: 99 iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.meltrate_factor",BasalforcingsMeltrateFactorEnum); 99 100 break; 100 101 case MantlePlumeGeothermalFluxEnum: -
issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp
r25763 r25775 171 171 break; 172 172 case MismipFloatingMeltRateEnum: 173 iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.meltrate_factor",BasalforcingsMeltrateFactorEnum); 173 174 break; 174 175 case MantlePlumeGeothermalFluxEnum: -
issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp
r25763 r25775 801 801 break; 802 802 case MismipFloatingMeltRateEnum: 803 iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.meltrate_factor",BasalforcingsMeltrateFactorEnum); 803 804 break; 804 805 case MantlePlumeGeothermalFluxEnum: -
issm/trunk-jpl/src/c/analyses/StressbalanceVerticalAnalysis.cpp
r25763 r25775 125 125 break; 126 126 case MismipFloatingMeltRateEnum: 127 iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.meltrate_factor",BasalforcingsMeltrateFactorEnum); 127 128 break; 128 129 case MantlePlumeGeothermalFluxEnum: -
issm/trunk-jpl/src/c/classes/Elements/Element.cpp
r25728 r25775 2344 2344 /*}}}*/ 2345 2345 void Element::MismipFloatingiceMeltingRate(){/*{{{*/ 2346 2347 IssmDouble thresholdthickness,upperdepthmelt; 2348 IssmDouble base[MAXVERTICES]; 2349 IssmDouble bed[MAXVERTICES]; 2350 IssmDouble meltratefactor[MAXVERTICES]; 2351 IssmDouble values[MAXVERTICES]; 2352 2346 2353 const int NUM_VERTICES = this->GetNumberOfVertices(); 2347 2354 2348 IssmDouble meltratefactor,thresholdthickness,upperdepthmelt;2349 IssmDouble* base = xNew<IssmDouble>(NUM_VERTICES);2350 IssmDouble* bed = xNew<IssmDouble>(NUM_VERTICES);2351 IssmDouble* values = xNew<IssmDouble>(NUM_VERTICES);2352 2353 parameters->FindParam(&meltratefactor,BasalforcingsMeltrateFactorEnum);2354 2355 parameters->FindParam(&thresholdthickness,BasalforcingsThresholdThicknessEnum); 2355 2356 parameters->FindParam(&upperdepthmelt,BasalforcingsUpperdepthMeltEnum); 2356 2357 2357 this->GetInputListOnVertices(base,BaseEnum); 2358 2358 this->GetInputListOnVertices(bed,BedEnum); 2359 this->GetInputListOnVertices(meltratefactor,BasalforcingsMeltrateFactorEnum); 2359 2360 for(int i=0;i<NUM_VERTICES;i++){ 2360 2361 if(base[i]>upperdepthmelt){ … … 2362 2363 } 2363 2364 else{ 2364 values[i]=meltratefactor *tanh((base[i]-bed[i])/thresholdthickness)*(upperdepthmelt-base[i]);2365 values[i]=meltratefactor[i]*tanh((base[i]-bed[i])/thresholdthickness)*(upperdepthmelt-base[i]); 2365 2366 } 2366 2367 } 2367 2368 2368 2369 this->AddInput(BasalforcingsFloatingiceMeltingRateEnum,values,P1Enum); 2369 xDelete<IssmDouble>(base);2370 xDelete<IssmDouble>(bed);2371 xDelete<IssmDouble>(values);2372 2370 2373 2371 }/*}}}*/ -
issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp
r25637 r25775 201 201 break; 202 202 case MismipFloatingMeltRateEnum: 203 parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.meltrate_factor",BasalforcingsMeltrateFactorEnum));204 203 parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.threshold_thickness",BasalforcingsThresholdThicknessEnum)); 205 204 parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.upperdepth_melt",BasalforcingsUpperdepthMeltEnum)); -
issm/trunk-jpl/src/c/shared/Enum/Enum.vim
r25771 r25775 78 78 syn keyword cConstant BasalforcingsLowercrustheatEnum 79 79 syn keyword cConstant BasalforcingsMantleconductivityEnum 80 syn keyword cConstant BasalforcingsMeltrateFactorEnum81 80 syn keyword cConstant BasalforcingsNusseltEnum 82 81 syn keyword cConstant BasalforcingsPicoAverageOverturningEnum … … 516 515 syn keyword cConstant BasalforcingsIsmip6TfShelfEnum 517 516 syn keyword cConstant BasalforcingsIsmip6MeltAnomalyEnum 517 syn keyword cConstant BasalforcingsMeltrateFactorEnum 518 518 syn keyword cConstant BasalforcingsOceanSalinityEnum 519 519 syn keyword cConstant BasalforcingsOceanTempEnum … … 1392 1392 syn keyword cType Cfsurfacesquare 1393 1393 syn keyword cType Channel 1394 syn keyword cType classes1395 1394 syn keyword cType Constraint 1396 1395 syn keyword cType Constraints … … 1399 1398 syn keyword cType ControlInput 1400 1399 syn keyword cType Covertree 1400 syn keyword cType DataSetParam 1401 1401 syn keyword cType DatasetInput 1402 syn keyword cType DataSetParam1403 1402 syn keyword cType Definition 1404 1403 syn keyword cType DependentObject … … 1413 1412 syn keyword cType ElementInput 1414 1413 syn keyword cType ElementMatrix 1414 syn keyword cType ElementVector 1415 1415 syn keyword cType Elements 1416 syn keyword cType ElementVector1417 1416 syn keyword cType ExponentialVariogram 1418 1417 syn keyword cType ExternalResult … … 1421 1420 syn keyword cType Friction 1422 1421 syn keyword cType Gauss 1423 syn keyword cType GaussianVariogram1424 syn keyword cType gaussobjects1425 1422 syn keyword cType GaussPenta 1426 1423 syn keyword cType GaussSeg 1427 1424 syn keyword cType GaussTetra 1428 1425 syn keyword cType GaussTria 1426 syn keyword cType GaussianVariogram 1429 1427 syn keyword cType GenericExternalResult 1430 1428 syn keyword cType GenericOption … … 1441 1439 syn keyword cType IssmDirectApplicInterface 1442 1440 syn keyword cType IssmParallelDirectApplicInterface 1443 syn keyword cType krigingobjects1444 1441 syn keyword cType Load 1445 1442 syn keyword cType Loads … … 1452 1449 syn keyword cType Matice 1453 1450 syn keyword cType Matlitho 1454 syn keyword cType matrixobjects1455 1451 syn keyword cType MatrixParam 1456 1452 syn keyword cType Misfit … … 1465 1461 syn keyword cType Observations 1466 1462 syn keyword cType Option 1463 syn keyword cType OptionUtilities 1467 1464 syn keyword cType Options 1468 syn keyword cType OptionUtilities1469 1465 syn keyword cType Param 1470 1466 syn keyword cType Parameters … … 1480 1476 syn keyword cType Regionaloutput 1481 1477 syn keyword cType Results 1478 syn keyword cType RiftStruct 1482 1479 syn keyword cType Riftfront 1483 syn keyword cType RiftStruct1484 1480 syn keyword cType SealevelMasks 1485 1481 syn keyword cType Seg 1486 1482 syn keyword cType SegInput 1483 syn keyword cType SegRef 1487 1484 syn keyword cType Segment 1488 syn keyword cType SegRef1489 1485 syn keyword cType SpcDynamic 1490 1486 syn keyword cType SpcStatic … … 1505 1501 syn keyword cType Vertex 1506 1502 syn keyword cType Vertices 1503 syn keyword cType classes 1504 syn keyword cType gaussobjects 1505 syn keyword cType krigingobjects 1506 syn keyword cType matrixobjects 1507 1507 syn keyword cType AdjointBalancethickness2Analysis 1508 1508 syn keyword cType AdjointBalancethicknessAnalysis … … 1523 1523 syn keyword cType FreeSurfaceBaseAnalysis 1524 1524 syn keyword cType FreeSurfaceTopAnalysis 1525 syn keyword cType GLheightadvectionAnalysis 1525 1526 syn keyword cType GiaAnalysis 1526 syn keyword cType GLheightadvectionAnalysis1527 1527 syn keyword cType HydrologyDCEfficientAnalysis 1528 1528 syn keyword cType HydrologyDCInefficientAnalysis -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r25771 r25775 72 72 BasalforcingsLowercrustheatEnum, 73 73 BasalforcingsMantleconductivityEnum, 74 BasalforcingsMeltrateFactorEnum,75 74 BasalforcingsNusseltEnum, 76 75 BasalforcingsPicoAverageOverturningEnum, … … 512 511 BasalforcingsIsmip6TfShelfEnum, 513 512 BasalforcingsIsmip6MeltAnomalyEnum, 513 BasalforcingsMeltrateFactorEnum, 514 514 BasalforcingsOceanSalinityEnum, 515 515 BasalforcingsOceanTempEnum, -
issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
r25771 r25775 80 80 case BasalforcingsLowercrustheatEnum : return "BasalforcingsLowercrustheat"; 81 81 case BasalforcingsMantleconductivityEnum : return "BasalforcingsMantleconductivity"; 82 case BasalforcingsMeltrateFactorEnum : return "BasalforcingsMeltrateFactor";83 82 case BasalforcingsNusseltEnum : return "BasalforcingsNusselt"; 84 83 case BasalforcingsPicoAverageOverturningEnum : return "BasalforcingsPicoAverageOverturning"; … … 518 517 case BasalforcingsIsmip6TfShelfEnum : return "BasalforcingsIsmip6TfShelf"; 519 518 case BasalforcingsIsmip6MeltAnomalyEnum : return "BasalforcingsIsmip6MeltAnomaly"; 519 case BasalforcingsMeltrateFactorEnum : return "BasalforcingsMeltrateFactor"; 520 520 case BasalforcingsOceanSalinityEnum : return "BasalforcingsOceanSalinity"; 521 521 case BasalforcingsOceanTempEnum : return "BasalforcingsOceanTemp"; -
issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
r25771 r25775 80 80 else if (strcmp(name,"BasalforcingsLowercrustheat")==0) return BasalforcingsLowercrustheatEnum; 81 81 else if (strcmp(name,"BasalforcingsMantleconductivity")==0) return BasalforcingsMantleconductivityEnum; 82 else if (strcmp(name,"BasalforcingsMeltrateFactor")==0) return BasalforcingsMeltrateFactorEnum;83 82 else if (strcmp(name,"BasalforcingsNusselt")==0) return BasalforcingsNusseltEnum; 84 83 else if (strcmp(name,"BasalforcingsPicoAverageOverturning")==0) return BasalforcingsPicoAverageOverturningEnum; … … 137 136 else if (strcmp(name,"DebugProfiling")==0) return DebugProfilingEnum; 138 137 else if (strcmp(name,"DomainDimension")==0) return DomainDimensionEnum; 138 else if (strcmp(name,"DomainType")==0) return DomainTypeEnum; 139 139 else stage=2; 140 140 } 141 141 if(stage==2){ 142 if (strcmp(name,"DomainType")==0) return DomainTypeEnum; 143 else if (strcmp(name,"DslModel")==0) return DslModelEnum; 142 if (strcmp(name,"DslModel")==0) return DslModelEnum; 144 143 else if (strcmp(name,"DslModelid")==0) return DslModelidEnum; 145 144 else if (strcmp(name,"DslNummodels")==0) return DslNummodelsEnum; … … 260 259 else if (strcmp(name,"LoveMu0")==0) return LoveMu0Enum; 261 260 else if (strcmp(name,"LoveNfreq")==0) return LoveNfreqEnum; 261 else if (strcmp(name,"LoveR0")==0) return LoveR0Enum; 262 262 else stage=3; 263 263 } 264 264 if(stage==3){ 265 if (strcmp(name,"LoveR0")==0) return LoveR0Enum; 266 else if (strcmp(name,"LoveShNmax")==0) return LoveShNmaxEnum; 265 if (strcmp(name,"LoveShNmax")==0) return LoveShNmaxEnum; 267 266 else if (strcmp(name,"LoveShNmin")==0) return LoveShNminEnum; 268 267 else if (strcmp(name,"MassFluxSegments")==0) return MassFluxSegmentsEnum; … … 383 382 else if (strcmp(name,"SettingsWaitonlock")==0) return SettingsWaitonlockEnum; 384 383 else if (strcmp(name,"SmbAIce")==0) return SmbAIceEnum; 384 else if (strcmp(name,"SmbAIdx")==0) return SmbAIdxEnum; 385 385 else stage=4; 386 386 } 387 387 if(stage==4){ 388 if (strcmp(name,"SmbAIdx")==0) return SmbAIdxEnum; 389 else if (strcmp(name,"SmbASnow")==0) return SmbASnowEnum; 388 if (strcmp(name,"SmbASnow")==0) return SmbASnowEnum; 390 389 else if (strcmp(name,"SmbAccualti")==0) return SmbAccualtiEnum; 391 390 else if (strcmp(name,"SmbAccugrad")==0) return SmbAccugradEnum; … … 506 505 else if (strcmp(name,"ParametersEND")==0) return ParametersENDEnum; 507 506 else if (strcmp(name,"InputsSTART")==0) return InputsSTARTEnum; 507 else if (strcmp(name,"Adjoint")==0) return AdjointEnum; 508 508 else stage=5; 509 509 } 510 510 if(stage==5){ 511 if (strcmp(name,"Adjoint")==0) return AdjointEnum; 512 else if (strcmp(name,"Adjointp")==0) return AdjointpEnum; 511 if (strcmp(name,"Adjointp")==0) return AdjointpEnum; 513 512 else if (strcmp(name,"Adjointx")==0) return AdjointxEnum; 514 513 else if (strcmp(name,"Adjointy")==0) return AdjointyEnum; … … 530 529 else if (strcmp(name,"BasalforcingsIsmip6TfShelf")==0) return BasalforcingsIsmip6TfShelfEnum; 531 530 else if (strcmp(name,"BasalforcingsIsmip6MeltAnomaly")==0) return BasalforcingsIsmip6MeltAnomalyEnum; 531 else if (strcmp(name,"BasalforcingsMeltrateFactor")==0) return BasalforcingsMeltrateFactorEnum; 532 532 else if (strcmp(name,"BasalforcingsOceanSalinity")==0) return BasalforcingsOceanSalinityEnum; 533 533 else if (strcmp(name,"BasalforcingsOceanTemp")==0) return BasalforcingsOceanTempEnum; -
issm/trunk-jpl/src/m/classes/mismipbasalforcings.m
r22505 r25775 8 8 groundedice_melting_rate = NaN; 9 9 meltrate_factor = NaN; 10 threshold_thickness = NaN;11 upperdepth_melt = NaN;10 threshold_thickness = 0.; 11 upperdepth_melt = 0.; 12 12 geothermalflux = NaN; 13 13 end … … 47 47 if ismember('MasstransportAnalysis',analyses) & ~(strcmp(solution,'TransientSolution') & md.transient.ismasstransport==0), 48 48 md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1); 49 md = checkfield(md,'fieldname','basalforcings.meltrate_factor','>=',0,' numel',1);49 md = checkfield(md,'fieldname','basalforcings.meltrate_factor','>=',0,'universal',1,'NaN',1,'Inf',1); 50 50 md = checkfield(md,'fieldname','basalforcings.threshold_thickness','>=',0,'numel',1); 51 51 md = checkfield(md,'fieldname','basalforcings.upperdepth_melt','<=',0,'numel',1); … … 53 53 if ismember('BalancethicknessAnalysis',analyses), 54 54 md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]); 55 md = checkfield(md,'fieldname','basalforcings.meltrate_factor','>=',0,' numel',1);55 md = checkfield(md,'fieldname','basalforcings.meltrate_factor','>=',0,'universal',1,'NaN',1,'Inf',1); 56 56 md = checkfield(md,'fieldname','basalforcings.threshold_thickness','>=',0,'numel',1); 57 57 md = checkfield(md,'fieldname','basalforcings.upperdepth_melt','<=',0,'numel',1); … … 59 59 if ismember('ThermalAnalysis',analyses) & ~(strcmp(solution,'TransientSolution') & md.transient.isthermal==0), 60 60 md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1); 61 md = checkfield(md,'fieldname','basalforcings.meltrate_factor','>=',0,' numel',1);61 md = checkfield(md,'fieldname','basalforcings.meltrate_factor','>=',0,'universal',1,'NaN',1,'Inf',1); 62 62 md = checkfield(md,'fieldname','basalforcings.threshold_thickness','>=',0,'numel',1); 63 63 md = checkfield(md,'fieldname','basalforcings.upperdepth_melt','<=',0,'numel',1); … … 88 88 WriteData(fid,prefix,'object',self,'fieldname','groundedice_melting_rate','format','DoubleMat','name','md.basalforcings.groundedice_melting_rate','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts) 89 89 WriteData(fid,prefix,'object',self,'fieldname','geothermalflux','name','md.basalforcings.geothermalflux','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts); 90 WriteData(fid,prefix,'object',self,'fieldname','meltrate_factor','format','Double ','scale',1./yts)90 WriteData(fid,prefix,'object',self,'fieldname','meltrate_factor','format','DoubleMat','mattype',1,'scale',1./yts) 91 91 WriteData(fid,prefix,'object',self,'fieldname','threshold_thickness','format','Double') 92 92 WriteData(fid,prefix,'object',self,'fieldname','upperdepth_melt','format','Double') -
issm/trunk-jpl/src/m/classes/mismipbasalforcings.py
r25688 r25775 16 16 def __init__(self): # {{{ 17 17 self.groundedice_melting_rate = np.nan 18 self.meltrate_factor = np.nan19 self.threshold_thickness = np.nan20 self.upperdepth_melt = np.nan21 self.geothermalflux = np.nan18 self.meltrate_factor = np.nan 19 self.threshold_thickness = 0. 20 self.upperdepth_melt = 0. 21 self.geothermalflux = np.nan 22 22 self.setdefaultparameters() 23 23 #}}} 24 25 24 def __repr__(self): # {{{ 26 25 s = ' MISMIP + basal melt parameterization\n' … … 32 31 return s 33 32 #}}} 34 35 33 def extrude(self, md): # {{{ 36 34 self.groundedice_melting_rate = project3d(md, 'vector', self.groundedice_melting_rate, 'type', 'node', 'layer', 1) … … 38 36 return self 39 37 #}}} 40 41 38 def initialize(self, md): # {{{ 42 39 if np.all(np.isnan(self.groundedice_melting_rate)): … … 48 45 return self 49 46 #}}} 50 51 47 def setdefaultparameters(self): # {{{ 52 48 # default values for melting parameterization … … 56 52 return self 57 53 #}}} 58 59 54 def checkconsistency(self, md, solution, analyses): # {{{ 60 55 # Early return … … 77 72 return md 78 73 # }}} 79 80 74 def marshall(self, prefix, md, fid): # {{{ 81 75 yts = md.constants.yts
Note:
See TracChangeset
for help on using the changeset viewer.