fourier27.c Page 1 of 36 - WordPress.com · pressure gradient printed in file. 12 4. euler's simple...

36
File: /media/aero/phd/PhDthesis/1_t…/prof_method/4case/fourier27.c Page 1 of 36 1 /* 2 PROGRAM : THERMAL STRESS, PROBABILITY CALCULATION OF COAL PARTICLE 3 DEVELOP : DHARMESH 4 START : 12-2-15. Thu 12 Feb 2015 09:18:52 IST 5 FINISHED: 6 7 8 FOLLOWING CHANGES HAVE BEEN MADE COMPARED TO PREVIOUS FILE FOURIER26.C 9 1. VOLATILIZATION FUNCTION WRITTEN IN BACKWARD DIFFERENCE FORMULA. 10 2. FAILURE PROBABILITY PRINTED IN THERMAL FUNCTION. 11 3. PRESSURE GRADIENT PRINTED IN FILE. 12 4. EULER'S SIMPLE FORMULA USED TO CALCULATE PRESSURE IN VOLATILIZATION. 13 5. N[I] IS FORCED TO ZERO IN VOLATILIZATION PLOT. 14 6. ATMOSPHERIC PRESSURE SET TO PINF OBTAINED FROM MACH EQUATION. 15 7. else LOOP ADDED IN MODSIMPSTRESS() FUNCTION m LOOP. IT CORRECTED 16 HUGE NEGATIVE VALUE AT R=0 FOR LONG TIME SCALE IN SIG_R PLOT. 17 18 19 */ 20 # include <stdio.h> 21 # include <math.h> 22 # include <stdlib.h> 23 # define PI 3.141592653589793238462643 24 # include <time.h> 25 # include "integration.c" 26 27 28 29 double tempfour(); 30 double temp(int k); 31 double stress(); 32 double PrinStress(); 33 double conv(); 34 double FailProb(); 35 double StressSimpson(); 36 double vol(); 37 double sigRR(int k); 38 double VolPrinStress(); 39 double convFV(); 40 double ModStressSimp(); 41 double derivative(); 42 double InitCond(); 43 double ValAtCent(int j, double ss[], double Tt[]); 44 double maximum(double aa, double bb); 45 double FractCrit2(); 46 double Thermal_FailProb(); 47 double Thermal_FractCrit2(); 48 double Thermal_derivative(); 49 double FilePrint(); 50 double StdNormalDistr(double x[]); 51 double Thermal_FilePrint(); 52 double Thermal_StdNormalDistr(double x[]); 53 double fn(double xxx); 54

Transcript of fourier27.c Page 1 of 36 - WordPress.com · pressure gradient printed in file. 12 4. euler's simple...

Page 1: fourier27.c Page 1 of 36 - WordPress.com · pressure gradient printed in file. 12 4. euler's simple formula used to calculate pressure in volatilization. 13 5. n[i] is forced to zero

File: /media/aero/phd/PhDthesis/1_t…/prof_method/4case/fourier27.c Page 1 of 36

1 /*2 PROGRAM : THERMAL STRESS, PROBABILITY CALCULATION OF COAL PARTICLE3 DEVELOP : DHARMESH4 START : 12-2-15. Thu 12 Feb 2015 09:18:52 IST 5 FINISHED: 6

7

8 FOLLOWING CHANGES HAVE BEEN MADE COMPARED TO PREVIOUS FILE FOURIER26.C9 1. VOLATILIZATION FUNCTION WRITTEN IN BACKWARD DIFFERENCE FORMULA.

10 2. FAILURE PROBABILITY PRINTED IN THERMAL FUNCTION.11 3. PRESSURE GRADIENT PRINTED IN FILE.12 4. EULER'S SIMPLE FORMULA USED TO CALCULATE PRESSURE IN VOLATILIZATION.13 5. N[I] IS FORCED TO ZERO IN VOLATILIZATION PLOT.14 6. ATMOSPHERIC PRESSURE SET TO PINF OBTAINED FROM MACH EQUATION.15 7. else LOOP ADDED IN MODSIMPSTRESS() FUNCTION m LOOP. IT CORRECTED16 HUGE NEGATIVE VALUE AT R=0 FOR LONG TIME SCALE IN SIG_R PLOT.17 18

19 */20 # include <stdio.h>21 # include <math.h>22 # include <stdlib.h>23 # define PI 3.14159265358979323846264324 # include <time.h>25 # include "integration.c"26

27

28

29 double tempfour();30 double temp(int k);31 double stress();32 double PrinStress();33 double conv();34 double FailProb();35 double StressSimpson();36 double vol();37 double sigRR(int k);38 double VolPrinStress();39 double convFV();40 double ModStressSimp();41 double derivative();42 double InitCond();43 double ValAtCent(int j, double ss[], double Tt[]);44 double maximum(double aa, double bb);45 double FractCrit2();46 double Thermal_FailProb();47 double Thermal_FractCrit2();48 double Thermal_derivative();49 double FilePrint();50 double StdNormalDistr(double x[]);51 double Thermal_FilePrint();52 double Thermal_StdNormalDistr(double x[]);53 double fn(double xxx);54

Page 2: fourier27.c Page 1 of 36 - WordPress.com · pressure gradient printed in file. 12 4. euler's simple formula used to calculate pressure in volatilization. 13 5. n[i] is forced to zero

File: /media/aero/phd/PhDthesis/1_t…/prof_method/4case/fourier27.c Page 2 of 36

55 56 57 int i=0, imax=100, n=0, nmax=300000, j, m=0, mmax, mmin=0, M=6,

wbmod=6, sigU=6, sigO=12, vstar=30, beta_int=40; // size=5058 int icount;59 60 /*variables related to size loop*/61 int size_1[12]={5, 10, 25, 50, 75, 100, 150, 200, 250, 500, 750, 1000},

ii, size=50, jj;62 //double f_time_array[20];63

64 /*variables used in temperature calculation functions*/65 double T[100000], Tn[100000], r[150];66 double alpha=0.000000167, beta=0.000040, E=3000.0, mu=0.37;67 double delt, delr, r0=0.0, rmax, tmax=0.00138, rmin=0.0, tmin=0.0,

mult, mult1, mult2;68 double Tinf=800.0, Tinit=300.00, t[1010000], t0=0.0;69 double hsigma_r, hsigma_l, hc=15240.0, kc=0.254, Tnn,

sig_b=0.0000000567, epsc=0.85, tol, rho=1230.0, cp=1220.0;70 double multT_left, multT_center, multT_right, multT_const;71 double a_r, q_r, a_l, q_l, vol_diff;72 73 /*variables used in radial and tangential stress calculation*/74 double full_int, full_int4, full_int5, full_int51, rrr;75 double full_int2, full_int3, y, z, rr, TT[100000], part_int,

part_int11, part_int1, delr2;76 double sig_R[100000], sig_T[100000];77 double fullint41, fullint51, fullint511, partint, partint11, partint1;78 double sumComp=0.0, sumPart=0.0, rrc, TTc, tempxrrc, rrp, TTp,

tempxrrp, sumComp1, sumPart1;79 80 /*variables used in maximum principal stress calculation*/81 double r_r, vol_r, r_l,vol_l, sig_0[100000], sig_1[100000], sig_2

[100000], sig_3[100000];82 double tau_xy[100000], tau_yz[100000], tau_zx[100000], sx[100000], sy

[100000], sz[100000];83 double J3, J2, J22, th;84 double th_sig_0[100000], th_sig_1[100000], th_sig_2[100000], th_sig_3

[100000];85 double th_tau_xy[100000], th_tau_yz[100000], th_tau_zx[100000], th_sx

[100000], th_sy[100000], th_sz[100000];86 double th_J3, th_J2, th_J22, th_th;87 88 /*failure probability calculations*/89 double pf1[100000], pf10=0.0, pf2[100000], pft[100000], pf[500100]

[110], ps[100000], pf21, eta;90 double th_pf1[100000], th_pf10=0.0, th_pf2[100000], th_pft[100000],

th_pf[500100][110], th_ps[100000], th_pf21, eta;91 92 93 double num, den, gama=1.42;94 95 /*variables used in volatilization*/96 double vn[100000], v[100000], k0=7050.0, Ea=72000000.0, gscnst=8314.5,

Page 3: fourier27.c Page 1 of 36 - WordPress.com · pressure gradient printed in file. 12 4. euler's simple formula used to calculate pressure in volatilization. 13 5. n[i] is forced to zero

File: /media/aero/phd/PhDthesis/1_t…/prof_method/4case/fourier27.c Page 3 of 36

vmax, N[100000], rhoc=1600.0, Mvol=40.0;97 double p[100000], visc=0.0001, tau=3.0, rpor=0.0000005, epsilon=0.003,

pb, p4ac, patm=101325.0, pp[100000], sig_RR[100000];98 99 /*variable used in derivative calculation functoin*/

100 double dtbydr[100000], d2tbydr2[100000], dsigbydr[100000], DELpfn, DELpfi, fpf=0.999, fracloc, dpbydr[100000];

101 double th_dtbydr[100000], th_d2tbydr2[100000], th_dsigbydr[100000], th_DELpfn, th_DELpfi, th_fracloc;

102 103 /*variables used in fracture criterial calculation*/104 double fracloc, maxR, maxj, f_time, f_temp;105 double th_fracloc, th_maxR, th_maxj, th_f_time, th_f_temp;106 107 /*variable used in condition behind shock wave*/108 double p_num, p_den, pinf;109 110 /*file pointers*/111 FILE *fp, *ft, *op, *od, *top, *tod, *fd, *fsnd, *tfp, *tft, *tfsnd;112

113 /*varialbles used to calculate normal distribution data*/114 double f_time_array[20], f_vol, f_vol_array[20], f_vol_flow,

f_vol_flow_array[20], f_vol_pres, f_vol_pres_array[20], f_vol_sig_1, f_vol_sig_1_array[20], f_temp_array[20];

115 double th_f_time_array[20], th_f_sig_1, th_f_sig_1_array[20], th_f_temp_array[20];

116 117 /*varialbles required to auto name files generated using "snprintf"*/118 char Mfile[]="M";119 char sigufile[]="sigU";120 char sigOfile[]="sigO";121 char mfile[]="m";122 char vmaxfile[]="vmax";123 char BetaFile[]="beta";124 char SizeFile[]="size";125 126 double c1; int i1;127 128 int main()129 {130 clock_t start = clock(); // this will print program running time131

132 //rmax=size/1000000.0;133 delt=(tmax-tmin)/nmax;134 //delr=(rmax-rmin)/imax;135 //printf("#time dist T[i-1] T[i] T[i+1] Tn[i]\n");136 InitCond();137

138 //for(M=3;M<=8;M++) //139 //{140 num=(2.0*gama*pow(M,2.0)-(gama-1.0))*((gama-1.0)*pow(M,2.0)

+2.0);141 den=pow(M*(gama+1.0),2.0);142

Page 4: fourier27.c Page 1 of 36 - WordPress.com · pressure gradient printed in file. 12 4. euler's simple formula used to calculate pressure in volatilization. 13 5. n[i] is forced to zero

File: /media/aero/phd/PhDthesis/1_t…/prof_method/4case/fourier27.c Page 4 of 36

143 Tinf=Tinit*num/den;144

145 p_num=2.0*gama*pow(M,2.0)-(gama-1.0);146 p_den=(gama-1.0);147

148 // pinf=patm*p_num/p_den;149

150 //for(beta_int=20;beta_int<=60;beta_int+=20)151 //{152 beta=beta_int/1000000.0;153

154 /* for(sigO=11;sigO<=12;sigO++)155 {156 for(sigU=8;sigU<=10;sigU+=1)157 {158 for(wbmod=3;wbmod<=6;wbmod++)159 {160 for(vstar=30;vstar<=60;vstar

+=15)161 { // */162 vmax=vstar/100.0;163 //icount=0; // this

icount should be written in for loop of size164 jj=0;165

166 //for(ii=0;ii<=11;ii++)167 //{168 //size=size_1[ii];169 rmax=size/1000000.0;170 delr=(rmax-rmin)/imax;171

172

173

174 //printf("%lf\n",rmax); /*this works fine up to this point*/

175 icount=0;176 for (n=0;n<=nmax;n++)177 {178 InitCond();179 t[n]=t0+n*delt;180 pinf=patm*p_num/p_den;181 182 /* if(n==0)183 {184 pinf=patm;185 }186 else187 {188 pinf=patm*p_num/p_den;189 } */190

191

192 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@193 //convective BC: thermal+volatilizatoin

Page 5: fourier27.c Page 1 of 36 - WordPress.com · pressure gradient printed in file. 12 4. euler's simple formula used to calculate pressure in volatilization. 13 5. n[i] is forced to zero

File: /media/aero/phd/PhDthesis/1_t…/prof_method/4case/fourier27.c Page 5 of 36

194 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@195 convFV();196 //conv();197 //stress();198 //StressSimpson();199 ModStressSimp();200 PrinStress ();201 vol();202 VolPrinStress();203 derivative();204 FailProb();205 FilePrint();206

207 if(pft[n]>fpf)208 {209 FractCrit2();210 //f_time_array[jj]=f_time;211

212 }213 //StdNormalDistr(f_time_array);214 215

216 /*217 //######################218 //convective BC: thermal219 //######################220 convFV();221 //conv();222 //stress();223 //StressSimpson();224 ModStressSimp();225 PrinStress ();226 Thermal_derivative();227 Thermal_FailProb();228 Thermal_FilePrint();229

230 if(th_pft[n]>fpf)231 {232 Thermal_FractCrit2();233 }234 */235

236 /*237 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%238 //Constant temp BC: thermal+volatilization239 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%240 tempfour();241 //stress();242 //StressSimpson();243 ModStressSimp();244 vol();245 VolPrinStress();246 derivative();247 FailProb();

Page 6: fourier27.c Page 1 of 36 - WordPress.com · pressure gradient printed in file. 12 4. euler's simple formula used to calculate pressure in volatilization. 13 5. n[i] is forced to zero

File: /media/aero/phd/PhDthesis/1_t…/prof_method/4case/fourier27.c Page 6 of 36

248 FractCrit();249 */250

251 /*252 //@@@@@@@@@@@@@@@@@@@@@@@@253 //Constant temp BC:thermal254 //@@@@@@@@@@@@@@@@@@@@@@@@255 tempfour();256 //stress();257 //StressSimpson();258 ModStressSimp();259 PrinStress ();260 derivative();261 FailProb();262 FractCrit();263 */264

265

266 }//n loop267

268 // printf("\n");269

270 // } // size loop271 StdNormalDistr(f_time_array);272 StdNormalDistr(f_temp_array);273 StdNormalDistr(f_vol_array);274 StdNormalDistr(f_vol_flow_array);275 //StdNormalDistr(f_vol_pres_array);276 //StdNormalDistr(f_vol_sig_1_array);277

278

279 //Thermal_StdNormalDistr(th_f_time_array);280

281 // }//vstar loop282 // }//wbmod loop283 // }//sigU284 // }//sigO285

286 // }//beta_int loop287 //} //M loop 288

289

290 clock_t stop = clock();291 double elapsed = (double)(stop - start) * 1000.0 / CLOCKS_PER_SEC;292 printf("Time elapsed in ms: %f\n", elapsed);293

294 return 0;295 }296 /*##########################################################297 ############ ###########298 ############ FUNCTION SECTION ###########299 ############ ###########300 ##########################################################*/301 /*@@@@@@@@@@@@@@@@@@@@@@@@@@

Page 7: fourier27.c Page 1 of 36 - WordPress.com · pressure gradient printed in file. 12 4. euler's simple formula used to calculate pressure in volatilization. 13 5. n[i] is forced to zero

File: /media/aero/phd/PhDthesis/1_t…/prof_method/4case/fourier27.c Page 7 of 36

302 initial condition303 @@@@@@@@@@@@@@@@@@@@@@@@@@@*/304

305 double InitCond()306 {307 if(n==0)308 {309

310 for (i=0;i<=imax;i++)311 {312

313 T[i]=Tinit;314

315 v[i]=0.0;316 vn[i]=0.0;317 N[i]=0.0;318 p[i]=patm;319 pinf=patm;320 pf[n][i]=0.0; pft[n]=0.0;321 th_pf[n][i]=0.0;322 th_pft[n]=0.0;323

324 t[n]=t0+n*delt;325 r[i]=r0+i*delr;326 Tn[i]=Tinit;327 dtbydr[i]=0.0;328 d2tbydr2[i]=0.0;329 dsigbydr[i]=0.0;330 th_dtbydr[i]=0.0;331 th_d2tbydr2[i]=0.0;332 th_dsigbydr[i]=0.0;333

334 sig_R[i]=0.0;335 sig_T[i]=0.0;336 sig_1[i]=0.0;337 sig_2[i]=0.0;338 sig_3[i]=0.0;339

340 th_sig_1[i]=0.0;341 th_sig_2[i]=0.0;342 th_sig_3[i]=0.0;343

344 //printf("%7.6f %8.7f %8.4f %8.4f %8.4f %8.4f %11.8lf %7.5lf\n", t[n], r[i], T[i-1], T[i], T[i+1], Tn[i], v[i], p[i]);

345 }346

347 }348 //printf("\n");349 return 0.0;350 }351 /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@352 @@@@@@ @@@@@353 @@@@@@ FUNCTIONS RELATED TO TEMPERATURE @@@@@354 @@@@@@ @@@@@

Page 8: fourier27.c Page 1 of 36 - WordPress.com · pressure gradient printed in file. 12 4. euler's simple formula used to calculate pressure in volatilization. 13 5. n[i] is forced to zero

File: /media/aero/phd/PhDthesis/1_t…/prof_method/4case/fourier27.c Page 8 of 36

355 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/356 /****************************************357 fourier conductin: constant surface temp358 ****************************************/359 double tempfour()360 {361 delr=(rmax-rmin)/imax;362 delt=(tmax-tmin)/nmax;363 for(i=0;i<=imax;i++)364 {365 r[i]=r0+i*delr;366

367 if(i==0)368 {369 r[i]=0.1*rmax/imax;370 T[i]=T[i+1] - ((T[i+2]-T[i+1]) * (r[i+1]-r[i])/(r[i+2]-r

[i+1]));371 T[i-1]=T[i+1];372 }373

374 mult=alpha*delt/delr;375 Tn[i]=mult*T[i-1]/delr + (1.0-2.0*mult/delr-2.0*mult/r[i])*T[i]

+ (mult/delr+2.0*mult/r[i])*T[i+1];376

377 if(i==imax)378 {379 T[i]=Tinf; 380 T[i+1]=Tinf;381 Tn[i]=Tinf; 382 }383 if(n==nmax)384 {385 //printf("%3.1lf %7.6f %8.7f %8.2lf %8.2lf %8.2lf %8.2lf\n", M,

t[n], r[i], T[i-1], T[i], T[i+1], Tn[i]);386 }387

388 T[i]=Tn[i];389 }390 //printf("\n");391 return (Tn[i]);392 }393 /*#################################################394 fourier HT:convective boundary heat transfer395 ----------------------------------------------396 this is working fine but takes 12 hours397 ###################################################*/398 399 double conv()400 {401 delr=(rmax-rmin)/imax;402 delt=(tmax-tmin)/nmax;403 for(i=0;i<=imax;i++)404 {405 r[i]=r0+i*delr;

Page 9: fourier27.c Page 1 of 36 - WordPress.com · pressure gradient printed in file. 12 4. euler's simple formula used to calculate pressure in volatilization. 13 5. n[i] is forced to zero

File: /media/aero/phd/PhDthesis/1_t…/prof_method/4case/fourier27.c Page 9 of 36

406

407 if(i==0)408 {409 r[i]=0.1*r[i+1];410 T[i]=T[i+1] - ((T[i+2]-T[i+1]) * (r[i+1]-r[i])/(r[i+2]-r

[i+1]));411 T[i-1]=T[i+1];412 }413

414 mult=alpha*delt/delr;415 Tn[i]=mult*T[i-1]/delr + (1.0-2.0*mult/delr-2.0*mult/r[i])*T[i]

+ (mult/delr+2.0*mult/r[i])*T[i+1];416

417 if(i==imax)418 {419 T[i+1]=Tinf;420 for(Tnn=Tinit;Tnn<=Tinf;Tnn+=0.0001)421 {422

423 hsigma_l=kc*T[i-1]/delr+sig_b*epsc*pow(Tinf,4.0)+hc*Tinf;

424 hsigma_r=(hc+kc/delr)*Tnn+sig_b*epsc*pow(Tnn,4.0);

425

426 tol=hsigma_l-hsigma_r;427 //printf("%7.6f %8.7f %8.2lf %8.2lf %lf %lf %lf

\n", t[n], r[i], T[i-1], Tnn, tol, hsigma_l, hsigma_r);428 if (fabs(tol)<=5.0)429 break;430 Tn[i]=Tnn;431 }432

433 }434 //printf("%7.6f %8.7f %8.2lf %8.2lf %8.2lf %8.2lf\n", t[n], r[i], T

[i-1], T[i], T[i+1], Tn[i]);435 T[i]=Tn[i];436 }437 //printf("\n");438 return (Tn[i]);439 }440 /*#################################################441 fourier HT:convective boundary heat transfer442 --------------------------------------------443 This is finite volume method code and it is 444 matching with analytical solution available445 in the file BiFirst827.txt 446 ###################################################*/447

448 double convFV()449 {450 delr=(rmax-rmin)/imax;451 delt=(tmax-tmin)/nmax;452

453 for(i=0;i<=imax;i++)

Page 10: fourier27.c Page 1 of 36 - WordPress.com · pressure gradient printed in file. 12 4. euler's simple formula used to calculate pressure in volatilization. 13 5. n[i] is forced to zero

File: /media/aero/phd/PhDthesis/1_t…/prof_method/4case/fourier27.c Page 10 of 36

454 {455 r[i]=r0+i*delr;456

457 if(i==0)458 {459 r[i]=0.1*rmax/imax;460 ValAtCent(i,T,r);461 T[i-1]=T[i+1];462 }463

464 mult=alpha*delt/delr;465 Tn[i]=mult*T[i-1]/delr + (1.0-2.0*mult/delr-2.0*mult/r[i])*T[i]

+ (mult/delr+2.0*mult/r[i])*T[i+1];466

467 if(i==imax)468 {469 //r_l=(r[i]+r[i-1])/2.0;470 r_l=r[i-1];471 a_l=4.0*PI*r_l*r_l;472 vol_l=4.0*PI*pow(r_l,3.0)/3.0;473 474 475 r_r=r[i];476 a_r=4.0*PI*r_r*r_r;477 vol_r=4.0*PI*pow(r_r,3.0)/3.0;478 479 480 vol_diff=vol_r-vol_l;481 482 multT_left=a_l * delt*alpha/(vol_diff*delr);483 multT_center=a_l*delt*alpha/(vol_diff*delr) +

delt*hc*a_r/(rho*vol_diff*cp) + delt*sig_b*epsc*a_r*pow(T[i],3.0)/(rho*vol_diff*cp);

484 multT_const=hc*delt*a_r*Tinf/(rho*vol_diff*cp) + delt*sig_b*epsc*a_r*pow(Tinf,4.0)/ (rho*vol_diff*cp);

485 486 Tn[i]=T[i] + multT_left*T[i-1] - multT_center*T[i] +

multT_const;487

488 }489

490

491 if(n==nmax)492 {493 //printf("%3.1lf %7.2lf %7.6f %8.7f %8.2lf %8.2lf %8.2lf %8.2lf %lf %lf

%lf\n", M, Tinf, t[n], r[i], T[i-1], T[i], T[i+1], Tn[i], multT_left, multT_center, multT_const);

494 //printf("%3.1lf %7.2lf %7.6f %8.7f %8.2lf %8.2lf %8.2lf %8.2lf\n", M, Tinf, t[n], r[i], T[i-1], T[i], T[i+1], Tn[i]);

495 }496 T[i]=Tn[i];497 }498 //printf("\n");499 //return (Tn[i]);

Page 11: fourier27.c Page 1 of 36 - WordPress.com · pressure gradient printed in file. 12 4. euler's simple formula used to calculate pressure in volatilization. 13 5. n[i] is forced to zero

File: /media/aero/phd/PhDthesis/1_t…/prof_method/4case/fourier27.c Page 11 of 36

500 return (0.0);501 }502 /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@503 @@@@@@ @@@@@504 @@@@@@ FUNCTIONS RELATED TO STRESS @@@@@505 @@@@@@ @@@@@506 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/507 /*%%%%%%%%%%%%%%%%%%%%%%%508 stress using trapazoidal509 %%%%%%%%%%%%%%%%%%%%%%%%*/510 double stress()511 {512 delr=(rmax-rmin)/imax;513 full_int4=(temp(0)+temp(imax))/2.0;514

515 for (i=1;i<imax;i++)516 {517 full_int4=full_int4+temp(i);518 //if(n==nmax){printf("%3d %g\n",i,full_int4);}519 }520 full_int5=delr*full_int4;521 full_int51=full_int5/pow(rmax,3.0);522

523 for (i=0;i<=imax;i++)524 {525 mmin=0;526 mmax=i;527

528 delr2=(r[mmax]-rmin)/imax;529 part_int=(temp(0)+temp(mmax))/2.0;530

531 for (m=1;m<mmax;m++)532 {533 part_int=part_int+temp(m);534 //if(n==nmax){printf("%3d %3d %g %g\n", i, m, r[mmax],

part_int);}535 }536

537 part_int1=delr*part_int;538 part_int11=part_int1/pow(r[mmax],3.0);539 mult2=beta*E/(1-mu);540 sig_R[i]=2.0*mult2*(full_int51-part_int11);541

542 sig_T[i]=mult2*(2.0*full_int51 + part_int11 - (T[i]-Tinit));543

544 if(n==nmax)545 {546 //printf("%3.1lf %7.2lf %7.6f %8.7f %8.2lf %8.2lf %8.2lf %8.2lf

%8.2lf %8.2lf %lf %lf\n",547 // M, Tinf, t[n], r[i], T[i-1], T[i], T[i+1], Tn[i], sig_R[i],

sig_T[i], full_int51, part_int11);548 }549 }550 return 0.0;

Page 12: fourier27.c Page 1 of 36 - WordPress.com · pressure gradient printed in file. 12 4. euler's simple formula used to calculate pressure in volatilization. 13 5. n[i] is forced to zero

File: /media/aero/phd/PhDthesis/1_t…/prof_method/4case/fourier27.c Page 12 of 36

551 }552 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%553 stress using simpson 1/3 rule554 %%%%%%%%%%%%%%%%%%%%%%%%%%%%*/555 double StressSimpson()556 {557 delr=(rmax-rmin)/imax;558 fullint41=(temp(0)+temp(imax));559 for (i=1;i<imax;i++)560 {561 if((i%2)==0)562 {563 fullint41=fullint41+2.0*temp(i);564 }565 else566 {567 fullint41=fullint41+4.0*temp(i);568 }569 }570 fullint51=delr*fullint41/(3.0*pow(rmax,3.0));571

572

573 for (i=0;i<=imax;i++)574 {575 mmin=0;576 mmax=i;577

578 delr2=(r[mmax]-rmin)/imax;579 partint1=(temp(0)+temp(mmax));580

581 for (m=1;m<mmax;m++)582 //for (m=0;m<mmax;m++) do not use this583 {584 if((m%2)==0)585 {586 partint1=partint1+2.0*temp(m);587 }588 else589 {590 partint1=partint1+4.0*temp(m);591 }592 }593 partint11=delr*partint1/(3.0*pow(r[mmax],3.0));594

595 mult2=beta*E/(1-mu);596 sig_R[i]=2.0*mult2*(fullint51-partint11);597

598 sig_T[i]=mult2*(2.0*fullint51+partint11-(T[i]-Tinit));599 if(n==nmax)600 {601 //printf("%7.6f %8.7f %8.2lf %8.2lf %8.2lf\n", t[n], r[i], Tn

[i], sig_R[i], sig_T[i]);602 //printf("%7.6f %8.7f %8.2lf %lf %lf %8.2lf %8.2lf\n", t[n], r

[i], Tn[i], fullint51, partint11, sig_R[i], sig_T[i]);

Page 13: fourier27.c Page 1 of 36 - WordPress.com · pressure gradient printed in file. 12 4. euler's simple formula used to calculate pressure in volatilization. 13 5. n[i] is forced to zero

File: /media/aero/phd/PhDthesis/1_t…/prof_method/4case/fourier27.c Page 13 of 36

603 }604 }605 //printf("\n");606 return 0.0;607 }608 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%609 stress using simpson 1/3 rule610 -----------------------------611 modified (1 4 1)/6 method612 %%%%%%%%%%%%%%%%%%%%%%%%%%%%*/613 double ModStressSimp()614 { 615

616 delr=(rmax-rmin)/imax;617 sumComp=0.0;618

619 /*0 to rmax integration begins here*/620 for(i=0;i<=imax;i++)621 {622 if(i==0) // this has to be invoked when for

(i=0;i<=imax;i++) loop used623 {624 sumComp=0.0;625 }626

627 rrc=0.5*(r[i]+r[i-1]);628 TTc=0.5*(T[i]+T[i-1]);629 tempxrrc=(TTc-Tinit)*rrc*rrc;630

631 sumComp=sumComp+(temp(i-1) + 4.0*tempxrrc + temp(i));632

633 //if(n==nmax){printf("%3d %g %g %g %g\n", i, temp(i), T[i], r[i], sumComp);}

634 }635

636 sumComp1=delr*sumComp/(6.0*pow(rmax,3.0));637

638 /*0 to r integration begins here*/639 for(i=0;i<=imax;i++)640 {641 if(i==0)642 {643 sumPart=0.0;644 }645

646 mmin=0;647 mmax=i;648

649 sumPart=0.0;650

651

652 for(m=0;m<=mmax;m++)653 {654 if(m==0)

Page 14: fourier27.c Page 1 of 36 - WordPress.com · pressure gradient printed in file. 12 4. euler's simple formula used to calculate pressure in volatilization. 13 5. n[i] is forced to zero

File: /media/aero/phd/PhDthesis/1_t…/prof_method/4case/fourier27.c Page 14 of 36

655 {656 sumPart=0.0;657 }658 else{659 rrp=0.5*(r[m]+r[m-1]);660 TTp=0.5*(T[m]+T[m-1]);661 tempxrrp=(TTp-Tinit)*rrp*rrp;662

663 sumPart=sumPart+(temp(m-1)+4.0*tempxrrp+temp(m));

664

665 //if(n==nmax){printf("%3d %3d %g %g %g %g %g\n", i, m, temp(m), T[m], r[m], r[mmax], sumPart);}

666 }667 }668

669 sumPart1=delr*sumPart/(6.0*pow(r[mmax],3.0));670

671 mult2=beta*E/(1-mu);672 sig_R[i]=2.0*mult2*(sumComp1-sumPart1);673

674 sig_T[i]=mult2*(2.0*sumComp1+sumPart1-(T[i]-Tinit));675

676 /*following two if conditions are used to calculate values at center(i==0) and i+1

677 First i==1 value need to be calculated because its value will be required to calculate

678 quantity's value at i==0. This method is based on calculation of quantity's value

679 based on gradient */680 if(i==1)681 {682 ValAtCent(i,sig_R,r);683 ValAtCent(i,sig_T,r);684 }685

686 if(i==0)687 {688 ValAtCent(i,sig_R,r);689 ValAtCent(i,sig_T,r);690 }691

692 /*forcing sig_R[imax]=0.0 Basically it will overwrite the calculated value to 0.0*/

693 if(i==imax)694 {695 sig_R[i]=0.0;696 }697

698

699 if(n==nmax)700 {701 //printf("%3.1lf %7.2lf %7.6f %8.7f %8.2lf %lf %lf %

8.2lf %8.2lf\n", M, Tinf, t[n], r[i], Tn[i], sumComp1, sumPart1, sig_R

Page 15: fourier27.c Page 1 of 36 - WordPress.com · pressure gradient printed in file. 12 4. euler's simple formula used to calculate pressure in volatilization. 13 5. n[i] is forced to zero

File: /media/aero/phd/PhDthesis/1_t…/prof_method/4case/fourier27.c Page 15 of 36

[i], sig_T[i]);702 }703 }704 705 return 0.0;706 }707 /***************************************708 temperature functoin used in integration709 ***************************************/710 double temp(int k)711 {712 if(k==0)713 {714 r[k]=0.1*rmax/imax;715 }716 return ((T[k]-Tinit)*r[k]*r[k]);717 }718

719 /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@720 @@@@@@ @@@@@721 @@@@@@ FUNCTIONS RELATED TO THERMAL ANALYS @@@@@722 @@@@@@ @@@@@723 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/724 /*@@@@@@@@@@@@@@@@@@@@@725 principal stress726 ---------------------727 only thermal stress728 @@@@@@@@@@@@@@@@@@@@@@*/729 double PrinStress()730 {731 for(i=0;i<=imax;i++)732 {733 r[i]=r0+i*delr;734 if(i==0)735 {736 r[i-1]=r[i+1];737 r[i]=0.1*rmax/imax;738 r_l=r[i];739 vol_l=4.0*PI*pow(r_l,3.0)/3.0;740 r_r=(r[i+1]+r[i])/2.0;741 vol_r=4.0*PI*pow(r_r,3.0)/3.0;742 th_tau_xy[i]=(vol_l*sig_T[i-1]+vol_r*sig_T[i])/(vol_l

+vol_r);743 }744

745 th_sig_0[i] = (sig_R[i]+sig_T[i]+sig_T[i])/3.0;746 th_sx[i] = sig_R[i] - th_sig_0[i];747 th_sy[i] = sig_T[i] - th_sig_0[i];748 th_sz[i] = sig_T[i] - th_sig_0[i];749

750 r_l=(r[i-1]+r[i])/2.0;751 vol_l=4.0*PI*pow(r_l,3.0)/3.0;752 r_r=(r[i]+r[i+1])/2.0;

Page 16: fourier27.c Page 1 of 36 - WordPress.com · pressure gradient printed in file. 12 4. euler's simple formula used to calculate pressure in volatilization. 13 5. n[i] is forced to zero

File: /media/aero/phd/PhDthesis/1_t…/prof_method/4case/fourier27.c Page 16 of 36

753 vol_r=4.0*PI*pow(r_r,3.0)/3.0;754

755 th_tau_xy[i]=(vol_l*sig_T[i-1]+vol_r*sig_T[i])/(vol_l+vol_r);756

757

758 if (i==imax)759 {760 r[i]=rmax;761 r[i+1]=r[i];762 r_r=(r[i+1]+r[i])/2.0;763 //r_r=r[i];764 vol_r=4.0*PI*pow(r_r,3.0)/3.0;765 r_l=r[i-1];766 vol_l=4.0*PI*pow(r_l,3.0)/3.0;767 th_tau_xy[i]=(vol_l*sig_T[i-1]+vol_r*sig_T[i])/(vol_l

+vol_r);768 }769

770 th_tau_yz[i]=sig_T[i];771 th_tau_zx[i]=sig_T[i];772

773 th_J3=-th_sx[i]*th_sy[i]*th_sz[i] + th_sx[i]*pow(th_tau_yz[i],2.0) + th_sy[i]*pow(th_tau_zx[i],2.0) + th_sz[i]*pow(th_tau_xy[i],2.0);

774 th_J2=th_sx[i]*th_sy[i] + th_sy[i]*th_sz[i] + th_sz[i]*th_sx[i] - pow(th_tau_xy[i],2.0) - pow(th_tau_yz[i],2.0) - pow(th_tau_zx[i],2.0);

775

776 th_J22=fabs(th_J2/3.0);777

778 th_th=(1.0/3.0)*acos(-th_J3/(2.0*pow(th_J22,1.5)));779

780 th_sig_1[i]=th_sig_0[i] + 2.0*sqrt(th_J22)*cos(th_th);781 th_sig_2[i]=th_sig_0[i] - 2.0*sqrt(th_J22)*cos(th_th+PI/3.0);782 th_sig_3[i]=th_sig_0[i] - 2.0*sqrt(th_J22)*cos(th_th-PI/3.0);783

784 if(i==0)785 {786 ValAtCent(i,th_sig_1,r);787 ValAtCent(i,th_sig_2,r);788 ValAtCent(i,th_sig_3,r);789 }790 791 if(n==0)792 {793 th_sig_1[i]=0.0;794 th_sig_2[i]=0.0;795 th_sig_3[i]=0.0;796

797 }798

799 //printf("%7.6f %8.7f %lf %lf %lf %lf\n",t[n], r[i], th_J2, th_J22, th_J3, th_th);

800

801 if((n%300)==0)

Page 17: fourier27.c Page 1 of 36 - WordPress.com · pressure gradient printed in file. 12 4. euler's simple formula used to calculate pressure in volatilization. 13 5. n[i] is forced to zero

File: /media/aero/phd/PhDthesis/1_t…/prof_method/4case/fourier27.c Page 17 of 36

802 //if(n==nmax)803 {804 //printf("%10.4le %4.2lf %11.4le %11.4le %11.4le %

8.2lf, %8.2lf %8.2lf %8.2lf %8.2lf %8.2lf\n",805 // t[n], (r[i]/rmax), th_J3, th_J22, th_th, Tn[i], sig_R

[i], sig_T[i], th_sig_1[i], th_sig_2[i], th_sig_3[i]);806

807 }808

809 }810 //printf("\n");811 return 0.0;812 }813 /**************************814 thermal failure probability815

**************************/816 double Thermal_FailProb()817 {818

819 /*820 char Mfile[]="M";821 char sigufile[]="sigU";822 char sigOfile[]="sigO";823 char mfile[]="m";824 char vmaxfile[]="vmax";825 char BetaFile[]="beta";826 char SizeFile[]="size";827 */828

829 char ThermalOverallProb[BUFSIZ];830

831

832 /*writes overall failure probability datas */833 snprintf(ThermalOverallProb, sizeof(ThermalOverallProb), "th_%s_%d_%s_

%d_%s_%d_%s_%d_%s_%d_%s_%d_OverallProb.txt", SizeFile,size, Mfile,M, BetaFile,beta_int, sigufile,sigU, sigOfile,sigO, mfile,wbmod);

834 top=fopen(ThermalOverallProb,"a");835

836

837 th_pf10=0.0;838 for(i=0;i<=imax;i++)839 {840 eta=4.0*PI*pow(rmax,3.0)/3.0;841 if(i==0)842 {843 r[i-1]=r[i+1];844 r[i]=0.1*rmax/imax;845 r_r=(r[i+1]+r[i])/2.0;846 vol_r=4.0*PI*pow(r_r,3.0)/3.0;847 th_pf1[i]=(th_sig_1[i]-sigU)/sigO;848 th_pf2[i]=vol_r*pow(th_pf1[i],wbmod);849 th_ps[i]=exp(-th_pf2[i]/eta);850 th_pf[n][i]=1.0-th_ps[i];

Page 18: fourier27.c Page 1 of 36 - WordPress.com · pressure gradient printed in file. 12 4. euler's simple formula used to calculate pressure in volatilization. 13 5. n[i] is forced to zero

File: /media/aero/phd/PhDthesis/1_t…/prof_method/4case/fourier27.c Page 18 of 36

851 }852

853 vol_r=4.0*PI*pow(r[i],3.0)/3.0;854 vol_l=4.0*PI*pow(r[i-1],3.0)/3.0;855

856 if(th_sig_1[i]>(1.0*sigU))857 {858 th_pf1[i]=(th_sig_1[i]-sigU)/sigO;859 }860 else861 {862 th_pf1[i]=0.0;863 }864 th_pf2[i]=(vol_r-vol_l)*pow(th_pf1[i],wbmod);865 th_ps[i]=exp(-th_pf2[i]/eta);866 th_pf[n][i]=1.0-th_ps[i];867

868 if(i==imax)869 {870 vol_r=4.0*PI*pow(r[i],3.0)/3.0;871 vol_l=4.0*PI*pow(r[i-1],3.0)/3.0;872 th_pf1[i]=(th_sig_1[i]-sigU)/sigO;873 th_pf2[i]=(vol_r-vol_l)*pow(th_pf1[i],wbmod);874 th_ps[i]=exp(-th_pf2[i]/eta);875 th_pf[n][i]=1.0-th_ps[i];876 }877

878 if(i==0)879 {880 th_pf1[i]=0.0;881 th_pf2[i]=0.0;882 th_ps[i]=0.0;883 th_pf[n][i]=0.0;884 //th_pf[n][i]=th_pf[n][i+1]+(r[i]-r[i+1])*(th_pf[n][i

+1]-th_pf[n][i+2]) / (r[i+1]-r[i+2]);885 }886

887 /*if(i==imax)888 {889 th_pf[n][i]=0.0;890 }*/891

892 /*if(th_pf[n][i]>=0.999 && th_pf[n][i]<=0.9999)893 {894 //printf ("%3.1lf %7.2lf %7.6f %8.7f %8.2lf %6.4lf\n",

M, Tinf, t[n], r[i], Tn[i], pf[n][i]);895 break;896 }*/897

898 if(n==0)899 {900 th_pf[n][i]=0.0;901 }902 //if(n==nmax)

Page 19: fourier27.c Page 1 of 36 - WordPress.com · pressure gradient printed in file. 12 4. euler's simple formula used to calculate pressure in volatilization. 13 5. n[i] is forced to zero

File: /media/aero/phd/PhDthesis/1_t…/prof_method/4case/fourier27.c Page 19 of 36

903 if((n%300==0))904 //if((n%100==0) && i==100)905 {906 907 //printf("%d %7.2lf %10.4le %8.2le %4.2lf %8.2lf %3.1lf

%10.4le %10.4le %11.1lf %6.2lf %6.2lf %7.2lf %d %d %d %6.2lf %6.2lf %7.2lf %11.4le %11.4le %11.4le %7.4lf\n",

908 //M,Tinf,t[n],rmax,(r[i]/rmax),Tn[i], vmax,vn[i],N[i],p[i],sig_R[i], sigRR(i),th_sig_T[i],wbmod,sigU,sigO, th_sig_1[i],th_sig_2[i], th_sig_3[i],th_dtbydr[i], th_d2tbydr2[i],th_dsigbydr[i],th_pf[n][i]);

909

910

911 }912

913 th_pf2[i]=th_pf10+th_pf2[i];914 th_pf10=th_pf2[i];915 //th_pf21=th_pf2[i];916

917 }918

919

920 //th_pft[n]=1-exp(-th_pf21/eta);921 th_pft[n]=1-exp(-th_pf10/eta);922

923 /*924 if((th_pft[n]>=0.999 && th_pft[n]<=0.9999) && th_pft[n]>=0.9995)925 {926 //printf ("%3.1lf %7.2lf %7.6f %8.7f %8.2lf %6.4lf %6.4lf\n",

M, Tinf, t[n], r[i], T[i-1], th_pf21, th_pft[n]);927 }928 */929

930 //if(n==nmax)931 if((n%3000)==0)932 {933 fprintf(top,"%d %7.2lf %10.4le %8.2le %4.2lf %8.2lf %4.2lf %d %

2d %2d %7.4lf %7.4lf\n", M,Tinf,t[n],rmax,(r[i]/rmax), T[i-1], vmax,wbmod,sigU,sigO, th_pf[n][i],th_pft[n]);

934

935 //printf("%d %7.2lf %10.4le %10.4le %8.2lf %8.2lf %8.2lf %8.2lf %6.4lf %9.2le %9.2le\n", M,Tinf,t[n],r[i],T[i-1], T[i],T[i+1],Tn[i], th_pft[n],th_pf10,eta);

936 }937 //printf("\n");938 fclose(top);939 return 0.0;940 }941

942 /*#############################943 thermal: various derivatives944 #############################*/945 double Thermal_derivative()946 {

Page 20: fourier27.c Page 1 of 36 - WordPress.com · pressure gradient printed in file. 12 4. euler's simple formula used to calculate pressure in volatilization. 13 5. n[i] is forced to zero

File: /media/aero/phd/PhDthesis/1_t…/prof_method/4case/fourier27.c Page 20 of 36

947 for(i=0;i<=imax;i++)948 {949 /*th_dtbydr[i]=(T[i]-T[i-1])/(r[i]-r[i-1]);950 th_d2tbydr2[i]=(th_dtbydr[i]-th_dtbydr[i-1])/(r[i]-r[i-1]);951 th_dsigbydr[i]=(th_sig_1[i]-th_sig_1[i-1])/(r[i]-r[i-1]);*/952

953 th_dtbydr[i]=(T[i]-T[i-1])/(r[i]-r[i-1]);954 th_d2tbydr2[i]=(T[i-1]-2.0*T[i] + T[i+1]) / pow((r[i]-r

[i-1]),2.0);955 th_dsigbydr[i]=(th_sig_1[i]-th_sig_1[i-1]) / (r[i]-r[i-1]);956

957 if(i==0)958 {959 ValAtCent(i,th_dtbydr,r);960 ValAtCent(i,th_d2tbydr2,r);961 ValAtCent(i,th_dsigbydr,r);962 }963

964 if(n==0)965 {966 th_dtbydr[i]=0.0;967 th_d2tbydr2[i]=0.0;968 th_dsigbydr[i]=0.0;969 }970 if(n==nmax)971 {972 //printf("%3.1lf %7.2lf %g %g %4.2lf %8.2lf %11.2lf %

16.2lf %12.2lf\n", M,Tinf,t[n],rmax,(r[i]/rmax), Tn[i],th_dtbydr[i],th_d2tbydr2[i],th_dsigbydr[i]);

973 }974 }975 return 0.0;976 }977 /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@978 thermal fracture criteria979 @@@@@@@@@@@@@@@@@@@@@@@@@@@@*/980 double Thermal_FractCrit2()981 {982 tod=fopen("Thermal_Overall_data.txt","a");983

984 th_maxj=-10.0;985

986 for(i=1;i<=imax;i++)987 {988 //th_maxj=-10.0;989 th_DELpfn = th_pf[n][i] - th_pf[n-1][i];990

991 if((th_DELpfn>th_maxj) && th_pf[n][i]>0.99*fpf)992 {993 th_maxj=maximum(th_maxj, th_DELpfn);994 th_maxR=r[i]/rmax;995 th_f_time=t[n];996 th_f_temp=Tn[i];997 th_f_sig_1 = th_sig_1[i];

Page 21: fourier27.c Page 1 of 36 - WordPress.com · pressure gradient printed in file. 12 4. euler's simple formula used to calculate pressure in volatilization. 13 5. n[i] is forced to zero

File: /media/aero/phd/PhDthesis/1_t…/prof_method/4case/fourier27.c Page 21 of 36

998 //fracloc=th_maxR;999 //printf("%3.1lf\n",th_maxR);

1000

1001 //if((n%100)==0)1002 //{1003 //printf("%d %7.2lf %10.4le %8.2le %4.2lf %

8.2lf %d %d %d %3.1lf %4.2lf %10.4le %6.4lf %6.4lf\n", M,Tinf,th_f_time,rmax,(r[i]/rmax), Tn[i],wbmod,sigU,sigO, vmax,maxR,th_maxj,th_pf[n][i],th_pft[n]);

1004 break;1005 //}1006

1007 }1008 }1009

1010 if(icount==0 && th_maxj>0.0 && th_pft[n]>fpf)1011 //if(pft[n]>fpf)1012 {1013 th_fracloc=th_maxR;1014

1015 //printf("%d %7.2lf %10.8lf %10.8lf %4.2lf %8.2lf %d %d %d %3.1lf %4.2lf %g %6.4lf %6.4lf\n", M,Tinf,t[n],rmax,(r[i]/rmax), Tn[i],wbmod,sigU,sigO, vmax,th_fracloc,th_maxj,th_pf[n][i],th_pft[n]);

1016

1017 //printf("FRACTURED: %d %7.2lf %10.4le %8.2le %8.2lf %d %2d %2d %3.1lf %4.2lf %10.4le\n", M, Tinf, th_f_time, rmax, th_f_temp, wbmod, sigU, sigO, vmax, th_fracloc, th_maxj);

1018 fprintf(tod,"FRACTURED: %d %7.2lf %12.6le %8.2le %8.2lf%2d %d %2d %2d %4.2lf %6.2lf %7.2lf %6.2lf %7.2lf %7.2lf %7.4lf %7.4lf\n", M,Tinf,th_f_time,rmax,th_f_temp, beta_int,wbmod,sigU,sigO,th_fracloc, sig_R[i],sig_T[i],th_sig_1[i],th_sig_2[i], th_sig_3[i],th_pf[n][i], th_pft[n]);

1019

1020 th_f_time_array[jj]=th_f_time;1021 th_f_temp_array[jj]= th_f_temp;1022 th_f_sig_1_array[jj]=th_f_sig_1;1023

1024 printf("%2d %12.6le %7.2lf %6.2lf\n", jj, th_f_time_array[jj], th_f_temp_array[jj], th_f_sig_1_array[jj]);

1025 jj++;1026 icount=1;1027 //exit (0);1028 }1029

1030 /*if(th_pft[n]>fpf)1031 {1032 printf("%d %7.2lf %10.8lf %10.8lf %8.2lf %d %d %d %

3.1lf %4.2lf %g\n", M, Tinf, th_f_time, rmax, th_f_temp, wbmod, sigU, sigO, vmax, th_fracloc, th_maxj);

1033 //exit (0);1034 }*/1035

1036 fclose(tod);1037 return 0.0;

Page 22: fourier27.c Page 1 of 36 - WordPress.com · pressure gradient printed in file. 12 4. euler's simple formula used to calculate pressure in volatilization. 13 5. n[i] is forced to zero

File: /media/aero/phd/PhDthesis/1_t…/prof_method/4case/fourier27.c Page 22 of 36

1038 }1039 /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@1040 th sep function to print files1041 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/1042 double Thermal_FilePrint()1043 {1044

1045 /*1046 char Mfile[]="M";1047 char sigufile[]="sigU";1048 char sigOfile[]="sigO";1049 char mfile[]="m";1050 char vmaxfile[]="vmax";1051 char BetaFile[]="beta";1052 char SizeFile[]="size";1053 */1054

1055 char th_file_name[BUFSIZ];1056 char th_FileName[BUFSIZ];1057

1058 /*write temp volatilization matter flow sigR and sigT on file*/

1059 snprintf(th_file_name, sizeof(th_file_name), "th_%s_%d_%s_%d_%s_%d_%s_%d_%s_%d_%s_%d.txt", SizeFile,size, Mfile,M, BetaFile,beta_int, sigufile,sigU, sigOfile,sigO, mfile,wbmod);

1060 tfp=fopen(th_file_name,"a");1061

1062 for(i=0;i<=imax;i++)1063 {1064 //if(n==nmax)1065 if((n%3000==0))1066 //if((n%100==0) && i==100)1067 {1068 fprintf(tfp,"%d %7.2lf %10.4le %8.2le %4.2lf %

8.2lf %6.2lf %7.2lf\n", M,Tinf,t[n],rmax,(r[i]/rmax),Tn[i],sig_R[i], sig_T[i]);

1069

1070 }1071 }1072 fclose(tfp);1073

1074 /*write probability stats on file*/1075 snprintf(th_FileName, sizeof(th_FileName), "th_%s_%d_%s_%d_%s_%

d_%s_%d_%s_%d_%s_%d_prob.txt", SizeFile,size, Mfile,M, BetaFile,beta_int, sigufile,sigU, sigOfile,sigO, mfile,wbmod);

1076 tft=fopen(th_FileName,"a");1077

1078 for(i=0;i<=imax;i++)1079 {1080 //if(n==nmax)1081 if((n%3000==0))1082 //if((n%100==0) && i==100)1083 {1084 fprintf(tft,"%d %7.2lf %10.4le %8.2le %4.2lf %

Page 23: fourier27.c Page 1 of 36 - WordPress.com · pressure gradient printed in file. 12 4. euler's simple formula used to calculate pressure in volatilization. 13 5. n[i] is forced to zero

File: /media/aero/phd/PhDthesis/1_t…/prof_method/4case/fourier27.c Page 23 of 36

8.2lf %4.2lf %d %2d %2d %6.2lf %7.2lf %7.2lf %11.4le %11.4le %11.4le %7.4lf %7.4lf\n", M,Tinf,t[n],rmax,(r[i]/rmax),T[i], vmax,wbmod,sigU,sigO,th_sig_1[i],th_sig_2[i], th_sig_3[i],th_dtbydr[i],th_d2tbydr2[i],th_dsigbydr[i],th_pf[n][i], th_pft[n]);

1085 1086 }1087 }1088 //fprintf(ft,"\n");1089 fclose(tft);1090 return 0.0;1091 }1092 /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@1093 function to calculate normal distribution data1094 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/1095 double Thermal_StdNormalDistr(double x[])1096 {1097 1098 /*1099 char Mfile[]="M";1100 char sigufile[]="sigU";1101 char sigOfile[]="sigO";1102 char mfile[]="m";1103 char vmaxfile[]="vmax";1104 char BetaFile[]="beta";1105 */1106 1107 char th_std_norm_data[BUFSIZ];1108 1109 snprintf(th_std_norm_data, sizeof(th_std_norm_data),

"th_Normal_Dist_Data_%s_%d_%s_%d_%s_%d_%s_%d_%s_%d.txt", Mfile,M, BetaFile,beta_int, sigufile,sigU, sigOfile,sigO, mfile,wbmod);

1110 1111 tfsnd=fopen(th_std_norm_data,"a");1112 1113 int i;1114 1115 double diff_x[12], z[12], sumx=0.0, avgx;1116 double sum_sqr_diff_x, sqr_diff_x0=0.0, sqr_diff_x[12], variance,

phi_z[12], phi_x[12];1117

1118 for(i=0;i<=11;i++)1119 {1120 if(i<=2){1121 sumx=sumx+0.075*x[i]/3.0;1122 sumx=sumx;1123 }1124 else if(i>=3 && i<=4){1125 sumx=sumx+0.186*x[i]/2.0;1126 sumx=sumx;1127 }1128 else if(i>=5 && i<=6){1129 sumx=sumx+0.314*x[i]/2.0;1130 sumx=sumx;1131 }

Page 24: fourier27.c Page 1 of 36 - WordPress.com · pressure gradient printed in file. 12 4. euler's simple formula used to calculate pressure in volatilization. 13 5. n[i] is forced to zero

File: /media/aero/phd/PhDthesis/1_t…/prof_method/4case/fourier27.c Page 24 of 36

1132 else if(i>=7 && i<=9){1133 sumx=sumx+0.251*x[i]/3.0;1134 sumx=sumx;1135 }1136 else if (i>=10){1137 sumx=sumx+0.173*x[i]/2.0;1138 sumx=sumx;1139 }1140 1141 1142 //sumx=sumx;1143 }1144

1145 avgx=sumx;1146

1147 //printf("%lf\n",avgx);1148

1149 for(i=0;i<=11;i++)1150 {1151 diff_x[i]=x[i]-avgx;1152 sqr_diff_x[i]=pow(diff_x[i],2.0);1153

1154 sum_sqr_diff_x=sqr_diff_x0+sqr_diff_x[i];1155

1156 //printf("%d %lf %lf %lf\n",i, diff_x[i], sqr_diff_x[i], sum_sqr_diff_x);

1157

1158 sqr_diff_x0=sum_sqr_diff_x;1159 }1160

1161 for(i=0;i<=11;i++)1162 {1163 1164 variance=sqrt(sum_sqr_diff_x/(12-1));1165 z[i]=diff_x[i]/variance;1166 //printf("%d %lf %lf\n", i, variance, z[i]);1167 1168 /* CDF can also be written in the form of error function.1169 Here for variable x it is in form of error function and 1170 for variable z (SNRV) it is calculated from integration*/1171 phi_x[i]=0.5*(1.0+erf( (x[i]-avgx) / (variance*sqrt(2.0)) ));1172 phi_z[i]=trapezium(-4.0, z[i], 100, fn)/sqrt(2.0*PI);1173 1174 fprintf(tfsnd,"%4d %11.4le %11.4le %11.4le %11.4le %6.4lf %8.4lf %

6.4lf %6.4lf %7.4lf\n", 1175 size_1[i], x[i], avgx, variance, exp(-pow((x[i]-avgx)/

variance,2.0)/2.0)/(variance*sqrt(2*PI)), phi_x[i], z[i], (exp(-pow(z[i],2.0)/2.0)/sqrt(2.0*PI)), phi_z[i], (variance/avgx));

1176 1177 }1178 1179 fclose(tfsnd);1180 return 0.0;1181

Page 25: fourier27.c Page 1 of 36 - WordPress.com · pressure gradient printed in file. 12 4. euler's simple formula used to calculate pressure in volatilization. 13 5. n[i] is forced to zero

File: /media/aero/phd/PhDthesis/1_t…/prof_method/4case/fourier27.c Page 25 of 36

1182 } 1183

1184 /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@1185 @@@@@@ @@@@@1186 @@@@@@ FUNCTIONS RELATED TO VOLATILE STRESS @@@@@1187 @@@@@@ @@@@@1188 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/1189

1190 /*###########1191 volatile1192 ###########*/1193 double vol()1194 { double c2;1195 c1=(rpor*rpor*epsilon)/(8.0*visc*tau*gscnst); 1196 c2=rhoc/Mvol;1197 for(i=0;i<=imax;i++)1198 {1199 if(i==0){1200 N[i]=0.0; 1201 }1202 vn[i] = v[i] + delt*k0*exp(-Ea/(gscnst*T[i]))*(vmax-v[i]);1203

1204 N[i+1]=(N[i]*pow(r[i],2.0) + 0.5*c2*((vn[i]-v[i]+vn[i+1]-v[i+1])/delt) * pow((r[i]+0.5*delr),2.0)*delr)/pow(r[i+1],2.0);

1205

1206 //N[i] = (N[i-1]*pow(r[i-1],2.0)/delr + pow(r[i],2.0)*rhoc*(vn[i]-v[i])/(Mvol*delt)) * delr/pow(r[i],2.0);

1207

1208 if(i==0)1209 {1210 r[i]=0.1*rmax/imax;1211 //ValAtCent(i,p,r);1212 //ValAtCent(i,N,r);1213 ValAtCent(i,vn,r);1214 N[i]=0.0; 1215 }1216

1217 if(i==imax)1218 {1219 p[i]=pinf;1220 }1221

1222 if(n==nmax)1223 {1224 //printf("%3.1lf %7.2lf %7.6f %8.7f %8.2lf %12.8lf %

16.8lf %12.1lf\n", M, Tinf, t[n], r[i], Tn[i], vn[i], N[i], p[i]);1225 }1226 v[i]=vn[i];1227 }1228 for(i1=0;i1<=imax;i1++){1229 i=imax-i1;1230

1231 if(i==0){1232 r[i]=0.1*rmax/imax;

Page 26: fourier27.c Page 1 of 36 - WordPress.com · pressure gradient printed in file. 12 4. euler's simple formula used to calculate pressure in volatilization. 13 5. n[i] is forced to zero

File: /media/aero/phd/PhDthesis/1_t…/prof_method/4case/fourier27.c Page 26 of 36

1233 p[i-1]=p[i+1];1234 }1235 p[i-1]=p[i]-(r[i-1]-r[i])*N[i]*T[i]/(p[i]*c1);1236

1237 if(i==imax){1238 p[i]=pinf;1239 }1240 }1241 return 0.0;1242 }1243 /*#########################1244 sig_R volatile stress1245 #########################*/1246 double sigRR(int k)1247 {1248 pp[k] = (p[k]-pinf)/1000000.0;1249 sig_RR[k] = sig_R[k] + pp[k];1250 return (sig_RR[k]);1251 }1252 /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@1253 volatilization principal stress1254 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/1255 double VolPrinStress()1256 {1257 for(i=0;i<=imax;i++)1258 {1259 r[i]=r0+i*delr;1260 if(i==0)1261 {1262 r[i-1]=r[i+1];1263 r[i]=0.1*rmax/imax;1264 r_l=r[i];1265 vol_l=4.0*PI*pow(r_l,3.0)/3.0;1266 r_r=(r[i+1]+r[i])/2.0;1267 vol_r=4.0*PI*pow(r_r,3.0)/3.0;1268 tau_xy[i]=(vol_l*sig_T[i-1]+vol_r*sig_T[i]) / (vol_l

+vol_r);1269 }1270

1271 sig_0[i]=(sigRR(i)+sig_T[i]+sig_T[i])/3.0;1272 sx[i] = sigRR(i) - sig_0[i];1273 sy[i] = sig_T[i] - sig_0[i];1274 sz[i] = sig_T[i] - sig_0[i];1275

1276 r_l=(r[i-1]+r[i])/2.0;1277 vol_l=4.0*PI*pow(r_l,3.0)/3.0;1278 r_r=(r[i]+r[i+1])/2.0;1279 vol_r=4.0*PI*pow(r_r,3.0)/3.0;1280

1281 tau_xy[i]=(vol_l*sig_T[i-1]+vol_r*sig_T[i]) / (vol_l+vol_r);1282

1283

1284 if (i==imax)1285 {

Page 27: fourier27.c Page 1 of 36 - WordPress.com · pressure gradient printed in file. 12 4. euler's simple formula used to calculate pressure in volatilization. 13 5. n[i] is forced to zero

File: /media/aero/phd/PhDthesis/1_t…/prof_method/4case/fourier27.c Page 27 of 36

1286 r[i]=rmax;1287 r[i+1]=r[i];1288 r_r=(r[i+1]+r[i])/2.0;1289 vol_r=4.0*PI*pow(r_r,3.0)/3.0;1290 r_l=r[i-1];1291 vol_l=4.0*PI*pow(r_l,3.0)/3.0;1292 tau_xy[i]=(vol_l*sig_T[i-1]+vol_r*sig_T[i]) / (vol_l

+vol_r);1293 }1294

1295 tau_yz[i]=sig_T[i];1296 tau_zx[i]=sig_T[i];1297

1298 J3=-sx[i]*sy[i]*sz[i] + sx[i]*pow(tau_yz[i],2.0) + sy[i]*pow(tau_zx[i],2.0) + sz[i]*pow(tau_xy[i],2.0);

1299 J2=sx[i]*sy[i] + sy[i]*sz[i] + sz[i]*sx[i] - pow(tau_xy[i],2.0) - pow(tau_yz[i],2.0) - pow(tau_zx[i],2.0);

1300

1301 J22=fabs(J2/3.0);1302

1303 th=(1.0/3.0)*acos(-J3/(2.0*pow(J22,1.5)));1304

1305 sig_1[i] = sig_0[i] + 2.0*sqrt(J22)*cos(th);1306 sig_2[i] = sig_0[i] - 2.0*sqrt(J22)*cos(th+PI/3.0);1307 sig_3[i] = sig_0[i] - 2.0*sqrt(J22)*cos(th-PI/3.0);1308

1309 if(i==0)1310 {1311 ValAtCent(i,sig_1,r);1312 ValAtCent(i,sig_2,r);1313 ValAtCent(i,sig_3,r);1314 }1315

1316 //printf("%7.6f %8.7f %lf %lf %lf %lf\n", t[n], r[i], J2, J22, J3, th);

1317

1318 if((n%300)==0)1319 //if(n==nmax)1320 {1321 //printf("%10.4le %4.2lf %11.4le %11.4le %11.4le %

8.2lf, %8.2lf %8.2lf %8.2lf %8.2lf %8.2lf %8.2lf\n",1322 // t[n], (r[i]/rmax), J3, J22, th, Tn[i], sig_R[i], sigRR(i),

sig_T[i], sig_1[i], sig_2[i], sig_3[i]);1323

1324 //printf("%3.1lf %7.2lf %7.6f %8.7f %8.2lf, %12.8lf %14.6lf %11.1lf %8.2lf %8.2lf %8.2lf %8.2lf %8.2lf %8.2lf\n", M,Tinf,t[n],r[i],Tn[i], vn[i],N[i],p[i],sig_R[i],sigRR(i), sig_T[i],sig_1[i],sig_2[i],sig_3[i]);

1325 }1326

1327 }1328 //printf("\n");1329 return 0.0;1330 }

Page 28: fourier27.c Page 1 of 36 - WordPress.com · pressure gradient printed in file. 12 4. euler's simple formula used to calculate pressure in volatilization. 13 5. n[i] is forced to zero

File: /media/aero/phd/PhDthesis/1_t…/prof_method/4case/fourier27.c Page 28 of 36

1331 /*@@@@@@@@@@@@@@@@@@@@@@@@@@1332 function to calculate values1333 at center i.e. i=0.1334 @@@@@@@@@@@@@@@@@@@@@@@@@@*/1335 double ValAtCent(int j, double ss[], double Tt[])1336 {1337 ss[j] = ss[j+1] + (Tt[j]-Tt[j+1]) * (ss[j+1]-ss[j+2])/(Tt[j+1]-

Tt[j+2]);1338 return ss[j];1339 }1340 /*#############################1341 various first order derivatives1342 #############################*/1343 double derivative()1344 {1345 for(i=0;i<=imax;i++)1346 {1347 /*dtbydr[i]=(T[i]-T[i-1])/(r[i]-r[i-1]);1348 d2tbydr2[i]=(dtbydr[i]-dtbydr[i-1])/(r[i]-r[i-1]);1349 dsigbydr[i]=(sig_1[i]-sig_1[i-1])/(r[i]-r[i-1]);*/1350

1351 dtbydr[i]=(T[i]-T[i-1])/(r[i]-r[i-1]);1352 d2tbydr2[i]=(T[i-1]-2.0*T[i] + T[i+1]) / pow((r[i]-r[i-1]),2.0);1353 dsigbydr[i]=(sig_1[i]-sig_1[i-1]) / (r[i]-r[i-1]);1354 dpbydr[i]=(p[i]-p[i-1])/(r[i]-r[i-1]);1355

1356 if(i==0)1357 {1358 ValAtCent(i,dtbydr,r);1359 ValAtCent(i,d2tbydr2,r);1360 ValAtCent(i,dsigbydr,r);1361 ValAtCent(i,dpbydr,r);1362 }1363

1364 if(n==0)1365 {1366 dtbydr[i]=0.0;1367 d2tbydr2[i]=0.0;1368 dsigbydr[i]=0.0;1369 dpbydr[i]=0.0;1370 }1371 if(n==nmax)1372 {1373 //printf("%3.1lf %7.2lf %g %g %4.2lf %8.2lf %11.2lf %

16.2lf %12.2lf\n", M,Tinf,t[n],rmax,(r[i]/rmax), Tn[i],dtbydr[i],d2tbydr2[i],dsigbydr[i]);

1374 }1375 }1376 return 0.0;1377 }1378 /******************1379 failure probability1380 ******************/1381 double FailProb()

Page 29: fourier27.c Page 1 of 36 - WordPress.com · pressure gradient printed in file. 12 4. euler's simple formula used to calculate pressure in volatilization. 13 5. n[i] is forced to zero

File: /media/aero/phd/PhDthesis/1_t…/prof_method/4case/fourier27.c Page 29 of 36

1382 {1383

1384 /*1385 char Mfile[]="M";1386 char sigufile[]="sigU";1387 char sigOfile[]="sigO";1388 char mfile[]="m";1389 char vmaxfile[]="vmax";1390 char BetaFile[]="beta";1391 char SizeFile[]="size";1392 */1393

1394 char OverallProb[BUFSIZ];1395

1396

1397 /*writes overall failure probability data */1398 snprintf(OverallProb, sizeof(OverallProb), "%s_%d_%s_%d_%s_%d_%s_%d_%

s_%d_%s_%d_%s_%d_OverallProb.txt", SizeFile,size, Mfile,M, BetaFile,beta_int, sigufile,sigU, sigOfile,sigO, mfile,wbmod, vmaxfile,vstar);

1399 op=fopen(OverallProb,"a");1400

1401

1402 pf10=0.0;1403 for(i=0;i<=imax;i++)1404 {1405 eta=4.0*PI*pow(rmax,3.0)/3.0;1406 if(i==0)1407 {1408 r[i-1]=r[i+1];1409 r[i]=0.1*rmax/imax;1410 r_r=(r[i+1]+r[i])/2.0;1411 vol_r=4.0*PI*pow(r_r,3.0)/3.0;1412 pf1[i]=(sig_1[i]-sigU)/sigO;1413 pf2[i]=vol_r*pow(pf1[i],wbmod);1414 ps[i]=exp(-pf2[i]/eta);1415 pf[n][i]=1.0-ps[i];1416 }1417

1418 vol_r=4.0*PI*pow(r[i],3.0)/3.0;1419 vol_l=4.0*PI*pow(r[i-1],3.0)/3.0;1420

1421 if(sig_1[i]>(1.0*sigU))1422 {1423 pf1[i]=(sig_1[i]-sigU)/sigO;1424 }1425 else1426 {1427 pf1[i]=0.0;1428 }1429 pf2[i]=(vol_r-vol_l)*pow(pf1[i],wbmod);1430 ps[i]=exp(-pf2[i]/eta);1431 pf[n][i]=1.0-ps[i];1432

Page 30: fourier27.c Page 1 of 36 - WordPress.com · pressure gradient printed in file. 12 4. euler's simple formula used to calculate pressure in volatilization. 13 5. n[i] is forced to zero

File: /media/aero/phd/PhDthesis/1_t…/prof_method/4case/fourier27.c Page 30 of 36

1433 if(i==imax)1434 {1435 vol_r=4.0*PI*pow(r[i],3.0)/3.0;1436 vol_l=4.0*PI*pow(r[i-1],3.0)/3.0;1437 pf1[i]=(sig_1[i]-sigU)/sigO;1438 pf2[i]=(vol_r-vol_l)*pow(pf1[i],wbmod);1439 ps[i]=exp(-pf2[i]/eta);1440 pf[n][i]=1.0-ps[i];1441 }1442

1443 if(i==0)1444 {1445 pf1[i]=0.0;1446 pf2[i]=0.0;1447 ps[i]=0.0;1448 pf[n][i]=0.0;1449 //pf[n][i]=pf[n][i+1]+(r[i]-r[i+1])*(pf[n][i+1]-pf[n][i

+2]) / (r[i+1]-r[i+2]);1450 }1451

1452 /*if(i==imax)1453 {1454 pf[n][i]=0.0;1455 }*/1456

1457 /*if(pf[n][i]>=0.999 && pf[n][i]<=0.9999)1458 {1459 //printf ("%3.1lf %7.2lf %7.6f %8.7f %8.2lf %6.4lf\n",

M, Tinf, t[n], r[i], Tn[i], pf[n][i]);1460 break;1461 }*/1462

1463 if(n==0)1464 {1465 pf[n][i]=0.0;1466 }1467 //if(n==nmax)1468 if((n%300==0))1469 //if((n%100==0) && i==100)1470 {1471 1472 //printf("%d %7.2lf %10.4le %8.2le %4.2lf %8.2lf %3.1lf

%10.4le %10.4le %11.1lf %6.2lf %6.2lf %7.2lf %d %d %d %6.2lf %6.2lf %7.2lf %11.4le %11.4le %11.4le %7.4lf\n",

1473 //M,Tinf,t[n],rmax,(r[i]/rmax),Tn[i], vmax,vn[i],N[i],p[i],sig_R[i], sigRR(i),sig_T[i],wbmod,sigU,sigO, sig_1[i],sig_2[i], sig_3[i],dtbydr[i], d2tbydr2[i],dsigbydr[i],pf[n][i]);

1474

1475

1476 }1477

1478 pf2[i]=pf10+pf2[i];1479 pf10=pf2[i];1480 //pf21=pf2[i];

Page 31: fourier27.c Page 1 of 36 - WordPress.com · pressure gradient printed in file. 12 4. euler's simple formula used to calculate pressure in volatilization. 13 5. n[i] is forced to zero

File: /media/aero/phd/PhDthesis/1_t…/prof_method/4case/fourier27.c Page 31 of 36

1481

1482 }1483

1484

1485 //pft[n]=1-exp(-pf21/eta);1486 pft[n]=1-exp(-pf10/eta);1487

1488 /*1489 if((pft[n]>=0.999 && pft[n]<=0.9999) && pft[n]>=0.9995)1490 {1491 //printf ("%3.1lf %7.2lf %7.6f %8.7f %8.2lf %6.4lf %6.4lf\n",

M, Tinf, t[n], r[i], T[i-1], pf21, pft[n]);1492 }1493 */1494

1495 //if(n==nmax)1496 if((n%3000)==0)1497 {1498 fprintf(op,"%d %7.2lf %10.4le %8.2le %4.2lf %8.2lf %4.2lf %d %

2d %2d %7.4lf %7.4lf\n", M,Tinf,t[n],rmax,(r[i]/rmax), T[i-1], vmax,wbmod,sigU,sigO, pf[n][i],pft[n]);

1499

1500 //printf("%d %7.2lf %10.4le %10.4le %8.2lf %8.2lf %8.2lf %8.2lf %6.4lf %9.2le %9.2le\n", M,Tinf,t[n],r[i],T[i-1], T[i],T[i+1],Tn[i], pft[n],pf10,eta);

1501 }1502 //printf("\n");1503 fclose(op);1504 return 0.0;1505 }1506 /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@1507 volatile fracture criteria1508 @@@@@@@@@@@@@@@@@@@@@@@@@@@@*/1509 double FractCrit2()1510 {1511

1512 /* char BetaFile[]="beta";1513

1514 char FractureData[BUFSIZ];1515

1516 snprintf(FractureData, sizeof(FractureData), "%s_%d_Fracture_Data.txt", BetaFile,beta_int);

1517 fd=fopen(FractureData,"a");1518 */1519

1520

1521 od=fopen("Overall_data.txt","a");1522

1523 maxj=-10.0;1524

1525 for(i=1;i<imax;i++)1526 {1527 //maxj=-10.0;1528 DELpfn=pf[n][i]-pf[n-1][i];

Page 32: fourier27.c Page 1 of 36 - WordPress.com · pressure gradient printed in file. 12 4. euler's simple formula used to calculate pressure in volatilization. 13 5. n[i] is forced to zero

File: /media/aero/phd/PhDthesis/1_t…/prof_method/4case/fourier27.c Page 32 of 36

1529

1530 if((DELpfn>maxj) && pf[n][i]>0.99*fpf)1531 {1532 maxj=maximum(maxj,DELpfn);1533 maxR=r[i]/rmax;1534 f_time=t[n];1535

1536 f_vol = vn[i];1537 f_vol_flow = N[i];1538 f_vol_pres = p[i];1539 f_vol_sig_1 = sig_1[i];1540

1541 //f_vol_flow = N[i];1542

1543 //f_time_array[jj]=f_time;1544

1545 f_temp=Tn[i];1546

1547 //fracloc=maxR;1548 //printf("%3.1lf\n",maxR);1549

1550 //if((n%100)==0)1551 //{1552 //printf("%d %7.2lf %10.4le %8.2le %4.2lf %

8.2lf %d %d %d %3.1lf %4.2lf %10.4le %6.4lf %6.4lf\n", M,Tinf,f_time,rmax,(r[i]/rmax), Tn[i],wbmod,sigU,sigO, vmax,maxR,maxj,pf[n][i],pft[n]);

1553 break;1554 //}1555

1556 } 1557 }1558

1559 if(icount==0 && maxj>0.0 && pft[n]>fpf)1560 //if(pft[n]>fpf)1561 {1562 fracloc=maxR;1563

1564 //printf("%d %7.2lf %10.8lf %10.8lf %4.2lf %8.2lf %d %d %d %3.1lf %4.2lf %g %6.4lf %6.4lf\n", M,Tinf,t[n],rmax,(r[i]/rmax), Tn[i],wbmod,sigU,sigO, vmax,fracloc,maxj,pf[n][i],pft[n]);

1565

1566 //printf("FRACTURED: %d %7.2lf %10.4le %8.2le %8.2lf %d %2d %2d %3.1lf %4.2lf %10.4le\n", M, Tinf, f_time, rmax, f_temp, wbmod, sigU, sigO, vmax, fracloc, maxj);

1567

1568 fprintf(od,"FRACTURED: %d %7.2lf %12.6le %8.2le %8.2lf %2d %d %2d %2d %4.2lf %4.2lf %10.4le %10.4le %11.1lf %6.2lf %6.2lf %7.2lf %6.2lf %7.2lf %7.2lf %7.4lf %7.4lf\n", M,Tinf,f_time,rmax,f_temp, beta_int,wbmod,sigU,sigO, vmax,fracloc,vn[i],N[i],p[i], sig_R[i],sigRR(i),sig_T[i],sig_1[i],sig_2[i], sig_3[i],pf[n][i], pft[n]);

1569

1570 f_time_array[jj]=f_time;1571 f_temp_array[jj]= f_temp;

Page 33: fourier27.c Page 1 of 36 - WordPress.com · pressure gradient printed in file. 12 4. euler's simple formula used to calculate pressure in volatilization. 13 5. n[i] is forced to zero

File: /media/aero/phd/PhDthesis/1_t…/prof_method/4case/fourier27.c Page 33 of 36

1572 f_vol_array[jj]=f_vol;1573 f_vol_flow_array[jj]=f_vol_flow;1574 f_vol_pres_array[jj]=f_vol_pres;1575 f_vol_sig_1_array[jj]=f_vol_sig_1;1576

1577 printf("%2d %12.6le %7.2lf %12.6le %12.6le %12.6le %6.2lf\n", jj, f_time_array[jj], f_temp_array[jj], f_vol_array[jj], f_vol_flow_array[jj], f_vol_pres_array[jj], f_vol_sig_1_array[jj]);

1578 jj++;1579 1580 icount=1;1581 //exit (0);1582 }1583

1584 /*if(pft[n]>fpf)1585 {1586 printf("%d %7.2lf %10.8lf %10.8lf %8.2lf %d %d %d %

3.1lf %4.2lf %g\n", M, Tinf, f_time, rmax, f_temp, wbmod, sigU, sigO, vmax, fracloc, maxj);

1587 //exit (0);1588 }*/1589

1590

1591 fclose(od);1592

1593 //fclose(fd);1594 return 0.0;1595 }1596 /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@1597 function to calculate maximu of two1598 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/1599 double maximum(double aa, double bb)1600 {1601 double zz;1602 if((aa-bb)>0)1603 {1604 zz=aa;1605 }1606 else1607 {1608 zz=bb;1609 }1610 return zz;1611 }1612 /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@1613 separate function to print files1614 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/1615 double FilePrint()1616 {1617

1618 /*1619 char Mfile[]="M";1620 char sigufile[]="sigU";1621 char sigOfile[]="sigO";

Page 34: fourier27.c Page 1 of 36 - WordPress.com · pressure gradient printed in file. 12 4. euler's simple formula used to calculate pressure in volatilization. 13 5. n[i] is forced to zero

File: /media/aero/phd/PhDthesis/1_t…/prof_method/4case/fourier27.c Page 34 of 36

1622 char mfile[]="m";1623 char vmaxfile[]="vmax";1624 char BetaFile[]="beta";1625 char SizeFile[]="size";1626 */1627

1628 char file_name[BUFSIZ];1629 char FileName[BUFSIZ];1630

1631 /*write temp volatilization matter flow sigR and sigT on file*/

1632 snprintf(file_name, sizeof(file_name), "%s_%d_%s_%d_%s_%d_%s_%d_%s_%d_%s_%d_%s_%d.txt", SizeFile,size, Mfile,M, BetaFile,beta_int, sigufile,sigU, sigOfile,sigO, mfile,wbmod, vmaxfile,vstar);

1633 fp=fopen(file_name,"a");1634

1635 for(i=0;i<=imax;i++)1636 {1637 //if(n==nmax)1638 if((n%3000==0))1639 //if((n%100==0) && i==100)1640 {1641 fprintf(fp,"%d %7.2lf %10.4le %8.2le %4.2lf %

8.2lf %3.1lf %10.4le %10.4le %11.1lf %6.2lf %6.2lf %7.2lf\n", M,Tinf,t[n],rmax,(r[i]/rmax),Tn[i], vmax,vn[i],N[i],p[i],sig_R[i], sigRR(i),sig_T[i]);

1642

1643 }1644 }1645 fclose(fp);1646

1647 /*write probability stats on file*/1648 snprintf(FileName, sizeof(FileName), "%s_%d_%s_%d_%s_%d_%s_%d_%

s_%d_%s_%d_%s_%d_prob.txt", SizeFile,size, Mfile,M, BetaFile,beta_int, sigufile,sigU, sigOfile,sigO, mfile,wbmod, vmaxfile,vstar);

1649 ft=fopen(FileName,"a");1650

1651 for(i=0;i<=imax;i++)1652 {1653 //if(n==nmax)1654 if((n%3000==0))1655 //if((n%100==0) && i==100)1656 {1657 fprintf(ft,"%d %7.2lf %10.4le %8.2le %4.2lf %

8.2lf %4.2lf %d %2d %2d %6.2lf %6.2lf %7.2lf %6.2lf %6.2lf %7.2lf %11.4le %11.4le %11.4le %7.4lf %7.4lf %11.4le\n", M,Tinf,t[n],rmax,(r[i]/rmax),T[i], vmax,wbmod,sigU,sigO,th_sig_1[i],th_sig_2[i], th_sig_3[i],sig_1[i],sig_2[i], sig_3[i],dtbydr[i],d2tbydr2[i],dsigbydr[i],pf[n][i], pft[n],dpbydr[i]);

1658 1659 }1660 }1661 //fprintf(ft,"\n");1662 fclose(ft);

Page 35: fourier27.c Page 1 of 36 - WordPress.com · pressure gradient printed in file. 12 4. euler's simple formula used to calculate pressure in volatilization. 13 5. n[i] is forced to zero

File: /media/aero/phd/PhDthesis/1_t…/prof_method/4case/fourier27.c Page 35 of 36

1663 return 0.0;1664 }1665

1666 /*@@@@@@@@@@@@@@@@@@@@@@@@@@1667 normal distribution function1668 @@@@@@@@@@@@@@@@@@@@@@@@@@*/1669 double fn(double xxx)1670 {1671 return (exp(-pow(xxx,2.0)/2.0));1672 }1673 /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@1674 function to calculate normal distribution data1675 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/1676 double StdNormalDistr(double x[])1677 {1678 1679 /*1680 char Mfile[]="M";1681 char sigufile[]="sigU";1682 char sigOfile[]="sigO";1683 char mfile[]="m";1684 char vmaxfile[]="vmax";1685 char BetaFile[]="beta";1686 */1687 1688 char std_norm_data[BUFSIZ];1689 1690 snprintf(std_norm_data, sizeof(std_norm_data), "Normal_Dist_Data_%s_%

d_%s_%d_%s_%d_%s_%d_%s_%d_%s_%d.txt", Mfile,M, BetaFile,beta_int, sigufile,sigU, sigOfile,sigO, mfile,wbmod, vmaxfile,vstar);

1691 1692 fsnd=fopen(std_norm_data,"a");1693 1694 int i;1695 1696 double diff_x[12], z[12], sumx=0.0, avgx;1697 double sum_sqr_diff_x, sqr_diff_x0=0.0, sqr_diff_x[12], variance,

phi_z[12], phi_x[12];1698

1699 for(i=0;i<=11;i++)1700 {1701 if(i<=2){1702 sumx=sumx+0.075*x[i]/3.0;1703 sumx=sumx;1704 }1705 else if(i>=3 && i<=4){1706 sumx=sumx+0.186*x[i]/2.0;1707 sumx=sumx;1708 }1709 else if(i>=5 && i<=6){1710 sumx=sumx+0.314*x[i]/2.0;1711 sumx=sumx;1712 }1713 else if(i>=7 && i<=9){

Page 36: fourier27.c Page 1 of 36 - WordPress.com · pressure gradient printed in file. 12 4. euler's simple formula used to calculate pressure in volatilization. 13 5. n[i] is forced to zero

File: /media/aero/phd/PhDthesis/1_t…/prof_method/4case/fourier27.c Page 36 of 36

1714 sumx=sumx+0.251*x[i]/3.0;1715 sumx=sumx;1716 }1717 else if (i>=10){1718 sumx=sumx+0.173*x[i]/2.0;1719 sumx=sumx;1720 }1721 1722 1723 //sumx=sumx;1724 }1725

1726 avgx=sumx;1727

1728 //printf("%lf\n",avgx);1729

1730 for(i=0;i<=11;i++)1731 {1732 diff_x[i]=x[i]-avgx;1733 sqr_diff_x[i]=pow(diff_x[i],2.0);1734

1735 sum_sqr_diff_x=sqr_diff_x0+sqr_diff_x[i];1736

1737 //printf("%d %lf %lf %lf\n",i, diff_x[i], sqr_diff_x[i], sum_sqr_diff_x);

1738

1739 sqr_diff_x0=sum_sqr_diff_x;1740 }1741

1742 for(i=0;i<=11;i++)1743 {1744 1745 variance=sqrt(sum_sqr_diff_x/(12-1));1746 z[i]=diff_x[i]/variance;1747 //printf("%d %lf %lf\n", i, variance, z[i]);1748 1749 /* CDF can also be written in the form of error function.1750 Here for variable x it is in form of error function and 1751 for variable z (SNRV) it is calculated from integration*/1752 phi_x[i]=0.5*(1.0+erf( (x[i]-avgx) / (variance*sqrt(2.0)) ));1753 phi_z[i]=trapezium(-4.0, z[i], 100, fn)/sqrt(2.0*PI);1754 1755 fprintf(fsnd,"%4d %11.4le %11.4le %11.4le %11.4le %6.4lf %8.4lf %

6.4lf %6.4lf %7.4lf\n", 1756 size_1[i], x[i], avgx, variance, exp(-pow((x[i]-avgx)/

variance,2.0)/2.0)/(variance*sqrt(2*PI)), phi_x[i], z[i], (exp(-pow(z[i],2.0)/2.0)/sqrt(2.0*PI)), phi_z[i], (variance/avgx));

1757 1758 }1759 1760 fclose(fsnd);1761 return 0.0;1762 1763 }