本文整理汇总了C++中albany::BCUtils类的典型用法代码示例。如果您正苦于以下问题:C++ BCUtils类的具体用法?C++ BCUtils怎么用?C++ BCUtils使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了BCUtils类的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: if
// Neumann BCs
void FELIX::StokesFO::constructNeumannEvaluators (const Teuchos::RCP<Albany::MeshSpecsStruct>& meshSpecs)
{
// Note: we only enter this function if sidesets are defined in the mesh file
// i.e. meshSpecs.ssNames.size() > 0
Albany::BCUtils<Albany::NeumannTraits> nbcUtils;
// Check to make sure that Neumann BCs are given in the input file
if(!nbcUtils.haveBCSpecified(this->params)) {
return;
}
// Construct BC evaluators for all side sets and names
// Note that the string index sets up the equation offset, so ordering is important
std::vector<std::string> neumannNames(neq + 1);
Teuchos::Array<Teuchos::Array<int> > offsets;
offsets.resize(neq + 1);
neumannNames[0] = "U0";
offsets[0].resize(1);
offsets[0][0] = 0;
offsets[neq].resize(neq);
offsets[neq][0] = 0;
if (neq>1){
neumannNames[1] = "U1";
offsets[1].resize(1);
offsets[1][0] = 1;
offsets[neq][1] = 1;
}
if (neq>2){
neumannNames[2] = "U2";
offsets[2].resize(1);
offsets[2][0] = 2;
offsets[neq][2] = 2;
}
neumannNames[neq] = "all";
// Construct BC evaluators for all possible names of conditions
// Should only specify flux vector components (dCdx, dCdy, dCdz), or dCdn, not both
std::vector<std::string> condNames(6); //(dCdx, dCdy, dCdz), dCdn, basal, P, lateral, basal_scalar_field
Teuchos::ArrayRCP<std::string> dof_names(1);
dof_names[0] = "Velocity";
// Note that sidesets are only supported for two and 3D currently
if(numDim == 2)
condNames[0] = "(dFluxdx, dFluxdy)";
else if(numDim == 3)
condNames[0] = "(dFluxdx, dFluxdy, dFluxdz)";
else
TEUCHOS_TEST_FOR_EXCEPTION(true, Teuchos::Exceptions::InvalidParameter,
std::endl << "Error: Sidesets only supported in 2 and 3D." << std::endl);
condNames[1] = "dFluxdn";
condNames[2] = "basal";
condNames[3] = "P";
condNames[4] = "lateral";
condNames[5] = "basal_scalar_field";
std::vector< Teuchos::RCP<PHX::Evaluator<PHAL::AlbanyTraits> > > extra_evaluators;
ConstructBasalEvaluatorOp constructor(*this,extra_evaluators);
boost::mpl::for_each<PHAL::AlbanyTraits::BEvalTypes>(constructor);
nfm.resize(1); // FELIX problem only has one element block
nfm[0] = nbcUtils.constructBCEvaluators(meshSpecs, neumannNames, dof_names, true, 0,
condNames, offsets, dl,
this->params, this->paramLib, extra_evaluators);
}
开发者ID:TheDylanViper,项目名称:Albany,代码行数:76,代码来源:FELIX_StokesFO.cpp
示例2: if
// Neumann BCs
void
Albany::HMCProblem::constructNeumannEvaluators(
const Teuchos::RCP<Albany::MeshSpecsStruct>& meshSpecs)
{
// Note: we only enter this function if sidesets are defined in the mesh file
// i.e. meshSpecs.ssNames.size() > 0
Albany::BCUtils<Albany::NeumannTraits> neuUtils;
// Check to make sure that Neumann BCs are given in the input file
if(!neuUtils.haveBCSpecified(this->params))
return;
// Construct BC evaluators for all side sets and names
// Note that the string index sets up the equation offset, so ordering is important
std::vector<std::string> neumannNames(neq + 1);
Teuchos::Array<Teuchos::Array<int>> offsets;
offsets.resize(neq + 1);
neumannNames[0] = "sig_x";
offsets[0].resize(1);
offsets[0][0] = 0;
offsets[neq].resize(neq);
offsets[neq][0] = 0;
if (neq>1){
neumannNames[1] = "sig_y";
offsets[1].resize(1);
offsets[1][0] = 1;
offsets[neq][1] = 1;
}
if (neq>2){
neumannNames[2] = "sig_z";
offsets[2].resize(1);
offsets[2][0] = 2;
offsets[neq][2] = 2;
}
neumannNames[neq] = "all";
// Construct BC evaluators for all possible names of conditions
// Should only specify flux vector components (dudx, dudy, dudz), or dudn, not both
std::vector<std::string> condNames(3); //dudx, dudy, dudz, dudn, P
Teuchos::ArrayRCP<std::string> dof_names(1);
dof_names[0] = "Displacement";
// Note that sidesets are only supported for two and 3D currently
if(numDim == 2)
condNames[0] = "(t_x, t_y)";
else if(numDim == 3)
condNames[0] = "(t_x, t_y, t_z)";
else
TEUCHOS_TEST_FOR_EXCEPTION(true, Teuchos::Exceptions::InvalidParameter,
std::endl << "Error: Sidesets only supported in 2 and 3D." << std::endl);
condNames[1] = "dudn";
condNames[2] = "P";
nfm.resize(1); // HMC problem only has one element block
nfm[0] = neuUtils.constructBCEvaluators(meshSpecs, neumannNames, dof_names, true, 0,
condNames, offsets, dl,
this->params, this->paramLib);
}
开发者ID:TheDylanViper,项目名称:Albany,代码行数:69,代码来源:HMCProblem.cpp
示例3: if
// Neumann BCs
void
Aeras::XScalarAdvectionProblem::
constructNeumannEvaluators(const Teuchos::RCP<Albany::MeshSpecsStruct>& meshSpecs)
{
// Note: we only enter this function if sidesets are defined in the mesh file
// i.e. meshSpecs.ssNames.size() > 0
Albany::BCUtils<Albany::NeumannTraits> nbcUtils;
// Check to make sure that Neumann BCs are given in the input file
if(!nbcUtils.haveBCSpecified(this->params)) {
return;
}
// Construct BC evaluators for all side sets and names
// Note that the string index sets up the equation offset, so ordering is important
std::vector<std::string> neumannNames(1 + 1);
Teuchos::Array<Teuchos::Array<int> > offsets;
offsets.resize(1 + 1);
neumannNames[0] = "rho";
offsets[0].resize(1);
offsets[0][0] = 0;
offsets[1].resize(1);
offsets[1][0] = 0;
neumannNames[1] = "all";
// Construct BC evaluators for all possible names of conditions
// Should only specify flux vector components (dUdx, dUdy, dUdz)
std::vector<std::string> condNames(1); //(dUdx, dUdy, dUdz)
Teuchos::ArrayRCP<std::string> dof_names(1);
dof_names[0] = "rho";
// Note that sidesets are only supported for two and 3D currently
if(numDim == 1)
condNames[0] = "(dFluxdx)";
else if(numDim == 2)
condNames[0] = "(dFluxdx, dFluxdy)";
else if(numDim == 3)
condNames[0] = "(dFluxdx, dFluxdy, dFluxdz)";
else
TEUCHOS_TEST_FOR_EXCEPTION(true, Teuchos::Exceptions::InvalidParameter,
std::endl << "Error: Sidesets only supported in 2 and 3D." << std::endl);
// condNames[1] = "dFluxdn";
// condNames[2] = "basal";
// condNames[3] = "P";
// condNames[4] = "lateral";
nfm.resize(1); // Aeras X scalar advection problem only has one
// element block
nfm[0] = nbcUtils.constructBCEvaluators(meshSpecs,
neumannNames,
dof_names,
true,
0,
condNames,
offsets,
dl,
this->params,
this->paramLib);
}
开发者ID:timetravellers,项目名称:Albany,代码行数:71,代码来源:Aeras_XScalarAdvectionProblem.cpp
注:本文中的albany::BCUtils类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论