Changeset 5560 for LMDZ6/trunk
- Timestamp:
- Feb 25, 2025, 6:59:53 PM (3 months ago)
- Location:
- LMDZ6/trunk/libf/phylmd
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/phylmd/cv3_routines.f90
r5544 r5560 11 11 use mod_phys_lmdz_para 12 12 USE conema3_mod_h 13 USE lmdz_cv_ini, ONLY : alpha,alpha1,beta,betad,coef_peel,cv_flag_feed,delta,dpbase,dtcrit,dtovsh,dttrig,ejectice,ejectliq,elcrit,flag_epkeorig,flag_wb,minorig,nl,nlm,nlp,noconv_stop,noff,omtrain,pbcrit,ptcrit,sigdz,spfac,t_top_max,tau,tau_stop,tlcrit,wbmax,keep_bug_indices_cv3_tracer 13 USE lmdz_cv_ini, ONLY : alpha,alpha1,beta,betad,coef_peel,cv_flag_feed,delta,dpbase,dtcrit,dtovsh,dttrig,ejectice,ejectliq,elcrit,flag_epkeorig,flag_wb,minorig,nl,nlm,nlp,noconv_stop,noff,omtrain,pbcrit,ptcrit,sigdz,spfac,t_top_max,tau,tau_stop,tlcrit,wbmax 14 USE lmdz_cv_ini, ONLY : keep_bug_indices_cv3_tracer, keep_bug_q_nocons_cv 14 15 15 16 … … 141 142 keep_bug_indices_cv3_tracer = .FALSE. 142 143 CALL getin_p('keep_bug_indices_cv3_tracer', keep_bug_indices_cv3_tracer) 144 keep_bug_q_nocons_cv = .TRUE. 145 CALL getin_p('keep_bug_q_nocons_cv', keep_bug_q_nocons_cv) 143 146 144 147 … … 168 171 WRITE (*, *) 'keepbug_ice_frac =', keepbug_ice_frac 169 172 WRITE (*, *) 'keep_bug_indices_cv3_tracer =', keep_bug_indices_cv3_tracer 173 WRITE (*, *) 'keep_bug_q_nocons_cv =', keep_bug_q_nocons_cv 170 174 171 175 first = .FALSE. … … 2703 2707 wdtrainA, wdtrainS, wdtrainM) ! RomP 2704 2708 USE lmdz_cv_ini, ONLY : cpd,ginv,grav,nl,nlp,sigdz 2709 USE lmdz_cv_ini, ONLY : keep_bug_q_nocons_cv 2705 2710 USE cvflag_mod_h 2706 2711 USE print_control_mod, ONLY: prt_level, lunout … … 2905 2910 2906 2911 2907 DO il = 1, ncum 2908 IF (i<=inb(il) .AND. lwork(il)) THEN 2909 wdtrainS(il, i) = ep(il, i)*m(il, i)*clw(il, i) ! jyg 2910 !!jyg wdtrain(il) = grav*ep(il, i)*m(il, i)*clw(il, i) 2911 !!jyg wdtrainS(il, i) = wdtrain(il)/grav ! Ps jyg 2912 !!jyg wdtrainA(il, i) = wdtrain(il)/grav ! Ps RomP 2913 END IF 2914 END DO 2915 2916 IF (i>1) THEN 2917 DO j = 1, i - 1 2912 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 2913 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 2914 IF (keep_bug_q_nocons_cv) THEN 2915 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 2918 2916 DO il = 1, ncum 2919 2917 IF (i<=inb(il) .AND. lwork(il)) THEN 2920 awat = elij(il, j, i) - (1.-ep(il,i))*clw(il, i) 2921 awat = max(awat, 0.0) 2922 wdtrainM(il, i) = wdtrainM(il, i) + awat*ment(il, j, i) ! jyg 2923 !!jyg wdtrain(il) = wdtrain(il) + grav*awat*ment(il, j, i) 2924 !!jyg wdtrainM(il, i) = wdtrain(il)/grav - wdtrainS(il, i) ! Pm jyg 2925 !!jyg wdtrainM(il, i) = wdtrain(il)/grav - wdtrainA(il, i) ! Pm RomP 2918 wdtrain(il) = grav*ep(il, i)*m(il, i)*clw(il, i) 2919 wdtrainS(il, i) = wdtrain(il)/grav ! Ps jyg 2926 2920 END IF 2927 2921 END DO 2928 END DO 2929 END IF 2930 2931 IF (cvflag_prec_eject) THEN 2932 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 2933 IF (adiab_ascent_mass_flux_depends_on_ejectliq) THEN 2934 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 2935 !!! Warning : this option leads to water conservation violation 2936 !!! Expert only 2937 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 2938 IF ( i > 1) THEN 2922 2923 IF (i>1) THEN 2924 DO j = 1, i - 1 2939 2925 DO il = 1, ncum 2940 2926 IF (i<=inb(il) .AND. lwork(il)) THEN 2941 wdtrainA(il,i) = ma(il, i+1)*(qta(il, i-1)-qta(il,i))/(1. - qta(il, i-1)) ! Pa jygprl 2942 !!jyg wdtrain(il) = wdtrain(il) + grav*wdtrainA(il,i) 2927 awat = elij(il, j, i) - (1.-ep(il,i))*clw(il, i) 2928 awat = max(awat, 0.0) 2929 wdtrain(il) = wdtrain(il) + grav*awat*ment(il, j, i) 2930 wdtrainM(il, i) = wdtrain(il)/grav - wdtrainS(il, i) ! Pm jyg 2943 2931 END IF 2944 2932 END DO 2945 ENDIF ! ( i > 1) 2946 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 2947 ELSE ! (adiab_ascent_mass_flux_depends_on_ejectliq) 2948 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 2949 IF ( i > 1) THEN 2933 END DO 2934 END IF 2935 2936 IF (cvflag_prec_eject) THEN 2937 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 2938 IF (adiab_ascent_mass_flux_depends_on_ejectliq) THEN 2939 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 2940 !!! Warning : this option leads to water conservation violation 2941 !!! Expert only 2942 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 2943 IF ( i > 1) THEN 2944 DO il = 1, ncum 2945 IF (i<=inb(il) .AND. lwork(il)) THEN 2946 wdtrainA(il,i) = ma(il, i+1)*(qta(il, i-1)-qta(il,i))/(1. - qta(il, i-1)) ! Pa jygprl 2947 wdtrain(il) = wdtrain(il) + grav*wdtrainA(il,i) 2948 END IF 2949 END DO 2950 ENDIF ! ( i > 1) 2951 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 2952 ELSE ! (adiab_ascent_mass_flux_depends_on_ejectliq) 2953 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 2954 IF ( i > 1) THEN 2955 DO il = 1, ncum 2956 IF (i<=inb(il) .AND. lwork(il)) THEN 2957 wdtrainA(il,i) = ma(il, i+1)*(qta(il, i-1)-qta(il,i)) ! Pa jygprl 2958 wdtrain(il) = wdtrain(il) + grav*wdtrainA(il,i) 2959 END IF 2960 END DO 2961 ENDIF ! ( i > 1) 2962 2963 ENDIF ! (adiab_ascent_mass_flux_depends_on_ejectliq) ELSE 2964 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 2965 ENDIF ! (cvflag_prec_eject) 2966 2967 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 2968 ELSE ! (keep_bug_q_nocons_cv) 2969 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 2970 DO il = 1, ncum 2971 IF (i<=inb(il) .AND. lwork(il)) THEN 2972 wdtrainS(il, i) = ep(il, i)*m(il, i)*clw(il, i) ! jyg 2973 END IF 2974 END DO 2975 2976 IF (i>1) THEN 2977 DO j = 1, i - 1 2950 2978 DO il = 1, ncum 2951 2979 IF (i<=inb(il) .AND. lwork(il)) THEN 2952 wdtrainA(il,i) = ma(il, i+1)*(qta(il, i-1)-qta(il,i)) ! Pa jygprl 2953 !!jyg wdtrain(il) = wdtrain(il) + grav*wdtrainA(il,i) 2980 awat = elij(il, j, i) - (1.-ep(il,i))*clw(il, i) 2981 awat = max(awat, 0.0) 2982 wdtrainM(il, i) = wdtrainM(il, i) + awat*ment(il, j, i) ! jyg 2954 2983 END IF 2955 2984 END DO 2956 ENDIF ! ( i > 1) 2957 2958 ENDIF ! (adiab_ascent_mass_flux_depends_on_ejectliq) ELSE 2959 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 2960 ENDIF ! (cvflag_prec_eject) 2961 2962 IF ( i > 1) THEN 2963 DO il = 1, ncum 2964 IF (i<=inb(il) .AND. lwork(il)) THEN 2965 wdtrain(il) = grav*(wdtrainS(il,i) + wdtrainM(il,i) + wdtrainA(il,i)) 2985 END DO 2966 2986 END IF 2967 END DO 2968 ENDIF ! ( i > 1) 2987 2988 IF (cvflag_prec_eject) THEN 2989 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 2990 IF (adiab_ascent_mass_flux_depends_on_ejectliq) THEN 2991 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 2992 !!! Warning : this option leads to water conservation violation 2993 !!! Expert only 2994 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 2995 IF ( i > 1) THEN 2996 DO il = 1, ncum 2997 IF (i<=inb(il) .AND. lwork(il)) THEN 2998 wdtrainA(il,i) = ma(il, i+1)*(qta(il, i-1)-qta(il,i))/(1. - qta(il, i-1)) ! Pa jygprl 2999 END IF 3000 END DO 3001 ENDIF ! ( i > 1) 3002 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 3003 ELSE ! (adiab_ascent_mass_flux_depends_on_ejectliq) 3004 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 3005 IF ( i > 1) THEN 3006 DO il = 1, ncum 3007 IF (i<=inb(il) .AND. lwork(il)) THEN 3008 wdtrainA(il,i) = ma(il, i+1)*(qta(il, i-1)-qta(il,i)) ! Pa jygprl 3009 END IF 3010 END DO 3011 ENDIF ! ( i > 1) 3012 3013 ENDIF ! (adiab_ascent_mass_flux_depends_on_ejectliq) ELSE 3014 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 3015 ENDIF ! (cvflag_prec_eject) 3016 3017 IF ( i > 1) THEN 3018 DO il = 1, ncum 3019 IF (i<=inb(il) .AND. lwork(il)) THEN 3020 wdtrain(il) = grav*(wdtrainS(il,i) + wdtrainM(il,i) + wdtrainA(il,i)) 3021 END IF 3022 END DO 3023 ENDIF ! ( i > 1) 3024 3025 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 3026 ENDIF ! (keep_bug_q_nocons_cv) 3027 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 3028 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 2969 3029 2970 3030 ! *** find rain water and evaporation using provisional *** … … 3459 3519 USE cvflag_mod_h 3460 3520 USE lmdz_cv_ini, ONLY : grav,minorig,nl,nlp,rowl,rrd,nl,ci,cl,cpd,cpv 3521 USE lmdz_cv_ini, ONLY : keep_bug_q_nocons_cv 3461 3522 IMPLICIT NONE 3462 3523 … … 3545 3606 ! ------------------------------------------------------------- 3546 3607 3608 3547 3609 ! initialization: 3548 3610 … … 4033 4095 IF (ok_optim_yield) THEN !| 4034 4096 !----------------------------------------------------------- 4035 DO il = 1, ncum 4036 amp1(il) = upwd(il,i+1) 4037 !!jyg20250215 ad(il) = dnwd(il,i) 4038 ad(il) = -dnwd(il,i) 4039 ENDDO 4097 IF (keep_bug_q_nocons_cv) THEN !!jyg20250215 4098 DO il = 1, ncum 4099 amp1(il) = upwd(il,i+1) 4100 ad(il) = dnwd(il,i) 4101 ENDDO 4102 ELSE ! (keep_bug_q_nocons_cv) 4103 DO il = 1, ncum 4104 amp1(il) = upwd(il,i+1) 4105 ad(il) = - dnwd(il,i) 4106 ENDDO 4107 ENDIF ! (keep_bug_q_nocons_cv) 4040 4108 !----------------------------------------------------------- 4041 4109 ELSE !(ok_optim_yield) !| -
LMDZ6/trunk/libf/phylmd/lmdz_cv_ini.f90
r5502 r5560 13 13 delta, betad, ejectliq, ejectice, flag_wb, flag_epKEorig, cv_flag_feed, noff, minorig, & 14 14 nl, nlp, nlm 15 PUBLIC cpd, cpv, cl, ci, rrv, rrd, lv0, lf0, g, rowl, t0, clmcpv, clmcpd, cpdmcp, cpvmcpd, cpvmcl & 16 , clmci, eps, epsi, epsim1, ginv, hrd, grav, keep_bug_indices_cv3_tracer 15 PUBLIC cpd, cpv, cl, ci, rrv, rrd, lv0, lf0, g, rowl, t0, clmcpv, clmcpd, cpdmcp, cpvmcpd, cpvmcl, & 16 clmci, eps, epsi, epsim1, ginv, hrd, grav, keep_bug_indices_cv3_tracer, & 17 keep_bug_q_nocons_cv 17 18 18 19 … … 71 72 LOGICAL keep_bug_indices_cv3_tracer 72 73 !$OMP THREADPRIVATE( keep_bug_indices_cv3_tracer) 74 LOGICAL keep_bug_q_nocons_cv 75 !$OMP THREADPRIVATE( keep_bug_q_nocons_cv) 73 76 74 77 END MODULE lmdz_cv_ini
Note: See TracChangeset
for help on using the changeset viewer.