GCC Code Coverage Report


Directory: ./
File: Solver/linearProblemHeatCurv.cpp
Date: 2024-04-14 07:32:34
Exec Total Coverage
Lines: 0 24 0.0%
Branches: 0 18 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: A. Collin
13 //
14
15 // System includes
16
17 // External includes
18
19 // Project includes
20 #include "Solver/linearProblemHeatCurv.hpp"
21 #include "Core/felisceTransient.hpp"
22 #include "FiniteElement/elementVector.hpp"
23 #include "FiniteElement/elementMatrix.hpp"
24
25 namespace felisce {
26 LinearProblemHeatCurv::LinearProblemHeatCurv():
27 LinearProblem()
28 {}
29
30 LinearProblemHeatCurv::~LinearProblemHeatCurv()
31 = default;
32
33 void LinearProblemHeatCurv::initialize(std::vector<GeometricMeshRegion::Pointer>& mesh, FelisceTransient::Pointer fstransient, MPI_Comm& comm, bool doUseSNES) {
34 LinearProblem::initialize(mesh,comm, doUseSNES);
35 m_fstransient = fstransient;
36 std::vector<PhysicalVariable> listVariable(1);
37 std::vector<std::size_t> listNumComp(1);
38 listVariable[0] = temperature;
39 listNumComp[0] = 1;
40 //define unknown of the linear system.
41 m_listUnknown.push_back(temperature);
42 definePhysicalVariable(listVariable,listNumComp);
43 }
44
45 void LinearProblemHeatCurv::initPerElementTypeBD(ElementType eltType, FlagMatrixRHS flagMatrixRHS) {
46 IGNORE_UNUSED_ELT_TYPE;
47 IGNORE_UNUSED_FLAG_MATRIX_RHS;
48 m_iTemperature = m_listVariable.getVariableIdList(temperature);
49 m_feTemp = m_listCurvilinearFiniteElement[m_iTemperature];
50 m_elemField.initialize(DOF_FIELD,*m_feTemp);
51 }
52
53 void LinearProblemHeatCurv::computeElementArrayBD(const std::vector<Point*>& elemPoint, const std::vector<felInt>& elemIdPoint, felInt& iel, FlagMatrixRHS flagMatrixRHS) {
54 IGNORE_UNUSED_ELEM_ID_POINT;
55 IGNORE_UNUSED_FLAG_MATRIX_RHS;
56 m_feTemp->updateMeasNormal(0, elemPoint);
57 m_elementMatBD[0]->grad_phi_i_grad_phi_j(1.,*m_feTemp,0,0,1);
58 double coef = 1./m_fstransient->timeStep;
59 m_elementMatBD[0]->phi_i_phi_j(coef,*m_feTemp,0,0,1);
60 m_elemField.setValue(this->sequentialSolution(), *m_feTemp, iel, m_iTemperature, m_ao, dof());
61 assert(!m_elementVectorBD.empty());
62 m_elementVectorBD[0]->source(coef,*m_feTemp,m_elemField,0,1);
63 }
64 }
65
66
67