Springhead
An open source physics engine for virtual reality, haptics and motion generation.
クラス PHFemThermo

熱伝導FEM計算クラス

#include <PHFemThermo.h>

PHFemThermoに対する継承グラフ

構成

struct  StateEdge
 
struct  StateFace
 
struct  StateTet
 
struct  StateVertex
 

Public 型

enum  HEATING_MODE { OFF, WEEK, MIDDLE, HIGH }
 
- Public 型 inherited from PHFemBase
typedef VVector< double > VVectord
 
typedef VMatrixRow< double > VMatrixRd
 

Public メソッド

void SetInitThermoConductionParam (double thConduct, double rho, double specificHeat, double heatTrans)
 
double Get_thConduct ()
 
void SetThermalEmissivityToVtx (unsigned id, double thermalEmissivity, double thermalEmissivity_const)
 
void SetThermalEmissivityToVerticesAll (double thermalEmissivity, double thermalEmissivity_const)
 熱放射率を節点 id に設定する関数
 
void SetHeatTransRatioToAllVertex ()
 熱放射率を全節点に設定
 
void InitCreateMatC ()
 
void InitVecFAlls ()
 行列作成で用いる入れ物などの初期化
 
void InitCreateMatk ()
 Vecfの作成前に実行する初期化処理 modify@ 2012.10.4.
 
void InitCreateVecf_ ()
 Matkの作成前に実行する初期化処理 [詳細]
 
void InitCreateMatk_ ()
 
void CreateMatk1k (unsigned id)
 
void CreateMatk1b (unsigned id)
 
void CreateMatk2t (unsigned id)
 
void CreateMatk2t_ (unsigned id)
 
void CreateMatk3t (unsigned id)
 
void CreateMatk3t_nonRadiantHeat (unsigned id)
 
void ActivateVtxbeRadiantHeat ()
 
void CreateMatk2array ()
 
void CreateMatkLocal (unsigned i)
 
void CreateMatkLocal_update (unsigned i)
 
void CreateMatKall ()
 
void CreateMatKAll ()
 
void CreatedMatCAll (unsigned id)
 
void CreateMatc (unsigned id)
 
void CreateMatCAll ()
 
void CreateVecFAll (unsigned id)
 
void CreateVecf3 (unsigned id)
 
void CreateVecf3_ (unsigned id)
 
void CreateVecf2 (unsigned id)
 
void CreateVecf2surface (unsigned id)
 
void CreateVecf2surface (unsigned id, unsigned mode)
 
void CreateVecF2surfaceAll ()
 
void CreateVecf3surface (unsigned id)
 
void CreateVecF3surfaceAll ()
 
void CreateVecf4surface (unsigned id)
 
void CreateTempVertex ()
 
void CreateLocalMatrixAndSet ()
 
void InitTcAll (double temp)
 
void InitToutAll (double temp)
 
bool SetConcentricHeatMap (std::vector< double > r, std::vector< double > temp, Vec2d origin)
 
void LMS (std::vector< double > tempe, std::vector< int > r)
 
void UpdateIHheat (unsigned heatingMODE)
 
void UpdateIHheatband (double xS, double xE, unsigned heatingMODE)
 
void UpdateVecF_frypan ()
 
void UpdateVecF ()
 
void UpdateMatk_RadiantHeatToAir ()
 
void UpdateVertexTempAll ()
 
 PHFemThermo (const PHFemThermoDesc &desc=PHFemThermoDesc(), SceneIf *s=NULL)
 
virtual void Init ()
 
void AfterSetDesc ()
 SetDesc()のあとに呼ばれる
 
void calcVerticesArea (void)
 熱伝導シミュレーションでエンジンが用いるステップをオーバーライド
 
virtual void Step ()
 表面の担当面積を計算する関数(小野原追加)
 
void Step (double dt)
 
void SetVerticesTempAll (double temp)
 
void SetVertexTemp (unsigned i, double temp)
 
void SetLocalFluidTemp (unsigned i, double temp)
 
void UpdateheatTransRatio (unsigned id, double heatTransRatio)
 頂点の熱伝達率を更新し、行列を作り直す
 
void AddvecFAll (unsigned id, double dqdt)
 
void SetvecFAll (unsigned id, double dqdt)
 
void SetThermalBoundaryCondition ()
 
void UsingFixedTempBoundaryCondition (unsigned id, double temp)
 
void UsingHeatTransferBoundaryCondition (unsigned id, double temp)
 
void UsingHeatTransferBoundaryCondition (unsigned id, double temp, double heatTransratio)
 
int GetSurfaceVertex (int id)
 凡例->wiki
 
int NSurfaceVertices ()
 
void SetVertexTc (int id, double temp)
 
void SetVertexTc (int id, double temp, double heatTransRatio)
 周囲流体温度を更新 熱伝達率を変更できるIf
 
void SetVertexHeatFlux (int id, double heatFlux)
 
void SetVtxHeatFluxAll (double heatFlux)
 
Vec3d GetPose (unsigned id)
 
Vec3d GetSufVtxPose (unsigned id)
 
double GetVertexTemp (unsigned id)
 
double GetSufVertexTemp (unsigned id)
 
unsigned long GetStepCount ()
 
unsigned long GetStepCountCyc ()
 
void CalcVtxDisFromOrigin ()
 メッシュ表面節点の原点からの距離を計算して、struct FemVertex の disFromOrigin に格納
 
void CalcVtxDisFromVertex (Vec2d originVertexIH)
 
void CalcIHdqdt (double r, double R, double dqdtAll, unsigned num)
 
void CalcIHdqdt_atleast (double r, double R, double dqdtAll, unsigned num)
 
void CalcIHdqdt_atleast_high (double r, double R, double dqdtAll, unsigned num)
 
void CalcIHdqdt_atleast_map (Vec2d origin, double dqdt, unsigned HeatMode)
 
void CalcIHdqdt_add (double r, double R, double dqdtAll, unsigned num)
 
void CalcIHdqdt_decrease (double r, double R, double dqdtAll, unsigned num)
 
void CalcIHdqdt_add_high (double r, double R, double dqdtAll, unsigned num)
 
void CalcIHdqdt_decrease_high (double r, double R, double dqdtAll, unsigned num)
 
void CalcIHdqdtband (double xS, double xE, double dqdtAll, unsigned num)
 
void CalcIHdqdtband_ (double xS, double xE, double dqdtAll, unsigned num)
 
void CalcIHdqdt2 (double r, double R, double dqdtAll, unsigned num)
 
void CalcIHdqdt3 (double r, double R, double dqdtAll, unsigned num)
 
void CalcIHdqdt4 (double radius, double Radius, double dqdtAll, unsigned num)
 
void CalcIHarea (double radius, double Radius, double dqdtAll)
 
void ShowIntersectionVtxDSTR (unsigned faceID, unsigned faceVtxNum, double radius)
 
double CalcDivTriArea (std::vector< double > trivec)
 
void ArrangeFacevtxdisAscendingOrder (int faceID)
 
Vec2d CalcIntersectionPoint (unsigned id0, unsigned id1, double r, double R)
 
std::vector< Vec2d > CalcIntersectionPoint2 (unsigned id0, unsigned id1, double r, double R)
 
Vec2d CalcIntersectionOfCircleAndLine (unsigned id0, unsigned id1, double radius)
 
void SetRhoSpheat (double rho, double Cp)
 メッシュ固有のパラメータの設定
 
void SetIHbandDrawVtx (double xS, double xE)
 
Vec2d GetIHbandDrawVtx ()
 
void setIhRatio (double a)
 
void DecrMoist ()
 
void DecrMoist_vel (double dt)
 
void DecrMoist_velo (double vel)
 
void InitMoist ()
 
void InitAllVertexTemp ()
 
void SetParamAndReCreateMatrix (double thConduct0, double roh0, double specificHeat0)
 
void ReCreateMatrix (double thConduct0)
 
double GetArbitraryPointTemp (Vec3d temppos)
 
Vec3d GetDistVecDotTri (Vec3d Dotpos, Vec3d trivtx[3])
 
double GetVtxTempInTets (Vec3d temppos)
 
double CalcTempInnerTets (unsigned id, PTM::TVector< 4, double > N)
 
void SetOuterTemp (double temp)
 
void SetThermalRadiation (double ems, double ems_const)
 
void SetGaussCalcParam (unsigned cyc, double epsilon)
 
void SetWeekPow (double weekPow_)
 
void SetweekPow_FULL (double setweekPow_FULL)
 
void Setems (double setems)
 
void Setems_steak (double setems_steak)
 
void SetthConduct (double thC)
 
void SetIHParamWEEK (double inr_, double outR_, double weekPow_)
 
void SetHeatTransRatioToAllVertex (double heatTransR_)
 
void ReProduceMat_Vec_ThermalRadiation ()
 
void IfRadiantHeatTrans ()
 
void IfRadiantHeatTransSteak ()
 
void SetStopTimespan (double timespan)
 
PTM::TMatrixRow< 4, 4, double > GetKMatInTet (unsigned id)
 
void OutputMatKall ()
 
void CalcVertexVolume (unsigned vtxid)
 
void VertexWaterBoiling (unsigned vtxid)
 
float calcGvtx (std::string fwfood, int pv, unsigned texture_mode)
 
void SetTimeStep (double dt)
 
Vec3d GetVertexNormal (unsigned vtxid)
 
void SetVertexHeatTransRatio (unsigned vtxid, double heattransRatio)
 
void SetVertexBeRadiantHeat (unsigned vtxid, bool flag)
 
double GetVertexArea (unsigned vtxid)
 
void SetVertexToofar (unsigned vtxid, bool tooFar)
 
bool GetVertexToofar (unsigned vtxid)
 
void SetVertexBeCondVtxs (unsigned vtxid, bool becondVtxs)
 
void CreateVecFAll ()
 
void SetThermoCameraScale (double minTemp, double maxTemp)
 
void CalcFaceNormalAll ()
 
void CalcVertexNormalAll ()
 
void InitFaceNormalAll ()
 
void InitVertexNormalAll ()
 
void RevVertexNormalAll ()
 
void SetWeekPowFULL (double weekPow_full)
 
double GetWeekPowFULL ()
 
Vec3d GetVertexPose (unsigned vtxid)
 
void CalcMatKup ()
 
void CalcEdgeLengthAll ()
 
double GetMaxMinEdgeRatioInTet (unsigned tetId)
 
void OutTetVolumeAll ()
 
void OutEig ()
 
int GetTetsV (unsigned tetid, unsigned vtxid)
 
void VecFNegativeCheck ()
 
double GetVecFElem (unsigned vtxid)
 
void SetVerticesPreTempAll (double temp)
 

1step前の全体の節点温度ベクトル


 
PTM::TMatrixRow< 4, 4, double > Create44Mat50 ()
 
void matKModif ()
 
int GetTetVNums (unsigned id, unsigned num)
 
void makeFPartition (unsigned num)
 
PTM::VVector< double > fPartition (unsigned vid, double f, unsigned num)
 
double sumVectorElement (PTM::VVector< double > vec)
 
void createNewVecF ()
 
void CalcHeatTransDirect3 (double dt)
 
void CalcHeatTransDirect4 (double dt)
 
double GetInitialTemp ()
 
void vecFOutToDSTR ()
 
void vecFOutToFile ()
 
void vecFBottomOutToFile ()
 
void vecFTopOutToFile ()
 
- Public メソッド inherited from PHFemThermoDesc
void Init ()
 
void Init ()
 
- Public メソッド inherited from PHFemBase
 SPR_OBJECTDEF_ABST (PHFemBase)
 
void SetPHFemMesh (PHFemMeshNew *m)
 
PHFemMeshNewIfGetPHFemMesh ()
 
int NVertices ()
 
virtual void CompInitialCondition (const VMatrixRd &_M, const VMatrixRd &_K, const VMatrixRd &_C, const VVectord &_f, VVectord &_x, VVectord &_v, VVectord &_a)
 二階の時間積分 _M:質量行列、_K:剛性行列、_C:減衰行列、_f:外力、_dt:積分刻み、_xd:変位、_v:速度 行列版
 
virtual void InitExplicitEuler (const VMatrixRd &_M, VMatrixRd &_MInv)
 
virtual void ExplicitEuler (const VMatrixRd &_MInv, const VMatrixRd &_K, const VMatrixRd &_C, const VVectord &_f, const double &_dt, VVectord &_xd, VVectord &_v)
 
virtual void ImplicitEuler (const VMatrixRd &_M, const VMatrixRd &_K, const VMatrixRd &_C, const VVectord &_f, const double &_dt, VVectord &_xd, VVectord &_v)
 
virtual void InitSimplectic (const VMatrixRd &_M, VMatrixRd &_MInv)
 
virtual void Simplectic (const VMatrixRd &_MInv, const VMatrixRd &_K, const VMatrixRd &_C, const VVectord &_f, const double &_dt, VVectord &_xd, VVectord &_v)
 
virtual void InitNewmarkBeta (const VMatrixRd &_M, const VMatrixRd &_K, const VMatrixRd &_C, const double &_dt, VMatrixRd &_SInv, const double b=1.0/6.0)
 
virtual void NewmarkBeta (const VMatrixRd &_SInv, const VMatrixRd &_K, const VMatrixRd &_C, const VVectord &_f, const double &_dt, VVectord &_xd, VVectord &_v, VVectord &_a, const double b=1.0/6.0)
 
virtual void InitExplicitEuler (const double &_m, double &_sInv)
 1自由度版
 
virtual void ExplicitEuler (const double &_sInv, const double &_k, const double &_c, const double &_f, const double &_dt, double &_x, double &_v)
 
virtual void InitSimplectic (const double &_m, double &_sInv)
 
virtual void Simplectic (const double &_sInv, const double &_k, const double &_c, const double &_f, const double &_dt, double &_x, double &_v)
 
virtual void InitNewmarkBeta (const double &_m, const double &_k, const double &_c, const double &_dt, double &_sInv, const double b=1.0/6.0)
 
virtual void NewmarkBeta (const double &_sInv, const double &_k, const double &_c, const double &_f, const double &_dt, double &_x, double &_v, double &_a, const double b=1.0/6.0)
 
- Public メソッド inherited from SceneObject
virtual void SetScene (SceneIf *s)
 
virtual SceneIfGetScene () const
 
virtual SceneObjectIfCloneObject ()
 
- Public メソッド inherited from NamedObject
 NamedObject (const NamedObject &n)
 
NamedObjectoperator= (const NamedObject &n)
 
virtual const char * GetName () const
 名前の取得
 
virtual void SetName (const char *n)
 名前の設定
 
virtual void SetNameManager (NameManagerIf *s)
 NameManagerを設定
 
virtual NameManagerIfGetNameManager () const
 NameManagerの取得
 
- Public メソッド inherited from Object
 SPR_OBJECTDEF (Object)
 クラス名の取得などの基本機能の実装
 
ObjectIfGetObjectIf ()
 
const ObjectIfGetObjectIf () const
 
virtual void Print (std::ostream &os) const
 デバッグ用の表示
 
virtual void PrintShort (std::ostream &os) const
 
virtual ObjectIfCreateObject (const IfInfo *info, const void *desc)
 オブジェクトの作成
 
virtual size_t NChildObject () const
 子オブジェクトの数
 
virtual ObjectIfGetChildObject (size_t pos)
 子オブジェクトの取得
 
virtual const ObjectIfGetChildObject (size_t pos) const
 
virtual bool AddChildObject (ObjectIf *o)
 子オブジェクトの追加
 
virtual bool DelChildObject (ObjectIf *o)
 子オブジェクトの削除
 
virtual void Clear ()
 すべての子オブジェクトの削除とプロパティのクリア
 
virtual void Loaded (UTLoadContext *)
 ファイルロード後に一度呼ばれる。ノードの設定に使う。 呼び出し順序に依存する処理がしたい場合は、UTLoadHandeler と UTLoadTask を使うと良い。 
 
virtual void Setup ()
 ノードの設定をするための関数
 
virtual bool GetDesc (void *desc) const
 デスクリプタの読み出し(コピー版)
 
virtual void SetDesc (const void *desc)
 デスクリプタの設定
 
virtual const void * GetDescAddress () const
 デスクリプタの読み出し(参照版)
 
virtual size_t GetDescSize () const
 デスクリプタのサイズ
 
virtual bool GetState (void *state) const
 状態の読み出し(コピー版)
 
virtual const void * GetStateAddress () const
 状態の読み出し(参照版)
 
virtual void GetStateR (char *&state)
 状態の再帰的な読み出し
 
virtual void SetState (const void *state)
 状態の設定
 
virtual void SetStateR (const char *&state)
 状態の再帰的な設定
 
virtual bool WriteStateR (std::ostream &fout)
 状態のファイルへの書き出し
 
virtual bool WriteState (std::string fileName)
 
virtual bool ReadStateR (std::istream &fin)
 状態の読み込み
 
virtual bool ReadState (std::string fileName)
 
virtual size_t GetStateSize () const
 状態のサイズ
 
virtual void ConstructState (void *m) const
 メモリブロックを状態型に初期化
 
virtual void DestructState (void *m) const
 状態型をメモリブロックに戻す
 
virtual void DumpObjectR (std::ostream &os, int level=0) const
 メモリデバッグ用。単純にツリーのオブジェクトをファイルにダンプする。
 

Public 変数

double tdt
 
double thConduct
 
double thConduct_x
 
double thConduct_y
 
double thConduct_z
 
std::vector< StateVertexvertexVars
 
std::vector< StateEdgeedgeVars
 
std::vector< StateFacefaceVars
 
std::vector< StateTettetVars
 
std::vector< double > LMS_result
 
unsigned long StepCount
 
unsigned long StepCount_
 
Vec2d originVertexIH
 
unsigned Ndt
 dtを定数倍する
 
double dNdt
 
double cpstime
 
double IhRatio
 
std::ofstream matCAllout
 
std::ofstream matKAllout
 
std::ofstream matkcheck
 
std::ofstream checkTVecAllout
 
std::ofstream FEMLOG
 
std::ofstream vecFOutPan
 
std::ofstream vecFOutSteak
 
unsigned long long COUNT
 
double jout
 
double ems
 
double ems_steak
 
double ems_const
 
double epsilonG
 
double NofCyc
 
double temp_c
 
double temp_out
 
double weekPow_FULL
 
double weekPow_
 
double weekPow_add
 
double weekPow_decr
 
double inr_
 
double outR_
 
double inr_add
 
double outR_add
 
double inr_decr
 
double outR_decr
 
double stopTime
 
std::vector< double > matkupdate
 
bool matkupSwitch
 
std::ofstream upmatKAllout
 
PTM::VVector< double > preTVecAll
 
PTM::VMatrixRow< double > A
 
PTM::VMatrixRow< double > I
 
PTM::VMatrixRow< double > ImA
 
PTM::VMatrixRow< double > IpAinv
 
PTM::VMatrixRow< double > keisuIA
 
bool makeAFlag
 
PTM::VVector< double > convTest
 
bool convFlag
 
std::ofstream ggConvOut
 
PTM::VMatrixRow< double > fpat
 
PTM::VMatrixRow< double > cratio
 
PTM::VVector< double > TVecAllSub
 
PTM::VMatrixRow< double > rightkeisu
 
std::vector< int > topVertexNums
 
std::vector< int > bottomVertexNums
 
- Public 変数 inherited from PHFemThermoDesc
double rho
 
double heatTrans
 
double specificHeat
 
double radiantHeat
 
double initial_temp
 
double weekPow_full
 
- Public 変数 inherited from PHFemBase
 SPR_DECLMEMBEROF_PHFemBaseDesc
 

Protected メソッド

void CreateMatrix ()
 
void SetkcfParam (FemTet tets)
 
double CalcTriangleArea (int id0, int id2, int id3)
 
double CalcTetrahedraVolume (FemTet tet)
 
double CalcTetrahedraVolume2 (unsigned id)
 
void CalcHeatTransUsingGaussSeidel (unsigned NofCyc, double dt)
 
void CalcHeatTransUsingGaussSeidel2 (unsigned NofCyc, double dt)
 
void CalcHeatTransUsingGaussSeidel (unsigned NofCyc, double dt, double eps)
 
void CalcHeatTransDirect (double dt)
 
void CalcHeatTransDirect2 (double dt)
 
void CalcHeatTransUsingScilab (double dt, double eps)
 
void SetTempAllToTVecAll (unsigned size)
 
void SetTempToTVecAll (unsigned vtxid)
 
void UpdateVertexTemp (unsigned vtxid)
 
void ScilabTest ()
 
void TexChange (unsigned id, double tz)
 
void SetTexZ (unsigned id, double tz)
 
void HeatTransFromPanToFoodShell ()
 
void HeatRadientToFood (char foodID, char panID, double fluxdepth)
 
PTM::TMatrixRow< 4, 4, double > Create44Mat21 ()
 
PTM::TMatrixCol< 4, 1, double > Create41Vec1 ()
 
- Protected メソッド inherited from NamedObject
virtual void PrintHeader (std::ostream &os, bool bClose) const
 開き括弧
 
- Protected メソッド inherited from Object
virtual void PrintChildren (std::ostream &os) const
 子オブジェクトをPrint
 
virtual void PrintFooter (std::ostream &os) const
 閉じ括弧
 
virtual void BeforeGetDesc () const
 GetDesc()の前に呼ばれる
 

Protected 変数

PTM::TVector< 4, double > TVec
 
PTM::VVector< double > TVecAll
 

要素の節点温度ベクトル //_ //不要?


 
PTM::TMatrixRow< 4, 4, double > matk1array [4]
 

全体の節点温度ベクトル


 
PTM::TMatrixRow< 4, 4, double > matk2array [4]
 
PTM::TMatrixRow< 4, 4, double > matk3array [4]
 
PTM::TMatrixRow< 4, 4, double > matk
 
PTM::TMatrixRow< 4, 4, double > matc
 
PTM::TVector< 4, double > vecf
 
PTM::TVector< 4, double > vecf2
 
PTM::TVector< 4, double > vecf2array [4]
 
PTM::TVector< 4, double > vecf3
 
PTM::TVector< 4, double > vecf3array [4]
 
PTM::TVector< 4, double > vecf4array [4]
 
PTM::TMatrixRow< 3, 3, double > mata
 
PTM::TMatrixRow< 3, 3, double > matb
 
PTM::TMatrixRow< 3, 3, double > matcc
 
PTM::TMatrixRow< 3, 3, double > matd
 
PTM::VMatrixRow< double > matKAll
 
PTM::VMatrixRow< double > matCAll
 
PTM::VMatrixRow< double > tempMat
 
PTM::VMatrixRow< double > keisu
 
PTM::VMatrixRow< double > keisuInv
 
PTM::VVector< double > TVecAll2
 
PTM::VMatrixRow< double > dMatKAll
 
PTM::VMatrixRow< double > dMatCAll
 
PTM::VMatrixRow< double > _dMatAll
 
PTM::VMatrixCol< double > bVecAll
 
PTM::VMatrixCol< double > bVecAll_IH
 
PTM::VVector< double > vecFAllSum
 
PTM::VVector< double > vecFAll [4]
 
PTM::VMatrixCol< double > vecFAll_f2IHw
 
PTM::VMatrixCol< double > vecFAll_f2IHm
 
PTM::VMatrixCol< double > vecFAll_f2IHs
 
PTM::VMatrixCol< double > vecFAll_f2IH [4]
 
PTM::VMatrixCol< double > vecFAll_f3
 
Vec2d IHLineVtxX
 
std::vector< double > tempe
 
std::vector< double > round
 
bool deformed
 PHFemMeshに属する構造体、クラスで定義されている同様のboolが更新されたら、こちらも更新する 条件利用後にはfalseに戻す。初期値はtrue for 初期化
 
bool alphaUpdated
 形状が変わったかどうか /// 構造体に持っていてほしい
 
bool doCalc
 熱伝達率が更新、matk2,Vecf3等が更新されたか
 
std::ofstream templog
 ガウスザイデル計算するフラグ
 
std::ofstream cpslog
 
PHSolidIfphFloor
 
PHSolidIfphFood
 
- Protected 変数 inherited from PHFemBase
PHFemMeshNewphFemMesh
 
- Protected 変数 inherited from NamedObject
UTString name
 名前
 
NameManagernameManager
 名前の検索や重複管理をするもの.SceneやSDKなど.
 

Additional Inherited Members

- Static Protected メソッド inherited from Object
static void ConstructState (ObjectIf *o, char *&s)
 sをoのStateとして初期化する.
 
static void DestructState (ObjectIf *o, char *&s)
 sをoのStateからメモリブロックに戻す.
 

関数

void InitCreateVecf_ ( )

熱伝達率が変化した時などの再計算用の初期化関数


このクラスの説明は次のファイルから生成されました: