Changeset 1347 for LMDZ4/branches/LMDZ4V5.0-dev/libf
- Timestamp:
- Apr 13, 2010, 5:12:56 PM (15 years ago)
- Location:
- LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/aeropt_2bands.F90
r1279 r1347 10 10 USE dimphy 11 11 USE aero_mod 12 USE phys_local_var_mod, only: absvisaer 12 13 13 14 ! Yves Balkanski le 12 avril 2006 … … 1119 1120 ENDDO 1120 1121 ENDDO 1122 1123 1124 inu=1 1125 DO i=1, KLON 1126 absvisaer(i)=SUM((1-piz_allaer(i,:,:,inu))*tau_allaer(i,:,:,inu)) 1127 END DO 1121 1128 1122 1129 DEALLOCATE(aerosol_name) -
LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/aeropt_5wv.F90
r1299 r1347 11 11 USE DIMPHY 12 12 USE aero_mod 13 USE phys_local_var_mod, only: od550aer,od865aer,ec550aer,od550lt1aer 13 14 14 15 ! … … 141 142 REAL :: tau3d(KLON,KLEV), piz3d(KLON,KLEV), cg3d(KLON,KLEV) 142 143 REAL :: abs3d(KLON,KLEV) ! epaisseur optique d'absorption 143 144 REAL :: dh(KLON,KLEV) 144 145 145 146 REAL :: alpha_aers_5wv(nbre_RH,las,naero_soluble) ! ext. coeff. Soluble comp. units *** m2/g … … 621 622 DO k=1, klev 622 623 DO i=1, klon 624 ! IF (t_seri(i,k).EQ.0) stop 'stop aeropt_5wv T ' 625 ! IF (pplay(i,k).EQ.0) stop 'stop aeropt_5wv p ' 623 626 zrho=pplay(i,k)/t_seri(i,k)/RD ! kg/m3 627 dh(i,k)=pdel(i,k)/(gravit*zrho) 624 628 !CDIR UNROLL=naero_spc 625 629 mass_temp(i,k,:) = m_allaer(i,k,:) / zrho / 1.e+9 … … 846 850 ! ENDDO 847 851 852 DO i=1, klon 853 od550aer(i)=SUM(tausum(i,2,:)) 854 od865aer(i)=SUM(tausum(i,5,:)) 855 DO k=1, KLEV 856 ec550aer(i,k)=SUM(tau(i,k,2,:))/dh(i,k) 857 END DO 858 END DO 859 od550lt1aer(:)=tausum(:,2,id_ASSO4M)+tausum(:,2,id_ASBCM)+tausum(:,2,id_AIBCM)+ & 860 tausum(:,2,id_ASPOMM)+tausum(:,2,id_AIPOMM)+tausum(:,2,id_ASSSM)+ & 861 0.03*tausum(:,2,id_CSSSM)+0.4*tausum(:,2,id_CIDUSTM) 862 863 864 848 865 DEALLOCATE(aerosol_name) 849 866 -
LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/newmicro.F
r1306 r1347 11 11 12 12 USE dimphy 13 USE phys_local_var_mod, only: scdnc,cldncl,reffclwtop,lcc, 14 . reffclws,reffclwc,cldnvi,lcc3d, 15 . lcc3dcon,lcc3dstra 16 USE phys_state_var_mod, only: rnebcon,clwcon 13 17 IMPLICIT none 14 18 c====================================================================== … … 46 50 #include "radepsi.h" 47 51 #include "radopt.h" 52 c choix de l'hypothese de recouvrememnt nuageuse 53 LOGICAL RANDOM,MAXIMUM_RANDOM,MAXIMUM,FIRST 54 parameter (RANDOM=.FALSE., MAXIMUM_RANDOM=.TRUE., MAXIMUM=.FALSE.) 55 c Hypoyhese de recouvrement : MAXIMUM_RANDOM 56 INTEGER flag_max 57 REAL phase3d(klon, klev),dh(klon, klev),pdel(klon, klev), 58 . zrho(klon, klev) 59 REAL tcc(klon), ftmp(klon), lcc_integrat(klon), height(klon) 60 REAL thres_tau,thres_neb 61 PARAMETER (thres_tau=0.3, thres_neb=0.001) 62 REAL t_tmp 63 REAL gravit 64 PARAMETER (gravit=9.80616) !m/s2 65 REAL pqlwpcon(klon, klev), pqlwpstra(klon, klev) 66 c 48 67 REAL paprs(klon,klev+1), pplay(klon,klev) 49 68 REAL t(klon,klev) … … 131 150 xflwc = 0.d0 132 151 xfiwc = 0.d0 152 153 ! Initialisation 154 reliq=0. 155 reice=0. 133 156 134 157 DO k = 1, klev … … 471 494 pcl(i)=1.-pcl(i) 472 495 ENDDO 473 496 497 c ======================================================== 498 ! DIAGNOSTICS CALCULATION FOR CMIP5 PROTOCOL 499 c ======================================================== 500 !! change by Nicolas Yan (LSCE) 501 !! Cloud Droplet Number Concentration (CDNC) : 3D variable 502 !! Fractionnal cover by liquid water cloud (LCC3D) : 3D variable 503 !! Cloud Droplet Number Concentration at top of cloud (CLDNCL) : 2D variable 504 !! Droplet effective radius at top of cloud (REFFCLWTOP) : 2D variable 505 !! Fractionnal cover by liquid water at top of clouds (LCC) : 2D variable 506 IF (ok_newmicro) THEN 507 IF (ok_aie) THEN 508 DO k = 1, klev 509 DO i = 1, klon 510 phase3d(i,k)=1-zfice2(i,k) 511 IF (pclc(i,k) .LE. seuil_neb) THEN 512 lcc3d(i,k)=seuil_neb*phase3d(i,k) 513 ELSE 514 lcc3d(i,k)=pclc(i,k)*phase3d(i,k) 515 ENDIF 516 scdnc(i,k)=lcc3d(i,k)*cdnc(i,k) ! m-3 517 ENDDO 518 ENDDO 519 520 DO i=1,klon 521 lcc(i)=0. 522 reffclwtop(i)=0. 523 cldncl(i)=0. 524 IF(RANDOM .OR. MAXIMUM_RANDOM) tcc(i) = 1. 525 IF(MAXIMUM) tcc(i) = 0. 526 ENDDO 527 528 FIRST=.TRUE. 529 530 DO i=1,klon 531 DO k=klev-1,1,-1 !From TOA down 532 533 534 ! Test, if the cloud optical depth exceeds the necessary 535 ! threshold: 536 537 IF (pcltau(i,k).GT.thres_tau .AND. pclc(i,k).GT.thres_neb) 538 . THEN 539 ! To calculate the right Temperature at cloud top, 540 ! interpolate it between layers: 541 t_tmp = t(i,k) + 542 . (paprs(i,k+1)-pplay(i,k))/(pplay(i,k+1)-pplay(i,k)) 543 . * ( t(i,k+1) - t(i,k) ) 544 545 IF(MAXIMUM) THEN 546 IF(FIRST) THEN 547 write(*,*)'Hypothese de recouvrement: MAXIMUM' 548 FIRST=.FALSE. 549 ENDIF 550 flag_max= -1. 551 ftmp(i) = MAX(tcc(i),pclc(i,k)) 552 ENDIF 553 554 IF(RANDOM) THEN 555 IF(FIRST) THEN 556 write(*,*)'Hypothese de recouvrement: RANDOM' 557 FIRST=.FALSE. 558 ENDIF 559 flag_max= 1. 560 ftmp(i) = tcc(i) * (1-pclc(i,k)) 561 ENDIF 562 563 IF(MAXIMUM_RANDOM) THEN 564 IF(FIRST) THEN 565 write(*,*)'Hypothese de recouvrement: MAXIMUM_ 566 . RANDOM' 567 FIRST=.FALSE. 568 ENDIF 569 flag_max= 1. 570 ftmp(i) = tcc(i) * 571 . (1. - MAX(pclc(i,k),pclc(i,k+1))) / 572 . (1. - MIN(pclc(i,k+1),1.-thres_neb)) 573 ENDIF 574 c Effective radius of cloud droplet at top of cloud (m) 575 reffclwtop(i) = reffclwtop(i) + rad_chaud_tab(i,k) * 576 . 1.0E-06 * phase3d(i,k) * ( tcc(i) - ftmp(i))*flag_max 577 c CDNC at top of cloud (m-3) 578 cldncl(i) = cldncl(i) + cdnc(i,k) * phase3d(i,k) * 579 . (tcc(i) - ftmp(i))*flag_max 580 c Liquid Cloud Content at top of cloud 581 lcc(i) = lcc(i) + phase3d(i,k) * (tcc(i)-ftmp(i))* 582 . flag_max 583 c Total Cloud Content at top of cloud 584 tcc(i)=ftmp(i) 585 586 ENDIF ! is there a visible, not-too-small cloud? 587 ENDDO ! loop over k 588 589 IF(RANDOM .OR. MAXIMUM_RANDOM) tcc(i)=1.-tcc(i) 590 ENDDO ! loop over i 591 592 !! Convective and Stratiform Cloud Droplet Effective Radius (REFFCLWC REFFCLWS) 593 DO i = 1, klon 594 DO k = 1, klev 595 pqlwpcon(i,k)=rnebcon(i,k)*clwcon(i,k) ! fraction eau liquide convective 596 pqlwpstra(i,k)=pclc(i,k)*phase3d(i,k)-pqlwpcon(i,k) ! fraction eau liquide stratiforme 597 IF (pqlwpstra(i,k) .LE. 0.0) pqlwpstra(i,k)=0.0 598 ! Convective Cloud Droplet Effective Radius (REFFCLWC) : variable 3D 599 reffclwc(i,k)=1.1 600 & *((pqlwpcon(i,k)*pplay(i,k)/(RD * T(i,k))) 601 & /(4./3*RPI*1000.*cdnc(i,k)) )**(1./3.) 602 reffclwc(i,k) = MAX(reffclwc(i,k) * 1e6, 5.) 603 604 ! Stratiform Cloud Droplet Effective Radius (REFFCLWS) : variable 3D 605 IF ((pclc(i,k)-rnebcon(i,k)) .LE. seuil_neb) THEN ! tout sous la forme convective 606 reffclws(i,k)=0.0 607 lcc3dstra(i,k)= 0.0 608 ELSE 609 reffclws(i,k) = (pclc(i,k)*phase3d(i,k)* 610 & rad_chaud_tab(i,k)- 611 & pqlwpcon(i,k)*reffclwc(i,k)) 612 IF(reffclws(i,k) .LE. 0.0) reffclws(i,k)=0.0 613 lcc3dstra(i,k)=pqlwpstra(i,k) 614 ENDIF 615 !Convertion from um to m 616 IF(rnebcon(i,k). LE. seuil_neb) THEN 617 reffclwc(i,k) = reffclwc(i,k)*seuil_neb*clwcon(i,k) 618 & *1.0E-06 619 lcc3dcon(i,k)= seuil_neb*clwcon(i,k) 620 ELSE 621 reffclwc(i,k) = reffclwc(i,k)*pqlwpcon(i,k) 622 & *1.0E-06 623 lcc3dcon(i,k) = pqlwpcon(i,k) 624 ENDIF 625 626 reffclws(i,k) = reffclws(i,k)*1.0E-06 627 628 ENDDO !klev 629 ENDDO !klon 630 631 !! Column Integrated Cloud Droplet Number (CLDNVI) : variable 2D 632 DO k = 1, klev 633 DO i = 1, klon 634 pdel(i,k) = paprs(i,k)-paprs(i,k+1) 635 zrho(i,k)=pplay(i,k)/t(i,k)/RD ! kg/m3 636 dh(i,k)=pdel(i,k)/(gravit*zrho(i,k)) ! hauteur de chaque boite (m) 637 ENDDO 638 ENDDO 639 c 640 DO i = 1, klon 641 cldnvi(i)=0. 642 lcc_integrat(i)=0. 643 height(i)=0. 644 DO k = 1, klev 645 cldnvi(i)=cldnvi(i)+cdnc(i,k)*lcc3d(i,k)*dh(i,k) 646 lcc_integrat(i)=lcc_integrat(i)+lcc3d(i,k)*dh(i,k) 647 height(i)=height(i)+dh(i,k) 648 ENDDO ! klev 649 lcc_integrat(i)=lcc_integrat(i)/height(i) 650 IF (lcc_integrat(i) .LE. 1.0E-03) THEN 651 cldnvi(i)=cldnvi(i)*lcc(i)/seuil_neb 652 ELSE 653 cldnvi(i)=cldnvi(i)*lcc(i)/lcc_integrat(i) 654 ENDIF 655 ENDDO ! klon 656 657 DO i = 1, klon 658 DO k = 1, klev 659 IF (scdnc(i,k) .LE. 0.0) scdnc(i,k)=0.0 660 IF (reffclws(i,k) .LE. 0.0) reffclws(i,k)=0.0 661 IF (reffclwc(i,k) .LE. 0.0) reffclwc(i,k)=0.0 662 IF (lcc3d(i,k) .LE. 0.0) lcc3d(i,k)=0.0 663 IF (lcc3dcon(i,k) .LE. 0.0) lcc3dcon(i,k)=0.0 664 IF (lcc3dstra(i,k) .LE. 0.0) lcc3dstra(i,k)=0.0 665 ENDDO 666 IF (reffclwtop(i) .LE. 0.0) reffclwtop(i)=0.0 667 IF (cldncl(i) .LE. 0.0) cldncl(i)=0.0 668 IF (cldnvi(i) .LE. 0.0) cldnvi(i)=0.0 669 IF (lcc(i) .LE. 0.0) lcc(i)=0.0 670 ENDDO 671 672 ENDIF !ok_aie 673 ENDIF !ok newmicro 674 c 474 675 C 475 676 RETURN -
LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/phys_local_var_mod.F90
r1279 r1347 88 88 REAL, SAVE, ALLOCATABLE :: tau3d_aero(:,:,:,:) 89 89 !$OMP THREADPRIVATE(tau3d_aero) 90 REAL, SAVE, ALLOCATABLE :: scdnc(:,:) 91 !$OMP THREADPRIVATE(scdnc) 92 REAL, SAVE, ALLOCATABLE :: cldncl(:) 93 !$OMP THREADPRIVATE(cldncl) 94 REAL, SAVE, ALLOCATABLE :: reffclwtop(:) 95 !$OMP THREADPRIVATE(reffclwtop) 96 REAL, SAVE, ALLOCATABLE :: lcc(:) 97 !$OMP THREADPRIVATE(lcc) 98 REAL, SAVE, ALLOCATABLE :: reffclws(:,:) 99 !$OMP THREADPRIVATE(reffclws) 100 REAL, SAVE, ALLOCATABLE :: reffclwc(:,:) 101 !$OMP THREADPRIVATE(reffclwc) 102 REAL, SAVE, ALLOCATABLE :: cldnvi(:) 103 !$OMP THREADPRIVATE(cldnvi) 104 REAL, SAVE, ALLOCATABLE :: lcc3d(:,:) 105 !$OMP THREADPRIVATE(lcc3d) 106 REAL, SAVE, ALLOCATABLE :: lcc3dcon(:,:) 107 !$OMP THREADPRIVATE(lcc3dcon) 108 REAL, SAVE, ALLOCATABLE :: lcc3dstra(:,:) 109 !$OMP THREADPRIVATE(lcc3dstra) 110 REAL, SAVE, ALLOCATABLE :: od550aer(:) 111 !$OMP THREADPRIVATE(od550aer) 112 REAL, SAVE, ALLOCATABLE :: absvisaer(:) 113 !$OMP THREADPRIVATE(absvisaer) 114 REAL, SAVE, ALLOCATABLE :: od865aer(:) 115 !$OMP THREADPRIVATE(od865aer) 116 REAL, SAVE, ALLOCATABLE :: ec550aer(:,:) 117 !$OMP THREADPRIVATE(ec550aer) 118 REAL, SAVE, ALLOCATABLE :: od550lt1aer(:) 119 !$OMP THREADPRIVATE(od550lt1aer) 120 REAL, SAVE, ALLOCATABLE :: sconcso4(:) 121 !$OMP THREADPRIVATE(sconcso4) 122 REAL, SAVE, ALLOCATABLE :: sconcoa(:) 123 !$OMP THREADPRIVATE(sconcoa) 124 REAL, SAVE, ALLOCATABLE :: sconcbc(:) 125 !$OMP THREADPRIVATE(sconcbc) 126 REAL, SAVE, ALLOCATABLE :: sconcss(:) 127 !$OMP THREADPRIVATE(sconcss) 128 REAL, SAVE, ALLOCATABLE :: sconcdust(:) 129 !$OMP THREADPRIVATE(sconcdust) 130 REAL, SAVE, ALLOCATABLE :: concso4(:,:) 131 !$OMP THREADPRIVATE(concso4) 132 REAL, SAVE, ALLOCATABLE :: concoa(:,:) 133 !$OMP THREADPRIVATE(concoa) 134 REAL, SAVE, ALLOCATABLE :: concbc(:,:) 135 !$OMP THREADPRIVATE(concbc) 136 REAL, SAVE, ALLOCATABLE :: concss(:,:) 137 !$OMP THREADPRIVATE(concss) 138 REAL, SAVE, ALLOCATABLE :: concdust(:,:) 139 !$OMP THREADPRIVATE(concdust) 140 REAL, SAVE, ALLOCATABLE :: loadso4(:) 141 !$OMP THREADPRIVATE(loadso4) 142 REAL, SAVE, ALLOCATABLE :: loadoa(:) 143 !$OMP THREADPRIVATE(loadoa) 144 REAL, SAVE, ALLOCATABLE :: loadbc(:) 145 !$OMP THREADPRIVATE(loadbc) 146 REAL, SAVE, ALLOCATABLE :: loadss(:) 147 !$OMP THREADPRIVATE(loadss) 148 REAL, SAVE, ALLOCATABLE :: loaddust(:) 149 !$OMP THREADPRIVATE(loaddust) 150 REAL, SAVE, ALLOCATABLE :: load_tmp1(:) 151 !$OMP THREADPRIVATE(load_tmp1) 152 REAL, SAVE, ALLOCATABLE :: load_tmp2(:) 153 !$OMP THREADPRIVATE(load_tmp2) 154 REAL, SAVE, ALLOCATABLE :: load_tmp3(:) 155 !$OMP THREADPRIVATE(load_tmp3) 156 REAL, SAVE, ALLOCATABLE :: load_tmp4(:) 157 !$OMP THREADPRIVATE(load_tmp4) 158 REAL, SAVE, ALLOCATABLE :: load_tmp5(:) 159 !$OMP THREADPRIVATE(load_tmp5) 160 REAL, SAVE, ALLOCATABLE :: load_tmp6(:) 161 !$OMP THREADPRIVATE(load_tmp6) 162 REAL, SAVE, ALLOCATABLE :: load_tmp7(:) 163 !$OMP THREADPRIVATE(load_tmp7) 90 164 91 165 CONTAINS … … 131 205 allocate(tausum_aero(klon,nwave,naero_spc)) 132 206 allocate(tau3d_aero(klon,klev,nwave,naero_spc)) 207 allocate(scdnc(klon, klev)) 208 allocate(cldncl(klon)) 209 allocate(reffclwtop(klon)) 210 allocate(lcc(klon)) 211 allocate(reffclws(klon, klev)) 212 allocate(reffclwc(klon, klev)) 213 allocate(cldnvi(klon)) 214 allocate(lcc3d(klon, klev)) 215 allocate(lcc3dcon(klon, klev)) 216 allocate(lcc3dstra(klon, klev)) 217 allocate(od550aer(klon)) 218 allocate(od865aer(klon)) 219 allocate(absvisaer(klon)) 220 allocate(ec550aer(klon,klev)) 221 allocate(od550lt1aer(klon)) 222 allocate(sconcso4(klon)) 223 allocate(sconcoa(klon)) 224 allocate(sconcbc(klon)) 225 allocate(sconcss(klon)) 226 allocate(sconcdust(klon)) 227 allocate(concso4(klon,klev)) 228 allocate(concoa(klon,klev)) 229 allocate(concbc(klon,klev)) 230 allocate(concss(klon,klev)) 231 allocate(concdust(klon,klev)) 232 allocate(loadso4(klon)) 233 allocate(loadoa(klon)) 234 allocate(loadbc(klon)) 235 allocate(loadss(klon)) 236 allocate(loaddust(klon)) 237 allocate(load_tmp1(klon)) 238 allocate(load_tmp2(klon)) 239 allocate(load_tmp3(klon)) 240 allocate(load_tmp4(klon)) 241 allocate(load_tmp5(klon)) 242 allocate(load_tmp6(klon)) 243 allocate(load_tmp7(klon)) 133 244 134 245 END SUBROUTINE phys_local_var_init … … 170 281 deallocate(tausum_aero) 171 282 deallocate(tau3d_aero) 283 deallocate(scdnc) 284 deallocate(cldncl) 285 deallocate(reffclwtop) 286 deallocate(lcc) 287 deallocate(reffclws) 288 deallocate(reffclwc) 289 deallocate(cldnvi) 290 deallocate(lcc3d) 291 deallocate(lcc3dcon) 292 deallocate(lcc3dstra) 293 deallocate(od550aer) 294 deallocate(od865aer) 295 deallocate(absvisaer) 296 deallocate(ec550aer) 297 deallocate(od550lt1aer) 298 deallocate(sconcso4) 299 deallocate(sconcoa) 300 deallocate(sconcbc) 301 deallocate(sconcss) 302 deallocate(sconcdust) 303 deallocate(concso4) 304 deallocate(concoa) 305 deallocate(concbc) 306 deallocate(concss) 307 deallocate(concdust) 308 deallocate(loadso4) 309 deallocate(loadoa) 310 deallocate(loadbc) 311 deallocate(loadss) 312 deallocate(loaddust) 313 deallocate(load_tmp1) 314 deallocate(load_tmp2) 315 deallocate(load_tmp3) 316 deallocate(load_tmp4) 317 deallocate(load_tmp5) 318 deallocate(load_tmp6) 319 deallocate(load_tmp7) 172 320 deallocate(d_u_hin,d_v_hin,d_t_hin) 173 321 -
LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/phys_output_mod.F90
r1308 r1347 54 54 55 55 !!! 1D 56 type(ctrl_out),save :: o_phis = ctrl_out((/ 1, 1, 10, 1, 1 /), 'phis')57 type(ctrl_out),save :: o_aire = ctrl_out((/ 1, 1, 10, 1 , 1 /),'aire')56 type(ctrl_out),save :: o_phis = ctrl_out((/ 1, 1, 10, 5, 1 /), 'phis') 57 type(ctrl_out),save :: o_aire = ctrl_out((/ 1, 1, 10, 10, 1 /),'aire') 58 58 type(ctrl_out),save :: o_contfracATM = ctrl_out((/ 10, 1, 1, 10, 10 /),'contfracATM') 59 59 type(ctrl_out),save :: o_contfracOR = ctrl_out((/ 10, 1, 1, 10, 10 /),'contfracOR') … … 61 61 62 62 !!! 2D 63 type(ctrl_out),save :: o_flat = ctrl_out((/ 10, 1, 10, 10, 1 /),'flat')63 type(ctrl_out),save :: o_flat = ctrl_out((/ 5, 1, 10, 5, 1 /),'flat') 64 64 type(ctrl_out),save :: o_slp = ctrl_out((/ 1, 1, 1, 10, 1 /),'slp') 65 type(ctrl_out),save :: o_tsol = ctrl_out((/ 1, 1, 1, 1, 1 /),'tsol')66 type(ctrl_out),save :: o_t2m = ctrl_out((/ 1, 1, 1, 1, 1 /),'t2m')65 type(ctrl_out),save :: o_tsol = ctrl_out((/ 1, 1, 1, 5, 1 /),'tsol') 66 type(ctrl_out),save :: o_t2m = ctrl_out((/ 1, 1, 1, 5, 1 /),'t2m') 67 67 type(ctrl_out),save :: o_t2m_min = ctrl_out((/ 1, 1, 10, 10, 10 /),'t2m_min') 68 68 type(ctrl_out),save :: o_t2m_max = ctrl_out((/ 1, 1, 10, 10, 10 /),'t2m_max') … … 75 75 type(ctrl_out),save :: o_wind10max = ctrl_out((/ 10, 1, 10, 10, 10 /),'wind10max') 76 76 type(ctrl_out),save :: o_sicf = ctrl_out((/ 1, 1, 10, 10, 10 /),'sicf') 77 type(ctrl_out),save :: o_q2m = ctrl_out((/ 1, 1, 1, 1, 1 /),'q2m')78 type(ctrl_out),save :: o_u10m = ctrl_out((/ 1, 1, 1, 1, 1 /),'u10m')79 type(ctrl_out),save :: o_v10m = ctrl_out((/ 1, 1, 1, 1, 1 /),'v10m')80 type(ctrl_out),save :: o_psol = ctrl_out((/ 1, 1, 1, 1, 1 /),'psol')77 type(ctrl_out),save :: o_q2m = ctrl_out((/ 1, 1, 1, 5, 1 /),'q2m') 78 type(ctrl_out),save :: o_u10m = ctrl_out((/ 1, 1, 1, 5, 1 /),'u10m') 79 type(ctrl_out),save :: o_v10m = ctrl_out((/ 1, 1, 1, 5, 1 /),'v10m') 80 type(ctrl_out),save :: o_psol = ctrl_out((/ 1, 1, 1, 5, 1 /),'psol') 81 81 type(ctrl_out),save :: o_qsurf = ctrl_out((/ 1, 10, 10, 10, 10 /),'qsurf') 82 82 … … 91 91 ctrl_out((/ 10, 4, 10, 10, 10 /),'v10m_sic') /) 92 92 93 type(ctrl_out),save :: o_qsol = ctrl_out((/ 1, 10, 10, 1 , 1/),'qsol')93 type(ctrl_out),save :: o_qsol = ctrl_out((/ 1, 10, 10, 10, 10 /),'qsol') 94 94 95 95 type(ctrl_out),save :: o_ndayrain = ctrl_out((/ 1, 10, 10, 10, 10 /),'ndayrain') 96 type(ctrl_out),save :: o_precip = ctrl_out((/ 1, 1, 1, 1, 1 /),'precip') 97 type(ctrl_out),save :: o_plul = ctrl_out((/ 1, 1, 1, 1, 10 /),'plul') 98 99 type(ctrl_out),save :: o_pluc = ctrl_out((/ 1, 1, 1, 1, 10 /),'pluc') 100 type(ctrl_out),save :: o_snow = ctrl_out((/ 1, 1, 10, 1, 10 /),'snow') 101 type(ctrl_out),save :: o_evap = ctrl_out((/ 1, 1, 10, 1, 10 /),'evap') 96 type(ctrl_out),save :: o_precip = ctrl_out((/ 1, 1, 1, 5, 10 /),'precip') 97 type(ctrl_out),save :: o_plul = ctrl_out((/ 1, 1, 1, 10, 10 /),'plul') 98 99 type(ctrl_out),save :: o_pluc = ctrl_out((/ 1, 1, 1, 5, 10 /),'pluc') 100 type(ctrl_out),save :: o_snow = ctrl_out((/ 1, 1, 10, 5, 10 /),'snow') 101 type(ctrl_out),save :: o_evap = ctrl_out((/ 1, 1, 10, 10, 10 /),'evap') 102 type(ctrl_out),save,dimension(4) :: o_evap_srf = (/ ctrl_out((/ 1, 1, 10, 10, 10 /),'evap_ter'), & 103 ctrl_out((/ 1, 1, 10, 10, 10 /),'evap_lic'), & 104 ctrl_out((/ 1, 1, 10, 10, 10 /),'evap_oce'), & 105 ctrl_out((/ 1, 1, 10, 10, 10 /),'evap_sic') /) 106 type(ctrl_out),save :: o_msnow = ctrl_out((/ 1, 10, 10, 10, 10 /),'msnow') 107 type(ctrl_out),save :: o_fsnow = ctrl_out((/ 1, 10, 10, 10, 10 /),'fsnow') 108 102 109 type(ctrl_out),save :: o_tops = ctrl_out((/ 1, 1, 10, 10, 10 /),'tops') 103 110 type(ctrl_out),save :: o_tops0 = ctrl_out((/ 1, 5, 10, 10, 10 /),'tops0') 104 type(ctrl_out),save :: o_topl = ctrl_out((/ 1, 1, 10, 1, 10 /),'topl')111 type(ctrl_out),save :: o_topl = ctrl_out((/ 1, 1, 10, 5, 10 /),'topl') 105 112 type(ctrl_out),save :: o_topl0 = ctrl_out((/ 1, 5, 10, 10, 10 /),'topl0') 106 113 type(ctrl_out),save :: o_SWupTOA = ctrl_out((/ 1, 4, 10, 10, 10 /),'SWupTOA') … … 108 115 type(ctrl_out),save :: o_SWdnTOA = ctrl_out((/ 1, 4, 10, 10, 10 /),'SWdnTOA') 109 116 type(ctrl_out),save :: o_SWdnTOAclr = ctrl_out((/ 1, 4, 10, 10, 10 /),'SWdnTOAclr') 117 type(ctrl_out),save :: o_nettop = ctrl_out((/ 1, 4, 10, 10, 10 /),'nettop') 118 110 119 type(ctrl_out),save :: o_SWup200 = ctrl_out((/ 1, 10, 10, 10, 10 /),'SWup200') 111 120 type(ctrl_out),save :: o_SWup200clr = ctrl_out((/ 10, 1, 10, 10, 10 /),'SWup200clr') … … 123 132 type(ctrl_out),save :: o_LWdn200 = ctrl_out((/ 1, 10, 10, 10, 10 /),'LWdn200') 124 133 type(ctrl_out),save :: o_LWdn200clr = ctrl_out((/ 1, 10, 10, 10, 10 /),'LWdn200clr') 125 type(ctrl_out),save :: o_sols = ctrl_out((/ 1, 1, 10, 1 , 10 /),'sols')134 type(ctrl_out),save :: o_sols = ctrl_out((/ 1, 1, 10, 10, 10 /),'sols') 126 135 type(ctrl_out),save :: o_sols0 = ctrl_out((/ 1, 5, 10, 10, 10 /),'sols0') 127 type(ctrl_out),save :: o_soll = ctrl_out((/ 1, 1, 10, 1 , 10 /),'soll')136 type(ctrl_out),save :: o_soll = ctrl_out((/ 1, 1, 10, 10, 10 /),'soll') 128 137 type(ctrl_out),save :: o_soll0 = ctrl_out((/ 1, 5, 10, 10, 10 /),'soll0') 129 138 type(ctrl_out),save :: o_radsol = ctrl_out((/ 1, 1, 10, 10, 10 /),'radsol') 130 type(ctrl_out),save :: o_SWupSFC = ctrl_out((/ 1, 4, 10, 10, 10 /),'SWupSFC')139 type(ctrl_out),save :: o_SWupSFC = ctrl_out((/ 1, 4, 10, 5, 10 /),'SWupSFC') 131 140 type(ctrl_out),save :: o_SWupSFCclr = ctrl_out((/ 1, 4, 10, 10, 10 /),'SWupSFCclr') 132 type(ctrl_out),save :: o_SWdnSFC = ctrl_out((/ 1, 1, 10, 10, 10 /),'SWdnSFC')133 type(ctrl_out),save :: o_SWdnSFCclr = ctrl_out((/ 1, 4, 10, 10, 10 /),'SWdnSFCclr')141 type(ctrl_out),save :: o_SWdnSFC = ctrl_out((/ 1, 1, 10, 5, 10 /),'SWdnSFC') 142 type(ctrl_out),save :: o_SWdnSFCclr = ctrl_out((/ 1, 4, 10, 5, 10 /),'SWdnSFCclr') 134 143 type(ctrl_out),save :: o_LWupSFC = ctrl_out((/ 1, 4, 10, 10, 10 /),'LWupSFC') 135 type(ctrl_out),save :: o_LWupSFCclr = ctrl_out((/ 1, 4, 10, 10, 10 /),'LWupSFCclr')136 type(ctrl_out),save :: o_LWdnSFC = ctrl_out((/ 1, 4, 10, 10, 10 /),'LWdnSFC')137 type(ctrl_out),save :: o_LWdnSFCclr = ctrl_out((/ 1, 4, 10, 10, 10 /),'LWdnSFCclr')138 type(ctrl_out),save :: o_bils = ctrl_out((/ 1, 2, 10, 1, 10 /),'bils')139 type(ctrl_out),save :: o_sens = ctrl_out((/ 1, 1, 10, 1, 1/),'sens')140 type(ctrl_out),save :: o_fder = ctrl_out((/ 1, 2, 10, 1 , 10 /),'fder')144 type(ctrl_out),save :: o_LWupSFCclr = ctrl_out((/ 1, 4, 10, 5, 10 /),'LWupSFCclr') 145 type(ctrl_out),save :: o_LWdnSFC = ctrl_out((/ 1, 4, 10, 5, 10 /),'LWdnSFC') 146 type(ctrl_out),save :: o_LWdnSFCclr = ctrl_out((/ 1, 4, 10, 5, 10 /),'LWdnSFCclr') 147 type(ctrl_out),save :: o_bils = ctrl_out((/ 1, 2, 10, 5, 10 /),'bils') 148 type(ctrl_out),save :: o_sens = ctrl_out((/ 1, 1, 10, 5, 10 /),'sens') 149 type(ctrl_out),save :: o_fder = ctrl_out((/ 1, 2, 10, 10, 10 /),'fder') 141 150 type(ctrl_out),save :: o_ffonte = ctrl_out((/ 1, 10, 10, 10, 10 /),'ffonte') 142 151 type(ctrl_out),save :: o_fqcalving = ctrl_out((/ 1, 10, 10, 10, 10 /),'fqcalving') 143 152 type(ctrl_out),save :: o_fqfonte = ctrl_out((/ 1, 10, 10, 10, 10 /),'fqfonte') 144 153 145 type(ctrl_out),save,dimension(4) :: o_taux_srf = (/ ctrl_out((/ 1, 4, 10, 1, 10 /),'taux_ter'), & 146 ctrl_out((/ 1, 4, 10, 1, 10 /),'taux_lic'), & 147 ctrl_out((/ 1, 4, 10, 1, 10 /),'taux_oce'), & 148 ctrl_out((/ 1, 4, 10, 1, 10 /),'taux_sic') /) 149 150 type(ctrl_out),save,dimension(4) :: o_tauy_srf = (/ ctrl_out((/ 1, 4, 10, 1, 10 /),'tauy_ter'), & 151 ctrl_out((/ 1, 4, 10, 1, 10 /),'tauy_lic'), & 152 ctrl_out((/ 1, 4, 10, 1, 10 /),'tauy_oce'), & 153 ctrl_out((/ 1, 4, 10, 1, 10 /),'tauy_sic') /) 154 155 156 type(ctrl_out),save,dimension(4) :: o_pourc_srf = (/ ctrl_out((/ 1, 4, 10, 1, 10 /),'pourc_ter'), & 157 ctrl_out((/ 1, 4, 10, 1, 10 /),'pourc_lic'), & 158 ctrl_out((/ 1, 4, 10, 1, 10 /),'pourc_oce'), & 159 ctrl_out((/ 1, 4, 10, 1, 10 /),'pourc_sic') /) 160 161 type(ctrl_out),save,dimension(4) :: o_fract_srf = (/ ctrl_out((/ 1, 4, 10, 1, 10 /),'fract_ter'), & 162 ctrl_out((/ 1, 4, 10, 1, 10 /),'fract_lic'), & 163 ctrl_out((/ 1, 4, 10, 1, 10 /),'fract_oce'), & 164 ctrl_out((/ 1, 4, 10, 1, 10 /),'fract_sic') /) 165 166 type(ctrl_out),save,dimension(4) :: o_tsol_srf = (/ ctrl_out((/ 1, 4, 10, 1, 10 /),'tsol_ter'), & 167 ctrl_out((/ 1, 4, 10, 1, 10 /),'tsol_lic'), & 168 ctrl_out((/ 1, 4, 10, 1, 10 /),'tsol_oce'), & 169 ctrl_out((/ 1, 4, 10, 1, 10 /),'tsol_sic') /) 154 type(ctrl_out),save :: o_taux = ctrl_out((/ 1, 10, 10, 10, 10 /),'taux') 155 type(ctrl_out),save :: o_tauy = ctrl_out((/ 1, 10, 10, 10, 10 /),'tauy') 156 type(ctrl_out),save,dimension(4) :: o_taux_srf = (/ ctrl_out((/ 1, 4, 10, 10, 10 /),'taux_ter'), & 157 ctrl_out((/ 1, 4, 10, 10, 10 /),'taux_lic'), & 158 ctrl_out((/ 1, 4, 10, 10, 10 /),'taux_oce'), & 159 ctrl_out((/ 1, 4, 10, 10, 10 /),'taux_sic') /) 160 161 type(ctrl_out),save,dimension(4) :: o_tauy_srf = (/ ctrl_out((/ 1, 4, 10, 10, 10 /),'tauy_ter'), & 162 ctrl_out((/ 1, 4, 10, 10, 10 /),'tauy_lic'), & 163 ctrl_out((/ 1, 4, 10, 10, 10 /),'tauy_oce'), & 164 ctrl_out((/ 1, 4, 10, 10, 10 /),'tauy_sic') /) 165 166 167 type(ctrl_out),save,dimension(4) :: o_pourc_srf = (/ ctrl_out((/ 1, 4, 10, 10, 10 /),'pourc_ter'), & 168 ctrl_out((/ 1, 4, 10, 10, 10 /),'pourc_lic'), & 169 ctrl_out((/ 1, 4, 10, 10, 10 /),'pourc_oce'), & 170 ctrl_out((/ 1, 4, 10, 10, 10 /),'pourc_sic') /) 171 172 type(ctrl_out),save,dimension(4) :: o_fract_srf = (/ ctrl_out((/ 1, 4, 10, 10, 10 /),'fract_ter'), & 173 ctrl_out((/ 1, 4, 10, 10, 10 /),'fract_lic'), & 174 ctrl_out((/ 1, 4, 10, 10, 10 /),'fract_oce'), & 175 ctrl_out((/ 1, 4, 10, 10, 10 /),'fract_sic') /) 176 177 type(ctrl_out),save,dimension(4) :: o_tsol_srf = (/ ctrl_out((/ 1, 4, 10, 10, 10 /),'tsol_ter'), & 178 ctrl_out((/ 1, 4, 10, 10, 10 /),'tsol_lic'), & 179 ctrl_out((/ 1, 4, 10, 10, 10 /),'tsol_oce'), & 180 ctrl_out((/ 1, 4, 10, 10, 10 /),'tsol_sic') /) 170 181 171 182 type(ctrl_out),save,dimension(4) :: o_sens_srf = (/ ctrl_out((/ 1, 4, 10, 1, 10 /),'sens_ter'), & … … 200 211 201 212 202 type(ctrl_out),save :: o_cdrm = ctrl_out((/ 1, 10, 10, 1 , 10 /),'cdrm')213 type(ctrl_out),save :: o_cdrm = ctrl_out((/ 1, 10, 10, 10, 10 /),'cdrm') 203 214 type(ctrl_out),save :: o_cdrh = ctrl_out((/ 1, 10, 10, 1, 10 /),'cdrh') 204 215 type(ctrl_out),save :: o_cldl = ctrl_out((/ 1, 1, 10, 10, 10 /),'cldl') 205 216 type(ctrl_out),save :: o_cldm = ctrl_out((/ 1, 1, 10, 10, 10 /),'cldm') 206 217 type(ctrl_out),save :: o_cldh = ctrl_out((/ 1, 1, 10, 10, 10 /),'cldh') 207 type(ctrl_out),save :: o_cldt = ctrl_out((/ 1, 1, 2, 10, 10 /),'cldt')218 type(ctrl_out),save :: o_cldt = ctrl_out((/ 1, 1, 2, 5, 10 /),'cldt') 208 219 type(ctrl_out),save :: o_cldq = ctrl_out((/ 1, 1, 10, 10, 10 /),'cldq') 209 220 type(ctrl_out),save :: o_lwp = ctrl_out((/ 1, 5, 10, 10, 10 /),'lwp') … … 215 226 216 227 type(ctrl_out),save :: o_cape = ctrl_out((/ 1, 10, 10, 10, 10 /),'cape') 217 type(ctrl_out),save :: o_pbase = ctrl_out((/ 1, 10, 10, 10, 10 /),'pbase')218 type(ctrl_out),save :: o_ptop = ctrl_out((/ 1, 4, 10, 10, 10 /),'ptop')228 type(ctrl_out),save :: o_pbase = ctrl_out((/ 1, 5, 10, 10, 10 /),'pbase') 229 type(ctrl_out),save :: o_ptop = ctrl_out((/ 1, 5, 10, 10, 10 /),'ptop') 219 230 type(ctrl_out),save :: o_fbase = ctrl_out((/ 1, 10, 10, 10, 10 /),'fbase') 220 231 type(ctrl_out),save :: o_prw = ctrl_out((/ 1, 1, 10, 10, 10 /),'prw') 221 232 222 type(ctrl_out),save :: o_s_pblh = ctrl_out((/ 1, 10, 10, 1 , 1 /),'s_pblh')223 type(ctrl_out),save :: o_s_pblt = ctrl_out((/ 1, 10, 10, 1 , 1 /),'s_pblt')224 type(ctrl_out),save :: o_s_lcl = ctrl_out((/ 1, 10, 10, 1 , 10 /),'s_lcl')225 type(ctrl_out),save :: o_s_capCL = ctrl_out((/ 1, 10, 10, 1 , 10 /),'s_capCL')226 type(ctrl_out),save :: o_s_oliqCL = ctrl_out((/ 1, 10, 10, 1 , 10 /),'s_oliqCL')227 type(ctrl_out),save :: o_s_cteiCL = ctrl_out((/ 1, 10, 10, 1 , 1 /),'s_cteiCL')228 type(ctrl_out),save :: o_s_therm = ctrl_out((/ 1, 10, 10, 1 , 1 /),'s_therm')229 type(ctrl_out),save :: o_s_trmb1 = ctrl_out((/ 1, 10, 10, 1 , 10 /),'s_trmb1')230 type(ctrl_out),save :: o_s_trmb2 = ctrl_out((/ 1, 10, 10, 1 , 10 /),'s_trmb2')231 type(ctrl_out),save :: o_s_trmb3 = ctrl_out((/ 1, 10, 10, 1 , 10 /),'s_trmb3')233 type(ctrl_out),save :: o_s_pblh = ctrl_out((/ 1, 10, 10, 10, 1 /),'s_pblh') 234 type(ctrl_out),save :: o_s_pblt = ctrl_out((/ 1, 10, 10, 10, 1 /),'s_pblt') 235 type(ctrl_out),save :: o_s_lcl = ctrl_out((/ 1, 10, 10, 10, 10 /),'s_lcl') 236 type(ctrl_out),save :: o_s_capCL = ctrl_out((/ 1, 10, 10, 10, 10 /),'s_capCL') 237 type(ctrl_out),save :: o_s_oliqCL = ctrl_out((/ 1, 10, 10, 10, 10 /),'s_oliqCL') 238 type(ctrl_out),save :: o_s_cteiCL = ctrl_out((/ 1, 10, 10, 10, 1 /),'s_cteiCL') 239 type(ctrl_out),save :: o_s_therm = ctrl_out((/ 1, 10, 10, 10, 1 /),'s_therm') 240 type(ctrl_out),save :: o_s_trmb1 = ctrl_out((/ 1, 10, 10, 10, 10 /),'s_trmb1') 241 type(ctrl_out),save :: o_s_trmb2 = ctrl_out((/ 1, 10, 10, 10, 10 /),'s_trmb2') 242 type(ctrl_out),save :: o_s_trmb3 = ctrl_out((/ 1, 10, 10, 10, 10 /),'s_trmb3') 232 243 233 244 type(ctrl_out),save :: o_slab_bils = ctrl_out((/ 1, 1, 10, 10, 10 /),'slab_bils_oce') 234 245 235 type(ctrl_out),save :: o_ale_bl = ctrl_out((/ 1, 1, 1, 1 , 10 /),'ale_bl')236 type(ctrl_out),save :: o_alp_bl = ctrl_out((/ 1, 1, 1, 1 , 10 /),'alp_bl')237 type(ctrl_out),save :: o_ale_wk = ctrl_out((/ 1, 1, 1, 1 , 10 /),'ale_wk')238 type(ctrl_out),save :: o_alp_wk = ctrl_out((/ 1, 1, 1, 1 , 10 /),'alp_wk')239 240 type(ctrl_out),save :: o_ale = ctrl_out((/ 1, 1, 1, 1 , 10 /),'ale')241 type(ctrl_out),save :: o_alp = ctrl_out((/ 1, 1, 1, 1 , 10 /),'alp')242 type(ctrl_out),save :: o_cin = ctrl_out((/ 1, 1, 1, 1 , 10 /),'cin')243 type(ctrl_out),save :: o_wape = ctrl_out((/ 1, 1, 1, 1 , 10 /),'wape')246 type(ctrl_out),save :: o_ale_bl = ctrl_out((/ 1, 1, 1, 10, 10 /),'ale_bl') 247 type(ctrl_out),save :: o_alp_bl = ctrl_out((/ 1, 1, 1, 10, 10 /),'alp_bl') 248 type(ctrl_out),save :: o_ale_wk = ctrl_out((/ 1, 1, 1, 10, 10 /),'ale_wk') 249 type(ctrl_out),save :: o_alp_wk = ctrl_out((/ 1, 1, 1, 10, 10 /),'alp_wk') 250 251 type(ctrl_out),save :: o_ale = ctrl_out((/ 1, 1, 1, 10, 10 /),'ale') 252 type(ctrl_out),save :: o_alp = ctrl_out((/ 1, 1, 1, 10, 10 /),'alp') 253 type(ctrl_out),save :: o_cin = ctrl_out((/ 1, 1, 1, 10, 10 /),'cin') 254 type(ctrl_out),save :: o_wape = ctrl_out((/ 1, 1, 1, 10, 10 /),'wape') 244 255 245 256 … … 306 317 type(ctrl_out),save :: o_cldtau = ctrl_out((/ 10, 5, 10, 10, 10 /),'cldtau') 307 318 type(ctrl_out),save :: o_cldemi = ctrl_out((/ 10, 5, 10, 10, 10 /),'cldemi') 308 type(ctrl_out),save :: o_rh2m = ctrl_out((/ 10, 5, 10, 10, 10 /),'rh2m') 319 type(ctrl_out),save :: o_rh2m = ctrl_out((/ 5, 5, 10, 10, 10 /),'rh2m') 320 type(ctrl_out),save :: o_rh2m_min = ctrl_out((/ 10, 5, 10, 10, 10 /),'rh2m_min') 321 type(ctrl_out),save :: o_rh2m_max = ctrl_out((/ 10, 5, 10, 10, 10 /),'rh2m_max') 309 322 type(ctrl_out),save :: o_qsat2m = ctrl_out((/ 10, 5, 10, 10, 10 /),'qsat2m') 310 323 type(ctrl_out),save :: o_tpot = ctrl_out((/ 10, 5, 10, 10, 10 /),'tpot') … … 331 344 type(ctrl_out),save :: o_snowl = ctrl_out((/ 10, 1, 10, 10, 10 /),'snowl') 332 345 type(ctrl_out),save :: o_cape_max = ctrl_out((/ 10, 1, 10, 10, 10 /),'cape_max') 333 type(ctrl_out),save :: o_solldown = ctrl_out((/ 10, 1, 10, 1 , 10 /),'solldown')334 335 type(ctrl_out),save :: o_dtsvdfo = ctrl_out((/ 10, 10, 10, 1 , 10 /),'dtsvdfo')336 type(ctrl_out),save :: o_dtsvdft = ctrl_out((/ 10, 10, 10, 1 , 10 /),'dtsvdft')337 type(ctrl_out),save :: o_dtsvdfg = ctrl_out((/ 10, 10, 10, 1 , 10 /),'dtsvdfg')338 type(ctrl_out),save :: o_dtsvdfi = ctrl_out((/ 10, 10, 10, 1 , 10 /),'dtsvdfi')339 type(ctrl_out),save :: o_rugs = ctrl_out((/ 10, 10, 10, 1 , 1/),'rugs')346 type(ctrl_out),save :: o_solldown = ctrl_out((/ 10, 1, 10, 10, 10 /),'solldown') 347 348 type(ctrl_out),save :: o_dtsvdfo = ctrl_out((/ 10, 10, 10, 10, 10 /),'dtsvdfo') 349 type(ctrl_out),save :: o_dtsvdft = ctrl_out((/ 10, 10, 10, 10, 10 /),'dtsvdft') 350 type(ctrl_out),save :: o_dtsvdfg = ctrl_out((/ 10, 10, 10, 10, 10 /),'dtsvdfg') 351 type(ctrl_out),save :: o_dtsvdfi = ctrl_out((/ 10, 10, 10, 10, 10 /),'dtsvdfi') 352 type(ctrl_out),save :: o_rugs = ctrl_out((/ 10, 10, 10, 10, 10 /),'rugs') 340 353 341 354 type(ctrl_out),save :: o_topswad = ctrl_out((/ 2, 10, 10, 10, 10 /),'topswad') … … 344 357 type(ctrl_out),save :: o_solswai = ctrl_out((/ 2, 10, 10, 10, 10 /),'solswai') 345 358 346 type(ctrl_out),save,dimension(10) :: o_tausumaero = (/ ctrl_out((/ 4, 10, 10, 10, 10 /),'OD550_ASBCM'), & 347 ctrl_out((/ 4, 10, 10, 10, 10 /),'OD550_ASPOMM'), & 348 ctrl_out((/ 4, 10, 10, 10, 10 /),'OD550_ASSO4M'), & 349 ctrl_out((/ 4, 10, 10, 10, 10 /),'OD550_CSSO4M'), & 350 ctrl_out((/ 4, 10, 10, 10, 10 /),'OD550_SSSSM'), & 351 ctrl_out((/ 4, 10, 10, 10, 10 /),'OD550_ASSSM'), & 352 ctrl_out((/ 4, 10, 10, 10, 10 /),'OD550_CSSSM'), & 353 ctrl_out((/ 4, 10, 10, 10, 10 /),'OD550_CIDUSTM'), & 354 ctrl_out((/ 4, 10, 10, 10, 10 /),'OD550_AIBCM'), & 355 ctrl_out((/ 4, 10, 10, 10, 10 /),'OD550_AIPOMM') /) 356 357 type(ctrl_out),save :: o_swtoaas_nat = ctrl_out((/ 4, 10, 10, 10, 10 /),'swtoaas_nat') 358 type(ctrl_out),save :: o_swsrfas_nat = ctrl_out((/ 4, 10, 10, 10, 10 /),'swsrfas_nat') 359 type(ctrl_out),save :: o_swtoacs_nat = ctrl_out((/ 4, 10, 10, 10, 10 /),'swtoacs_nat') 360 type(ctrl_out),save :: o_swsrfcs_nat = ctrl_out((/ 4, 10, 10, 10, 10 /),'swsrfcs_nat') 361 362 type(ctrl_out),save :: o_swtoaas_ant = ctrl_out((/ 4, 10, 10, 10, 10 /),'swtoaas_ant') 363 type(ctrl_out),save :: o_swsrfas_ant = ctrl_out((/ 4, 10, 10, 10, 10 /),'swsrfas_ant') 364 type(ctrl_out),save :: o_swtoacs_ant = ctrl_out((/ 4, 10, 10, 10, 10 /),'swtoacs_ant') 365 type(ctrl_out),save :: o_swsrfcs_ant = ctrl_out((/ 4, 10, 10, 10, 10 /),'swsrfcs_ant') 366 367 type(ctrl_out),save :: o_swtoacf_nat = ctrl_out((/ 4, 10, 10, 10, 10 /),'swtoacf_nat') 368 type(ctrl_out),save :: o_swsrfcf_nat = ctrl_out((/ 4, 10, 10, 10, 10 /),'swsrfcf_nat') 369 type(ctrl_out),save :: o_swtoacf_ant = ctrl_out((/ 4, 10, 10, 10, 10 /),'swtoacf_ant') 370 type(ctrl_out),save :: o_swsrfcf_ant = ctrl_out((/ 4, 10, 10, 10, 10 /),'swsrfcf_ant') 371 type(ctrl_out),save :: o_swtoacf_zero = ctrl_out((/ 4, 10, 10, 10, 10 /),'swtoacf_zero') 372 type(ctrl_out),save :: o_swsrfcf_zero = ctrl_out((/ 4, 10, 10, 10, 10 /),'swsrfcf_zero') 359 type(ctrl_out),save,dimension(10) :: o_tausumaero = (/ ctrl_out((/ 4, 4, 10, 10, 10 /),'OD550_ASBCM'), & 360 ctrl_out((/ 4, 4, 10, 10, 10 /),'OD550_ASPOMM'), & 361 ctrl_out((/ 4, 4, 10, 10, 10 /),'OD550_ASSO4M'), & 362 ctrl_out((/ 4, 4, 10, 10, 10 /),'OD550_CSSO4M'), & 363 ctrl_out((/ 4, 4, 10, 10, 10 /),'OD550_SSSSM'), & 364 ctrl_out((/ 4, 4, 10, 10, 10 /),'OD550_ASSSM'), & 365 ctrl_out((/ 4, 4, 10, 10, 10 /),'OD550_CSSSM'), & 366 ctrl_out((/ 4, 4, 10, 10, 10 /),'OD550_CIDUSTM'), & 367 ctrl_out((/ 4, 4, 10, 10, 10 /),'OD550_AIBCM'), & 368 ctrl_out((/ 4, 4, 10, 10, 10 /),'OD550_AIPOMM') /) 369 370 type(ctrl_out),save :: o_od550aer = ctrl_out((/ 4, 4, 10, 10, 10 /),'od550aer') 371 type(ctrl_out),save :: o_od865aer = ctrl_out((/ 4, 4, 10, 10, 10 /),'od865aer') 372 type(ctrl_out),save :: o_absvisaer = ctrl_out((/ 4, 4, 10, 10, 10 /),'absvisaer') 373 type(ctrl_out),save :: o_od550lt1aer = ctrl_out((/ 4, 4, 10, 10, 10 /),'od550lt1aer') 374 375 type(ctrl_out),save :: o_sconcso4 = ctrl_out((/ 4, 4, 10, 10, 10 /),'sconcso4') 376 type(ctrl_out),save :: o_sconcoa = ctrl_out((/ 4, 4, 10, 10, 10 /),'sconcoa') 377 type(ctrl_out),save :: o_sconcbc = ctrl_out((/ 4, 4, 10, 10, 10 /),'sconcbc') 378 type(ctrl_out),save :: o_sconcss = ctrl_out((/ 4, 4, 10, 10, 10 /),'sconcss') 379 type(ctrl_out),save :: o_sconcdust = ctrl_out((/ 4, 4, 10, 10, 10 /),'sconcdust') 380 type(ctrl_out),save :: o_concso4 = ctrl_out((/ 4, 4, 10, 10, 10 /),'concso4') 381 type(ctrl_out),save :: o_concoa = ctrl_out((/ 4, 4, 10, 10, 10 /),'concoa') 382 type(ctrl_out),save :: o_concbc = ctrl_out((/ 4, 4, 10, 10, 10 /),'concbc') 383 type(ctrl_out),save :: o_concss = ctrl_out((/ 4, 4, 10, 10, 10 /),'concss') 384 type(ctrl_out),save :: o_concdust = ctrl_out((/ 4, 4, 10, 10, 10 /),'concdust') 385 type(ctrl_out),save :: o_loadso4 = ctrl_out((/ 4, 4, 10, 10, 10 /),'loadso4') 386 type(ctrl_out),save :: o_loadoa = ctrl_out((/ 4, 4, 10, 10, 10 /),'loadoa') 387 type(ctrl_out),save :: o_loadbc = ctrl_out((/ 4, 4, 10, 10, 10 /),'loadbc') 388 type(ctrl_out),save :: o_loadss = ctrl_out((/ 4, 4, 10, 10, 10 /),'loadss') 389 type(ctrl_out),save :: o_loaddust = ctrl_out((/ 4, 4, 10, 10, 10 /),'loaddust') 390 391 type(ctrl_out),save :: o_swtoaas_nat = ctrl_out((/ 4, 4, 10, 10, 10 /),'swtoaas_nat') 392 type(ctrl_out),save :: o_swsrfas_nat = ctrl_out((/ 4, 4, 10, 10, 10 /),'swsrfas_nat') 393 type(ctrl_out),save :: o_swtoacs_nat = ctrl_out((/ 4, 4, 10, 10, 10 /),'swtoacs_nat') 394 type(ctrl_out),save :: o_swsrfcs_nat = ctrl_out((/ 4, 4, 10, 10, 10 /),'swsrfcs_nat') 395 396 type(ctrl_out),save :: o_swtoaas_ant = ctrl_out((/ 4, 4, 10, 10, 10 /),'swtoaas_ant') 397 type(ctrl_out),save :: o_swsrfas_ant = ctrl_out((/ 4, 4, 10, 10, 10 /),'swsrfas_ant') 398 type(ctrl_out),save :: o_swtoacs_ant = ctrl_out((/ 4, 4, 10, 10, 10 /),'swtoacs_ant') 399 type(ctrl_out),save :: o_swsrfcs_ant = ctrl_out((/ 4, 4, 10, 10, 10 /),'swsrfcs_ant') 400 401 type(ctrl_out),save :: o_swtoacf_nat = ctrl_out((/ 4, 4, 10, 10, 10 /),'swtoacf_nat') 402 type(ctrl_out),save :: o_swsrfcf_nat = ctrl_out((/ 4, 4, 10, 10, 10 /),'swsrfcf_nat') 403 type(ctrl_out),save :: o_swtoacf_ant = ctrl_out((/ 4, 4, 10, 10, 10 /),'swtoacf_ant') 404 type(ctrl_out),save :: o_swsrfcf_ant = ctrl_out((/ 4, 4, 10, 10, 10 /),'swsrfcf_ant') 405 type(ctrl_out),save :: o_swtoacf_zero = ctrl_out((/ 4, 4, 10, 10, 10 /),'swtoacf_zero') 406 type(ctrl_out),save :: o_swsrfcf_zero = ctrl_out((/ 4, 4, 10, 10, 10 /),'swsrfcf_zero') 407 408 type(ctrl_out),save :: o_cldncl = ctrl_out((/ 4, 4, 10, 10, 10 /),'cldncl') 409 type(ctrl_out),save :: o_reffclwtop = ctrl_out((/ 4, 4, 10, 10, 10 /),'reffclwtop') 410 type(ctrl_out),save :: o_cldnvi = ctrl_out((/ 4, 4, 10, 10, 10 /),'cldnvi') 411 type(ctrl_out),save :: o_lcc = ctrl_out((/ 4, 4, 10, 10, 10 /),'lcc') 373 412 374 413 375 414 !!!!!!!!!!!!!!!!!!!!!! 3D !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 415 type(ctrl_out),save :: o_ec550aer = ctrl_out((/ 4, 4, 10, 10, 1 /),'ec550aer') 376 416 type(ctrl_out),save :: o_lwcon = ctrl_out((/ 2, 5, 10, 10, 1 /),'lwcon') 377 417 type(ctrl_out),save :: o_iwcon = ctrl_out((/ 2, 5, 10, 10, 10 /),'iwcon') 378 type(ctrl_out),save :: o_temp = ctrl_out((/ 2, 3, 4, 1 , 1 /),'temp')379 type(ctrl_out),save :: o_theta = ctrl_out((/ 2, 3, 4, 1 , 1 /),'theta')380 type(ctrl_out),save :: o_ovap = ctrl_out((/ 2, 3, 4, 1 , 1 /),'ovap')381 type(ctrl_out),save :: o_ovapinit = ctrl_out((/ 2, 3, 4, 1, 1 /),'ovapinit')418 type(ctrl_out),save :: o_temp = ctrl_out((/ 2, 3, 4, 10, 1 /),'temp') 419 type(ctrl_out),save :: o_theta = ctrl_out((/ 2, 3, 4, 10, 1 /),'theta') 420 type(ctrl_out),save :: o_ovap = ctrl_out((/ 2, 3, 4, 10, 1 /),'ovap') 421 type(ctrl_out),save :: o_ovapinit = ctrl_out((/ 2, 3, 10, 10, 1 /),'ovapinit') 382 422 type(ctrl_out),save :: o_wvapp = ctrl_out((/ 2, 10, 10, 10, 10 /),'wvapp') 383 type(ctrl_out),save :: o_geop = ctrl_out((/ 2, 3, 10, 1, 1 /),'geop') 384 type(ctrl_out),save :: o_vitu = ctrl_out((/ 2, 3, 4, 1, 1 /),'vitu') 385 type(ctrl_out),save :: o_vitv = ctrl_out((/ 2, 3, 4, 1, 1 /),'vitv') 386 type(ctrl_out),save :: o_vitw = ctrl_out((/ 2, 3, 10, 10, 1 /),'vitw') 387 type(ctrl_out),save :: o_pres = ctrl_out((/ 2, 3, 10, 1, 1 /),'pres') 423 type(ctrl_out),save :: o_geop = ctrl_out((/ 2, 3, 10, 10, 1 /),'geop') 424 type(ctrl_out),save :: o_vitu = ctrl_out((/ 2, 3, 4, 5, 1 /),'vitu') 425 type(ctrl_out),save :: o_vitv = ctrl_out((/ 2, 3, 4, 5, 1 /),'vitv') 426 type(ctrl_out),save :: o_vitw = ctrl_out((/ 2, 3, 10, 5, 1 /),'vitw') 427 type(ctrl_out),save :: o_pres = ctrl_out((/ 2, 3, 10, 10, 1 /),'pres') 428 type(ctrl_out),save :: o_paprs = ctrl_out((/ 2, 3, 10, 10, 1 /),'paprs') 388 429 type(ctrl_out),save :: o_rneb = ctrl_out((/ 2, 5, 10, 10, 1 /),'rneb') 389 430 type(ctrl_out),save :: o_rnebcon = ctrl_out((/ 2, 5, 10, 10, 1 /),'rnebcon') 390 type(ctrl_out),save :: o_rhum = ctrl_out((/ 2, 10, 10, 10, 10 /),'rhum')431 type(ctrl_out),save :: o_rhum = ctrl_out((/ 2, 5, 10, 10, 10 /),'rhum') 391 432 type(ctrl_out),save :: o_ozone = ctrl_out((/ 2, 10, 10, 10, 10 /),'ozone') 392 433 type(ctrl_out),save :: o_ozone_light = ctrl_out((/ 2, 10, 10, 10, 10 /),'ozone_daylight') … … 400 441 type(ctrl_out),save :: o_re =ctrl_out((/ 5, 10, 10, 10, 10 /),'re') 401 442 type(ctrl_out),save :: o_fl =ctrl_out((/ 5, 10, 10, 10, 10 /),'fl') 443 type(ctrl_out),save :: o_scdnc =ctrl_out((/ 4, 4, 10, 10, 1 /),'scdnc') 444 type(ctrl_out),save :: o_reffclws =ctrl_out((/ 4, 4, 10, 10, 1 /),'reffclws') 445 type(ctrl_out),save :: o_reffclwc =ctrl_out((/ 4, 4, 10, 10, 1 /),'reffclwc') 446 type(ctrl_out),save :: o_lcc3d =ctrl_out((/ 4, 4, 10, 10, 1 /),'lcc3d') 447 type(ctrl_out),save :: o_lcc3dcon =ctrl_out((/ 4, 4, 10, 10, 1 /),'lcc3dcon') 448 type(ctrl_out),save :: o_lcc3dstra =ctrl_out((/ 4, 4, 10, 10, 1 /),'lcc3dstra') 402 449 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 403 450 … … 412 459 ctrl_out((/ 3, 10, 10, 10, 10 /),'ages_sic') /) 413 460 414 type(ctrl_out),save,dimension(4) :: o_rugs_srf = (/ ctrl_out((/ 3, 4, 10, 1 , 10 /),'rugs_ter'), &415 ctrl_out((/ 3, 4, 10, 1 , 10 /),'rugs_lic'), &416 ctrl_out((/ 3, 4, 10, 1 , 10 /),'rugs_oce'), &417 ctrl_out((/ 3, 4, 10, 1 , 10 /),'rugs_sic') /)418 419 type(ctrl_out),save :: o_albs = ctrl_out((/ 3, 10, 10, 1 , 10 /),'albs')420 type(ctrl_out),save :: o_albslw = ctrl_out((/ 3, 10, 10, 1 , 10 /),'albslw')461 type(ctrl_out),save,dimension(4) :: o_rugs_srf = (/ ctrl_out((/ 3, 4, 10, 10, 10 /),'rugs_ter'), & 462 ctrl_out((/ 3, 4, 10, 10, 10 /),'rugs_lic'), & 463 ctrl_out((/ 3, 4, 10, 10, 10 /),'rugs_oce'), & 464 ctrl_out((/ 3, 4, 10, 10, 10 /),'rugs_sic') /) 465 466 type(ctrl_out),save :: o_albs = ctrl_out((/ 3, 10, 10, 10, 10 /),'albs') 467 type(ctrl_out),save :: o_albslw = ctrl_out((/ 3, 10, 10, 10, 10 /),'albslw') 421 468 422 469 type(ctrl_out),save :: o_clwcon = ctrl_out((/ 4, 10, 10, 10, 10 /),'clwcon') … … 424 471 type(ctrl_out),save :: o_dnwd = ctrl_out((/ 4, 10, 10, 10, 10 /),'dnwd') 425 472 type(ctrl_out),save :: o_dnwd0 = ctrl_out((/ 4, 10, 10, 10, 10 /),'dnwd0') 473 type(ctrl_out),save :: o_mc = ctrl_out((/ 4, 10, 10, 10, 10 /),'mc') 474 type(ctrl_out),save :: o_ftime_con = ctrl_out((/ 4, 10, 10, 10, 10 /),'ftime_con') 426 475 type(ctrl_out),save :: o_dtdyn = ctrl_out((/ 4, 10, 10, 10, 1 /),'dtdyn') 427 476 type(ctrl_out),save :: o_dqdyn = ctrl_out((/ 4, 10, 10, 10, 1 /),'dqdyn') … … 444 493 type(ctrl_out),save :: o_dtlschr = ctrl_out((/ 4, 10, 10, 10, 10 /),'dtlschr') 445 494 type(ctrl_out),save :: o_dqlsc = ctrl_out((/ 4, 10, 10, 10, 10 /),'dqlsc') 446 type(ctrl_out),save :: o_dtvdf = ctrl_out((/ 4, 10, 10, 1 , 10 /),'dtvdf')447 type(ctrl_out),save :: o_dqvdf = ctrl_out((/ 4, 10, 10, 1 , 10 /),'dqvdf')495 type(ctrl_out),save :: o_dtvdf = ctrl_out((/ 4, 10, 10, 10, 10 /),'dtvdf') 496 type(ctrl_out),save :: o_dqvdf = ctrl_out((/ 4, 10, 10, 10, 10 /),'dqvdf') 448 497 type(ctrl_out),save :: o_dteva = ctrl_out((/ 4, 10, 10, 10, 10 /),'dteva') 449 498 type(ctrl_out),save :: o_dqeva = ctrl_out((/ 4, 10, 10, 10, 10 /),'dqeva') … … 455 504 type(ctrl_out),save :: o_w_th = ctrl_out((/ 4, 10, 10, 10, 10 /),'w_th') 456 505 type(ctrl_out),save :: o_lambda_th = ctrl_out((/ 10, 10, 10, 10, 10 /),'lambda_th') 506 type(ctrl_out),save :: o_ftime_th = ctrl_out((/ 10, 10, 10, 10, 10 /),'ftime_th') 457 507 type(ctrl_out),save :: o_q_th = ctrl_out((/ 4, 10, 10, 10, 10 /),'q_th') 458 508 type(ctrl_out),save :: o_a_th = ctrl_out((/ 4, 10, 10, 10, 10 /),'a_th') … … 772 822 CALL histdef2d(iff,o_pluc%flag,o_pluc%name, "Convective Precip.", "kg/(s*m2)") 773 823 CALL histdef2d(iff,o_snow%flag,o_snow%name, "Snow fall", "kg/(s*m2)" ) 824 CALL histdef2d(iff,o_msnow%flag,o_msnow%name, "Surface snow amount", "kg/m2" ) 825 CALL histdef2d(iff,o_fsnow%flag,o_fsnow%name, "Surface snow area fraction", "-" ) 774 826 CALL histdef2d(iff,o_evap%flag,o_evap%name, "Evaporat", "kg/(s*m2)" ) 775 827 CALL histdef2d(iff,o_tops%flag,o_tops%name, "Solar rad. at TOA", "W/m2") … … 781 833 CALL histdef2d(iff,o_SWdnTOA%flag,o_SWdnTOA%name, "SWdn at TOA", "W/m2" ) 782 834 CALL histdef2d(iff,o_SWdnTOAclr%flag,o_SWdnTOAclr%name, "SWdn clear sky at TOA", "W/m2") 835 CALL histdef2d(iff,o_nettop%flag,o_nettop%name, "Net dn radiatif flux at TOA", "W/m2") 783 836 CALL histdef2d(iff,o_SWup200%flag,o_SWup200%name, "SWup at 200mb", "W/m2" ) 784 837 CALL histdef2d(iff,o_SWup200clr%flag,o_SWup200clr%name, "SWup clear sky at 200mb", "W/m2") … … 809 862 CALL histdef2d(iff,o_fqfonte%flag,o_fqfonte%name, "Land ice melt", "kg/m2/s") 810 863 864 CALL histdef2d(iff,o_taux%flag,o_taux%name, "Zonal wind stress","Pa") 865 CALL histdef2d(iff,o_tauy%flag,o_tauy%name, "Meridional wind stress","Pa") 866 811 867 DO nsrf = 1, nbsrf 812 868 CALL histdef2d(iff,o_pourc_srf(nsrf)%flag,o_pourc_srf(nsrf)%name,"% "//clnsurf(nsrf),"%") … … 816 872 CALL histdef2d(iff,o_tsol_srf(nsrf)%flag,o_tsol_srf(nsrf)%name,"Temperature "//clnsurf(nsrf),"K") 817 873 CALL histdef2d(iff,o_u10m_srf(nsrf)%flag,o_u10m_srf(nsrf)%name,"Vent Zonal 10m "//clnsurf(nsrf),"m/s") 874 CALL histdef2d(iff,o_evap_srf(nsrf)%flag,o_evap_srf(nsrf)%name,"evaporation at surface "//clnsurf(nsrf),"kg/(s*m2)") 818 875 CALL histdef2d(iff,o_v10m_srf(nsrf)%flag,o_v10m_srf(nsrf)%name,"Vent meredien 10m "//clnsurf(nsrf),"m/s") 819 876 CALL histdef2d(iff,o_t2m_srf(nsrf)%flag,o_t2m_srf(nsrf)%name,"Temp 2m "//clnsurf(nsrf),"K") … … 840 897 841 898 IF (new_aod .AND. (.NOT. aerosol_couple)) THEN 899 900 CALL histdef2d(iff,o_od550aer%flag,o_od550aer%name, "Total aerosol optical depth at 550nm", "-") 901 CALL histdef2d(iff,o_od865aer%flag,o_od865aer%name, "Total aerosol optical depth at 870nm", "-") 902 CALL histdef2d(iff,o_absvisaer%flag,o_absvisaer%name, "Absorption aerosol visible optical depth", "-") 903 CALL histdef2d(iff,o_od550lt1aer%flag,o_od550lt1aer%name, "Fine mode optical depth", "-") 904 905 906 CALL histdef2d(iff,o_sconcso4%flag,o_sconcso4%name,"Surface Concentration of Sulfate ","kg/m3") 907 CALL histdef2d(iff,o_sconcoa%flag,o_sconcoa%name,"Surface Concentration of Organic Aerosol ","kg/m3") 908 CALL histdef2d(iff,o_sconcbc%flag,o_sconcbc%name,"Surface Concentration of Black Carbon ","kg/m3") 909 CALL histdef2d(iff,o_sconcss%flag,o_sconcss%name,"Surface Concentration of Sea Salt ","kg/m3") 910 CALL histdef2d(iff,o_sconcdust%flag,o_sconcdust%name,"Surface Concentration of Dust ","kg/m3") 911 CALL histdef3d(iff,o_concso4%flag,o_concso4%name,"Concentration of Sulfate ","kg/m3") 912 CALL histdef3d(iff,o_concoa%flag,o_concoa%name,"Concentration of Organic Aerosol ","kg/m3") 913 CALL histdef3d(iff,o_concbc%flag,o_concbc%name,"Concentration of Black Carbon ","kg/m3") 914 CALL histdef3d(iff,o_concss%flag,o_concss%name,"Concentration of Sea Salt ","kg/m3") 915 CALL histdef3d(iff,o_concdust%flag,o_concdust%name,"Concentration of Dust ","kg/m3") 916 CALL histdef2d(iff,o_loadso4%flag,o_loadso4%name,"Column Load of Sulfate ","kg/m2") 917 CALL histdef2d(iff,o_loadoa%flag,o_loadoa%name,"Column Load of Organic Aerosol ","kg/m2") 918 CALL histdef2d(iff,o_loadbc%flag,o_loadbc%name,"Column Load of Black Carbon ","kg/m2") 919 CALL histdef2d(iff,o_loadss%flag,o_loadss%name,"Column Load of Sea Salt ","kg/m2") 920 CALL histdef2d(iff,o_loaddust%flag,o_loaddust%name,"Column Load of Dust ","kg/m2") 921 842 922 DO naero = 1, naero_spc 843 923 CALL histdef2d(iff,o_tausumaero(naero)%flag,o_tausumaero(naero)%name,"Aerosol Optical depth at 550 nm "//name_aero(naero),"1") … … 873 953 CALL histdef2d(iff,o_topswai%flag,o_topswai%name, "AIE at TOA", "W/m2") 874 954 CALL histdef2d(iff,o_solswai%flag,o_solswai%name, "AIE at SFR", "W/m2") 955 !Cloud droplet number concentration 956 CALL histdef3d(iff,o_scdnc%flag,o_scdnc%name, "Cloud droplet number concentration","m-3") 957 CALL histdef2d(iff,o_cldncl%flag,o_cldncl%name, "CDNC at top of liquid water cloud", "m-3") 958 CALL histdef3d(iff,o_reffclws%flag,o_reffclws%name, "Stratiform Cloud Droplet Effective Radius","m") 959 CALL histdef3d(iff,o_reffclwc%flag,o_reffclwc%name, "Convective Cloud Droplet Effective Radius","m") 960 CALL histdef2d(iff,o_cldnvi%flag,o_cldnvi%name, "Column Integrated Cloud Droplet Number", "m-2") 961 CALL histdef3d(iff,o_lcc3d%flag,o_lcc3d%name, "Cloud liquid fraction","1") 962 CALL histdef3d(iff,o_lcc3dcon%flag,o_lcc3dcon%name, "Convective cloud liquid fraction","1") 963 CALL histdef3d(iff,o_lcc3dstra%flag,o_lcc3dstra%name, "Stratiform cloud liquid fraction","1") 964 CALL histdef2d(iff,o_lcc%flag,o_lcc%name, "Cloud liquid fraction at top of cloud","1") 965 CALL histdef2d(iff,o_reffclwtop%flag,o_reffclwtop%name, "Droplet effective radius at top of liquid water cloud", "m") 875 966 ENDIF 876 967 … … 909 1000 CALL histdef3d(iff,o_dnwd%flag,o_dnwd%name, "saturated downdraft", "kg/m2/s") 910 1001 CALL histdef3d(iff,o_dnwd0%flag,o_dnwd0%name, "unsat. downdraft", "kg/m2/s") 1002 CALL histdef3d(iff,o_mc%flag,o_mc%name, "Convective mass flux", "kg/m2/s") 1003 type_ecri(1) = 'inst(X)' 1004 type_ecri(2) = 'inst(X)' 1005 type_ecri(3) = 'inst(X)' 1006 type_ecri(4) = 'inst(X)' 1007 type_ecri(5) = 'inst(X)' 1008 CALL histdef2d(iff,o_ftime_con%flag,o_ftime_con%name, "Fraction of time convection Occurs", " ") 1009 type_ecri(:) = type_ecri_files(:) 911 1010 ENDIF !iflag_con .GE. 3 912 1011 … … 965 1064 CALL histdef2d(iff,o_dthmin%flag,o_dthmin%name, "dTheta mini", "K/m") 966 1065 CALL histdef2d(iff,o_rh2m%flag,o_rh2m%name, "Relative humidity at 2m", "%" ) 1066 type_ecri(1) = 't_min(X)' 1067 type_ecri(2) = 't_min(X)' 1068 type_ecri(3) = 't_min(X)' 1069 type_ecri(4) = 't_min(X)' 1070 type_ecri(5) = 't_min(X)' 1071 CALL histdef2d(iff,o_rh2m_min%flag,o_rh2m_min%name, "Min Relative humidity at 2m", "%" ) 1072 type_ecri(1) = 't_max(X)' 1073 type_ecri(2) = 't_max(X)' 1074 type_ecri(3) = 't_max(X)' 1075 type_ecri(4) = 't_max(X)' 1076 type_ecri(5) = 't_max(X)' 1077 CALL histdef2d(iff,o_rh2m_max%flag,o_rh2m_max%name, "Max Relative humidity at 2m", "%" ) 1078 type_ecri(:) = type_ecri_files(:) 967 1079 CALL histdef2d(iff,o_qsat2m%flag,o_qsat2m%name, "Saturant humidity at 2m", "%") 968 1080 CALL histdef2d(iff,o_tpot%flag,o_tpot%name, "Surface air potential temperature", "K") … … 981 1093 982 1094 ! Champs 3D: 1095 CALL histdef3d(iff,o_ec550aer%flag,o_ec550aer%name, "Extinction at 550nm", "m^-1") 983 1096 CALL histdef3d(iff,o_lwcon%flag,o_lwcon%name, "Cloud liquid water content", "kg/kg") 984 1097 CALL histdef3d(iff,o_iwcon%flag,o_iwcon%name, "Cloud ice water content", "kg/kg") … … 992 1105 CALL histdef3d(iff,o_vitw%flag,o_vitw%name, "Vertical wind", "Pa/s" ) 993 1106 CALL histdef3d(iff,o_pres%flag,o_pres%name, "Air pressure", "Pa" ) 1107 CALL histdef3d(iff,o_paprs%flag,o_paprs%name, "Air pressure Inter-Couches", "Pa" ) 994 1108 CALL histdef3d(iff,o_rneb%flag,o_rneb%name, "Cloud fraction", "-") 995 1109 CALL histdef3d(iff,o_rnebcon%flag,o_rnebcon%name, "Convective Cloud Fraction", "-") … … 1078 1192 CALL histdef3d(iff,o_w_th%flag,o_w_th%name,"Thermal plume vertical velocity","m/s") 1079 1193 CALL histdef3d(iff,o_lambda_th%flag,o_lambda_th%name,"Thermal plume vertical velocity","m/s") 1194 CALL histdef2d(iff,o_ftime_th%flag,o_ftime_th%name,"Fraction of time Shallow convection occurs"," ") 1080 1195 CALL histdef3d(iff,o_q_th%flag,o_q_th%name, "Thermal plume total humidity", "kg/kg") 1081 1196 CALL histdef3d(iff,o_a_th%flag,o_a_th%name, "Thermal plume fraction", "") -
LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/phys_output_write.h
r1346 r1347 146 146 ENDIF 147 147 148 IF (o_msnow%flag(iff)<=lev_files(iff)) THEN 149 CALL histwrite_phy(nid_files(iff),o_msnow%name,itau_w,snow_o) 150 ENDIF 151 152 IF (o_fsnow%flag(iff)<=lev_files(iff)) THEN 153 CALL histwrite_phy(nid_files(iff),o_fsnow%name,itau_w,zfra_o) 154 ENDIF 155 148 156 IF (o_evap%flag(iff)<=lev_files(iff)) THEN 149 157 CALL histwrite_phy(nid_files(iff),o_evap%name,itau_w,evap) … … 190 198 ENDIF 191 199 200 IF (o_nettop%flag(iff)<=lev_files(iff)) THEN 201 zx_tmp_fi2d(:) = topsw(:)-toplw(:) 202 CALL histwrite_phy(nid_files(iff), 203 $ o_nettop%name,itau_w,zx_tmp_fi2d) 204 ENDIF 205 192 206 IF (o_SWup200%flag(iff)<=lev_files(iff)) THEN 193 207 CALL histwrite_phy(nid_files(iff),o_SWup200%name,itau_w,SWup200) … … 319 333 CALL histwrite_phy(nid_files(iff), 320 334 $ o_fqfonte%name,itau_w,zxfqfonte) 335 ENDIF 336 337 IF (o_taux%flag(iff)<=lev_files(iff)) THEN 338 zx_tmp_fi2d=0. 339 do nsrf=1,nbsrf 340 zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+pctsrf(:,nsrf)*fluxu(:,1,nsrf) 341 enddo 342 CALL histwrite_phy(nid_files(iff), 343 $ o_taux%name,itau_w,zx_tmp_fi2d) 344 ENDIF 345 346 IF (o_tauy%flag(iff)<=lev_files(iff)) THEN 347 zx_tmp_fi2d=0. 348 do nsrf=1,nbsrf 349 zx_tmp_fi2d(:)=zx_tmp_fi2d(:)+pctsrf(:,nsrf)*fluxv(:,1,nsrf) 350 enddo 351 CALL histwrite_phy(nid_files(iff), 352 $ o_tauy%name,itau_w,zx_tmp_fi2d) 321 353 ENDIF 322 354 … … 377 409 ENDIF 378 410 411 IF (o_evap_srf(nsrf)%flag(iff)<=lev_files(iff)) THEN 412 zx_tmp_fi2d(1 : klon) = fevap(1 : klon, nsrf) 413 CALL histwrite_phy(nid_files(iff),o_evap_srf(nsrf)%name, 414 $ itau_w,zx_tmp_fi2d) 415 ENDIF 416 379 417 IF (o_sens_srf(nsrf)%flag(iff)<=lev_files(iff)) THEN 380 418 zx_tmp_fi2d(1 : klon) = fluxt( 1 : klon, 1, nsrf) … … 532 570 ENDIF 533 571 572 IF (o_ftime_con%flag(iff)<=lev_files(iff)) THEN 573 zx_tmp_fi2d=float(itau_con)/float(itap) 574 CALL histwrite_phy(nid_files(iff),o_ftime_con%name, 575 s itau_w,zx_tmp_fi2d) 576 ENDIF 577 578 IF (o_mc%flag(iff)<=lev_files(iff)) THEN 579 if(iflag_thermals.gt.1)then 580 zx_tmp_fi3d=dnwd+dnwd0+upwd+fm_therm 581 else 582 zx_tmp_fi3d=dnwd+dnwd0+upwd 583 endif 584 CALL histwrite_phy(nid_files(iff),o_mc%name,itau_w,zx_tmp_fi3d) 585 ENDIF 586 534 587 ENDIF !iflag_con .GE. 3 535 588 … … 780 833 ENDIF 781 834 835 IF (o_rh2m_min%flag(iff)<=lev_files(iff)) THEN 836 DO i=1, klon 837 zx_tmp_fi2d(i)=MIN(100.,rh2m(i)*100.) 838 ENDDO 839 CALL histwrite_phy(nid_files(iff),o_rh2m_min%name, 840 s itau_w,zx_tmp_fi2d) 841 ENDIF 842 843 IF (o_rh2m_max%flag(iff)<=lev_files(iff)) THEN 844 DO i=1, klon 845 zx_tmp_fi2d(i)=MIN(100.,rh2m(i)*100.) 846 ENDDO 847 CALL histwrite_phy(nid_files(iff),o_rh2m_max%name, 848 s itau_w,zx_tmp_fi2d) 849 ENDIF 850 851 782 852 IF (o_qsat2m%flag(iff)<=lev_files(iff)) THEN 783 853 CALL histwrite_phy(nid_files(iff),o_qsat2m%name,itau_w,qsat2m) … … 1127 1197 IF (o_pres%flag(iff)<=lev_files(iff)) THEN 1128 1198 CALL histwrite_phy(nid_files(iff),o_pres%name,itau_w,pplay) 1199 ENDIF 1200 1201 IF (o_paprs%flag(iff)<=lev_files(iff)) THEN 1202 CALL histwrite_phy(nid_files(iff),o_paprs%name, 1203 s itau_w,paprs(:,1:klev)) 1129 1204 ENDIF 1130 1205 … … 1307 1382 1308 1383 IF (iflag_thermals.gt.1) THEN 1384 IF (o_ftime_th%flag(iff)<=lev_files(iff)) THEN 1385 ! Pour l instant 0 a y reflichir pour les thermiques 1386 zx_tmp_fi2d=0. 1387 CALL histwrite_phy(nid_files(iff),o_ftime_th%name, 1388 s itau_w,zx_tmp_fi2d) 1389 ENDIF 1390 1309 1391 IF (o_f_th%flag(iff)<=lev_files(iff)) THEN 1310 1392 CALL histwrite_phy(nid_files(iff),o_f_th%name,itau_w,fm_therm) … … 1336 1418 ENDIF 1337 1419 1338 1420 ENDIF !iflag_thermals 1339 1421 1340 1422 IF (o_f0_th%flag(iff)<=lev_files(iff)) THEN -
LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/physiq.F
r1341 r1347 29 29 USE phys_local_var_mod ! Variables internes non sauvegardees de la physique 30 30 USE phys_state_var_mod ! Variables sauvegardees de la physique 31 USE phys_output_var_mod ! Variables pour les ecritures des sorties 31 32 USE fonte_neige_mod, ONLY : fonte_neige_get_vars 32 33 USE phys_output_mod -
LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/readaerosol_interp.F90
r1299 r1347 1 1 ! $Id$ 2 2 ! 3 SUBROUTINE readaerosol_interp(id_aero, itap, pdtphys, r_day, first, pplay, paprs, t_seri, mass_out, pi_mass_out )3 SUBROUTINE readaerosol_interp(id_aero, itap, pdtphys, r_day, first, pplay, paprs, t_seri, mass_out, pi_mass_out, load_src) 4 4 ! 5 5 ! This routine will return the mass concentration at actual day(mass_out) and … … 46 46 REAL, INTENT(OUT) :: mass_out(klon,klev) ! Mass of aerosol (monthly mean data,from file) [ug AIBCM/m3] 47 47 REAL, INTENT(OUT) :: pi_mass_out(klon,klev) ! Mass of preindustrial aerosol (monthly mean data,from file) [ug AIBCM/m3] 48 REAL, INTENT(OUT) :: load_src(klon) ! Load of aerosol (monthly mean data,from file) [kg/m3] 48 49 ! 49 50 ! Local Variables: … … 61 62 REAL :: volm ! Volyme de melange [kg/kg] 62 63 REAL, DIMENSION(klon) :: psurf_day, pi_psurf_day 63 REAL, DIMENSION(klon) :: load_src,pi_load_src ! Mass load at source grid64 REAL, DIMENSION(klon) :: pi_load_src ! Mass load at source grid 64 65 REAL, DIMENSION(klon) :: load_tgt, load_tgt_test 65 66 REAL, DIMENSION(klon,klev) :: delp ! pressure difference in each model layer -
LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/readaerosol_optic.F90
r1279 r1347 14 14 USE dimphy 15 15 USE aero_mod 16 USE phys_local_var_mod, only: sconcso4,sconcoa,sconcbc,sconcss,sconcdust, & 17 concso4,concoa,concbc,concss,concdust,loadso4,loadoa,loadbc,loadss,loaddust, & 18 load_tmp1,load_tmp2,load_tmp3,load_tmp4,load_tmp5,load_tmp6,load_tmp7 16 19 IMPLICIT NONE 17 20 … … 76 79 flag_aerosol .EQ. 6 ) THEN 77 80 78 CALL readaerosol_interp(id_ASSO4M, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, sulfate, sulfate_pi )81 CALL readaerosol_interp(id_ASSO4M, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, sulfate, sulfate_pi,loadso4) 79 82 ELSE 80 83 sulfate(:,:) = 0. ; sulfate_pi(:,:) = 0. 84 loadso4=0. 81 85 END IF 82 86 … … 86 90 87 91 ! Get bc aerosol distribution 88 CALL readaerosol_interp(id_ASBCM, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, bcsol, bcsol_pi ) 89 CALL readaerosol_interp(id_AIBCM, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, bcins, bcins_pi ) 92 CALL readaerosol_interp(id_ASBCM, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, bcsol, bcsol_pi, load_tmp1 ) 93 CALL readaerosol_interp(id_AIBCM, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, bcins, bcins_pi, load_tmp2 ) 94 loadbc(:)=load_tmp1(:)+load_tmp2(:) 90 95 ELSE 91 96 bcsol(:,:) = 0. ; bcsol_pi(:,:) = 0. 92 97 bcins(:,:) = 0. ; bcins_pi(:,:) = 0. 98 loadbc=0. 93 99 END IF 94 100 … … 98 104 flag_aerosol .EQ. 6 ) THEN 99 105 100 CALL readaerosol_interp(id_ASPOMM, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, pomsol, pomsol_pi) 101 CALL readaerosol_interp(id_AIPOMM, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, pomins, pomins_pi) 106 CALL readaerosol_interp(id_ASPOMM, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, pomsol, pomsol_pi, load_tmp3) 107 CALL readaerosol_interp(id_AIPOMM, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, pomins, pomins_pi, load_tmp4) 108 loadoa(:)=load_tmp3(:)+load_tmp4(:) 102 109 ELSE 103 110 pomsol(:,:) = 0. ; pomsol_pi(:,:) = 0. 104 111 pomins(:,:) = 0. ; pomins_pi(:,:) = 0. 112 loadoa=0. 105 113 END IF 106 114 … … 110 118 flag_aerosol .EQ. 6 ) THEN 111 119 112 CALL readaerosol_interp(id_SSSSM ,itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, sssupco, sssupco_pi )113 CALL readaerosol_interp(id_CSSSM ,itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, sscoarse,sscoarse_pi )114 CALL readaerosol_interp(id_ASSSM ,itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, ssacu, ssacu_pi )115 120 CALL readaerosol_interp(id_SSSSM ,itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, sssupco, sssupco_pi, load_tmp5) 121 CALL readaerosol_interp(id_CSSSM ,itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, sscoarse,sscoarse_pi, load_tmp6) 122 CALL readaerosol_interp(id_ASSSM ,itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, ssacu, ssacu_pi, load_tmp7) 123 loadss(:)=load_tmp5(:)+load_tmp6(:)+load_tmp7(:) 116 124 ELSE 117 125 sscoarse(:,:) = 0. ; sscoarse_pi(:,:) = 0. 118 126 ssacu(:,:) = 0. ; ssacu_pi(:,:) = 0. 119 127 sssupco(:,:) = 0. ; sssupco_pi = 0. 128 loadss=0. 120 129 ENDIF 121 130 … … 124 133 flag_aerosol .EQ. 6 ) THEN 125 134 126 CALL readaerosol_interp(id_CIDUSTM, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, cidust, cidust_pi )135 CALL readaerosol_interp(id_CIDUSTM, itap, pdtphys, rjourvrai, debut, pplay, paprs, t_seri, cidust, cidust_pi, loaddust) 127 136 128 137 ELSE 129 138 cidust(:,:) = 0. ; cidust_pi(:,:) = 0. 139 loaddust=0. 130 140 ENDIF 131 141 … … 198 208 END IF 199 209 210 211 ! Diagnostics calculation for CMIP5 protocol 212 sconcso4(:)=m_allaer(:,1,id_ASSO4M)*1.e-9 213 sconcoa(:)=(m_allaer(:,1,id_ASPOMM)+m_allaer(:,1,id_AIPOMM))*1.e-9 214 sconcbc(:)=(m_allaer(:,1,id_ASBCM)+m_allaer(:,1,id_AIBCM))*1.e-9 215 sconcss(:)=(m_allaer(:,1,id_ASSSM)+m_allaer(:,1,id_CSSSM)+m_allaer(:,1,id_SSSSM))*1.e-9 216 sconcdust(:)=m_allaer(:,1,id_CIDUSTM)*1.e-9 217 concso4(:,:)=m_allaer(:,:,id_ASSO4M)*1.e-9 218 concoa(:,:)=(m_allaer(:,:,id_ASPOMM)+m_allaer(:,:,id_AIPOMM))*1.e-9 219 concbc(:,:)=(m_allaer(:,:,id_ASBCM)+m_allaer(:,:,id_AIBCM))*1.e-9 220 concss(:,:)=(m_allaer(:,:,id_ASSSM)+m_allaer(:,:,id_CSSSM)+m_allaer(:,:,id_SSSSM))*1.e-9 221 concdust(:,:)=m_allaer(:,:,id_CIDUSTM)*1.e-9 222 223 200 224 END SUBROUTINE readaerosol_optic
Note: See TracChangeset
for help on using the changeset viewer.