 |
Ice Sheet System Model
4.18
Code documentation
|
Go to the documentation of this file.
8 #error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
11 #include "../../toolkits/toolkits.h"
12 #include "../../classes/classes.h"
13 #include "../../shared/shared.h"
14 #include "../MeshPartitionx/MeshPartitionx.h"
15 #include "../ParseToolkitsOptionsx/ParseToolkitsOptionsx.h"
21 int numoutputs,basalforcing_model,timestepping_type;
22 char** requestedoutputs = NULL;
23 char** outputonnodes = NULL;
24 char* fieldname = NULL;
28 int mass_flux_num_profiles = 0;
29 bool qmu_mass_flux_present =
false;
30 bool autodiff_mass_flux_present =
false;
31 bool mass_flux_present =
false;
34 int *mdims_array = NULL;
35 int *ndims_array = NULL;
101 int amrtype,amr_frequency;
102 iomodel->
FindConstant(&amr_frequency,
"md.transient.amr_frequency");
140 xDelete<char>(fieldname);
151 iomodel->
FindConstant(&basalforcing_model,
"md.basalforcings.model");
152 switch(basalforcing_model){
157 iomodel->
FindConstant(&interp,
"md.timestepping.interp_forcings");
158 iomodel->
FetchData(&transparam,&N,&M,
"md.basalforcings.deepwater_melting_rate");
167 xDelete<IssmDouble>(transparam);
168 iomodel->
FetchData(&transparam,&N,&M,
"md.basalforcings.upperwater_melting_rate");
177 xDelete<IssmDouble>(transparam);
178 iomodel->
FetchData(&transparam,&N,&M,
"md.basalforcings.deepwater_elevation");
187 xDelete<IssmDouble>(transparam);
188 iomodel->
FetchData(&transparam,&N,&M,
"md.basalforcings.upperwater_elevation");
197 xDelete<IssmDouble>(transparam);
222 iomodel->
FindConstant(&interp,
"md.timestepping.interp_forcings");
227 iomodel->
FetchData(&transparam,&M,&N,
"md.basalforcings.farocean_temperature");
230 xDelete<IssmDouble>(transparam);
231 iomodel->
FetchData(&transparam,&M,&N,
"md.basalforcings.farocean_salinity");
234 xDelete<IssmDouble>(transparam);
240 iomodel->
FetchData(&transparam,&M,&N,
"md.basalforcings.delta_t");
242 xDelete<IssmDouble>(transparam);
243 iomodel->
FetchData(&transparam,&M,&N,
"md.basalforcings.tf_depths");
245 xDelete<IssmDouble>(transparam);
259 iomodel->
FindConstant(×tepping_type,
"md.timestepping.type");
260 switch(timestepping_type){
280 iomodel->
FindConstant(&time,
"md.timestepping.start_time");
288 iomodel->
FindConstant(&outputonnodes,&numoutputs,
"md.settings.results_on_nodes");
291 iomodel->
DeleteData(&outputonnodes,numoutputs,
"md.settings.results_on_nodes");
294 iomodel->
FindConstant(&requestedoutputs,&numoutputs,
"md.transient.requested_outputs");
297 iomodel->
DeleteData(&requestedoutputs,numoutputs,
"md.transient.requested_outputs");
299 iomodel->
FindConstant(&requestedoutputs,&numoutputs,
"md.steadystate.requested_outputs");
302 iomodel->
DeleteData(&requestedoutputs,numoutputs,
"md.steadystate.requested_outputs");
305 iomodel->
FindConstant(&materialstype,
"md.materials.type");
307 switch(materialstype){
334 iomodel->
FetchData(&nature,&nnat,&dummy,
"md.materials.nature");
335 for(
int i=0;i<nnat;i++){
372 xDelete<int>(nature);
421 iomodel->
FindConstant(&hydrology_model,
"md.hydrology.model");
430 bool isefficientlayer;
431 iomodel->
FindConstant(&isefficientlayer,
"md.hydrology.isefficientlayer");
432 if(isefficientlayer){
458 iomodel->
FindConstant(&requestedoutputs,&numoutputs,
"md.damage.requested_outputs");
461 iomodel->
DeleteData(&requestedoutputs,numoutputs,
"md.damage.requested_outputs");
465 iomodel->
FetchData(&qmu_mass_flux_present,
"md.qmu.mass_flux_segments_present");
466 iomodel->
FetchData(&autodiff_mass_flux_present,
"md.autodiff.mass_flux_segments_present");
468 if(qmu_mass_flux_present || autodiff_mass_flux_present)mass_flux_present=
true;
469 else mass_flux_present=
false;
472 if(mass_flux_present){
475 iomodel->
FetchData(&array,&mdims_array,&ndims_array,&mass_flux_num_profiles,
"md.qmu.mass_flux_segments");
476 if(mass_flux_num_profiles==0)
_error_(
"mass_flux_num_profiles is 0, when MassFlux computations were requested!");
479 for(i=0;i<mass_flux_num_profiles;i++){
480 temp_matrix=array[i];
481 temp_m=mdims_array[i];
482 temp_n=ndims_array[i];
486 for(j=0;j<temp_m;j++){
487 if ( iomodel->
my_elements[reCast<int>(*(temp_matrix+5*j+4))-1] )m++;
490 matrix=xNewZeroInit<IssmDouble>(5*m);
492 for(j=0;j<temp_m;j++){
493 if (iomodel->
my_elements[reCast<int>(*(temp_matrix+5*j+4))-1]){
494 for(k=0;k<5;k++)*(matrix+5*count+k)=*(temp_matrix+5*j+k);
509 xDelete<IssmDouble>(temp_matrix);
516 for(i=0;i<mass_flux_num_profiles;i++){
518 xDelete<IssmDouble>(matrix);
520 xDelete<int>(mdims_array);
521 xDelete<int>(ndims_array);
522 xDelete<IssmDouble*>(array);
@ MaterialsThermalconductivityEnum
@ TimesteppingFinalTimeEnum
@ TransientNumRequestedOutputsEnum
@ AmrGroundingLineDistanceEnum
@ TransientIsmasstransportEnum
void CreateParametersDakota(Parameters *parameters, IoModel *iomodel, char *rootpath)
@ HydrologydcEplColapseThicknessEnum
@ GroundinglineMigrationEnum
@ BasalforcingsIsmip6IsLocalEnum
#define _printf0_(StreamArgs)
@ TransientRequestedOutputsEnum
@ AmrThicknessErrorResolutionEnum
@ BasalforcingsThresholdThicknessEnum
@ HydrologydcEplInitialThicknessEnum
@ MaterialsEarthDensityEnum
Declaration of Parameters class.
bool VerboseMProcessor(void)
@ MaterialsRhoFreshwaterEnum
@ MaterialsMeltingpointEnum
@ TimesteppingTimeStepEnum
@ BasalforcingsIsmip6TfDepthsEnum
@ AdaptiveTimesteppingEnum
@ AmrThicknessErrorThresholdEnum
@ MeshAverageVertexConnectivityEnum
@ BasalforcingsPicoGammaTEnum
@ BasalforcingsCrustthicknessEnum
@ HydrologydcIsefficientlayerEnum
void CreateParameters(Parameters *parameters, IoModel *iomodel, char *rootpath, FILE *toolkitsoptionsfid, const int solution_type)
@ MaterialsLatentheatEnum
@ BasalforcingsUppercrustheatEnum
@ MismipFloatingMeltRateEnum
@ MeshNumberofverticesEnum
@ AmrGroundingLineResolutionEnum
@ HydrologydcSedimentPorosityEnum
@ SettingsSbCouplingFrequencyEnum
@ SteadystateNumRequestedOutputsEnum
@ BasalforcingsUpperwaterElevationEnum
@ StressbalanceRiftPenaltyThresholdEnum
@ SettingsResultsOnNodesEnum
@ TransientIsgroundinglineEnum
@ BasalforcingsIsmip6NumBasinsEnum
@ BasalforcingsTopplumedepthEnum
@ SealevelriseRunCountEnum
@ AmrDeviatoricErrorThresholdEnum
@ SteadystateRequestedOutputsEnum
@ DamageEvolutionNumRequestedOutputsEnum
@ SettingsSolverResidueThresholdEnum
@ ConstantsReferencetemperatureEnum
@ BasalforcingsDeepwaterMeltingRateEnum
@ BasalforcingsLowercrustheatEnum
void AddObject(Param *newparam)
@ StressbalanceMaxiterEnum
@ BasalforcingsPicoNumBasinsEnum
@ HydrologydcSedimentCompressibilityEnum
void DeleteData(int num,...)
@ BasalforcingsNusseltEnum
Param * CopyConstantObject(const char *constant_name, int param_enum)
int IoCodeToEnumNature(int enum_in)
@ BasalforcingsPlumeyEnum
@ MaterialsEffectiveconductivityAveragingEnum
@ TimesteppingCflCoefficientEnum
@ BasalforcingsIsmip6DeltaTEnum
@ MaterialsThermalExchangeVelocityEnum
const char * EnumToStringx(int enum_in)
@ LinearFloatingMeltRateEnum
@ StressbalanceAbstolEnum
@ BeckmannGoosseFloatingMeltRateEnum
@ MantlePlumeGeothermalFluxEnum
@ SMBgradientscomponentsEnum
@ AmrIceFrontDistanceEnum
@ StressbalanceReltolEnum
void FindConstant(bool *pvalue, const char *constant_name)
@ TransientIsoceancouplingEnum
@ GroundinglineMeltInterpolationEnum
@ MaterialsHeatcapacityEnum
void CreateParametersAutodiff(Parameters *parameters, IoModel *iomodel)
@ SettingsNumResultsOnNodesEnum
@ SpatialLinearFloatingMeltRateEnum
@ HydrologydcEplMaxThicknessEnum
@ HydrologydcEplConductivityEnum
@ TransientIshydrologyEnum
@ MaterialsRheologyLawEnum
void FetchData(bool *pboolean, const char *data_name)
@ TransientAmrFrequencyEnum
@ AmrThicknessErrorMaximumEnum
@ BasalforcingsPlumexEnum
@ SettingsRecordingFrequencyEnum
@ BasalforcingsUpperwaterMeltingRateEnum
@ BasalforcingsPicoFarOceantemperatureEnum
@ MaterialsRhoSeawaterEnum
@ BasalforcingsIsmip6Enum
@ BasalforcingsIsmip6Gamma0Enum
@ TransientIsstressbalanceEnum
@ HydrologydcWaterCompressibilityEnum
@ AmrDeviatoricErrorMaximumEnum
@ TimesteppingStartTimeEnum
int StringToEnumx(const char *string_in, bool notfounderror=true)
@ TimesteppingCouplingTimeEnum
@ AmrDeviatoricErrorResolutionEnum
@ AmrIceFrontResolutionEnum
@ TimesteppingInterpForcingsEnum
@ FrontalForcingsParamEnum
@ BasalforcingsPicoMaxboxcountEnum
@ TimesteppingTimeStepMinEnum
@ BasalforcingsDeepwaterElevationEnum
#define _error_(StreamArgs)
@ StressbalanceRestolEnum
@ HydrologydcSedimentThicknessEnum
@ TransientIsmovingfrontEnum
@ SettingsOutputFrequencyEnum
@ DamageEvolutionRequestedOutputsEnum
@ BasalforcingsPicoFarOceansalinityEnum
@ BasalforcingsUppercrustthicknessEnum
@ AmrThicknessErrorGroupThresholdEnum
void CreateParametersControl(Parameters *parameters, IoModel *iomodel, int solution_type)
@ GroundinglineFrictionInterpolationEnum
@ HydrologydcEplCompressibilityEnum
@ MaterialsTemperateiceconductivityEnum
@ TimesteppingTimeStepMaxEnum
@ BasalforcingsUpperdepthMeltEnum
@ MassFluxSegmentsPresentEnum
@ HydrologydcEplPorosityEnum
@ AmrDeviatoricErrorGroupThresholdEnum
@ BasalforcingsMeltrateFactorEnum
@ MaterialsMixedLayerCapacityEnum
@ BasalforcingsPicoIsplumeEnum
@ BasalforcingsBottomplumedepthEnum
@ BasalforcingsPlumeradiusEnum
@ TransientIsdamageevolutionEnum
@ BasalforcingsMantleconductivityEnum