- Timestamp:
- Jul 24, 2024, 4:23:34 PM (2 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/Amaury_dev/libf/phylmd/Dust/dustemission_mod.F90
r5116 r5117 17 17 INTEGER, PARAMETER :: nats=14 !number of mineral types (14 here for sand, 18 18 ! silt, clay etc.) 19 integer, parameter :: nclass=20000019 INTEGER, parameter :: nclass=200000 20 20 21 21 22 22 real , parameter :: dmin=0.0001 23 23 real , parameter :: dmax=0.2 24 integer, parameter :: nspe=nmode*3+124 INTEGER, parameter :: nspe=nmode*3+1 25 25 real ,parameter :: vkarm=0.41 26 26 !JE20150202 : updating scheme to chimere13b <<< 27 27 ! original values 28 ! integer, parameter :: div1=3.29 ! integer, parameter :: div2=3.30 ! integer, parameter :: div3=3.28 ! INTEGER, parameter :: div1=3. 29 ! INTEGER, parameter :: div2=3. 30 ! INTEGER, parameter :: div3=3. 31 31 ! real , parameter :: e1=3.61/div1 32 32 ! real , parameter :: e2=3.52/div2 … … 41 41 ! Div=3 from S. Alfaro (Sow et al ACPD 2011) 42 42 !JE 20150206 43 ! integer, parameter :: div1=3.44 ! integer, parameter :: div2=3.45 ! integer, parameter :: div3=3.46 integer, parameter :: div1=6.47 integer, parameter :: div2=6.48 integer, parameter :: div3=6.43 ! INTEGER, parameter :: div1=3. 44 ! INTEGER, parameter :: div2=3. 45 ! INTEGER, parameter :: div3=3. 46 INTEGER, parameter :: div1=6. 47 INTEGER, parameter :: div2=6. 48 INTEGER, parameter :: div3=6. 49 49 real , parameter :: e1=3.61/div1 50 50 real , parameter :: e2=3.52/div2 … … 59 59 ! real , parameter :: cd=1.0*roa/gravity 60 60 !JE20150202>>>> 61 real,parameter :: beta=16300.62 real, parameter, dimension(3) :: diam=(/1.5,6.7,14.2/)61 REAL,parameter :: beta=16300. 62 REAL, parameter, DIMENSION(3) :: diam=(/1.5,6.7,14.2/) 63 63 INTEGER, PARAMETER :: ndistb=3 64 real, parameter, dimension(3) :: sig=(/1.7,1.6,1.5/)64 REAL, parameter, DIMENSION(3) :: sig=(/1.7,1.6,1.5/) 65 65 66 66 ! INTEGER, PARAMETER :: nbinsHR=3000 !original … … 259 259 maskdustloc(k)=0 260 260 do i=1,ntyp 261 if(masklisa(k,i)>0) THEN261 IF (masklisa(k,i)>0) THEN 262 262 maskdustloc(k)=1 263 263 endif … … 296 296 INTEGER,DIMENSION(klon) :: maskdust ! where the emissions were calculated 297 297 REAL,DIMENSION(klon,nbsrf), INTENT(IN) :: pctsrf 298 ! real,parameter :: sizeacclow=0.03299 ! real,parameter :: sizeacchigh=0.5300 ! real,parameter :: sizecoalow=0.5301 ! real,parameter :: sizecoahigh=10. ! in micrometers302 real,parameter :: sizeacclow=0.06303 real,parameter :: sizeacchigh=1.0304 real,parameter :: sizecoalow=1.0305 real,parameter :: sizecoahigh=6. !20 ! diameter in micrometers306 real,parameter :: sizescolow=6.307 real,parameter :: sizescohigh=30. ! in micrometers298 ! REAL,parameter :: sizeacclow=0.03 299 ! REAL,parameter :: sizeacchigh=0.5 300 ! REAL,parameter :: sizecoalow=0.5 301 ! REAL,parameter :: sizecoahigh=10. ! in micrometers 302 REAL,parameter :: sizeacclow=0.06 303 REAL,parameter :: sizeacchigh=1.0 304 REAL,parameter :: sizecoalow=1.0 305 REAL,parameter :: sizecoahigh=6. !20 ! diameter in micrometers 306 REAL,parameter :: sizescolow=6. 307 REAL,parameter :: sizescohigh=30. ! in micrometers 308 308 !-------------------------------- 309 ! real,parameter :: tuningfactorfine=0.9 ! factor for fine bins!!! important!!310 real,parameter :: tuningfactorfine=0.8 ! factor for fine bins!!! important!!311 ! real,parameter :: tuningfactorfine=4.5 ! factor for fine bins!!! important!!312 ! real,parameter :: tuningfactorcoa=3.6 ! factor for coarse bins!!! important!!313 real,parameter :: tuningfactorcoa=3.25 ! factor for coarse bins!!! important!!314 ! real,parameter :: tuningfactorcoa=4.5 ! factor for coarse bins!!! important!!315 ! real,parameter :: tuningfactorsco=3.6 ! factor for supercoarse bins!!! important!!316 real,parameter :: tuningfactorsco=3.25 ! factor for supercoarse bins!!! important!!317 ! real,parameter :: tuningfactorsco=4.5 ! factor for supercoarse bins!!! important!!318 real,parameter :: basesumemission= 0.0 !1.e-6 ! emissions to SUM to each land pixel FOR ASSIMILATION ONLY important!! in mg/m2/s, per bin309 ! REAL,parameter :: tuningfactorfine=0.9 ! factor for fine bins!!! important!! 310 REAL,parameter :: tuningfactorfine=0.8 ! factor for fine bins!!! important!! 311 ! REAL,parameter :: tuningfactorfine=4.5 ! factor for fine bins!!! important!! 312 ! REAL,parameter :: tuningfactorcoa=3.6 ! factor for coarse bins!!! important!! 313 REAL,parameter :: tuningfactorcoa=3.25 ! factor for coarse bins!!! important!! 314 ! REAL,parameter :: tuningfactorcoa=4.5 ! factor for coarse bins!!! important!! 315 ! REAL,parameter :: tuningfactorsco=3.6 ! factor for supercoarse bins!!! important!! 316 REAL,parameter :: tuningfactorsco=3.25 ! factor for supercoarse bins!!! important!! 317 ! REAL,parameter :: tuningfactorsco=4.5 ! factor for supercoarse bins!!! important!! 318 REAL,parameter :: basesumemission= 0.0 !1.e-6 ! emissions to SUM to each land pixel FOR ASSIMILATION ONLY important!! in mg/m2/s, per bin 319 319 !basesumemission = 1.e-6 increase the AOD in about 12% (0.03 of AOD) , 320 320 !while 1e-8 increase in about 0.12% (0.003 of AOD) 321 321 322 real,dimension(klon) :: basesumacc,basesumcoa,basesumsco322 REAL,DIMENSION(klon) :: basesumacc,basesumcoa,basesumsco 323 323 !-------------------------------- 324 !JE20140915 real,parameter :: sizeacclow=0.06325 !JE20140915 real,parameter :: sizeacchigh=1.0326 !JE20140915 real,parameter :: sizecoalow=1.0327 !JE20140915 real,parameter :: sizecoahigh=10. !20 ! diameter in micrometers328 !JE20140915 real,parameter :: sizescolow=10.329 !JE20140915 real,parameter :: sizescohigh=30. ! in micrometers330 331 332 333 logical:: debutphy324 !JE20140915 REAL,parameter :: sizeacclow=0.06 325 !JE20140915 REAL,parameter :: sizeacchigh=1.0 326 !JE20140915 REAL,parameter :: sizecoalow=1.0 327 !JE20140915 REAL,parameter :: sizecoahigh=10. !20 ! diameter in micrometers 328 !JE20140915 REAL,parameter :: sizescolow=10. 329 !JE20140915 REAL,parameter :: sizescohigh=30. ! in micrometers 330 331 332 333 LOGICAL :: debutphy 334 334 REAL :: diff, auxr1,auxr2,auxr3,auxr4 335 real,dimension(klon,nbins) :: itvmean336 real,dimension(klon,nbins+1) :: itv2337 ! real,dimension(klon_glo,nbins) :: itvmean_glo338 ! real,dimension(:,:) , allocatable:: itvmean_glo339 ! real,dimension(:,:), allocatable:: itv2_glo335 REAL,DIMENSION(klon,nbins) :: itvmean 336 REAL,DIMENSION(klon,nbins+1) :: itv2 337 ! REAL,DIMENSION(klon_glo,nbins) :: itvmean_glo 338 ! REAL,DIMENSION(:,:) , ALLOCATABLE :: itvmean_glo 339 ! REAL,DIMENSION(:,:), ALLOCATABLE :: itv2_glo 340 340 341 integer, save :: counter,counter1 !dbg341 INTEGER, save :: counter,counter1 !dbg 342 342 REAL, DIMENSION(:,:),ALLOCATABLE,SAVE :: emisbinlocalmean,emisbinlocalmean2 !dbg 343 343 REAL, DIMENSION(:,:),ALLOCATABLE :: emisbinlocalmean2_glo 344 logical:: writeaerosoldistrib344 LOGICAL :: writeaerosoldistrib 345 345 !$OMP THREADPRIVATE(iminacclow,iminacchigh,imincoalow,imincoahigh) 346 346 347 347 writeaerosoldistrib=.FALSE. 348 348 IF (debutphy) THEN 349 if (sizedustmin>sizeacclow .or. sizedustmax<sizescohigh) THEN349 IF (sizedustmin>sizeacclow .OR. sizedustmax<sizescohigh) THEN 350 350 CALL abort_gcm('adaptdustemission', 'Dust range problem',1) 351 endif351 ENDIF 352 352 print *,'FINE DUST BIN: tuning EMISSION factor= ',tuningfactorfine 353 353 print *,'COA DUST BIN: tuning EMISSION factor= ',tuningfactorcoa … … 359 359 auxr4=9999. 360 360 do i=1,nbins+1 361 if(abs(sizeacclow-itv(i))<auxr1) THEN361 IF (abs(sizeacclow-itv(i))<auxr1) THEN 362 362 auxr1=abs( sizeacclow-itv(i)) 363 363 iminacclow=i 364 364 endif 365 if(abs(sizeacchigh-itv(i))<auxr2) THEN365 IF (abs(sizeacchigh-itv(i))<auxr2) THEN 366 366 auxr2=abs( sizeacchigh-itv(i)) 367 367 iminacchigh=i 368 368 imincoalow=i 369 369 endif 370 if(abs(sizecoahigh-itv(i))<auxr3) THEN370 IF (abs(sizecoahigh-itv(i))<auxr3) THEN 371 371 auxr3=abs( sizecoahigh-itv(i)) 372 372 imincoahigh=i 373 373 iminscolow=i 374 374 endif 375 if(abs(sizescohigh-itv(i))<auxr4) THEN375 IF (abs(sizescohigh-itv(i))<auxr4) THEN 376 376 auxr4=abs( sizescohigh-itv(i)) 377 377 iminscohigh=i … … 478 478 ! 480 = 5 days 479 479 IF (MOD(counter,1440)== 0) THEN 480 !if (MOD(counter,480). eq. 0) THEN480 !if (MOD(counter,480).EQ. 0) THEN 481 481 do k = 1,klon 482 482 do i=1,nbins … … 671 671 !print *,Pini(i,1),Pini(i,2),Pini(i,3),Pini(i,4),Pini(i,5) 672 672 DO nts=1,ntyp 673 !IF(xlon(i).ge.longmin. and.xlon(i).le.longmax.and. &674 !& xlat(i).ge.latmin. and.xlat(i).le.latmax &675 !& . and.pctsrf(i)>0.5.and.Pini(i,nts)>0.)THEN673 !IF(xlon(i).ge.longmin.AND.xlon(i).le.longmax.AND. & 674 !& xlat(i).ge.latmin.AND.xlat(i).le.latmax & 675 !& .AND.pctsrf(i)>0.5.AND.Pini(i,nts)>0.)THEN 676 676 ! JE20150605<< easier to read 677 IF(pctsrf(i,is_ter)>0.5. and.Pini(i,nts)>0.)THEN677 IF(pctsrf(i,is_ter)>0.5.AND.Pini(i,nts)>0.)THEN 678 678 ! JE20150605>> 679 679 sol(i,nts) = solini(i,nts) … … 774 774 cc=sqrt(1+ddust*(sizeclass(i)**(-2.5))) 775 775 xk=sqrt(abs(rop*gravity*sizeclass(i)/roa)) 776 if(bb<10.) THEN776 IF (bb<10.) THEN 777 777 dd=sqrt(1.928*(bb**0.092)-1.) 778 778 uth(i)=0.129*xk*cc/dd … … 848 848 do k=1,ntyp 849 849 ! PRINT*,'IKKK ',i,klon,k,ntyp 850 if(zos(i,k)==0..or.z01(i,k)==0.) THEN850 IF (zos(i,k)==0..or.z01(i,k)==0.) THEN 851 851 ! if (zos(i,k)<=0..or.z01(i,k)<=0.) THEN 852 852 ! if (zos(i,k)<0..or.z01(i,k)<0.) THEN … … 876 876 ! PRINT*,'IKKK D ',i,klon,k,ntyp 877 877 endif 878 if(feff(i,k)<0.)feff(i,k)=0.879 if(feffdbg(i,k)<0.)feffdbg(i,k)=0.880 if(feff(i,k)>1.)feff(i,k)=1.881 if(feffdbg(i,k)>1.)feffdbg(i,k)=1.878 IF (feff(i,k)<0.)feff(i,k)=0. 879 IF (feffdbg(i,k)<0.)feffdbg(i,k)=0. 880 IF (feff(i,k)>1.)feff(i,k)=1. 881 IF (feffdbg(i,k)>1.)feffdbg(i,k)=1. 882 882 ! PRINT*,'IKKK E ',i,klon,k,ntyp 883 883 endif … … 885 885 enddo 886 886 ! JE20150120<< 887 if(flag_feff == 0) THEN887 IF (flag_feff == 0) THEN 888 888 print *,'JE_dbg FORCED deactivated feff' 889 889 do i=1,klon … … 892 892 enddo 893 893 enddo 894 endif894 ENDIF 895 895 ! JE20150120>> 896 896 … … 1011 1011 ! GOTO 60 1012 1012 ! END IF 1013 ! IF(nb. eq.miniso)THEN1013 ! IF(nb.EQ.miniso)THEN 1014 1014 ! binsISOGRAD(k)=binsHR(nb) 1015 1015 ! istart=nb+1 … … 1239 1239 1240 1240 1241 !IF(n. eq.1.and.nat.eq.99)GOTO 801242 ! IF(n. eq.1) PRINT*,'nat1=',nat,'sol1=',sol(i,n)1243 IF(n==1. and.nat==99)GOTO 801241 !IF(n.EQ.1.AND.nat.EQ.99)GOTO 80 1242 ! IF(n.EQ.1) PRINT*,'nat1=',nat,'sol1=',sol(i,n) 1243 IF(n==1.AND.nat==99)GOTO 80 1244 1244 1245 1245 ENDIF 1246 1246 IF(.TRUE.) THEN 1247 1247 nat=int(sol(i,n)) 1248 IF(n == 1 . and. nat >= 14 .or. nat < 1 .or. nat > 19) GOTO 801248 IF(n == 1 .AND. nat >= 14 .OR. nat < 1 .OR. nat > 19) GOTO 80 1249 1249 ENDIF 1250 1250 !JE20150129>>>> … … 1256 1256 ustarsalt=0. 1257 1257 IF(ceff<=0..or.z0salt==0.)GOTO 80 1258 IF(cerod==0. or.cpcent==0.)GOTO 801258 IF(cerod==0.OR.cpcent==0.)GOTO 80 1259 1259 ! in cm: utmin, umin, z10m, z0salt, ustarns 1260 1260 ! in meters: modwm … … 1275 1275 do ni=1,kfin 1276 1276 fdp1=1.-(uth2(ni)/(ceff*ustarsalt)) 1277 if(fdp1<=0..or.srel2(nat,ni)==0.) THEN1277 IF (fdp1<=0..or.srel2(nat,ni)==0.) THEN 1278 1278 ad1=0. 1279 1279 ad2=0. … … 1374 1374 IMPLICIT NONE 1375 1375 1376 integeri,n,kfin,ideb,ifin,istep,kfin21377 realdsmin,dsmax1376 INTEGER i,n,kfin,ideb,ifin,istep,kfin2 1377 REAL dsmin,dsmax 1378 1378 1379 1379 ! estimation of the reduced soil size distribution … … 1426 1426 1427 1427 IMPLICIT NONE 1428 integeri1,i2,nclass,iout,ismin,ismax,k2,ihalf,idiff1429 realsiz(nclass),ds1428 INTEGER i1,i2,nclass,iout,ismin,ismax,k2,ihalf,idiff 1429 REAL siz(nclass),ds 1430 1430 !c----------------------------- 1431 1431 iout=0
Note: See TracChangeset
for help on using the changeset viewer.