00001
00002
00003
00004
00005
00006
00007
00008 #include "discisotrmat.h"
00009 #include "stochdrivert.h"
00010
00011 discisotrmat::discisotrmat (void)
00012 {
00013 k=0.0; c=0.0; ju=0.0;
00014 }
00015 discisotrmat::~discisotrmat (void)
00016 {
00017 }
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 void discisotrmat::matcond (matrix &d,long ri,long ci,long ipp)
00032 {
00033 long n;
00034 n = d.n;
00035
00036 switch (n){
00037 case 1:{
00038 matcond1d (d,ri,ci,ipp);
00039 break;
00040 }
00041 case 2:{
00042 matcond2d (d,ri,ci,ipp);
00043 break;
00044 }
00045 case 3:{
00046 matcond3d (d,ri,ci,ipp);
00047 break;
00048 }
00049 default:{
00050 fprintf (stderr,"\n unknown number of components of stress tensor is required");
00051 fprintf (stderr,"\n in function (file %s, line %d).\n",__FILE__,__LINE__);
00052 }
00053 }
00054 }
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065 void discisotrmat::matcond1d (matrix &d,long ri,long ci,long ipp)
00066 {
00067 double kk;
00068
00069 kk = get_k();
00070
00071 d[0][0] = kk;
00072 }
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082 void discisotrmat::matcond2d (matrix &d,long ri,long ci,long ipp)
00083 {
00084 double kk;
00085
00086 kk = get_k();
00087
00088 fillm(0.0,d);
00089
00090 d[0][0] = kk; d[0][1] = 0.0;
00091 d[1][0] = 0.0; d[1][1] = kk;
00092 }
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103 void discisotrmat::matcond3d (matrix &d,long ri,long ci,long ipp)
00104 {
00105 double kk;
00106
00107 kk = get_k();
00108
00109 fillm(0.0,d);
00110
00111 d[0][0]=kk; d[0][1]=0.0; d[0][2]=0.0;
00112 d[1][0]=0.0; d[1][1]=kk; d[1][2]=0.0;
00113 d[2][0]=0.0; d[2][1]=0.0; d[2][2]=kk;
00114 }
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125 void discisotrmat::matcap (double &cc,long ri,long ci,long ipp)
00126 {
00127 cc = 0.0;
00128
00129 cc = get_c();
00130 }
00131
00132
00133
00134
00135
00136
00137
00138 void discisotrmat::read (XFILE *in)
00139 {
00140 xfscanf (in,"%lf %lf %lf",&c,&k,&ju);
00141 }
00142
00143
00144
00145
00146
00147
00148
00149 void discisotrmat::print (FILE *out)
00150 {
00151 fprintf (out," %e %e %e",c,k,ju);
00152 }
00153
00154
00155
00156
00157
00158
00159
00160 double discisotrmat::get_k()
00161 {
00162 return(k);
00163 }
00164
00165
00166
00167
00168
00169
00170 double discisotrmat::get_c()
00171 {
00172 return(c);
00173 }
00174
00175
00176
00177
00178
00179
00180 void discisotrmat::changeparam (atsel &atm,vector &val)
00181 {
00182 long i;
00183
00184 for (i=0;i<atm.num;i++){
00185 switch (atm.atrib[i]){
00186 case 0:{
00187 c=val[0];
00188 break;
00189 }
00190 case 1:{
00191 k=val[1];
00192 break;
00193 }
00194 default:{
00195 fprintf (stderr,"\n\n wrong number of atribute in function changeparam (%s, line %d).\n",__FILE__,__LINE__);
00196 }
00197 }
00198 }
00199 }
00200
00201
00202
00203
00204 double discisotrmat::correct_val (double *in,double *iin)
00205 {
00206
00207 return ju;
00208 }
00209
00210
00211
00212
00213 double discisotrmat::compute_rel (double in)
00214 {
00215 double out;
00216
00217 out=in+ju;
00218 return out;
00219 }
00220
00221
00222
00223
00224 double discisotrmat::compute_abs (double in)
00225 {
00226 double out;
00227
00228 out=ju+in;
00229 return out;
00230 }