G+Smo  25.01.0
Geometry + Simulation Modules
 
Loading...
Searching...
No Matches
gsINSTerms.hpp
Go to the documentation of this file.
1
12#pragma once
14
15namespace gismo
16{
17
18
19template<class T>
20void gsINSTerm_PvalUdiv<T>::assemble(const gsMapData<T>& mapData, const gsVector<T>& quWeights, const std::vector< gsMatrix<T> >& testFunData, const std::vector< gsMatrix<T> >& shapeFunData, std::vector< gsMatrix<T> >& localMat)
21{
22 gsVector<T> coeffMeasure = this->getCoeffGeoMapProduct(mapData);
23
24 const gsMatrix<T>& testFunGrads = testFunData[1];
25 const gsMatrix<T>& shapeFunVals = shapeFunData[0];
26
27 gsMatrix<T> testFunPhysGrad;
28
29 const index_t nQuPoints = quWeights.rows();
30
31 for (index_t k = 0; k < nQuPoints; k++)
32 {
33 const T weight = quWeights(k) * coeffMeasure(k);
34
35 transformGradients(mapData, k, testFunGrads, testFunPhysGrad);
36
37 for (size_t i = 0; i != localMat.size(); ++i)
38 localMat[i].noalias() += weight * (shapeFunVals.col(k) * testFunPhysGrad.row(i)).transpose();
39 }
40}
41
42// ===================================================================================================================
43
44template<class T>
45void gsINSTerm_UdivPval<T>::assemble(const gsMapData<T>& mapData, const gsVector<T>& quWeights, const std::vector< gsMatrix<T> >& testFunData, const std::vector< gsMatrix<T> >& shapeFunData, std::vector< gsMatrix<T> >& localMat)
46{
47 gsVector<T> coeffMeasure = this->getCoeffGeoMapProduct(mapData);
48
49 const gsMatrix<T>& testFunVals = testFunData[0];
50 const gsMatrix<T>& shapeFunGrads = shapeFunData[1];
51
52 gsMatrix<T> shapeFunPhysGrad;
53
54 const index_t nQuPoints = quWeights.rows();
55
56 for (index_t k = 0; k < nQuPoints; k++)
57 {
58 const T weight = quWeights(k) * coeffMeasure(k);
59
60 transformGradients(mapData, k, shapeFunGrads, shapeFunPhysGrad);
61
62 for (size_t i = 0; i != localMat.size(); ++i)
63 localMat[i].noalias() += weight * (shapeFunPhysGrad.row(i) * testFunVals(k) );
64 }
65}
66
67// ===================================================================================================================
68
69template<class T>
70void gsINSTerm_UsolGradVal<T>::assemble(const gsMapData<T>& mapData, const gsVector<T>& quWeights, const std::vector< gsMatrix<T> >& testFunData, const std::vector< gsMatrix<T> >& shapeFunData, gsMatrix<T>& localMat)
71{
72 this->computeCoeffSolU(mapData);
73 gsVector<T> coeffMeasure = this->getCoeffGeoMapProduct(mapData);
74
75 const gsMatrix<T>& testFunVals = testFunData[0];
76 const gsMatrix<T>& shapeFunGrads = shapeFunData[1];
77
78 gsMatrix<T> shapeFunPhysGrad;
79
80 const index_t nQuPoints = quWeights.rows();
81
82 for (index_t k = 0; k < nQuPoints; k++)
83 {
84 const T weight = quWeights(k) * coeffMeasure(k);
85
86 transformGradients(mapData, k, shapeFunGrads, shapeFunPhysGrad);
87
88 localMat.noalias() += weight * (testFunVals.col(k) * (this->m_solUVals.col(k).transpose() * shapeFunPhysGrad));
89 }
90}
91
92
93} // namespace gismo
virtual void assemble(const gsMapData< T > &mapData, const gsVector< T > &quWeights, const std::vector< gsMatrix< T > > &testFunData, const std::vector< gsMatrix< T > > &shapeFunData, std::vector< gsMatrix< T > > &localMat)
Assemble the current local matrices.
Definition gsINSTerms.hpp:20
virtual void assemble(const gsMapData< T > &mapData, const gsVector< T > &quWeights, const std::vector< gsMatrix< T > > &testFunData, const std::vector< gsMatrix< T > > &shapeFunData, std::vector< gsMatrix< T > > &localMat)
Assemble the current local matrices.
Definition gsINSTerms.hpp:45
virtual void assemble(const gsMapData< T > &mapData, const gsVector< T > &quWeights, const std::vector< gsMatrix< T > > &testFunData, const std::vector< gsMatrix< T > > &shapeFunData, gsMatrix< T > &localMat)
Assemble the current local matrix.
Definition gsINSTerms.hpp:70
the gsMapData is a cache of pre-computed function (map) values.
Definition gsFuncData.h:349
A matrix with arbitrary coefficient type and fixed or dynamic size.
Definition gsMatrix.h:41
A vector with arbitrary coefficient type and fixed or dynamic size.
Definition gsVector.h:37
#define index_t
Definition gsConfig.h:32
The G+Smo namespace, containing all definitions for the library.