GCC Code Coverage Report


Directory: ./
File: Solver/linearProblemHeat.hpp
Date: 2024-04-14 07:32:34
Exec Total Coverage
Lines: 1 2 50.0%
Branches: 0 0 -%

Line Branch Exec Source
1 // ______ ______ _ _ _____ ______
2 // | ____| ____| | (_)/ ____| | ____|
3 // | |__ | |__ | | _| (___ ___| |__
4 // | __| | __| | | | |\___ \ / __| __|
5 // | | | |____| |____| |____) | (__| |____
6 // |_| |______|______|_|_____/ \___|______|
7 // Finite Elements for Life Sciences and Engineering
8 //
9 // License: LGL2.1 License
10 // FELiScE default license: LICENSE in root folder
11 //
12 // Main authors: J. Foulon & J-F. Gerbeau & V. Martin
13 //
14
15 /*!
16 \file linearProblemHeat.hpp
17 \authors J. Foulon & J-F. Gerbeau & V. Martin
18 \date 05/01/2011
19 \brief File where is defined specificity to solve Heat problem.
20 */
21
22 #ifndef _LINEARPROBLEMHEAT_HPP
23 #define _LINEARPROBLEMHEAT_HPP
24
25 // System includes
26 #include <vector>
27
28 // External includes
29
30 // Project includes
31 #include "Solver/linearProblem.hpp"
32 #include "Core/felisceParam.hpp"
33 #include "FiniteElement/elementField.hpp"
34
35 namespace felisce {
36 /*!
37 \class LinearProblemHeat
38 \authors J. Foulon & J-F. Gerbeau & V. Martin
39 \date 05/01/2011
40 \brief Manage specific functions for laplacian problem.
41 */
42 class LinearProblemHeat:
43 public LinearProblem {
44 public:
45 LinearProblemHeat();
46 248 ~LinearProblemHeat() override= default;;
47
48 void initialize(std::vector<GeometricMeshRegion::Pointer>& mesh, FelisceTransient::Pointer fstransient, MPI_Comm& comm, bool doUseSNES) override;
49
50 private:
51 void initPerElementType(ElementType eltType, FlagMatrixRHS flagMatrixRHS = FlagMatrixRHS::matrix_and_rhs) override;
52 void initPerElementTypeBoundaryCondition(ElementType& eltType, FlagMatrixRHS flagMatrixRHS) override;
53
54 void computeElementArray(const std::vector<Point*>& elemPoint, const std::vector<felInt>& elemIdPoint, felInt& iel, FlagMatrixRHS flagMatrixRHS = FlagMatrixRHS::matrix_and_rhs) override;
55 void computeElementArrayBoundaryCondition(const std::vector<Point*>& elemPoint, const std::vector<felInt>& elemIdPoint, felInt& iel, FlagMatrixRHS flagMatrixRHS) override;
56 public:
57 void readDataDisplacement(std::vector<IO::Pointer>& io, double iteration);
58 void updateOldQuantities();
59
60 inline std::vector<double> & Displacement() { return m_vectorDisp; }
61
62 protected:
63 CurrentFiniteElement* m_feTemp;
64 CurvilinearFiniteElement* m_curvFeTemp;
65 felInt m_iTemperature;
66 ElementField m_sourceTerm;
67 private:
68 ElementField m_elemField;
69 ElementFieldDynamicValue *m_sourceTermDynamicValue;
70 std::vector<double> m_vectorDisp;
71
72 #ifdef FELISCE_WITH_CVGRAPH
73 public:
74 void sendData();
75 void readData() override;
76 ElementField m_robinAux;
77 private:
78 void cvgraphNaturalBC(felInt iel) override;
79 void initPerETMass();
80 void updateFE(const std::vector<Point*>& elemPoint, const std::vector<int>&);
81 void massMatrixComputer(felInt ielSupportDof);
82 void assembleMassBoundaryAndInitKSP( std::size_t iConn ) override;
83 #endif
84 };
85 }
86
87 #endif
88