本文整理汇总了C++中fem::field::CFieldWorld::MakeField_FieldElemAry方法的典型用法代码示例。如果您正苦于以下问题:C++ CFieldWorld::MakeField_FieldElemAry方法的具体用法?C++ CFieldWorld::MakeField_FieldElemAry怎么用?C++ CFieldWorld::MakeField_FieldElemAry使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类fem::field::CFieldWorld
的用法示例。
在下文中一共展示了CFieldWorld::MakeField_FieldElemAry方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
bool CEqnSystem_Fluid2D::UpdateDomain_FieldElemAry(unsigned int id_base,unsigned int id_ea, Fem::Field::CFieldWorld& world)
{
m_id_press = world.MakeField_FieldElemAry(id_base,id_ea,
Fem::Field::SCALAR, VELOCITY|ACCELERATION,CORNER);
if( m_IsntInterpolationBubble) {
std::cout << "not bubble intp" << std::endl;
m_id_velo = world.MakeField_FieldElemAry(id_base,id_ea,
Fem::Field::VECTOR2,VELOCITY|ACCELERATION,CORNER);
m_IsntCombine = false;
}
else {
std::cout << "bubble intp" << std::endl;
m_id_velo = world.MakeField_FieldElemAry(id_base,id_ea,
Fem::Field::VECTOR2,VELOCITY|ACCELERATION,CORNER|BUBBLE);
m_IsntCombine = true;
}
{ // 同じ要素配列IDを持つ方程式があったら,それを使う.なければ新規に追加
std::vector<CEqn_Fluid2D> aEqn_old = m_aEqn;
m_aEqn.clear();
const CField& field = world.GetField(m_id_velo);
const std::vector<unsigned int>& aIdEA = field.GetAryIdEA();
for(unsigned int iiea=0; iiea<aIdEA.size(); iiea++) {
const unsigned int id_ea = aIdEA[iiea];
unsigned int ieqn0=0;
for(; ieqn0<aEqn_old.size(); ieqn0++) {
if( aEqn_old[ieqn0].GetIdEA() == id_ea ) {
const unsigned int ieqn1 = m_aEqn.size();
m_aEqn.push_back( aEqn_old[ieqn0] );
m_aEqn[ieqn1].SetIdFieldVelocity(m_id_velo);
m_aEqn[ieqn1].SetIdFieldPressure(m_id_press);
break;
}
}
if( ieqn0 != aEqn_old.size() ) {
continue;
}
CEqn_Fluid2D eqn1(id_ea,m_id_velo,m_id_press);
eqn1.SetRho(m_rho_back);
eqn1.SetMyu(m_myu_back);
if( this->m_is_stokes_back ) {
eqn1.SetStokes();
}
else {
eqn1.SetNavierStokes();
}
m_aEqn.push_back( eqn1 );
}
}
this->ClearLinearSystemPreconditioner();
return true;
}
示例2:
/*
bool CEqnSystem_Solid2D::SetDomain_Field(unsigned int id_field_base, Fem::Field::CFieldWorld& world)
{
{ // ì¸óÕÉtÉBÅ[ÉãÉhÇÃç¿ïWêflì_ÉZÉOÉÅÉìÉgÇÃdofÇ™2ǩǫǧǩÉ`ÉFÉbÉNÇ∑ÇÈ
// unsigned int id_field_base = world.GetFieldBaseID();
assert( world.IsIdField(id_field_base) );
const CField& field_base = world.GetField(id_field_base);
assert( field_base.GetNDimCoord() == 2 );
}
m_IdFieldDisp = world.MakeField_FieldElemDim(id_field_base, 2,
VECTOR2,VALUE|VELOCITY|ACCELERATION,CORNER);
const CIDConvEAMshCad conv = world.GetIDConverter(id_field_base);
{
m_aEqn.clear();
const CField& field = world.GetField(m_IdFieldDisp);
const std::vector<unsigned int>& aIdEA = field.GetAryIdEA();
for(unsigned int iiea=0;iiea<aIdEA.size();iiea++){
const unsigned int id_ea = aIdEA[iiea];
assert( world.IsIdEA(id_ea) );
const CElemAry& ea = world.GetEA(id_ea);
if( ea.ElemType() != TRI && ea.ElemType() != QUAD ) continue;
m_aEqn.push_back( CEqn_Solid2D(id_ea,m_IdFieldDisp) );
}
}
this->ClearLinearSystemPreconditioner();
this->m_aIdFixField.clear();
return true;
}
*/
bool CEqnSystem_Solid2D::SetDomain_FieldEA(unsigned int id_field_base, unsigned int id_ea,
Fem::Field::CFieldWorld& world)
{
{ // ì¸óÕÉtÉBÅ[ÉãÉhÇÃç¿ïWêflì_ÉZÉOÉÅÉìÉgÇÃdofÇ™2ǩǫǧǩÉ`ÉFÉbÉNÇ∑ÇÈ
// unsigned int id_field_base = world.GetFieldBaseID();
assert( world.IsIdField(id_field_base) );
const CField& field_base = world.GetField(id_field_base);
assert( field_base.GetNDimCoord() == 2 );
}
m_IdFieldDisp = world.MakeField_FieldElemAry(id_field_base, id_ea,
VECTOR2,VALUE|VELOCITY|ACCELERATION,CORNER);
{
m_aEqn.clear();
const CField& field = world.GetField(m_IdFieldDisp);
const std::vector<unsigned int>& aIdEA = field.GetAryIdEA();
for(unsigned int iiea=0;iiea<aIdEA.size();iiea++){
const unsigned int id_ea = aIdEA[iiea];
assert( world.IsIdEA(id_ea) );
const CElemAry& ea = world.GetEA(id_ea);
if( ea.ElemType() != TRI && ea.ElemType() != QUAD ) continue;
m_aEqn.push_back( CEqn_Solid2D(id_ea,m_IdFieldDisp) );
}
}
this->ClearLinearSystemPreconditioner();
this->m_aIdFixField.clear();
return true;
}
示例3:
bool CEqnSystem_Scalar2D::SetDomain_FieldElemAry(unsigned int id_base, unsigned int id_ea, Fem::Field::CFieldWorld& world)
{
m_IdFieldVal = world.MakeField_FieldElemAry(id_base,id_ea,SCALAR,VELOCITY|VALUE,CORNER);
{
m_aEqn.clear();
const CField& field = world.GetField(m_IdFieldVal);
const std::vector<unsigned int>& aIdEA = field.GetAryIdEA();
for(unsigned int iiea=0;iiea<aIdEA.size();iiea++){
const unsigned int id_ea = aIdEA[iiea];
m_aEqn.push_back( CEqn_Scalar2D(id_ea,m_IdFieldVal) );
}
}
this->ClearLinearSystemPreconditioner();
this->m_aIdFixField.clear();
return true;
}