45 static double DTaver , DEaver,
69 if( strcmp(chMode,
"init") == 0 )
111 else if( strcmp(chMode,
"incr") == 0 )
168 DilutionCorrec = 1./
POW2(
176 for( i=0; i <=
rfield.nflux; i++ )
178 dTauThisZone =
opac.opacity_abs[i]*drFac;
184 if( dTauThisZone < 1e-4 )
189 else if( dTauThisZone < 5. )
192 opac.tmn[i] = (
realnum)((1. - exp(-dTauThisZone))/(dTauThisZone));
221 if( (strcmp(
dense.chDenseLaw,
"CPRE") != 0) &&
258 DTaver /= (double)(
IOFF);
309 fprintf(
ioQQQ,
" PROBLEM ZoneStart called with insane argument, %4.4s\n",
322 conv.resetCountersZone();
327 (*diatom)->nCall_this_zone = 0;
330 if( strcmp(
dense.chDenseLaw,
"GLOB") == 0 )
340 radius.lgdR2Small =
false;
375 double rout_zone =
max(r1,
radius.Radius);
376 vin =
pow2(rin_zone/
radius.rinner)*rin_zone/3.;
377 if( rin_zone >
radius.CylindHigh )
382 double h = rin_zone-
radius.CylindHigh;
383 double v2cap =
pow2(h/
radius.rinner)*(rin_zone - h/3.)/2.;
386 vout =
pow2(rout_zone/
radius.rinner)*rout_zone/3.;
387 if( rout_zone >
radius.CylindHigh )
389 double h = rout_zone-
radius.CylindHigh;
390 double v2cap =
pow2(h/
radius.rinner)*(rout_zone - h/3.)/2.;
410 else if(
geometry.iEmissPower == 1 )
412 double ain = (rin_zone/
radius.rinner)*rin_zone/2.;
413 if( rin_zone >
radius.CylindHigh )
418 double Theta = 2.*acos(
min(
radius.CylindHigh/rin_zone,1.));
419 ain *= 1. -
max(Theta - sin(Theta),0.)/
PI;
421 double aout = (rout_zone/
radius.rinner)*rout_zone/2.;
422 if( rout_zone >
radius.CylindHigh )
424 double Theta = 2.*acos(
min(
radius.CylindHigh/rout_zone,1.));
425 aout *= 1. -
max(Theta - sin(Theta),0.)/
PI;
429 else if(
geometry.iEmissPower == 0 )
444 else if(
geometry.iEmissPower == 1 )
447 if( rad_middle_zone >
radius.CylindHigh )
449 double Theta = 2.*acos(
min(
radius.CylindHigh/rad_middle_zone,1.));
450 double q = sqrt(
max(1.-
pow2(
radius.CylindHigh/rad_middle_zone),0.))*rad_middle_zone;
451 radius.dVeffAper *= 1. -
max(Theta - sin(Theta),0.)/
PI -
max(1. - cos(Theta),0.)*
radius.CylindHigh/(
PI*q);
454 else if(
geometry.iEmissPower == 0 )