MBDyn-1.7.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups
thermalresistance.cc
Go to the documentation of this file.
1 
2 #include "mbconfig.h" /* This goes first in every *.c,*.cc file */
3 #include "therm.h"
4 #include "thermalresistance.h"
5 
7  const DofOwner* pDO,
8  const ThermalNode* p1,
9  const ThermalNode* p2,
10  doublereal r, flag fOut) :
11 Elem(uL, fOut),
12 Thermal(uL, pDO, fOut),
13 pNode1(p1),
14 pNode2(p2),
15 thermalresistance(r) {
16  NO_OP;
17 };
18 
20 
21 /* Tipo di elemento idraulico (usato solo per debug ecc.) */
23  return THERMALRESISTANCE;
24 };
25 
26 void ThermalResistance::WorkSpaceDim(integer* piNumRows, integer* piNumCols) const {
27  *piNumRows = 2;
28  *piNumCols = 2;
29 };
30 
31 
33  doublereal dCoef,
34  const VectorHandler& XCurr,
35  const VectorHandler& XPrimeCurr) {
36  /* Setta la sottomatrice come piena (e' un po' dispersivo, ma lo jacobiano
37  * e' complicato */
38  FullSubMatrixHandler& WM = WorkMat.SetFull();
39 
40  /* Ridimensiona la sottomatrice in base alle esigenze */
41  integer iNumRows = 0;
42  integer iNumCols = 0;
43 
44  WorkSpaceDim(&iNumRows, &iNumCols);
45  WM.ResizeReset(iNumRows, iNumCols);
46 
47  integer iNode1RowIndex = pNode1->iGetFirstRowIndex() + 1;
48  integer iNode2RowIndex = pNode2->iGetFirstRowIndex() + 1;
49  integer iNode1ColIndex = pNode1->iGetFirstColIndex() + 1;
50  integer iNode2ColIndex = pNode2->iGetFirstColIndex() + 1;
51 
52  WM.PutRowIndex(1, iNode1RowIndex);
53  WM.PutColIndex(1, iNode1ColIndex);
54  WM.PutRowIndex(2, iNode2RowIndex);
55  WM.PutColIndex(2, iNode2ColIndex);
56 
57  doublereal ri = 1. / thermalresistance * dCoef;
58 
59  WM.IncCoef(1, 1, ri);
60  WM.DecCoef(1, 2, ri);
61  WM.DecCoef(2, 1, ri);
62  WM.IncCoef(2, 2, ri);
63 
64  return WorkMat;
65 };
66 
68  doublereal dCoef,
69  const VectorHandler& XCurr,
70  const VectorHandler& XPrimeCurr) {
71  integer iNumRows = 0;
72  integer iNumCols = 0;
73  WorkSpaceDim(&iNumRows, &iNumCols);
74  WorkVec.ResizeReset(iNumRows);
75 
76  /* Indici */
77  integer iNode1RowIndex = pNode1->iGetFirstRowIndex() + 1;
78  integer iNode2RowIndex = pNode2->iGetFirstRowIndex() + 1;
79 
80  WorkVec.PutRowIndex(1, iNode1RowIndex);
81  WorkVec.PutRowIndex(2, iNode2RowIndex);
82 
83  double t1 = pNode1->dGetX();
84  double t2 = pNode2->dGetX();
85 
86  doublereal q21 = (t2 - t1) / thermalresistance;
87 
88  WorkVec.IncCoef(1, q21);
89  WorkVec.DecCoef(2, q21);
90 
91  return WorkVec;
92 };
93 
94 // virtual void AfterConvergence(const VectorHandler& X,
95 // const VectorHandler& XP);
96 // virtual void Output(OutputHandler& OH) const;
97 //
98 // virtual void SetValue(DataManager *pDM,
99 // VectorHandler& X, VectorHandler& XP,
100 // SimulationEntity::Hints *ph = 0);
101 //
102 // /* *******PER IL SOLUTORE PARALLELO******** */
103 // /* Fornisce il tipo e la label dei nodi che sono connessi all'elemento
104 // utile per l'assemblaggio della matrice di connessione fra i dofs */
105 void ThermalResistance::GetConnectedNodes(std::vector<const Node *>& connectedNodes) const {
106  connectedNodes.resize(2);
107  connectedNodes[0] = pNode1;
108  connectedNodes[1] = pNode2;
109 };
110 // /* ************************************************ */
111 // };
112 
void PutColIndex(integer iSubCol, integer iCol)
Definition: submat.h:325
long int flag
Definition: mbdyn.h:43
virtual void ResizeReset(integer)
Definition: vh.cc:55
FullSubMatrixHandler & SetFull(void)
Definition: submat.h:1168
virtual void IncCoef(integer iRow, const doublereal &dCoef)=0
Definition: therm.h:40
const ThermalNode * pNode1
#define NO_OP
Definition: myassert.h:74
void IncCoef(integer iRow, integer iCol, const doublereal &dCoef)
Definition: submat.h:683
const ThermalNode * pNode2
void DecCoef(integer iRow, integer iCol, const doublereal &dCoef)
Definition: submat.h:694
virtual void PutRowIndex(integer iSubRow, integer iRow)=0
virtual void DecCoef(integer iRow, const doublereal &dCoef)=0
ThermalResistance(unsigned int uL, const DofOwner *pDO, const ThermalNode *p1, const ThermalNode *p2, doublereal r, flag fOut)
Type
Definition: therm.h:43
doublereal thermalresistance
virtual integer iGetFirstRowIndex(void) const
Definition: node.cc:82
virtual void GetConnectedNodes(std::vector< const Node * > &connectedNodes) const
VariableSubMatrixHandler & AssJac(VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
virtual void ResizeReset(integer, integer)
Definition: submat.cc:182
SubVectorHandler & AssRes(SubVectorHandler &WorkVec, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
Definition: elem.h:75
void PutRowIndex(integer iSubRow, integer iRow)
Definition: submat.h:311
virtual void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
virtual Thermal::Type GetThermalType(void) const
double doublereal
Definition: colamd.c:52
long int integer
Definition: colamd.c:51
virtual const doublereal & dGetX(void) const
Definition: node.h:386
virtual integer iGetFirstColIndex(void) const
Definition: node.cc:88