49 #include <Epetra_ConfigDefs.h> 51 #include <Epetra_MpiComm.h> 53 #include <Epetra_SerialComm.h> 57 #include <lifev/core/util/Factory.hpp> 58 #include <lifev/core/util/FactorySingleton.hpp> 60 #include <lifev/core/mesh/MeshData.hpp> 61 #include <lifev/core/mesh/RegionMesh.hpp> 63 #include <lifev/core/algorithm/NonLinearAitken.hpp> 65 #include <lifev/structure/solver/StructuralOperator.hpp> 67 #include <lifev/structure/solver/isotropic/VenantKirchhoffMaterialNonLinear.hpp> 68 #include <lifev/structure/solver/isotropic/VenantKirchhoffMaterialLinear.hpp> 69 #include <lifev/structure/solver/isotropic/ExponentialMaterialNonLinear.hpp> 70 #include <lifev/structure/solver/isotropic/NeoHookeanMaterialNonLinear.hpp> 71 #include <lifev/structure/solver/isotropic/VenantKirchhoffMaterialNonLinearPenalized.hpp> 72 #include <lifev/structure/solver/isotropic/SecondOrderExponentialMaterialNonLinear.hpp> 74 #ifdef ENABLE_ANISOTROPIC_LAW 75 #include <lifev/structure/solver/anisotropic/HolzapfelMaterialNonLinear.hpp> 76 #include <lifev/structure/solver/anisotropic/HolzapfelGeneralizedMaterialNonLinear.hpp> 79 #include <lifev/core/fem/DOFInterface3Dto3D.hpp> 80 #include <lifev/core/fem/DOFInterface3Dto2D.hpp> 81 #include <lifev/core/fem/BCHandler.hpp> 82 #include <lifev/core/fem/BCFunction.hpp> 83 #include <lifev/core/fem/TimeAdvanceBDF.hpp> 84 #include <lifev/core/fem/FESpace.hpp> 85 #include <lifev/eta/fem/ETFESpace.hpp> 88 #include <lifev/core/filter/ExporterHDF5Mesh3D.hpp> 91 #include <lifev/fsi/solver/FSIData.hpp> 92 #include <lifev/navier_stokes/solver/OseenSolverShapeDerivative.hpp> 93 #include <lifev/fsi/solver/HarmonicExtensionSolver.hpp> 120 typedef RegionMesh<LinearTetra> mesh_Type;
122 typedef ExporterHDF5Mesh3D<mesh_Type> meshFilter_Type;
125 typedef OseenSolverShapeDerivative <mesh_Type> fluid_Type;
126 typedef StructuralOperator <mesh_Type> solid_Type;
127 typedef HarmonicExtensionSolver<mesh_Type> meshMotion_Type;
128 typedef OseenSolverShapeDerivative <mesh_Type> fluidLin_Type;
129 typedef StructuralOperator <mesh_Type> solidLin_Type;
130 typedef std::shared_ptr<fluid_Type> fluidPtr_Type;
131 typedef std::shared_ptr<solid_Type> solidPtr_Type;
132 typedef std::shared_ptr<meshMotion_Type> meshMotionPtr_Type;
133 typedef std::shared_ptr<fluidLin_Type> fluidLinPtr_Type;
134 typedef std::shared_ptr<solidLin_Type> solidLinPtr_Type;
135 typedef fluid_Type::vector_Type vector_Type;
136 typedef std::shared_ptr<vector_Type> vectorPtr_Type;
137 typedef vector_Type solution_Type;
138 typedef std::shared_ptr<solution_Type> solutionPtr_Type;
139 typedef fluid_Type::source_Type fluidSource_Type;
140 typedef solid_Type::source_Type solidSource_Type;
141 typedef std::function < Real (
const Real&,
const Real&,
142 const Real&,
const Real&,
const ID& ) > function_Type;
145 typedef std::shared_ptr<DOFInterface3Dto3D> dofInterface3DPtr_Type;
146 typedef std::shared_ptr<DOFInterface3Dto2D> dofInterface2DPtr_Type;
147 typedef std::shared_ptr<BCVectorInterface> bcVectorInterfacePtr_Type;
148 typedef fluid_Type::bcHandlerPtr_Type fluidBchandlerPtr_Type;
149 typedef fluid_Type::bcHandler_Type fluidBchandler_Type;
150 typedef BCHandler solidBchandler_Type;
151 typedef std::shared_ptr<solidBchandler_Type> solidBchandlerPtr_Type;
152 typedef FSIData data_Type;
153 typedef std::shared_ptr<data_Type> dataPtr_Type;
154 typedef std::map<ID, ID>::const_iterator iterator_Type;
155 typedef FactorySingleton<Factory<FSIOperator, std::string> > FSIFactory_Type;
156 typedef Displayer::commPtr_Type commPtr_Type;
158 typedef std::shared_ptr<dataFile_Type> dataFilePtr_Type;
169 virtual ~FSIOperator();
179 virtual void setDataFile (
const dataFile_Type& data );
186 virtual void setupFEspace();
192 virtual void partitionMeshes();
201 void partitionMeshes ( meshFilter_Type& fluidMeshFilter, meshFilter_Type& solidMeshFilter );
209 virtual void setupDOF();
214 virtual void setupDOF ( meshFilter_Type& ) {}
221 virtual void setupFluidSolid();
227 virtual void setupFluidSolid (
UInt const fluxes );
233 virtual void setupSystem();
240 virtual void buildSystem();
246 virtual void updateSystem();
253 void couplingVariableExtrap( );
263 virtual void solveJac ( vector_Type& muk,
264 const vector_Type& res,
265 const Real linearRelTol ) = 0;
274 virtual void evalResidual ( vector_Type& res,
const vector_Type& disp,
const UInt iter ) = 0;
280 virtual void updateSolution (
const vector_Type& solution );
286 virtual void setVectorInStencils (
const vectorPtr_Type& ,
287 const vectorPtr_Type& ,
288 const vectorPtr_Type& ,
292 virtual void setFluidVectorInStencil (
const vectorPtr_Type& ,
const vectorPtr_Type& ,
const UInt ) {}
294 virtual void setSolidVectorInStencil (
const vectorPtr_Type& ,
const UInt ) {}
296 virtual void setALEVectorInStencil (
const vectorPtr_Type& ,
const UInt ,
const bool ) {}
298 virtual void finalizeRestart( ) {}
308 virtual void initialize ( fluid_Type::function_Type
const& u0,
309 fluid_Type::function_Type
const& p0,
310 solid_Type::function
const& d0,
311 solid_Type::function
const& w0,
312 fluid_Type::function_Type
const& df0 );
320 virtual void iterateMesh (
const vector_Type& )
324 virtual void setupBDF (
const vector_Type& ) { }
325 virtual void updateRHS() {}
326 virtual void applyBoundaryConditions() {}
332 static StructuralIsotropicConstitutiveLaw< FSIOperator::mesh_Type >* createVenantKirchhoffLinear()
334 return new VenantKirchhoffMaterialLinear< FSIOperator::mesh_Type >();
337 static StructuralIsotropicConstitutiveLaw< FSIOperator::mesh_Type >* createVenantKirchhoffNonLinear()
339 return new VenantKirchhoffMaterialNonLinear< FSIOperator::mesh_Type >();
341 static StructuralIsotropicConstitutiveLaw< FSIOperator::mesh_Type >* createExponentialMaterialNonLinear()
343 return new ExponentialMaterialNonLinear< FSIOperator::mesh_Type >();
346 static StructuralIsotropicConstitutiveLaw< FSIOperator::mesh_Type >* createNeoHookeanMaterialNonLinear()
348 return new NeoHookeanMaterialNonLinear< FSIOperator::mesh_Type >();
350 static StructuralIsotropicConstitutiveLaw< FSIOperator::mesh_Type >* createVenantKirchhoffNonLinearPenalized()
352 return new VenantKirchhoffMaterialNonLinearPenalized< FSIOperator::mesh_Type >();
355 static StructuralIsotropicConstitutiveLaw< FSIOperator::mesh_Type >* createSecondOrderExponentialMaterialNonLinear()
357 return new SecondOrderExponentialMaterialNonLinear< FSIOperator::mesh_Type >();
360 #ifdef ENABLE_ANISOTROPIC_LAW 361 static StructuralAnisotropicConstitutiveLaw< FSIOperator::mesh_Type >* createHolzapfelMaterialNonLinear()
363 return new HolzapfelMaterialNonLinear<MeshType >();
365 static StructuralAnisotropicConstitutiveLaw< FSIOperator::mesh_Type >* createHolzapfelGeneralizedMaterialNonLinear()
367 return new HolzapfelGeneralizedMaterialNonLinear<MeshType >();
386 void initializeTimeAdvance (
const std::vector<vectorPtr_Type>& initialFluidVel,
const std::vector<vectorPtr_Type>& initialSolidDisp,
const std::vector<vectorPtr_Type>& initialFluiDisp);
388 virtual void initializeMonolithicOperator ( std::vector< vectorPtr_Type> , std::vector< vectorPtr_Type> , std::vector< vectorPtr_Type> ) {}
395 void initializeFluid (
const vector_Type& velAndPressure,
const vector_Type& displacement );
402 void initializeSolid ( vectorPtr_Type displacement, vectorPtr_Type );
408 void moveMesh (
const vector_Type& disp );
420 void createInterfaceMaps (std::map<ID, ID>
const& locDofMap);
427 void transferFluidOnInterface (
const vector_Type& _vec1, vector_Type& _vec2 );
429 void transferSolidOnFluid (
const vector_Type& _vec1, vector_Type& _vec2 );
435 void transferSolidOnInterface (
const vector_Type& _vec1, vector_Type& _vec2 );
442 void transferInterfaceOnSolid (
const vector_Type& _vec1, vector_Type& _vec2 );
450 void bcManageVectorRHS (
const fluidBchandlerPtr_Type& bch, vector_Type& rhs );
459 void bcManageVectorRHS (
const fluidBchandlerPtr_Type& bcHandlerFluid,
const solidBchandlerPtr_Type& bcHandlerSolid, vector_Type& rhs );
464 M_alphaF->epetraVector().PutScalar ( M_alphaFCoef );
467 void setAlphafCoef();
469 void setStructureToFluidParameters();
488 bool isLeader()
const;
491 Displayer
const& displayer();
505 void extrapolation ( vector_Type& extrapolation )
const 507 M_fluidTimeAdvance->extrapolation ( extrapolation );
517 UInt imposedFluxes();
519 const vector_Type& lambdaFluid()
const 521 return *M_lambdaFluid;
523 const vector_Type& lambdaSolid()
const 525 return *M_lambdaSolid;
527 const vector_Type& lambdaSolidOld()
const 529 return *M_lambdaSolidOld;
531 const vector_Type& lambdaDotSolid()
const 533 return *M_lambdaDotSolid;
535 const vector_Type& sigmaFluid()
const 537 return *M_sigmaFluid;
539 const vector_Type& sigmaSolid()
const 541 return *M_sigmaSolid;
544 const vector_Type& lambdaFluidRepeated()
const 546 return *M_lambdaFluidRepeated;
548 const vector_Type& lambdaSolidRepeated()
const 550 return *M_lambdaSolidRepeated;
552 const vector_Type& lambdaDotSolidRepeated()
const 554 return *M_lambdaDotSolidRepeated;
556 const vector_Type& sigmaFluidRepeated()
const 558 return *M_sigmaFluidRepeated;
560 const vector_Type& sigmaSolidRepeated()
const 562 return *M_sigmaSolidRepeated;
567 const vector_Type& minusSigmaFluid()
const 569 return *M_minusSigmaFluid;
572 const vector_Type& minusSigmaFluidRepeated()
const 574 return *M_minusSigmaFluidRepeated;
578 vector_Type& Alphaf()
const 583 commPtr_Type worldComm()
const 585 return M_epetraWorldComm;
597 bool isLinearFluid()
const 599 return M_linearFluid;
601 bool isLinearSolid()
const 603 return M_linearSolid;
606 int getFluidLeaderId()
const 608 return M_fluidLeader;
610 int getSolidLeaderId()
const 612 return M_solidLeader;
616 const fluid_Type& fluid()
const 621 const solid_Type& solid()
const 626 const meshMotion_Type& meshMotion()
const 628 return *M_meshMotion;
645 meshMotion_Type& meshMotion()
647 return *M_meshMotion;
653 const data_Type& data()
const 658 const data_Type::dataFluidPtr_Type& dataFluid()
const 660 return M_data->dataFluid();
663 const data_Type::dataSolidPtr_Type& dataSolid()
const 665 return M_data->dataSolid();
669 mesh_Type& fluidMesh()
const 674 mesh_Type& solidMesh()
const 683 mesh_Type& fluidLocalMesh()
685 return *M_fluidLocalMesh;
688 mesh_Type& solidLocalMesh()
690 return *M_solidLocalMesh;
694 const FESpace<mesh_Type, MapEpetra>& uFESpace()
const 698 std::shared_ptr<FESpace<mesh_Type, MapEpetra> > uFESpacePtr()
const 703 const FESpace<mesh_Type, MapEpetra>& pFESpace()
const 707 std::shared_ptr<FESpace<mesh_Type, MapEpetra> > pFESpacePtr()
const 712 const FESpace<mesh_Type, MapEpetra>& dFESpace()
const 716 std::shared_ptr<FESpace<mesh_Type, MapEpetra> > dFESpacePtr()
const 721 const ETFESpace<mesh_Type, MapEpetra, 3, 3>& dFESpaceET()
const 723 return *M_dETFESpace;
725 std::shared_ptr<ETFESpace<mesh_Type, MapEpetra, 3, 3> > dFESpaceETPtr()
const 730 const FESpace<mesh_Type, MapEpetra>& mmFESpace()
const 734 std::shared_ptr<FESpace<mesh_Type, MapEpetra> > mmFESpacePtr()
const 739 const vector_Type& meshDisp()
const 741 return M_ALETimeAdvance->singleElement (0);
744 const vector_Type& dispFluidMeshOld()
const 746 return *M_dispFluidMeshOld;
749 virtual vector_Type& veloFluidMesh()
751 return *M_veloFluidMesh;
755 vector_Type& derVeloFluidMesh()
757 return *M_derVeloFluidMesh;
760 const dofInterface3DPtr_Type& dofFluidToStructure()
const 762 return M_dofFluidToStructure;
764 const dofInterface3DPtr_Type& dofStructureToSolid()
const 766 return M_dofStructureToSolid;
768 const dofInterface3DPtr_Type& dofStructureToHarmonicExtension()
const 770 return M_dofStructureToHarmonicExtension;
772 const dofInterface3DPtr_Type& dofHarmonicExtensionToFluid()
const 774 return M_dofHarmonicExtensionToFluid;
777 std::shared_ptr<MapEpetra>& fluidInterfaceMap()
779 return M_fluidInterfaceMap;
781 std::shared_ptr<MapEpetra>& solidInterfaceMap()
783 return M_solidInterfaceMap;
787 virtual std::shared_ptr<MapEpetra>& couplingVariableMap()
789 return M_solidInterfaceMap;
793 BCFunctionRobin& bcfRobinOuterWall()
795 return M_bcfRobinOuterWall;
798 bcVectorInterfacePtr_Type bcvStructureDisptoFluid()
const 800 return M_bcvStructureDispToFluid;
802 bcVectorInterfacePtr_Type bcvStructureToFluid()
const 804 return M_bcvStructureToFluid;
806 bcVectorInterfacePtr_Type bcvSolidLoadToStructure()
const 808 return M_bcvSolidLoadToStructure;
810 bcVectorInterfacePtr_Type bcvFluidInterfaceDisp()
const 812 return M_bcvFluidInterfaceDisp;
814 bcVectorInterfacePtr_Type bcvHarmonicExtensionVelToFluid()
const 816 return M_bcvHarmonicExtensionVelToFluid;
818 bcVectorInterfacePtr_Type bcvDerHarmonicExtensionVelToFluid()
const 820 return M_bcvDerHarmonicExtensionVelToFluid;
822 bcVectorInterfacePtr_Type bcvStructureDispToHarmonicExtension()
const 824 return M_bcvStructureDispToHarmonicExtension;
826 bcVectorInterfacePtr_Type bcvStructureDispToSolid()
const 828 return M_bcvStructureDispToSolid;
830 bcVectorInterfacePtr_Type bcvDerStructureDispToSolid()
const 832 return M_bcvDerStructureDispToSolid;
834 bcVectorInterfacePtr_Type bcvFluidLoadToStructure()
const 836 return M_bcvFluidLoadToStructure;
838 bcVectorInterfacePtr_Type bcvDerFluidLoadToStructure()
const 840 return M_bcvDerFluidLoadToStructure;
842 bcVectorInterfacePtr_Type bcvDerFluidLoadToFluid()
const 844 return M_bcvDerFluidLoadToFluid;
850 const fluidBchandlerPtr_Type& BCh_fluid()
const 855 const fluidBchandlerPtr_Type& BCh_harmonicExtension()
const 860 const fluidBchandlerPtr_Type& BCh_du()
const 866 const fluidBchandlerPtr_Type& BCh_du_inv()
const 871 const solidBchandlerPtr_Type& BCh_solid()
const 876 const solidBchandlerPtr_Type& BCh_dz()
const 882 const solidBchandlerPtr_Type& BCh_dz_inv()
const 888 const vectorPtr_Type& getRHS()
const 893 const std::shared_ptr<TimeAdvance<vector_Type> > ALETimeAdvance()
const 895 return M_ALETimeAdvance;
897 const std::shared_ptr<TimeAdvance<vector_Type> > fluidTimeAdvance()
const 899 return M_fluidTimeAdvance;
901 const std::shared_ptr<TimeAdvance<vector_Type> > solidTimeAdvance()
const 903 return M_solidTimeAdvance;
906 const std::string ALETimeAdvanceMethod()
const 908 return M_ALETimeAdvanceMethod;
910 const std::string fluidTimeAdvanceMethod()
const 912 return M_fluidTimeAdvanceMethod;
914 const std::string solidTimeAdvanceMethod()
const 916 return M_solidTimeAdvanceMethod;
920 virtual const vector_Type& solution()
const 926 virtual void getSolidDisp ( vector_Type& soliddisp )
928 soliddisp = M_solid->displacement();
932 virtual void getSolidVel ( vector_Type& solidvel )
934 solidvel = M_solidTimeAdvance->firstDerivative();
941 virtual void exportSolidDisplacement ( vector_Type& solidDisplacement )
943 solidDisplacement = M_solid->displacement();
950 virtual void exportSolidVelocity ( vector_Type& solidVelocity )
952 solidVelocity = M_solidTimeAdvance->firstDerivative();
959 virtual void exportSolidAcceleration ( vector_Type& solidAcc )
961 solidAcc = M_solidTimeAdvance->secondDerivative();
968 virtual void exportFluidVelocity ( vector_Type& fluidVelocity )
970 fluidVelocity = *M_fluid->solution();
977 virtual void exportFluidPressure ( vector_Type& fluidPressure )
979 fluidPressure = *M_fluid->solution();
986 virtual void exportFluidVelocityAndPressure ( vector_Type& fluidVelocityAndPressure )
988 fluidVelocityAndPressure = *M_fluid->solution();
995 virtual void exportFluidDisplacement ( vector_Type& fluidDisplacement )
997 fluidDisplacement = M_ALETimeAdvance->singleElement (0);
1011 void setComm (
const commPtr_Type& comm,
const commPtr_Type& worldComm );
1014 void setData (
const dataPtr_Type& data )
1020 void setFluid (
const fluidPtr_Type& fluid,
const meshMotionPtr_Type& meshmotion );
1022 void setSolid (
const solidPtr_Type& solid );
1025 void setFluid (
const bool& isFluid )
1027 M_isFluid = isFluid;
1030 void setSolid (
const bool& isSolid )
1032 M_isSolid = isSolid;
1036 void setLinearFluid (
const bool& linFluid )
1038 M_linearFluid = linFluid;
1041 void setLinearSolid (
const bool& linSolid )
1043 M_linearSolid = linSolid;
1046 void setFluidLeader (
const int& fluidLeader )
1048 M_fluidLeader = fluidLeader;
1050 void setSolidLeader (
const int& solidLeader )
1052 M_solidLeader = solidLeader;
1061 virtual void setFluidBC (
const fluidBchandlerPtr_Type& bc_fluid );
1063 void setLinFluidBC (
const fluidBchandlerPtr_Type& bc_dfluid )
1065 M_BCh_du = bc_dfluid;
1071 void setInvLinFluidBC (
const fluidBchandlerPtr_Type& bc_dfluid_inv )
1073 M_BCh_du_inv = bc_dfluid_inv;
1076 void setHarmonicExtensionBC (
const fluidBchandlerPtr_Type& bc_he );
1082 virtual void setSolidBC (
const solidBchandlerPtr_Type& bc_solid );
1084 void setLinSolidBC (
const solidBchandlerPtr_Type& bc_dsolid )
1086 M_BCh_dz = bc_dsolid;
1092 void setInvLinSolidBC (
const solidBchandlerPtr_Type& bc_dsolid_inv )
1094 M_BCh_dz_inv = bc_dsolid_inv;
1098 void setLambdaFluid (
const vector_Type& lambda );
1100 void setLambdaSolid (
const vector_Type& lambda );
1104 void setLambdaSolidOld (
const vector_Type& lambda );
1107 void setLambdaDotSolid (
const vector_Type& lambda );
1110 void setSigmaFluid (
const vector_Type& sigma );
1112 void setSigmaSolid (
const vector_Type& sigma );
1114 void setMinusSigmaFluid (
const vector_Type& sigma );
1117 void setAlphafbcf (
const bcFunction_Type& alphafbcf );
1127 void setStructureDispToHarmonicExtension (
const vector_Type& disp,
UInt type = 0 );
1128 void setStructureToFluid (
const vector_Type& vel,
UInt type = 0 );
1129 void setStructureDispToFluid (
const vector_Type& vel,
UInt type = 0 );
1130 void setStructureDispToSolid (
const vector_Type& disp,
UInt type = 0 );
1131 void setDerStructureDispToSolid (
const vector_Type& ddisp,
UInt type = 0 );
1132 void setSolidLoadToStructure (
const vector_Type& load,
UInt type = 0 );
1133 void setHarmonicExtensionVelToFluid (
const vector_Type& vel,
UInt type = 0 );
1134 void setDerHarmonicExtensionVelToFluid (
const vector_Type& dvel,
UInt type = 0 );
1136 void setFluidLoadToStructure (
const vector_Type& load,
UInt type = 0 );
1137 void setDerFluidLoadToStructure (
const vector_Type& dload,
UInt type = 0 );
1138 void setDerFluidLoadToFluid (
const vector_Type& dload,
UInt type = 0 );
1139 void setRobinOuterWall (
const function_Type& dload,
const function_Type& E);
1142 void setSolutionDerivative (
const vector_Type& solutionDerivative )
1144 M_lambdaDot.reset (
new vector_Type ( solutionDerivative ) );
1149 setupTimeAdvance (
const dataFile_Type& dataFile );
1164 virtual void variablesInit (
const std::string& dOrder );
1172 void transferMeshMotionOnFluid (
const vector_Type& _vec1, vector_Type& _vec2 );
1178 void interpolateVelocity (
const vector_Type& _vec1, vector_Type& _vec2);
1185 void interpolateInterfaceDofs (
const FESpace<mesh_Type, MapEpetra>& _fespace1,
1186 const vector_Type& _vec1,
1187 const FESpace<mesh_Type, MapEpetra>& _fespace2,
1189 dofInterface3DPtr_Type& _dofInterface);
1196 std::shared_ptr<FESpace<mesh_Type, MapEpetra> > M_uFESpace;
1197 std::shared_ptr<FESpace<mesh_Type, MapEpetra> > M_pFESpace;
1198 std::shared_ptr<FESpace<mesh_Type, MapEpetra> > M_dFESpace;
1199 std::shared_ptr<ETFESpace<mesh_Type, MapEpetra, 3, 3> > M_dETFESpace;
1200 std::shared_ptr<FESpace<mesh_Type, MapEpetra> > M_mmFESpace;
1202 std::shared_ptr<mesh_Type> M_fluidMesh;
1203 std::shared_ptr<mesh_Type> M_solidMesh;
1205 std::shared_ptr<mesh_Type> M_fluidLocalMesh;
1206 std::shared_ptr<mesh_Type> M_solidLocalMesh;
1208 fluidBchandlerPtr_Type M_BCh_u;
1209 solidBchandlerPtr_Type M_BCh_d;
1210 fluidBchandlerPtr_Type M_BCh_mesh;
1213 fluidBchandlerPtr_Type M_BCh_du;
1214 fluidBchandlerPtr_Type M_BCh_du_inv;
1216 solidBchandlerPtr_Type M_BCh_dz;
1217 solidBchandlerPtr_Type M_BCh_dz_inv;
1219 fluidBchandlerPtr_Type M_BCh_dp;
1220 fluidBchandlerPtr_Type M_BCh_dp_inv;
1222 fluidPtr_Type M_fluid;
1223 solidPtr_Type M_solid;
1224 meshMotionPtr_Type M_meshMotion;
1226 std::string M_fluidTimeAdvanceMethod;
1227 std::string M_solidTimeAdvanceMethod;
1228 std::string M_ALETimeAdvanceMethod;
1230 std::shared_ptr<TimeAdvance<vector_Type> > M_fluidTimeAdvance;
1231 std::shared_ptr<TimeAdvance<vector_Type> > M_fluidMassTimeAdvance;
1232 std::shared_ptr<TimeAdvance<vector_Type> > M_solidTimeAdvance;
1233 std::shared_ptr<TimeAdvance<vector_Type> > M_ALETimeAdvance;
1236 dataFile_Type M_dataFile;
1238 std::shared_ptr<MeshData> M_meshDataFluid;
1239 std::shared_ptr<MeshData> M_meshDataSolid;
1241 dataPtr_Type M_data;
1243 std::shared_ptr<MapEpetra> M_fluidInterfaceMap;
1244 std::shared_ptr<MapEpetra> M_solidInterfaceMap;
1247 std::shared_ptr<MapEpetra> M_fluidInterfaceMapOnZero;
1249 std::shared_ptr<MapEpetra> M_solidInterfaceMapOnZero;
1251 dofInterface3DPtr_Type M_dofFluidToStructure;
1253 dofInterface3DPtr_Type M_dofStructureToFluid;
1254 dofInterface3DPtr_Type M_dofStructureToSolid;
1255 dofInterface3DPtr_Type M_dofStructureToHarmonicExtension;
1256 dofInterface3DPtr_Type M_dofHarmonicExtensionToFluid;
1260 dofInterface2DPtr_Type M_dofFluid;
1261 dofInterface2DPtr_Type M_dofSolid;
1262 dofInterface2DPtr_Type M_dofFluidInv;
1263 dofInterface2DPtr_Type M_dofSolidInv;
1265 bcVectorInterfacePtr_Type M_bcvFluidInterfaceDisp;
1266 bcVectorInterfacePtr_Type M_bcvFluidLoadToStructure;
1267 bcVectorInterfacePtr_Type M_bcvSolidLoadToStructure;
1268 bcVectorInterfacePtr_Type M_bcvStructureToFluid;
1269 bcVectorInterfacePtr_Type M_bcvStructureDispToFluid;
1270 bcVectorInterfacePtr_Type M_bcvStructureDispToSolid;
1271 bcVectorInterfacePtr_Type M_bcvStructureDispToHarmonicExtension;
1272 bcVectorInterfacePtr_Type M_bcvHarmonicExtensionVelToFluid;
1276 bcVectorInterfacePtr_Type M_bcvDerHarmonicExtensionVelToFluid;
1277 bcVectorInterfacePtr_Type M_bcvDerFluidLoadToStructure;
1278 bcVectorInterfacePtr_Type M_bcvDerFluidLoadToFluid;
1279 bcVectorInterfacePtr_Type M_bcvDerStructureDispToSolid;
1280 BCFunctionRobin M_bcfRobinOuterWall;
1285 vectorPtr_Type M_lambdaFluid;
1286 vectorPtr_Type M_lambdaFluidRepeated;
1287 vectorPtr_Type M_lambda;
1288 vectorPtr_Type M_lambdaDot;
1291 vectorPtr_Type M_rhs;
1292 vectorPtr_Type M_alphaF;
1298 commPtr_Type M_epetraComm;
1299 commPtr_Type M_epetraWorldComm;
1301 bool M_structureNonLinear;
1308 FSIOperator (
const FSIOperator& ) {}
1314 vectorPtr_Type M_lambdaSolid;
1315 vectorPtr_Type M_lambdaSolidRepeated;
1317 vectorPtr_Type M_lambdaSolidOld;
1318 vectorPtr_Type M_lambdaDotSolid;
1319 vectorPtr_Type M_lambdaDotSolidRepeated;
1321 vectorPtr_Type M_sigmaFluid;
1322 vectorPtr_Type M_sigmaSolid;
1324 vectorPtr_Type M_sigmaFluidRepeated;
1325 vectorPtr_Type M_sigmaSolidRepeated;
1328 vectorPtr_Type M_minusSigmaFluid;
1330 vectorPtr_Type M_minusSigmaFluidRepeated;
1332 vectorPtr_Type M_dispFluidMeshOld;
1333 vectorPtr_Type M_veloFluidMesh;
1334 vectorPtr_Type M_derVeloFluidMesh;
1348 std::string M_aleOrder;
void assignFunction(bcBase_Type &base)
Assign the function to the base of the BCHandler.
FESpace - Short description here please!
double Real
Generic real data.
class ETFESpace A light, templated version of the FESpace
uint32_type UInt
generic unsigned integer (used mainly for addressing)