📄 radcswmx.f90
字号:
real(r8) cbarl(4) ! C coefficient for single scat albedo real(r8) dbarl(4) ! D coefficient for single scat albedo real(r8) ebarl(4) ! E coefficient for asymmetry parameter real(r8) fbarl(4) ! F coefficient for asymmetry parameter save abarl, bbarl, cbarl, dbarl, ebarl, fbarl data abarl/ 2.817e-02, 2.682e-02,2.264e-02,1.281e-02/ data bbarl/ 1.305 , 1.346 ,1.454 ,1.641 / data cbarl/-5.62e-08 ,-6.94e-06 ,4.64e-04 ,0.201 / data dbarl/ 1.63e-07 , 2.35e-05 ,1.24e-03 ,7.56e-03 / data ebarl/ 0.829 , 0.794 ,0.754 ,0.826 / data fbarl/ 2.482e-03, 4.226e-03,6.560e-03,4.353e-03/ real(r8) abarli ! A coefficient for current spectral band real(r8) bbarli ! B coefficient for current spectral band real(r8) cbarli ! C coefficient for current spectral band real(r8) dbarli ! D coefficient for current spectral band real(r8) ebarli ! E coefficient for current spectral band real(r8) fbarli ! F coefficient for current spectral band! ! Caution... A. Slingo recommends no less than 4.0 micro-meters nor! greater than 20 micro-meters! ! ice water coefficients (Ebert and Curry,1992, JGR, 97, 3831-3836)! real(r8) abari(4) ! a coefficient for extinction optical depth real(r8) bbari(4) ! b coefficient for extinction optical depth real(r8) cbari(4) ! c coefficient for single scat albedo real(r8) dbari(4) ! d coefficient for single scat albedo real(r8) ebari(4) ! e coefficient for asymmetry parameter real(r8) fbari(4) ! f coefficient for asymmetry parameter save abari, bbari, cbari, dbari, ebari, fbari data abari/ 3.448e-03, 3.448e-03,3.448e-03,3.448e-03/ data bbari/ 2.431 , 2.431 ,2.431 ,2.431 / data cbari/ 1.00e-05 , 1.10e-04 ,1.861e-02,.46658 / data dbari/ 0.0 , 1.405e-05,8.328e-04,2.05e-05 / data ebari/ 0.7661 , 0.7730 ,0.794 ,0.9595 / data fbari/ 5.851e-04, 5.665e-04,7.267e-04,1.076e-04/ real(r8) abarii ! A coefficient for current spectral band real(r8) bbarii ! B coefficient for current spectral band real(r8) cbarii ! C coefficient for current spectral band real(r8) dbarii ! D coefficient for current spectral band real(r8) ebarii ! E coefficient for current spectral band real(r8) fbarii ! F coefficient for current spectral band! real(r8) delta ! Pressure (in atm) for stratos. h2o limit real(r8) o2mmr ! O2 mass mixing ratio: save delta, o2mmr data delta / 1.70e-3 / data o2mmr / .23143 / real(r8) albdir(pcols,nspint) ! Current spc intrvl srf alb to direct rad real(r8) albdif(pcols,nspint) ! Current spc intrvl srf alb to diffuse rad! ! Next series depends on spectral interval! real(r8) frcsol(nspint) ! Fraction of solar flux in spectral interval real(r8) wavmin(nspint) ! Min wavelength (micro-meters) of interval real(r8) wavmax(nspint) ! Max wavelength (micro-meters) of interval real(r8) raytau(nspint) ! Rayleigh scattering optical depth real(r8) abh2o(nspint) ! Absorption coefficiant for h2o (cm2/g) real(r8) abo3 (nspint) ! Absorption coefficiant for o3 (cm2/g) real(r8) abco2(nspint) ! Absorption coefficiant for co2 (cm2/g) real(r8) abo2 (nspint) ! Absorption coefficiant for o2 (cm2/g) real(r8) ph2o(nspint) ! Weight of h2o in spectral interval real(r8) pco2(nspint) ! Weight of co2 in spectral interval real(r8) po2 (nspint) ! Weight of o2 in spectral interval real(r8) nirwgt(nspint) ! Spectral Weights to simulate Nimbus-7 filter real(r8) wgtint ! Weight for specific spectral interval save frcsol ,wavmin ,wavmax ,raytau ,abh2o ,abo3 , & abco2 ,abo2 ,ph2o ,pco2 ,po2 ,nirwgt data frcsol / .001488, .001389, .001290, .001686, .002877, & .003869, .026336, .360739, .065392, .526861, & .526861, .526861, .526861, .526861, .526861, & .526861, .006239, .001834, .001834/! ! weight for 0.64 - 0.7 microns appropriate to clear skies over oceans! data nirwgt / 0.0, 0.0, 0.0, 0.0, 0.0, & 0.0, 0.0, 0.0, 0.320518, 1.0, 1.0, & 1.0, 1.0, 1.0, 1.0, 1.0, & 1.0, 1.0, 1.0 / data wavmin / .200, .245, .265, .275, .285, & .295, .305, .350, .640, .700, .701, & .701, .701, .701, .702, .702, & 2.630, 4.160, 4.160/ data wavmax / .245, .265, .275, .285, .295, & .305, .350, .640, .700, 5.000, 5.000, & 5.000, 5.000, 5.000, 5.000, 5.000, & 2.860, 4.550, 4.550/ data raytau / 4.020, 2.180, 1.700, 1.450, 1.250, & 1.085, 0.730, v_raytau_35, v_raytau_64, 0.020, & .0001, .0001, .0001, .0001, .0001, .0001, & .0001, .0001, .0001/! ! Absorption coefficients! data abh2o / .000, .000, .000, .000, .000, & .000, .000, .000, .000, .002, & .035, .377, 1.950, 9.400, 44.600, & 190.000, .000, .000, .000/ data abo3 /5.370e+04, 13.080e+04, 9.292e+04, 4.530e+04, 1.616e+04, & 4.441e+03, 1.775e+02, v_abo3_35, v_abo3_64, .000, & .000, .000 , .000 , .000 , .000, & .000, .000 , .000 , .000 / data abco2 / .000, .000, .000, .000, .000, & .000, .000, .000, .000, .000, & .000, .000, .000, .000, .000, & .000, .094, .196, 1.963/ data abo2 / .000, .000, .000, .000, .000, & .000, .000, .000,1.11e-05,6.69e-05, & .000, .000, .000, .000, .000, & .000, .000, .000, .000/! ! Spectral interval weights! data ph2o / .000, .000, .000, .000, .000, & .000, .000, .000, .000, .505, & .210, .120, .070, .048, .029, & .018, .000, .000, .000/ data pco2 / .000, .000, .000, .000, .000, & .000, .000, .000, .000, .000, & .000, .000, .000, .000, .000, & .000, 1.000, .640, .360/ data po2 / .000, .000, .000, .000, .000, & .000, .000, .000, 1.000, 1.000, & .000, .000, .000, .000, .000, & .000, .000, .000, .000/! ! Diagnostic and accumulation arrays; note that sfltot, fswup, and! fswdn are not used in the computation,but are retained for future use.! real(r8) solflx ! Solar flux in current interval real(r8) sfltot ! Spectrally summed total solar flux real(r8) totfld(0:pver) ! Spectrally summed flux divergence real(r8) fswup(0:pverp) ! Spectrally summed up flux real(r8) fswdn(0:pverp) ! Spectrally summed down flux! ! Cloud radiative property arrays! real(r8) tauxcl(pcols,0:pver) ! water cloud extinction optical depth real(r8) tauxci(pcols,0:pver) ! ice cloud extinction optical depth real(r8) wcl(pcols,0:pver) ! liquid cloud single scattering albedo real(r8) gcl(pcols,0:pver) ! liquid cloud asymmetry parameter real(r8) fcl(pcols,0:pver) ! liquid cloud forward scattered fraction real(r8) wci(pcols,0:pver) ! ice cloud single scattering albedo real(r8) gci(pcols,0:pver) ! ice cloud asymmetry parameter real(r8) fci(pcols,0:pver) ! ice cloud forward scattered fraction! ! Aerosol radiative property arrays! real(r8) tauxar(pcols,0:pver) ! aerosol extinction optical depth real(r8) wa(pcols,0:pver) ! aerosol single scattering albedo real(r8) ga(pcols,0:pver) ! aerosol assymetry parameter real(r8) fa(pcols,0:pver) ! aerosol forward scattered fraction! ! Sulphate aerosol properties taken from:! ! Kiehl, J.T., B.P.Briegleb, 1993. The Relative Roles of Sulfate Aerosols! and Greenhouse Gases in Climate Forcing. Science, Vol. 260, pp. 311-314.! real(r8) ksa(nspint) ! aerosol spectral mass abs. coeff(m2/g) real(r8) wsa(nspint) ! aerosol spectral single scat. albedo real(r8) gsa(nspint) ! aerosol spectral asymmetry parameter! data ksa /11.1163, 10.5472, 10.2468, 10.0392, 9.8292, & 9.6199, 9.0407,v_ksa_35,v_ksa_64, 1.9169, & 0.3780, 0.3780, 0.3780, 0.3780, 0.5704, & 0.5704, 0.5704, 0.5704, 0.5704 / data wsa / .999999, .999999, .999999, .999999, .999999, & .999999, .999999, .999999, .999999, .999991, & .989772, .989772, .989772, .989772, .847061, & .847061, .847061, .847061, .847061 / data gsa / .719161, .719012, .718453, .717820, .716997, & .715974, .712743,v_gsa_35,v_gsa_64, .618115, & .485286, .485286, .485286, .485286, .295557, & .295557, .295557, .295557, .295557 /! ! Other variables and arrays needed for aerosol:! real(r8) rhfac ! multiplication factor for kaer real(r8) rhpc ! level relative humidity in % real(r8) a0 ! constant in rh mult factor real(r8) a1 ! constant in rh mult factor real(r8) a2 ! constant in rh mult factor real(r8) a3 ! constant in rh mult factor save a0,a1,a2,a3 data a0 / -9.2906106183 / data a1 / 0.52570211505 / data a2 / -0.0089285760691 / data a3 / 5.0877212432e-05/! ! Various arrays and other constants:! real(r8) pflx(pcols,0:pverp) ! Interface press, including extra layer real(r8) zenfac(pcols) ! Square root of cos solar zenith angle real(r8) sqrco2 ! Square root of the co2 mass mixg ratio real(r8) tmp1 ! Temporary constant array real(r8) tmp2 ! Temporary constant array real(r8) pdel ! Pressure difference across layer real(r8) path ! Mass path of layer real(r8) ptop ! Lower interface pressure of extra layer real(r8) ptho2 ! Used to compute mass path of o2 real(r8) ptho3 ! Used to compute mass path of o3 real(r8) pthco2 ! Used to compute mass path of co2 real(r8) pthh2o ! Used to compute mass path of h2o real(r8) h2ostr ! Inverse sq. root h2o mass mixing ratio real(r8) wavmid(nspint) ! Spectral interval middle wavelength real(r8) trayoslp ! Rayleigh optical depth/standard pressure real(r8) tmp1l ! Temporary constant array real(r8) tmp2l ! Temporary constant array real(r8) tmp3l ! Temporary constant array real(r8) tmp1i ! Temporary constant array real(r8) tmp2i ! Temporary constant array real(r8) tmp3i ! Temporary constant array real(r8) rdenom ! Multiple scattering term real(r8) rdirexp ! layer direct ref times exp transmission real(r8) tdnmexp ! total transmission - exp transmission real(r8) psf(nspint) ! Frac of solar flux in spect interval! ! Layer absorber amounts; note that 0 refers to the extra layer added! above the top model layer! real(r8) uh2o(pcols,0:pver) ! Layer absorber amount of h2o real(r8) uo3(pcols,0:pver) ! Layer absorber amount of o3 real(r8) uco2(pcols,0:pver) ! Layer absorber amount of co2 real(r8) uo2(pcols,0:pver) ! Layer absorber amount of o2 real(r8) uaer(pcols,0:pver) ! Layer aerosol amount ! ! Total column absorber amounts:! real(r8) uth2o(pcols) ! Total column absorber amount of h2o real(r8) uto3(pcols) ! Total column absorber amount of o3 real(r8) utco2(pcols) ! Total column absorber amount of co2 real(r8) uto2(pcols) ! Total column absorber amount of o2! ! These arrays are defined for pver model layers; 0 refers to the extra! layer on top:! real(r8) rdir(nspint,pcols,0:pver) ! Layer reflectivity to direct rad real(r8) rdif(nspint,pcols,0:pver) ! Layer reflectivity to diffuse rad real(r8) tdir(nspint,pcols,0:pver) ! Layer transmission to direct rad real(r8) tdif(nspint,pcols,0:pver) ! Layer transmission to diffuse rad real(r8) explay(nspint,pcols,0:pver) ! Solar beam exp trans. for layer real(r8) rdirc(nspint,pcols,0:pver) ! Clear Layer reflec. to direct rad real(r8) rdifc(nspint,pcols,0:pver) ! Clear Layer reflec. to diffuse rad real(r8) tdirc(nspint,pcols,0:pver) ! Clear Layer trans. to direct rad real(r8) tdifc(nspint,pcols,0:pver) ! Clear Layer trans. to diffuse rad real(r8) explayc(nspint,pcols,0:pver) ! Solar beam exp trans. clear layer real(r8) flxdiv ! Flux divergence for layer! ! ! Radiative Properties:! ! There are 1 classes of properties:! (1. All-sky bulk properties! (2. Clear-sky properties! ! The first set of properties are generated during step 2 of the solution.! ! These arrays are defined at model interfaces; in 1st index (for level #),! 0 is the top of the extra layer above the model top, and! pverp is the earth surface. 2nd index is for cloud configuration! defined over a whole column.! real(r8) exptdn(0:pverp,nconfgmax) ! Sol. beam trans from layers above real(r8) rdndif(0:pverp,nconfgmax) ! Ref to dif rad for layers above real(r8) rupdif(0:pverp,nconfgmax) ! Ref to dif rad for layers below real(r8) rupdir(0:pverp,nconfgmax) ! Ref to dir rad for layers below real(r8) tdntot(0:pverp,nconfgmax) ! Total trans for layers above! ! Bulk properties used during the clear-sky calculation.! real(r8) exptdnc(0:pverp) ! clr: Sol. beam trans from layers above real(r8) rdndifc(0:pverp) ! clr: Ref to dif rad for layers above real(r8) rupdifc(0:pverp) ! clr: Ref to dif rad for layers below real(r8) rupdirc(0:pverp) ! clr: Ref to dir rad for layers below real(r8) tdntotc(0:pverp) ! clr: Total trans for layers above real(r8) fluxup(0:pverp) ! Up flux at model interface real(r8) fluxdn(0:pverp) ! Down flux at model interface real(r8) wexptdn ! Direct solar beam trans. to surface! !-----------------------------------------------------------------------! START OF CALCULATION!-----------------------------------------------------------------------! do i=1, ncol! ! Initialize output fields:! fsds(i) = 0.0_r8 fsnirtoa(i) = 0.0_r8 fsnrtoac(i) = 0.0_r8 fsnrtoaq(i) = 0.0_r8 fsns(i) = 0.0_r8 fsnsc(i) = 0.0_r8 fsdsc(i) = 0.0_r8 fsnt(i) = 0.0_r8 fsntc(i) = 0.0_r8 fsntoa(i) = 0.0_r8
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -