Skip to content

Commit 9badc68

Browse files
Debris-bed friction slip law
Add debris-bed friction slip relation. Adding two new friction parameters, could set as constants in albany_input.yaml or read fields from MPAS mesh: *bulkFrictionCoefficient *basalDebrisFactor There are corresponding changes in MPAS interface in MALI-Dev/ES3M repository.
1 parent 2e14b42 commit 9badc68

File tree

7 files changed

+331
-60
lines changed

7 files changed

+331
-60
lines changed

src/landIce/evaluators/LandIce_BasalFrictionCoefficient.hpp

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,14 +48,18 @@ class BasalFrictionCoefficient : public PHX::EvaluatorWithBaseImpl<Traits>,
4848
// Coefficients for computing beta (if not given)
4949
double n; // [adim] exponent of Glen's law
5050
PHX::MDField<const ScalarT,Dim> muParam; // [yr^q m^{-q}], friction coefficient of the power Law with exponent q
51-
PHX::MDField<const ScalarT,Dim> bedRoughnessParam; // [km], Bed bumps avg length divided by bed bumps avg slope (for REGULARIZED_COULOMB only)
52-
PHX::MDField<const ScalarT,Dim> powerParam; // [adim], Exponent (for POWER_LAW and REGULARIZED COULOMB only)
53-
51+
PHX::MDField<const ScalarT,Dim> bedRoughnessParam; // [km], Bed bumps avg length divided by bed bumps avg slope (for REGULARIZED_COULOMB and DEBRIS_FRICTION only)
52+
PHX::MDField<const ScalarT,Dim> powerParam; // [adim], Exponent (for POWER_LAW and REGULARIZED COULOMB and DEBRIS_FRICTION only)
53+
PHX::MDField<const ScalarT,Dim> bulkFrictionParam; // [adim], bulk friction coefficient (for DEBRIS_FRICTION only)
54+
PHX::MDField<const ScalarT,Dim> basalDebrisParam; // [Pa m^-1 s] basal debris factor (for DEBRIS_FRICTION only)
55+
5456
ScalarT printedMu;
5557
ScalarT printedBedRoughness;
5658
ScalarT printedQ;
59+
ScalarT printedBulkFriction;
60+
ScalarT printedBasalDebris;
5761

58-
ParamScalarT mu, bedRoughness, power;
62+
ParamScalarT mu, bedRoughness, power, bulkFriction, basalDebris;
5963

6064
double beta_val; // beta value [kPa yr/m] (for CONSTANT only)
6165
double flowRate_val; // flow rate value [Pa^{-n} s^{-1}] (for CONSTANT only)
@@ -66,6 +70,8 @@ class BasalFrictionCoefficient : public PHX::EvaluatorWithBaseImpl<Traits>,
6670
PHX::MDField<const VelocityST> u_norm; // [m yr^{-1}]
6771
PHX::MDField<const ParamScalarT> bedRoughnessField; // [km], characteristic length
6872
PHX::MDField<const ParamScalarT> muField; // [yr^q m^{-q}] or [adim], Power Law with exponent q, Coulomb Friction
73+
PHX::MDField<const ParamScalarT> bulkFrictionField; // t
74+
PHX::MDField<const ParamScalarT> basalDebrisField; //
6975
PHX::MDField<const EffPressureST> N; // [kPa]
7076
PHX::MDField<const MeshScalarT> coordVec; // [km]
7177
PHX::MDField<const TemperatureST> flowRate; // [Pa^{-n} s^{-1}]
@@ -101,13 +107,13 @@ class BasalFrictionCoefficient : public PHX::EvaluatorWithBaseImpl<Traits>,
101107
bool nodal;
102108
bool is_side_equation;
103109
bool is_power_parameter;
104-
enum class BETA_TYPE {CONSTANT, FIELD, POWER_LAW, REGULARIZED_COULOMB};
110+
enum class BETA_TYPE {CONSTANT, FIELD, POWER_LAW, REGULARIZED_COULOMB, DEBRIS_FRICTION};
105111
enum class FIELD_TYPE {CONSTANT, FIELD, EXPONENT_OF_FIELD, EXPONENT_OF_FIELD_AT_NODES};
106112
enum class EFFECTIVE_PRESSURE_TYPE {CONSTANT, FIELD, HYDROSTATIC, HYDROSTATIC_AT_NODES};
107113
enum class FLOW_RATE_TYPE {CONSTANT, VISCOSITY_FLOW_RATE};
108114
BETA_TYPE beta_type;
109115
EFFECTIVE_PRESSURE_TYPE effectivePressure_type;
110-
FIELD_TYPE mu_type, bedRoughness_type;
116+
FIELD_TYPE mu_type, bedRoughness_type, bulkFriction_type, basalDebris_type;
111117
FLOW_RATE_TYPE flowRate_type;
112118

113119
PHAL::MDFieldMemoizer<Traits> memoizer;

src/landIce/evaluators/LandIce_BasalFrictionCoefficient_Def.hpp

Lines changed: 197 additions & 17 deletions
Large diffs are not rendered by default.

src/landIce/interfaceWithMPAS/Interface.cpp

Lines changed: 18 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,8 @@ void velocity_solver_solve_fo(int nLayers, int globalVerticesStride,
106106
std::vector<double>& effectivePressureData,
107107
const std::vector<double>& muData,
108108
const std::vector<double>& bedRoughnessData,
109+
const std::vector<double>& bulkFrictionData,
110+
const std::vector<double>& basalDebrisData,
109111
const std::vector<double>& temperatureDataOnPrisms,
110112
std::vector<double>& bodyForceMagnitudeOnBasalCell,
111113
std::vector<double>& dissipationHeatOnPrisms,
@@ -154,6 +156,8 @@ void velocity_solver_solve_fo(int nLayers, int globalVerticesStride,
154156
STKFieldType* dirichletField = meshStruct->metaData->get_field <double> (stk::topology::NODE_RANK, "dirichlet_field");
155157
STKFieldType* muField = meshStruct->metaData->get_field <double> (stk::topology::NODE_RANK, "mu");
156158
STKFieldType* bedRoughnessField = meshStruct->metaData->get_field <double> (stk::topology::NODE_RANK, "bed_roughness");
159+
STKFieldType* bulkFrictionField = meshStruct->metaData->get_field <double> (stk::topology::NODE_RANK, "bulk_friction_coefficient");
160+
STKFieldType* basalDebrisField = meshStruct->metaData->get_field <double> (stk::topology::NODE_RANK, "basal_debris_factor");
157161
STKFieldType* stiffeningFactorLogField = meshStruct->metaData->get_field <double> (stk::topology::NODE_RANK, "stiffening_factor_log");
158162
STKFieldType* effectivePressureField = meshStruct->metaData->get_field <double> (stk::topology::NODE_RANK, "effective_pressure");
159163
STKFieldType* betaField;
@@ -229,6 +233,16 @@ void velocity_solver_solve_fo(int nLayers, int globalVerticesStride,
229233
double* bedRoughnessVal = stk::mesh::field_data(*bedRoughnessField, node);
230234
bedRoughnessVal[0] = bedRoughnessData[ib];
231235
}
236+
237+
if ((il == 0) && !bulkFrictionData.empty() && (bulkFrictionField != nullptr)) {
238+
double* bulkFrictionVal = stk::mesh::field_data(*bulkFrictionField, node);
239+
bulkFrictionVal[0] = bulkFrictionData[ib];
240+
}
241+
242+
if ((il == 0) && !basalDebrisData.empty() && (basalDebrisField != nullptr)) {
243+
double* basalDebrisVal = stk::mesh::field_data(*basalDebrisField, node);
244+
basalDebrisVal[0] = basalDebrisData[ib];
245+
}
232246
}
233247

234248
//In the following we import the temperature field temperatureDataOnPrisms from MPAS,
@@ -325,6 +339,7 @@ void velocity_solver_solve_fo(int nLayers, int globalVerticesStride,
325339
try {
326340
auto model = slvrfctry->createModel(albanyApp);
327341
solver = slvrfctry->createSolver(model, Teuchos::null, true);
342+
//solver = slvrfctry->createSolver(mpiComm, model, Teuchos::null, true);
328343

329344
Teuchos::ParameterList solveParams;
330345
solveParams.set("Compute Sensitivities", false);
@@ -492,38 +507,6 @@ void velocity_solver_finalize() {
492507
Kokkos::finalize();
493508
}
494509

495-
496-
//DEPRECATED
497-
void velocity_solver_solve_fo(int nLayers, int globalVerticesStride,
498-
int globalTrianglesStride, bool ordering, bool first_time_step,
499-
const std::vector<int>& indexToVertexID,
500-
const std::vector<int>& indexToTriangleID, double minBeta,
501-
const std::vector<double>& regulThk,
502-
const std::vector<double>& levelsNormalizedThickness,
503-
const std::vector<double>& elevationData,
504-
const std::vector<double>& thicknessData,
505-
std::vector<double>& betaData,
506-
const std::vector<double>& bedTopographyData,
507-
const std::vector<double>& smbData,
508-
const std::vector<double>& stiffeningFactorData,
509-
const std::vector<double>& effectivePressureData,
510-
const std::vector<double>& muData,
511-
const std::vector<double>& temperatureDataOnPrisms,
512-
std::vector<double>& bodyForceMagnitudeOnBasalCell,
513-
std::vector<double>& dissipationHeatOnPrisms,
514-
std::vector<double>& velocityOnVertices,
515-
int& error,
516-
const double& deltat) {
517-
std::vector<double> effectivePressureDataNonConst(effectivePressureData);
518-
const std::vector<double> bedRoughnessData;
519-
velocity_solver_solve_fo(nLayers, globalVerticesStride, globalTrianglesStride, ordering, first_time_step,
520-
indexToVertexID,indexToTriangleID, minBeta, regulThk, levelsNormalizedThickness,
521-
elevationData, thicknessData, betaData, bedTopographyData, smbData, stiffeningFactorData,
522-
effectivePressureDataNonConst, muData, bedRoughnessData, temperatureDataOnPrisms,
523-
bodyForceMagnitudeOnBasalCell,dissipationHeatOnPrisms, velocityOnVertices, error, deltat );
524-
}
525-
526-
527510
/*duality:
528511
*
529512
* mpas(F) | albany
@@ -642,6 +625,8 @@ void velocity_solver_extrude_3d_grid(int nLayers, int globalTrianglesStride,
642625
basalFrictionParams.set("Mu Field Name",basalFrictionParams.get("Mu Field Name","mu"));
643626
basalFrictionParams.set("Bed Roughness Type",basalFrictionParams.get("Bed Roughness Type","Field"));
644627
basalFrictionParams.set("Effective Pressure Type",basalFrictionParams.get("Effective Pressure Type","Field"));
628+
basalFrictionParams.set("Bulk Friction Coefficient Type",basalFrictionParams.get("Bulk Friction Coefficient Type","Field"));
629+
basalFrictionParams.set("Basal Debris Factor Type", basalFrictionParams.get("Basal Debris Factor Type","Field"));
645630
basalFrictionParams.set<bool>("Zero Beta On Floating Ice", zeroBetaOnShelf);
646631
basalFrictionParams.set<bool>("Zero Effective Pressure On Floating Ice At Nodes", zeroEffectPressOnShelf);
647632

@@ -714,7 +699,7 @@ void velocity_solver_extrude_3d_grid(int nLayers, int globalTrianglesStride,
714699

715700
discretizationList->set("Workset Size", discretizationList->get("Workset Size", -1));
716701

717-
discretizationList->set("Method", discretizationList->get("Method", "STKExtruded")); //set to STKExtruded is not defined
702+
discretizationList->set("Method", discretizationList->get("Method", "Extruded")); //set to Extruded is not defined
718703

719704
auto& rfi = discretizationList->sublist("Required Fields Info");
720705
int fp = rfi.get<int>("Number Of Fields",0);

src/landIce/problems/LandIce_Hydrology.hpp

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -883,6 +883,34 @@ Hydrology::constructEvaluators (PHX::FieldManager<PHAL::AlbanyTraits>& fm0,
883883
ptr_lambda = Teuchos::rcp(new PHAL::SharedParameter<EvalT,PHAL::AlbanyTraits>(*p,dl));
884884
fm0.template registerEvaluator<EvalT>(ptr_lambda);
885885

886+
//--- Shared Parameter for basal friction coefficient: bulk friction coefficient ---//
887+
p = Teuchos::rcp(new Teuchos::ParameterList("Bulk Friction Coefficient: bulk_friction"));
888+
889+
param_name = ParamEnumName::BulkFriction;
890+
p->set<std::string>("Parameter Name", param_name);
891+
p->set<Teuchos::RCP<Albany::ScalarParameterAccessors<EvalT>>>("Accessors", this->getAccessors()->template at<EvalT>());
892+
p->set< Teuchos::RCP<ParamLib> >("Parameter Library", paramLib);
893+
p->set<const Teuchos::ParameterList*>("Parameters List", &params->sublist("Parameters"));
894+
p->set<double>("Default Nominal Value", params->sublist("LandIce Bulk Friction Coefficient").get<double>(param_name,-1.0));
895+
896+
Teuchos::RCP<PHAL::SharedParameter<EvalT,PHAL::AlbanyTraits>> ptr_bulk_friction;
897+
ptr_bulk_friction = Teuchos::rcp(new PHAL::SharedParameter<EvalT,PHAL::AlbanyTraits>(*p,dl));
898+
fm0.template registerEvaluator<EvalT>(ptr_bulk_friction);
899+
900+
//--- Shared Parameter for basal friction coefficient: basal debris factor ---//
901+
p = Teuchos::rcp(new Teuchos::ParameterList("Basal Debris Factor: basal_debris"));
902+
903+
param_name = ParamEnumName::BasalDebris;
904+
p->set<std::string>("Parameter Name", param_name);
905+
p->set<Teuchos::RCP<Albany::ScalarParameterAccessors<EvalT>>>("Accessors", this->getAccessors()->template at<EvalT>());
906+
p->set< Teuchos::RCP<ParamLib> >("Parameter Library", paramLib);
907+
p->set<const Teuchos::ParameterList*>("Parameters List", &params->sublist("Parameters"));
908+
p->set<double>("Default Nominal Value", params->sublist("LandIce Basal Debris Factor").get<double>(param_name,-1.0));
909+
910+
Teuchos::RCP<PHAL::SharedParameter<EvalT,PHAL::AlbanyTraits>> ptr_basal_debris;
911+
ptr_basal_debris = Teuchos::rcp(new PHAL::SharedParameter<EvalT,PHAL::AlbanyTraits>(*p,dl));
912+
fm0.template registerEvaluator<EvalT>(ptr_basal_debris);
913+
886914
//--- Shared Parameter for basal friction coefficient: mu ---//
887915
p = Teuchos::rcp(new Teuchos::ParameterList("Basal Friction Coefficient: mu"));
888916

src/landIce/problems/LandIce_ParamEnum.hpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ enum class ParamEnum
1818
BedRoughness,
1919
Mu,
2020
Power,
21+
BulkFriction,
22+
BasalDebris,
2123
Homotopy,
2224
GLHomotopy,
2325
Theta_0,
@@ -31,6 +33,8 @@ namespace ParamEnumName
3133
static const std::string BedRoughness = "Bed Roughness";
3234
static const std::string Mu = "Mu";
3335
static const std::string Power = "Power Exponent";
36+
static const std::string BulkFriction = "Bulk Friction Coefficient";
37+
static const std::string BasalDebris = "Basal Debris Factor";
3438
static const std::string HomotopyParam = "Homotopy Parameter";
3539
static const std::string GLHomotopyParam = "Glen's Law Homotopy Parameter";
3640
static const std::string theta_0 = "Theta 0";

src/landIce/problems/LandIce_StokesFOBase.cpp

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,8 @@ StokesFOBase (const Teuchos::RCP<Teuchos::ParameterList>& params_,
100100
bed_topography_param_name = bed_topography_name + "_param";
101101
bed_topography_observed_name= "observed_" + bed_topography_name;
102102
bed_roughness_name = params->sublist("Variables Names").get<std::string>("Bed Roughness Name" ,"bed_roughness");
103+
bulk_friction_name = params->sublist("Variables Names").get<std::string>("Bulk Friction Coefficient Name", "bulk_friction");
104+
basal_debris_name = params->sublist("Variables Names").get<std::string>("Basal Debris Factor Name", "basal_debris");
103105
flow_factor_name = params->sublist("Variables Names").get<std::string>("Flow Factor Name" ,"flow_factor");
104106
stiffening_factor_log_name = params->sublist("Variables Names").get<std::string>("Stiffening Factor Log Name" ,"stiffening_factor_log");
105107
damage_factor_name = params->sublist("Variables Names").get<std::string>("Damage Factor Name" ,"damage_factor");
@@ -137,7 +139,7 @@ void StokesFOBase::buildProblem (Teuchos::ArrayRCP<Teuchos::RCP<Albany::MeshSpec
137139
std::string tensorCubDegName = "Cubature Degrees (Horiz Vert)";
138140
if(tensorProductCell && params->isParameter(tensorCubDegName)) {
139141
TEUCHOS_TEST_FOR_EXCEPTION (params->isParameter("Cubature Degree") && params->isParameter(tensorCubDegName), std::logic_error,
140-
"Error! Either provide parameter 'Cubatur Degree' or 'Cubature Degrees (Horiz Vert)', not both\n");
142+
"Error! Either provide parameter 'Cubature Degree' or 'Cubature Degrees (Horiz Vert)', not both\n");
141143
Teuchos::Array<int> tensorCubDegrees;
142144
tensorCubDegrees = params->get<Teuchos::Array<int>>(tensorCubDegName);
143145
if(cellType->getKey() == shards::Wedge<6>::key)
@@ -149,9 +151,7 @@ void StokesFOBase::buildProblem (Teuchos::ArrayRCP<Teuchos::RCP<Albany::MeshSpec
149151
cellCubature = cubFactory.create<PHX::Device, RealType, RealType>(*cellType, degree);
150152
}
151153
} else {
152-
TEUCHOS_TEST_FOR_EXCEPTION (!tensorProductCell && params->isParameter(tensorCubDegName), std::logic_error,
153-
"Error! Parameter 'Cubature Degrees (Horiz Vert)' should be provided only for extruded meshes with Wedge or Hexaedron cells\n"
154-
" Use 'Cubature Degree instead'");
154+
//TEUCHOS_TEST_FOR_EXCEPTION (!tensorProductCell && params->isParameter(tensorCubDegName), std::logic_error, "Error! Parameter 'Cubature Degrees (Horiz Vert)' should be provided only for extruded meshes with Wedge or Hexaedron cells\n"" Use 'Cubature Degree instead'");
155155
int cubDegree = params->get("Cubature Degree", defaultCubDegree);
156156
cellCubature = cubFactory.create<PHX::Device, RealType, RealType>(*cellType, cubDegree);
157157
}
@@ -639,6 +639,7 @@ void StokesFOBase::setupEvaluatorRequests ()
639639
} else {
640640
// We have a sliding law, which requires a mu (possibly a field),
641641
// and possibly a bed roughness
642+
// debris friction also requires bulk friction coefficient + basal debris factor
642643
const auto mu_type = util::upper_case(bfc.get<std::string>("Mu Type"));
643644
if (mu_type!="CONSTANT") {
644645
auto mu_field_name = bfc.get<std::string>("Mu Field Name");
@@ -658,6 +659,28 @@ void StokesFOBase::setupEvaluatorRequests ()
658659
}
659660
setSingleFieldProperties(fname, FRT::Scalar, FST::ParamScalar);
660661
}
662+
if (type=="DEBRIS FRICTION") {
663+
// For debris friction slip law, we have bed roughness as in reg Coulomb
664+
// As well as two new parameters: bulk friction coefficient and basal debris factor
665+
auto fname = "bed_roughness";
666+
if (is_input_field[fname] || is_ss_input_field[ssName][fname]) {
667+
ss_build_interp_ev[ssName][fname][IReq::CELL_TO_SIDE] = true;
668+
ss_build_interp_ev[ssName][fname][IReq::QP_VAL] = true;
669+
}
670+
setSingleFieldProperties(fname, FRT::Scalar, FST::ParamScalar);
671+
auto bname = "bulk_friction";
672+
if (is_input_field[bname] || is_ss_input_field[ssName][bname]) {
673+
ss_build_interp_ev[ssName][bname][IReq::CELL_TO_SIDE] = true;
674+
ss_build_interp_ev[ssName][bname][IReq::QP_VAL] = true;
675+
}
676+
setSingleFieldProperties(bname, FRT::Scalar, FST::ParamScalar);
677+
auto dname = "basal_debris";
678+
if (is_input_field[dname] || is_ss_input_field[ssName][dname]) {
679+
ss_build_interp_ev[ssName][dname][IReq::CELL_TO_SIDE] = true;
680+
ss_build_interp_ev[ssName][dname][IReq::QP_VAL] = true;
681+
}
682+
setSingleFieldProperties(dname, FRT::Scalar, FST::ParamScalar);
683+
}
661684
}
662685
}
663686

src/landIce/problems/LandIce_StokesFOBase.hpp

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -321,6 +321,8 @@ class StokesFOBase : public Albany::AbstractProblem {
321321
std::string effective_pressure_name;
322322
std::string basal_friction_name;
323323
std::string bed_roughness_name;
324+
std::string bulk_friction_name;
325+
std::string basal_debris_name;
324326
std::string sliding_velocity_name;
325327
std::string vertically_averaged_velocity_name;
326328

@@ -1591,6 +1593,49 @@ void StokesFOBase::constructBasalBCEvaluators (PHX::FieldManager<PHAL::AlbanyTra
15911593
fm0.template registerEvaluator<EvalT>(ptr_lambda);
15921594
}
15931595

1596+
//--- Shared Parameter for basal friction coefficient: bulk friction coefficient ---//
1597+
//p = Teuchos::rcp(new Teuchos::ParameterList("Bulk Friction Coefficient: bulk_friction"));
1598+
1599+
//param_name = ParamEnumName::BulkFriction;
1600+
//p->set<std::string>("Parameter Name", param_name);
1601+
//p->set<Teuchos::RCP<Albany::ScalarParameterAccessors<EvalT>>>("Accessors", this->getAccessors()->template at<EvalT>());
1602+
//p->set< Teuchos::RCP<ParamLib> >("Parameter Library", paramLib);
1603+
//p->set<const Teuchos::ParameterList*>("Parameters List", &params->sublist("Parameters"));
1604+
//p->set<double>("Default Nominal Value", params->sublist("LandIce Bulk Friction Coefficient").get<double>(param_name,-1.0));
1605+
1606+
//Teuchos::RCP<PHAL::SharedParameter<EvalT,PHAL::AlbanyTraits>> ptr_bulk_friction;
1607+
1608+
//--- Shared Parameter for bulk friction coefficient: bulk_friction ---//
1609+
param_name = "Bulk Friction Coefficient";
1610+
1611+
if(!PHAL::is_field_evaluated<EvalT>(fm0, param_name, dl->shared_param)) {
1612+
p = Teuchos::rcp(new Teuchos::ParameterList("Bulk Friction Coefficient: bulk_friction"));
1613+
p->set<std::string>("Parameter Name", param_name);
1614+
p->set<Teuchos::RCP<Albany::ScalarParameterAccessors<EvalT>>>("Accessors", this->getAccessors()->template at<EvalT>());
1615+
p->set< Teuchos::RCP<ParamLib> >("Parameter Library", paramLib);
1616+
p->set<const Teuchos::ParameterList*>("Parameters List", &params->sublist("Parameters"));
1617+
p->set<double>("Default Nominal Value", pl->sublist("Bulk Friction Coefficient").get<double>(param_name,-1.0));
1618+
1619+
Teuchos::RCP<PHAL::SharedParameter<EvalT,PHAL::AlbanyTraits>> ptr_bulk_friction;
1620+
ptr_bulk_friction = Teuchos::rcp(new PHAL::SharedParameter<EvalT,PHAL::AlbanyTraits>(*p,dl));
1621+
fm0.template registerEvaluator<EvalT>(ptr_bulk_friction);
1622+
}
1623+
1624+
//--- Shared Parameter for basal debris factor: basal_debris ---//
1625+
param_name = "Basal Debris Factor";
1626+
1627+
if(!PHAL::is_field_evaluated<EvalT>(fm0, param_name, dl->shared_param)) {
1628+
p = Teuchos::rcp(new Teuchos::ParameterList("Basal Debris Factor: basal_debris"));
1629+
p->set<std::string>("Parameter Name", param_name);
1630+
p->set<Teuchos::RCP<Albany::ScalarParameterAccessors<EvalT>>>("Accessors", this->getAccessors()->template at<EvalT>());
1631+
p->set< Teuchos::RCP<ParamLib> >("Parameter Library", paramLib);
1632+
p->set<const Teuchos::ParameterList*>("Parameters List", &params->sublist("Parameters"));
1633+
p->set<double>("Default Nominal Value", pl->sublist("Basal Debris Factor").get<double>(param_name,-1.0));
1634+
1635+
Teuchos::RCP<PHAL::SharedParameter<EvalT,PHAL::AlbanyTraits>> ptr_basal_debris;
1636+
ptr_basal_debris = Teuchos::rcp(new PHAL::SharedParameter<EvalT,PHAL::AlbanyTraits>(*p,dl));
1637+
fm0.template registerEvaluator<EvalT>(ptr_basal_debris);
1638+
}
15941639
//--- Shared Parameter for basal friction coefficient: muPowerLaw ---//
15951640
param_name = ParamEnumName::Mu;
15961641

0 commit comments

Comments
 (0)