5 #ifndef _PHONONBOUNDARY_H_
6 #define _PHONONBOUNDARY_H_
81 for (
int k=0;k<numK;k++)
88 for (
int m=0;m<numM;m++)
96 const VectorT3 sn = vg/
sqrt(pow(vg[0],2)+pow(vg[1],2)+pow(vg[2],2));
97 const X sn_dot_en = sn[0]*en[0]+sn[1]*en[1]+sn[2]*en[2];
98 const X vg_dot_en = vg[0]*en[0]+vg[1]*en[1]+vg[2]*en[2];
102 tot_in+=e_val[c0]*dk3*vg_dot_en;
103 tot_dk3+=vg_dot_en*dk3;
113 const X diff_refl = tot_in/tot_dk3;
116 for (
int k=0;k<numK;k++)
122 for (
int m=0;m<numM;m++)
130 const X vg_dot_en = vg[0]*en[0]+vg[1]*en[1]+vg[2]*en[2];
138 int k1=rpairs.first.second;
146 e_val1[c1]+=refl*e_val[c0];
152 e_val[c1]+=(1-refl)*diff_refl;
177 for (
int k=0;k<numK;k++)
182 for (
int m=0;m<numM;m++)
189 const X vg_dot_en = vg[0]*en[0]+vg[1]*en[1]+vg[2]*en[2];
197 e_val[c1]=mode.
calce0(Twall);
pair< Reflection, Reflection > Refl_pair
Refl_pair & getReflpair(int i)
const Field & _areaMagField
Tkvol & getkvol(int n) const
void applyReflectingWall(int f, const X refl) const
Tmode & getmode(int n) const
void applyReflectingWall(FloatValEvaluator< X > &bRefl) const
Tangent sqrt(const Tangent &a)
PhononModelOptions< X > & _options
void applyTemperatureWall(FloatValEvaluator< X > &bTemp) const
PhononBoundary(const StorageSite &faces, const Mesh &mesh, const GeomFields &geomFields, const Xkspace &kspace, PhononModelOptions< X > &opts, const int fg_id)
const StorageSite & _faces
const CRConnectivity & _faceCells
Array< VectorT3 > VectorT3Array
const VectorT3Array & _faceArea
Vector< T_Scalar, 3 > VectorT3
const Array< int > & _ibType
Array< VectorX3 > VectorX3Array
const TArray & _faceAreaMag
Xmode::Refl_pair Refl_pair
const StorageSite & _cells
NumTypeTraits< X >::T_Scalar T_Scalar
PhononModelOptions< X > & getOptions()
void applyTemperatureWall(int f, const X Twall) const