00001 #include "nlisotrmat.h"
00002 #include "stochdrivert.h"
00003 #include "globalt.h"
00004
00005 nlisotrmat::nlisotrmat (void)
00006 {
00007 a=0.0;
00008 b=0.0;
00009 c=0.0;
00010
00011
00012
00013
00014
00015
00016
00017 }
00018 nlisotrmat::~nlisotrmat (void)
00019 {}
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 void nlisotrmat::read (XFILE *in)
00030 {
00031
00032
00033
00034 xfscanf (in,"%lf",&c);
00035 k.read(in);
00036 }
00037
00038
00039
00040
00041
00042
00043
00044
00045 void nlisotrmat::print (FILE *out)
00046 {
00047 fprintf (out," %le %le %le",a,b,c);
00048 }
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060 void nlisotrmat::matcond (matrix &d,long ri,long ci,long ipp)
00061 {
00062 long n;
00063 n = d.n;
00064
00065 switch (n){
00066 case 1:{
00067 matcond1d (d,ri,ci,ipp);
00068 break;
00069 }
00070 case 2:{
00071 matcond2d (d,ri,ci,ipp);
00072 break;
00073 }
00074 case 3:{
00075 matcond3d (d,ri,ci,ipp);
00076 break;
00077 }
00078 default:{
00079 fprintf (stderr,"\n unknown number of components of stress tensor is required");
00080 fprintf (stderr,"\n in function (file %s, line %d).\n",__FILE__,__LINE__);
00081 }
00082 }
00083 }
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094 void nlisotrmat::matcond1d (matrix &d,long ri,long ci,long ipp)
00095 {
00096 double v,kk;
00097
00098
00099 v = Tm->ip[ipp].av[0];
00100
00101
00102
00103 kk = get_k (v);
00104
00105 d[0][0] = kk;
00106 }
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116 void nlisotrmat::matcond2d (matrix &d,long ri,long ci,long ipp)
00117 {
00118 double v,kk;
00119
00120
00121 v = Tm->ip[ipp].av[0];
00122
00123 kk = get_k (v);
00124
00125 fillm(0.0,d);
00126
00127 d[0][0] = kk; d[0][1] = 0.0;
00128 d[1][0] = 0.0; d[1][1] = kk;
00129 }
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140 void nlisotrmat::matcond3d (matrix &d,long ri,long ci,long ipp)
00141 {
00142 double v,kk;
00143
00144
00145 v = Tm->ip[ipp].av[0];
00146
00147 kk = get_k (v);
00148
00149 fillm(0.0,d);
00150
00151 d[0][0]=kk; d[0][1]=0.0; d[0][2]=0.0;
00152 d[1][0]=0.0; d[1][1]=kk; d[1][2]=0.0;
00153 d[2][0]=0.0; d[2][1]=0.0; d[2][2]=kk;
00154 }
00155
00156
00157
00158
00159
00160
00161
00162
00163
00164
00165
00166
00167
00168 void nlisotrmat::give_dof_names(namevart *dofname, long ntm)
00169 {
00170 if (ntm < 1)
00171 {
00172 print_err("the model defines %ld unknowns but number of transported media is %ld", __FILE__, __LINE__, __func__, 1, ntm);
00173 abort();
00174 }
00175 dofname[0] = trf_temperature;
00176 }
00177
00178
00179
00180
00181
00182
00183
00184
00185
00186
00187
00188
00189
00190
00191 void nlisotrmat::matcap (double &cc,long ri,long ci,long ipp)
00192 {
00193 cc = 0.0;
00194
00195 cc = get_c();
00196 }
00197
00198
00199
00200
00201
00202
00203
00204
00205
00206
00207
00208
00209
00210 double nlisotrmat::get_k (double v)
00211 {
00212
00213
00214
00215
00216
00217 double lambda;
00218 lambda= k.getval(v);
00219 fprintf(Outt, " teplota %le lambda %le", v, lambda);
00220 return(lambda);
00221 }
00222
00223
00224
00225
00226
00227
00228 double nlisotrmat::get_c()
00229 {
00230 return(c);
00231 }
00232
00233
00234
00235
00236
00237
00238
00239
00240
00241
00242
00243
00244
00245
00246
00247
00248
00249
00250
00251
00252
00253
00254
00255
00256
00257
00258
00259