!-------------------------------------- LICENCE BEGIN ------------------------------------ !Environment Canada - Atmospheric Science and Technology License/Disclaimer, ! version 3; Last Modified: May 7, 2008. !This is free but copyrighted software; you can use/redistribute/modify it under the terms !of the Environment Canada - Atmospheric Science and Technology License/Disclaimer !version 3 or (at your option) any later version that should be found at: !http://collaboration.cmc.ec.gc.ca/science/rpn.comm/license.html ! !This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; !without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. !See the above mentioned License/Disclaimer for more details. !You should have received a copy of the License/Disclaimer along with this software; !if not, you can write to: EC-RPN COMM Group, 2121 TransCanada, suite 500, Dorval (Quebec), !CANADA, H9P 1J3; or send e-mail to service.rpn@ec.gc.ca !-------------------------------------- LICENCE END -------------------------------------- *** S/P CLDOPPRO - CLOUD OPTICAL PROPERTIES *subroutine cldoppro3 (taucs, omcs, gcs, taucl, omcl, gcl, 1 1 topthw, topthi,ecc,tcc, 2 nlow,nmid,nhigh, 3 ctp, ctt, liqwcin, icewcin, 4 liqwpin, icewpin, cldfrac, 5 tt, sig, ps, mg, ml, m, 6 lmx, nk, nkp) c #include "impnone.cdk"
#include "nbsnbl.cdk"
* integer lmx, m, nk, nkp real taucs(lmx,nk,nbs), omcs(lmx,nk,nbs), gcs(lmx,nk,nbs), 1 taucl(lmx,nk,nbl), omcl(lmx,nk,nbl), gcl(lmx,nk,nbl) real topthw(lmx), topthi(lmx) real ctp(lmx), ctt(lmx) real liqwcin(lmx,nk), icewcin(lmx,nk) real liqwpin(lmx,nk), icewpin(lmx,nk) real cldfrac(lmx,nk), tt(m,nk),sig(lmx,nk),ps(lmx),mg(lmx),ml(lmx) * *Authors * p. vaillancourt, d. talbot, j. li, rpn, cmc, cccma; (may 2006) * *Revisions * 001 p.vaillancourt - code 3 options (ioptrew) for liquid effective radius * and 2 options (ioptrei) for ice effective radius * 002 p.vaillancourt - (april 2008) correct bug for diagnostic variables ctp (BP)and ctt (BE) * 003 p.vaillancourt - (june 2008) add calculation of effective cloud cover (ecc=NT) * *Object * calculate cloud optical properties for ccc radiative transfer scheme * (adapted from cldoptx4) * *Arguments * - output - * taucs cloud solar optical thickness * omcs cloud solar scattering albedo * gcs cloud solar asymmetry factor * taucl cloud longwave optical thickness * omcl cloud longwave scattering albedo * gcl cloud longwave asymmetry factor * topthw total integrated optical thickness of water in the visible * topthi total integrated optical thickness of ice in the visible * ctp cloud top pressure * ctt cloud top temperature * ecc effective cloud cover (nt) * - input - * liqwpin liquid water path in g/m2 * icewpin solid water path in g/m2 * liqwcin in-cloud liquid water content * in kg water/kg air * icewcin in-cloud ice water content * in kg water/kg air * cldfrac layer cloud amount (0. to 1.) (lmx,nk) * tt layer temperature (k) (m,nk) * sig sigma levels (0. to 1.) (lmx,nk; local sigma) * ps surface pressure (n/m2) (lmx) * mg ground cover (ocean=0.0,land <= 1.) (lmx) * ml fraction of lakes (0.-1.) (lmx) * lmx number of profiles to compute * m first dimension of temperature (usually lmx) * nk number of layers * ************************************************************************ * external cldoppro_data * #include "phy_macros_f.h"
#include "cldop.cdk"
#include "consphy.cdk"
********************************************************** * AUTOMATIC ARRAYS ********************************************************** AUTOMATIC ( transmissint , real , (lmx,nk) ) AUTOMATIC ( trans_exp , real , (lmx,nk) ) AUTOMATIC ( top , logical , (lmx) ) AUTOMATIC ( zrieff , real , (m,nk) ) AUTOMATIC ( zrieff_vs , real , (m,nk) ) AUTOMATIC ( aird , real , (m,nk) ) AUTOMATIC ( rew , real , (m,nk) ) AUTOMATIC ( rei , real , (m,nk) ) AUTOMATIC ( rec_cdd , real , (m,nk) ) AUTOMATIC ( vs1 , real , (m,nk) ) AUTOMATIC ( trmin , real ,(lmx) ) AUTOMATIC ( tmem , real ,(lmx) ) AUTOMATIC ( ecc , real ,(lmx) ) AUTOMATIC ( tcc , real ,(lmx) ) AUTOMATIC ( nlow , real ,(lmx) ) AUTOMATIC ( nmid , real ,(lmx) ) AUTOMATIC ( nhigh , real ,(lmx) ) AUTOMATIC ( ff , real ,(lmx,nkp,nkp)) AUTOMATIC ( ih , integer ,(lmx )) AUTOMATIC ( ib , integer ,(lmx )) ********************************************************** integer i, j, k, ioptrew,ioptrei, kind,ip,l parameter(ioptrew=1,ioptrei=2) real rec_grav, cut, third real epsilon,epsilon2,betan,betad real rew2,rew3,dg,dg2,dg3,tausw,omsw,gsw,tausi,omsi,gsi,y1,y2,taulw real omlw,glw,tauli,omli,gli real xnu,xnu2 * data third/0.3333333/ save third rec_grav=1./grav * c c initialize output fields c do i =1, lmx topthw(i) = 0.0 topthi(i) = 0.0 end do c do k = 1, nk do i =1, lmx c c effective radius for water clouds, set number of drops per c cm^3, 100 for water and 500 for land c if (mg(i) .le. 0.5 .and. ml(i) .le. 0.5) then c cdd=50. rec_cdd(i,k) = 0.01 else c cdd=250. rec_cdd(i,k) = 0.002 endif c c aird is air density in kg/m3 c aird(i,k) = sig(i,k) * ps(i) / ( tt(i,k) * rgasd ) * end do end do c c c... choice of effective radius for liquid clouds c... ioptrew=1 : as in newrad - from h. barker, based on aircraft data, range 4-17 micron from slingo c... ioptrew=2 : as in newrad - corresponds to so called new optical properties c... ioptrew=3 : from Rotstayn and Liu (2003) c c if (ioptrew .eq. 1) then do k = 1, nk do i = 1, lmx vs1(i,k) = liqwcin(i,k) * aird(i,k) * rec_cdd(i,k) enddo enddo call vspown1(rew, vs1, third, nk * lmx) c do k = 1, nk do i = 1, lmx rew(i,k) = min ( max (4., 754.6 * rew(i,k)), 17.0) end do end do elseif (ioptrew .eq. 2) then do k = 1, nk do i = 1, lmx vs1(i,k) = (1.0 + liqwcin(i,k) * 1.e4) 1 * liqwcin(i,k) * aird(i,k) * rec_cdd(i,k) enddo enddo call vspown1(rew, vs1,third, nk * lmx) c do k = 1, nk do i = 1, lmx rew(i,k) = 3000. * rew(i,k) rew(i,k) = min (max (2.5, rew(i,k)), 50.0) end do end do elseif (ioptrew .eq. 3) then do k = 1, nk do i = 1, lmx epsilon = 1.0 - 0.7 * exp(- 0.001 / rec_cdd(i,k)) epsilon2 = epsilon * epsilon betad = 1.0 + epsilon2 betan = betad + epsilon2 rew(i,k) = 620.3504944*((betan*betan*liqwcin(i,k)*aird(i,k)) 1 / (betad / rec_cdd(i,k)) )**third rew(i,k) = min (max (2.5, rew(i,k)), 17.0) c rew(i,k) = min (max (4.0, rew(i,k)), 17.0) end do end do endif c c... choice of effective radius for ice clouds c... ioptrei=1 : from cccma c... ioptrei=2 : as in newrad - constant of 15 microns c c if (ioptrei .eq. 1) then c c... units of icewcin must be in g/m3 for this parameterization of rei c do k = 1, nk do i = 1, lmx zrieff_vs(i,k) = 1000. * icewcin(i,k) * aird(i,k) enddo enddo call vspown1(zrieff, zrieff_vs, 0.216, nk * lmx) do k = 1, nk do i = 1, lmx if (icewcin(i,k) .ge. 1.e-9) then zrieff(i,k) = 83.8 * zrieff(i,k) else zrieff(i,k) = 20. endif rei(i,k) = max (min (zrieff(i,k), 50.0), 20.0) end do end do elseif (ioptrei .eq. 2) then do k = 1, nk do i = 1, lmx rei(i,k) = 15.0 end do end do endif c c---------------------------------------------------------------------- c cloud radiative properties for radiation. c taucs, omcs, gcs (taucl, omcl, gcl): optical depth, single c scattering albedo, asymmetry factor for solar (infrared). c rew: effective radiu (in micrometer) for water cloud c rei: effective radiu (in micrometer) for ice cloud c dg: geometry length for ice cloud c liqwcin (icewcin): liquid water (ice) content (in gram / m^3) c liqwpin (icewpin): liquid water (ice) path length (in gram / m^2) c cloud: cloud fraction c parameterization for water cloud: c dobbie, etc. 1999, jgr, 104, 2067-2079 c lindner, t. h. and j. li., 2000, j. clim., 13, 1797-1805. c parameterization for ice cloud: c fu 1996, j. clim., 9, 2223-2337. c fu et al. 1998 j. clim., 11, 2223-2337. c---------------------------------------------------------------------- c cut = 0.001 do 290 j = 1, nbs do 280 k = 1, nk do 270 i = 1, lmx if (cldfrac(i,k) .le. cut) then taucs(i,k,j) = 0. omcs(i,k,j) = 0. gcs(i,k,j) = 0. else rew2 = rew(i,k) * rew(i,k) rew3 = rew2 * rew(i,k) dg = 1.5396 * rei(i,k) dg2 = dg * dg dg3 = dg2 * dg c if (liqwpin(i,k) .gt. 0.001) then tausw = liqwpin(i,k) * 1 (aws(1,j) + aws(2,j) / rew(i,k) + 2 aws(3,j) / rew2 + aws(4,j) / rew3) omsw = 1.0 - (bws(1,j) + bws(2,j) * rew(i,k) + 1 bws(3,j) * rew2 + bws(4,j) * rew3) gsw = cws(1,j) + cws(2,j) * rew(i,k) + 1 cws(3,j) * rew2 + cws(4,j) * rew3 else tausw = 0. omsw = 0. gsw = 0. endif c if (icewpin(i,k) .gt. 0.001) then tausi = icewpin(i,k) * ( ais(1,j) + ais(2,j) / dg ) omsi = 1.0 - (bis(1,j) + bis(2,j) * dg + 1 bis(3,j) * dg2 + bis(4,j) * dg3) gsi = cis(1,j) + cis(2,j) * dg + cis(3,j) * dg2 + 1 cis(4,j) * dg3 else tausi = 0. omsi = 0. gsi = 0. endif c taucs(i,k,j) = tausw + tausi if (taucs(i,k,j) .gt. 0.0) then y1 = omsw * tausw y2 = omsi * tausi omcs(i,k,j) = (y1 + y2) / taucs(i,k,j) gcs (i,k,j) = (y1 * gsw + y2 * gsi) / (y1 + y2) else omcs(i,k,j) = 0. gcs (i,k,j) = 0. endif c c calculate the optical depth for water and ice cloud in visible c if (j .eq. 1) then topthw(i) = topthw(i) + tausw topthi(i) = topthi(i) + tausi endif endif 270 continue 280 continue 290 continue * do 390 j = 1, nbl do 380 k = 1, nk do 370 i = 1, lmx if (cldfrac(i,k) .le. cut) then taucl(i,k,j) = 0. omcl(i,k,j) = 0. gcl(i,k,j) = 0. else rew2 = rew(i,k) * rew(i,k) rew3 = rew2 * rew(i,k) dg = 1.5396 * rei(i,k) dg2 = dg * dg dg3 = dg2 * dg c if (liqwpin(i,k) .gt. 0.001) then taulw = liqwpin(i,k) * (awl(1,j) + awl(2,j) * rew(i,k)+ 1 awl(3,j) / rew(i,k) + awl(4,j) / rew2 + 2 awl(5,j) / rew3) omlw = 1.0 - (bwl(1,j) + bwl(2,j) / rew(i,k) + 1 bwl(3,j) * rew(i,k) + bwl(4,j) * rew2) glw = cwl(1,j) + cwl(2,j) / rew(i,k) + 1 cwl(3,j) * rew(i,k) + cwl(4,j) * rew2 else taulw = 0. omlw = 0. glw = 0. endif c c---------------------------------------------------------------------- c since in fu etc. the param. is for absorptance, so need a factor c icewpin(i,k) / tauli for single scattering albedo c---------------------------------------------------------------------- c if (icewpin(i,k) .gt. 0.001) then tauli = icewpin(i,k) * (ail(1,j) + ail(2,j) / dg + 1 ail(3,j) / dg2) omli = 1.0 - (bil(1,j) / dg + bil(2,j) + 1 bil(3,j) * dg + bil(4,j) * dg2) * 2 icewpin(i,k) / tauli gli = cil(1,j) + cil(2,j) * dg + cil(3,j) * dg2 + 1 cil(4,j) * dg3 else tauli = 0. omli = 0. gli = 0. endif c taucl(i,k,j) = taulw + tauli if (taucl(i,k,j) .gt. 0.0) then y1 = omlw * taulw y2 = omli * tauli omcl(i,k,j) = (y1 + y2) / taucl(i,k,j) gcl (i,k,j) = (glw * y1 + gli * y2) / (y1 + y2) else omcl(i,k,j) = 0. gcl (i,k,j) = 0. endif endif 370 continue 380 continue 390 continue * * diagnostics: cloud top pressure (ctp) and temperature (ctt) * using the cloud optical depth at window region (band 6) to * calculate the emissivity * * calcul des indices IH et IB pour nuages 2-D * IH = niveau le plus pres de sigma=0.4 * IB = niveau le plus pres de sigma=0.7 * do k = 1, nk do i = 1, lmx vs1(i,k) = - 1.64872 * taucl(i,k,6) if (sig(i,k).le.0.4) ih(i) = k if (sig(i,k).le.0.7) ib(i) = k enddo enddo call vsexp ( trans_exp, vs1, lmx*nk ) do i = 1, lmx ctp (i) = 110000. ctt (i) = 310. top(i) = .true. transmissint(i,1) = 1. - cldfrac(i,1) * (1.-trans_exp(i,1) ) if ( (1. - transmissint(i,1)) .gt. 0.99 .and. top(i) ) then ctp(i) = sig(i,1)*ps(i) ctt(i) = tt(i,1) top(i) = .false. end if end do * do k = 2, nk do i = 1, lmx * transmissint(i,k)=transmissint(i,k-1) * (1. - cldfrac(i,k) * * 1 exp (- 1.64872 * taucl(i,k,6))) transmissint(i,k)=transmissint(i,k-1) * (1. - cldfrac(i,k) * 1 (1.-trans_exp(i,k) ) ) if ( (1. - transmissint(i,k)) .gt. 0.99 .and. top(i) ) then ctp(i) = sig(i,k)*ps(i) ctt(i) = tt(i,k) top(i) = .false. end if end do end do * c... compute total, high cloud, middle cloud and low cloud effective cloud cover (nt) as in radir7 * using the cloud optical depth at window region (band 6) to * calculate the emissivity do l=1,nkp-1 do i=1,lmx ff(i,l,l)=1. tmem(i)=1. trmin(i)=1. enddo ip=l+1 do k=ip,nkp kind=k-2 kind=max0(kind,1) do i=1,lmx xnu=1.-cldfrac(i,k-1)*(1.-trans_exp(i,k-1) ) if(cldfrac(i,kind).lt.0.01) then tmem(i)= ff(i,l,k-1) trmin(i)= xnu else trmin(i)=min(trmin(i),xnu) endif ff(i,l,k)= tmem(i) * trmin(i) enddo enddo enddo c do i=1,lmx ecc(i)=1.-ff(i,1,nkp) nhigh(i) = 1. - ff(i, 1 ,IH(i)) nmid (i) = 1. - ff(i,IH(i),IB(i)) nlow (i) = 1. - ff(i,IB(i),nkp ) enddo c... compute total true cloud cover using maximum-random cloud overlap assumption do i=1,lmx ff(i,1,1)=1. tmem(i)=1. trmin(i)=1. enddo do k=2,nkp kind=k-2 kind=max0(kind,1) do i=1,lmx xnu=1.-cldfrac(i,k-1) if(cldfrac(i,kind).lt.0.01) then tmem(i)= ff(i,1,k-1) trmin(i)= xnu else trmin(i)=min(trmin(i),xnu) endif ff(i,1,k)= tmem(i) * trmin(i) enddo enddo c do i=1,lmx tcc(i)=1.-ff(i,1,nkp) enddo c return end * block data cldoppro_data #include "nbsnbl.cdk"
#include "cldop.cdk"
* c -------------------------------------------------------- c new water properties for sw (dobbie, li, and chylek 1999, jgr) c -------------------------------------------------------- c data ((aws(i,j), i = 1, 4), j = 1, nbs) / 1 4.554e-04, 1.500e+00, 7.190e-01, -9.419e-01, 2 3.859e-04, 1.508e+00, 9.512e-01, -1.053e+00, 3 -3.946e-05, 1.538e+00, 1.035e+00, 2.638e-01, 4 2.936e-04, 1.541e+00, 1.698e-00, 1.521e+00 / data ((bws(i,j), i = 1, 4), j = 1, nbs) / 1 6.481e-08, 1.553e-07, -7.755e-10, 7.616e-12, 2 1.072e-05, 1.345e-05, -1.799e-08, -3.146e-11, 3 4.078e-04, 2.169e-03, -2.177e-05, 1.506e-07, 4 2.013e-01, 1.109e-02, -2.897e-04, 3.055e-06 / data ((cws(i,j), i = 1, 4), j = 1, nbs) / 1 8.069e-01, 6.188e-03, -2.065e-04, 2.352e-06, 2 7.685e-01, 9.337e-03, -3.101e-04, 3.527e-06, 3 7.471e-01, 9.440e-03, -2.616e-04, 2.614e-06, 4 7.956e-01, 8.138e-03, -1.861e-04, 1.611e-06 / c c -------------------------------------------------------- c new water properties for lw (lindner and li, 2000 jcl) c -------------------------------------------------------- c data ((awl(i,j), i = 1, 5), j = 1, nbl) / 1 -.21671e-01, .79578e-03, .14899e+01, .62606e+01,-.12705e+02, 2 -.14126e+00, .28208e-02, .35125e+01,-.34541e+01,-.22679e+01, 3 -.18829e+00, .34065e-02, .46731e+01,-.11664e+02, .87105e+01, 4 -.16383e+00, .26574e-02, .48670e+01,-.16442e+02, .16128e+02, 5 -.20294e-01, .85110e-04, .28650e+01,-.11202e+02, .12047e+02, 6 .28752e-01,-.37315e-03, .14591e+01,-.48788e+01, .49725e+01, 7 -.40386e-01, .80822e-03, .25318e+01,-.64641e+01, .55609e+01, 8 -.48716e-01, .81275e-03, .30390e+01,-.97845e+01, .95101e+01, 9 .64794e-01,-.98530e-03, .12797e+01,-.55272e+01, .62599e+01 / data ((bwl(i,j), i = 1, 4), j = 1, nbl) / 1 .36899e-02,-.54184e-03, .14561e-01,-.18451e-03, 2 .62141e-02, .61190e-01, .21127e-01,-.29731e-03, 3 .87326e-01, .29908e+00, .22928e-01,-.35569e-03, 4 -.37551e-01, .70237e+00, .26945e-01,-.37999e-03, 5 .51671e-01, .10199e+01, .18296e-01,-.21209e-03, 6 .52184e+00, .72352e+00,-.48090e-02, .10414e-03, 7 .57688e+00, .63008e+00,-.56325e-02, .87852e-04, 8 .50346e+00, .79407e+00,-.13179e-02, .25467e-04, 9 .67792e+00, .68259e+00,-.12136e-01, .20941e-03 / data ((cwl(i,j), i = 1, 4), j = 1, nbl) / 1 .73147e+00, .11761e+00, .86402e-02,-.10761e-03, 2 .81284e+00,-.60287e-01, .45367e-02,-.33372e-04, 3 .92468e+00,-.39653e+00, .30494e-03, .20980e-04, 4 .10006e+01,-.71422e+00,-.46784e-02, .10114e-03, 5 .10635e+01,-.10097e+01,-.58726e-02, .97485e-04, 6 .10762e+01,-.12482e+01,-.40343e-02, .54330e-04, 7 .97445e+00,-.13875e+01, .79204e-03,-.27995e-04, 8 .79053e+00,-.13566e+01, .10452e-01,-.18111e-03, 9 .35512e+00,-.80671e+00, .30384e-01,-.47204e-03 / c c---------------------------------------------------------------------- c ice fu 1997 jcl, fu et al. 1998 jcl c---------------------------------------------------------------------- c data ((ais(i,j), i = 1, 2), j = 1, nbs) / 1 -0.24276e-04, 2.51884e+00, 2 -0.48500e-04, 2.52275e+00, 3 -0.98503e-05, 2.52048e+00, 4 0.24435e-03, 2.49116e+00 / c data ((bis(i,j), i = 1, 4), j = 1, nbs) / 1 0.13031e-06, 0.94102e-07,-0.75971e-10, 0.33977e-12, 2 -0.77603e-06, 0.73420e-05, 0.11514e-09,-0.90818e-12, 3 0.10007e-02, 0.10992e-02,-0.45043e-05, 0.12637e-07, 4 0.21201e+00, 0.25713e-02,-0.19228e-04, 0.62183e-07 / c data ((cis(i,j), i = 1, 4), j = 1, nbs) / 1 0.74821e+00, 0.92318e-03,-0.72862e-06,-0.95642e-08, 2 0.75227e+00, 0.10653e-02,-0.24930e-05,-0.29114e-08, 3 0.75553e+00, 0.17297e-02,-0.87585e-05, 0.19201e-07, 4 0.84323e+00, 0.20925e-02,-0.18302e-04, 0.60381e-07 / c data ((ail(i,j), i = 1, 3), j = 1, nbl) / 1 -.8839455e-03, .2662598e+01, .2196338e+01, 2 -.2066995e-02, .2787904e+01, .1397838e+01, 3 -.3085730e-02, .2906257e+01, -.1911363e+01, 4 -.6968920e-02, .3284275e+01, -.6973825e+01, 5 -.8372696e-02, .3455018e+01, -.1516692e+02, 6 -.1691632e-02, .2765756e+01, -.8331033e+01, 7 -.7098616e-02, .3343404e+01, -.8144649e+01, 8 -.1041746e-01, .3824226e+01, -.2255945e+02, 9 .5689700e-02, .2285636e+01, -.1430752e+02 / c data ((bil(i,j), i = 1, 4), j = 1, nbl) / 1 .5723611e+00, .1627863e-01, -.1684272e-03, .6061332e-06, 2 .4402328e+00, .1736939e-01, -.1656608e-03, .5709622e-06, 3 .8802908e+00, .1249744e-01, -.1550609e-03, .6105065e-06, 4 .6351165e+00, .1781519e-01, -.1979682e-03, .6000892e-06, 5 .5409536e-00, .1949649e-01, -.2050908e-03, .7364680e-06, 6 .1195515e+01, .3350616e-02, -.5266996e-04, .2233377e-06, 7 .1186334e+01, .6213290e-02, -.1044277e-03, .2233377e-06, 8 .2279562e+00, .2017007e-01, -.1756872e-03, .5703918e-06, 9 .7718967e+00, .2120626e-01, -.2587649e-03, .9878070e-06 / c data ((cil(i,j), i = 1, 4), j = 1, nbl) / 1 .7975757e+00, .3843973e-02, -.3540463e-04, .1179791e-06, 2 .7947997e+00, .3190423e-02, -.2386042e-04, .6691811e-07, 3 .8737279e+00, .2465886e-02, -.2468764e-04, .8686448e-07, 4 .8577221e+00, .2321034e-02, -.1897764e-04, .8641223e-07, 5 .8906280e-00, .1903269e-02, -.1733552e-04, .5855071e-07, 6 .8663385e-00, .2797934e-02, -.3187011e-04, .1217209e-06, 7 .7644037e+00, .4427001e-02, -.4494615e-04, .1217209e-06, 8 .7200100e+00, .3220301e-02, -.2195542e-04, .6604318e-07, 9 .5355918e+00, .1127081e-01, -.1234705e-03, .4567953e-06 / c end block data cldoppro_data