Changeset 5828
- Timestamp:
- Sep 23, 2025, 4:32:02 PM (2 months ago)
- Location:
- LMDZ6/trunk/libf
- Files:
-
- 7 edited
-
phylmd/icefrac_lsc_mod.f90 (modified) (1 diff)
-
phylmd/lmdz_call_cloud_optics_prop.f90 (modified) (5 diffs)
-
phylmd/lmdz_cloud_optics_prop.f90 (modified) (7 diffs)
-
phylmd/lmdz_cloud_optics_prop_ini.f90 (modified) (4 diffs)
-
phylmd/nuage.f90 (modified) (6 diffs)
-
phylmd/physiq_mod.F90 (modified) (5 diffs)
-
phylmdiso/physiq_mod.F90 (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/phylmd/icefrac_lsc_mod.f90
r5268 r5828 22 22 ! t_glace_max: if T > Tmax, the cloud is only made of liquid water 23 23 ! exposant_glace: controls the sharpness of the transition 24 INTEGER :: np24 INTEGER, INTENT(IN) :: np 25 25 REAL, DIMENSION(np), INTENT(IN) :: temp ! temperature 26 26 REAL, DIMENSION(np), INTENT(IN) :: sig -
LMDZ6/trunk/libf/phylmd/lmdz_call_cloud_optics_prop.f90
r5268 r5828 1 1 ! $Id$ 2 !$gpum horizontal klon np 2 3 MODULE lmdz_call_cloud_optics_prop 4 PRIVATE 5 6 PUBLIC call_cloud_optics_prop, call_cloud_optics_prop_post 3 7 4 8 CONTAINS 9 10 SUBROUTINE call_cloud_optics_prop_post(ok_newmicro) 11 USE lmdz_cloud_optics_prop, ONLY : cloud_optics_prop_post 12 IMPLICIT NONE 13 LOGICAL, INTENT(IN) :: ok_newmicro 14 15 IF (ok_newmicro) THEN 16 CALL cloud_optics_prop_post() 17 ENDIF 18 19 END SUBROUTINE call_cloud_optics_prop_post 5 20 6 21 SUBROUTINE call_cloud_optics_prop(klon, klev, ok_newmicro,& … … 25 40 USE icefrac_lsc_mod ! computes ice fraction (JBM 3/14) 26 41 USE lmdz_lscp_tools, only: icefrac_lscp 42 USE nuage_mod, ONLY: nuage 27 43 28 44 IMPLICIT NONE … … 94 110 INTEGER :: k 95 111 REAL :: dzfice(klon, klev) 112 REAL :: pp_ratio(klon) 96 113 97 114 IF (iflag_t_glace .EQ. 0) THEN … … 103 120 & icefrac_optics(:,k),dzfice(:,k)) 104 121 ELSE 105 CALL icefrac_lsc(klon,temp(:,k),pplay(1:klon,k)/paprs(1:klon,1),icefrac_optics(:,k)) 122 pp_ratio(1:klon) = pplay(1:klon,k)/paprs(1:klon,1) 123 CALL icefrac_lsc(klon,temp(:,k),pp_ratio(:),icefrac_optics(:,k)) 106 124 ENDIF 107 125 ENDDO … … 110 128 111 129 112 IF (ok_newmicro) THEN 130 IF (ok_newmicro) THEN 113 131 CALL cloud_optics_prop(klon, klev, paprs, pplay, temp, radocond, picefra, pclc, & 114 132 pcltau, pclemi, pch, pcl, pcm, pct, radocondwp, xflwp, xfiwp, xflwc, xfiwc, & -
LMDZ6/trunk/libf/phylmd/lmdz_cloud_optics_prop.f90
r5646 r5828 1 1 ! $Id$ 2 2 MODULE lmdz_cloud_optics_prop 3 PRIVATE 4 5 LOGICAL, SAVE :: first_first = .TRUE. 6 !$OMP THREADPRIVATE(first_first) 7 8 PUBLIC cloud_optics_prop, cloud_optics_prop_post 3 9 4 10 CONTAINS 11 12 SUBROUTINE cloud_optics_prop_post() 13 USE lmdz_cloud_optics_prop_ini, ONLY: novlp 14 USE lmdz_cloud_optics_prop_ini, ONLY: first 15 IMPLICIT NONE 16 17 IF (first_first) THEN 18 IF (ANY(first)) THEN 19 IF (novlp==1) THEN 20 WRITE (*, *) 'Hypothese de recouvrement: MAXIMUM_ & 21 & & 22 & RANDOM' 23 first_first = .FALSE. 24 ELSEIF (novlp==2) THEN 25 WRITE (*, *) 'Hypothese de recouvrement: MAXIMUM' 26 first_first = .FALSE. 27 ELSEIF (novlp==3) THEN 28 WRITE (*, *) 'Hypothese de recouvrement: RANDOM' 29 first_first = .FALSE. 30 ENDIF 31 ENDIF 32 ENDIF 33 34 END SUBROUTINE cloud_optics_prop_post 5 35 6 36 SUBROUTINE cloud_optics_prop(klon, klev, paprs, pplay, temp, radocond, picefra, pclc, & … … 29 59 USE lmdz_cloud_optics_prop_ini , ONLY : rei_coef, rei_min_temp 30 60 USE lmdz_cloud_optics_prop_ini , ONLY : zepsec, novlp, iflag_ice_thermo, ok_new_lscp 61 USE lmdz_cloud_optics_prop_ini , ONLY : first 31 62 32 63 … … 115 146 ! Local variables 116 147 !---------------- 117 118 LOGICAL, SAVE :: first = .TRUE.119 !$OMP THREADPRIVATE(first)120 148 INTEGER flag_max 121 149 … … 652 680 653 681 IF (novlp.EQ.2) THEN 654 IF (first) THEN 655 WRITE (*, *) 'Hypothese de recouvrement: MAXIMUM' 656 first = .FALSE. 682 IF (first_first) THEN 683 first(i,k) = .TRUE. 657 684 ENDIF 658 685 flag_max = -1. … … 661 688 662 689 IF (novlp.EQ.3) THEN 663 IF (first) THEN 664 WRITE (*, *) 'Hypothese de recouvrement: RANDOM' 665 first = .FALSE. 690 IF (first_first) THEN 691 first(i,k) = .TRUE. 666 692 ENDIF 667 693 flag_max = 1. … … 670 696 671 697 IF (novlp.EQ.1) THEN 672 IF (first) THEN 673 WRITE (*, *) 'Hypothese de recouvrement: MAXIMUM_ & 674 & & 675 & RANDOM' 676 first = .FALSE. 698 IF (first_first) THEN 699 first(i,k) = .TRUE. 677 700 ENDIF 678 701 flag_max = 1. … … 767 790 ENDIF !ok_cdnc 768 791 769 first=.false. !to be sure770 771 792 RETURN 772 793 -
LMDZ6/trunk/libf/phylmd/lmdz_cloud_optics_prop_ini.f90
r5646 r5828 33 33 REAL, PARAMETER :: k_ice0=0.005 ! units=m2/g 34 34 REAL, PARAMETER :: df=1.66 ! diffusivity factor 35 LOGICAL, SAVE, ALLOCATABLE :: first(:,:) ! Test, if the cloud optical depth exceeds the necessary threshold 36 !$OMP THREADPRIVATE(first) 35 37 !$OMP THREADPRIVATE(prt_level, lunout, flag_aerosol, iflag_t_glace) 36 38 !$OMP THREADPRIVATE(iflag_rei, novlp, iflag_ice_thermo) … … 45 47 CONTAINS 46 48 47 SUBROUTINE cloud_optics_prop_ini(klon, prt_level_in, lunout_in, flag_aerosol_in, &49 SUBROUTINE cloud_optics_prop_ini(klon, klev, prt_level_in, lunout_in, flag_aerosol_in, & 48 50 & ok_cdnc_in, bl95_b0_in, & 49 51 & bl95_b1_in, latitude_deg_in, rpi_in, rg_in, rd_in, zepsec_in, novlp_in, & … … 53 55 54 56 IMPLICIT NONE 55 INTEGER, INTENT(IN) :: klon 57 INTEGER, INTENT(IN) :: klon, klev 56 58 INTEGER, INTENT(IN) :: prt_level_in, lunout_in 57 59 INTEGER, INTENT(IN) :: flag_aerosol_in … … 64 66 65 67 ALLOCATE(latitude_deg(klon)) 68 ALLOCATE(first(klon, klev)) 69 first(:,:) = .FALSE. 66 70 67 71 prt_level = prt_level_in -
LMDZ6/trunk/libf/phylmd/nuage.f90
r5305 r5828 1 1 ! $Id$ 2 MODULE nuage_mod 3 PRIVATE 4 5 PUBLIC nuage, diagcld1, diagcld2 6 7 CONTAINS 2 8 3 9 SUBROUTINE nuage(paprs, pplay, t, pqlwp,picefra, pclc, pcltau, pclemi, pch, pcl, pcm, & … … 95 101 REAL cldtaupi(klon, klev) ! pre-industrial cloud opt thickness for diag 96 102 REAl dzfice(klon) 103 REAL :: pp_ratio(klon) 97 104 ! jq-end 98 105 … … 115 122 CALL icefrac_lscp(klon,t(:,k),iflag_ice_thermo,distcltop(:,k),temp_cltop(:,k),zfice(:),dzfice(:)) 116 123 ELSE 117 CALL icefrac_lsc(klon,t(:,k),pplay(:,k)/paprs(:,1),zfice(:)) 124 pp_ratio(1:klon) = pplay(1:klon,k)/paprs(1:klon,1) 125 CALL icefrac_lsc(klon,t(:,k),pp_ratio(:),zfice(:)) 118 126 119 127 ENDIF … … 257 265 RETURN 258 266 END SUBROUTINE nuage 267 259 268 SUBROUTINE diagcld1(paprs, pplay, rain, snow, kbot, ktop, diafra, dialiq) 260 269 USE dimphy … … 340 349 RETURN 341 350 END SUBROUTINE diagcld1 351 342 352 SUBROUTINE diagcld2(paprs, pplay, t, q, diafra, dialiq) 343 353 USE dimphy … … 431 441 RETURN 432 442 END SUBROUTINE diagcld2 443 444 END MODULE nuage_mod -
LMDZ6/trunk/libf/phylmd/physiq_mod.F90
r5825 r5828 53 53 USE netcdf95, only: nf95_close 54 54 USE netcdf, only: nf90_fill_real ! IM for NMC files 55 USE nuage_mod, ONLY: nuage, diagcld1, diagcld2 55 56 USE open_climoz_m, only: open_climoz ! ozone climatology from a file 56 57 USE orografi_mod, ONLY: drag_noro, lift_noro, sugwd … … 85 86 use wxios_mod, ONLY: g_ctx, wxios_set_context 86 87 USE lmdz_lscp_main, ONLY : lscp 87 USE lmdz_call_cloud_optics_prop, ONLY : call_cloud_optics_prop 88 USE lmdz_call_cloud_optics_prop, ONLY : call_cloud_optics_prop, call_cloud_optics_prop_post 88 89 USE lmdz_lscp_old, ONLY : fisrtilp, fisrtilp_first 89 90 USE lmdz_call_blowing_snow, ONLY : call_blowing_snow_sublim_sedim … … 857 858 EXTERNAL conema3 ! convect4.3 858 859 EXTERNAL hgardfou ! verifier les temperatures 859 EXTERNAL nuage ! calculer les proprietes radiatives860 ! EXTERNAL nuage ! calculer les proprietes radiatives 860 861 !C EXTERNAL o3cm ! initialiser l'ozone 861 862 EXTERNAL orbite ! calculer l'orbite terrestre … … 1894 1895 ENDIF 1895 1896 ENDIF 1896 CALL cloud_optics_prop_ini(klon, prt_level, lunout, flag_aerosol, &1897 CALL cloud_optics_prop_ini(klon, klev, prt_level, lunout, flag_aerosol, & 1897 1898 & ok_cdnc, bl95_b0, & 1898 1899 & bl95_b1, latitude_deg, rpi, rg, rd, & … … 4541 4542 reffclwc, cldnvi, lcc3d, lcc3dcon, lcc3dstra, icc3dcon, icc3dstra, & 4542 4543 zfice, dNovrN, ptconv, rnebcon, clwcon) 4544 CALL call_cloud_optics_prop_post(ok_newmicro) 4543 4545 4544 4546 ! -
LMDZ6/trunk/libf/phylmdiso/physiq_mod.F90
r5827 r5828 52 52 USE netcdf95, only: nf95_close 53 53 USE netcdf, only: nf90_fill_real ! IM for NMC files 54 USE nuage_mod, ONLY: nuage, diagcld1, diagcld2 54 55 USE open_climoz_m, only: open_climoz ! ozone climatology from a file 55 56 USE orografi_mod, ONLY: drag_noro, lift_noro, sugwd … … 930 931 EXTERNAL conema3 ! convect4.3 931 932 EXTERNAL hgardfou ! verifier les temperatures 932 EXTERNAL nuage ! calculer les proprietes radiatives933 ! EXTERNAL nuage ! calculer les proprietes radiatives 933 934 !C EXTERNAL o3cm ! initialiser l'ozone 934 935 EXTERNAL orbite ! calculer l'orbite terrestre … … 2027 2028 ENDIF 2028 2029 ENDIF 2029 CALL cloud_optics_prop_ini(klon, prt_level, lunout, flag_aerosol, &2030 CALL cloud_optics_prop_ini(klon, klev, prt_level, lunout, flag_aerosol, & 2030 2031 & ok_cdnc, bl95_b0, & 2031 2032 & bl95_b1, latitude_deg, rpi, rg, rd, &
Note: See TracChangeset
for help on using the changeset viewer.
