- Timestamp:
- Aug 3, 2016, 5:41:26 PM (8 years ago)
- Location:
- LMDZ5/trunk/libf/phylmd
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/trunk/libf/phylmd/add_pbl_tend.F90
r2346 r2611 1 SUBROUTINE add_pbl_tend(zdu, zdv, zdt, zdq, zdql, zdqi, paprs, text,abortphy )1 SUBROUTINE add_pbl_tend(zdu, zdv, zdt, zdq, zdql, zdqi, paprs, text,abortphy,flag_inhib_tend) 2 2 ! ====================================================================== 3 3 ! Ajoute les tendances de couche limite, soit determinees par la … … 34 34 CHARACTER *(*) text 35 35 REAL paprs(klon,klev+1) 36 INTEGER flag_inhib_tend ! if flag_inhib_tend != 0, tendencies are not added 36 37 37 38 ! Local : … … 56 57 PRINT *, ' add_pbl_tend, zzdt ', zzdt 57 58 PRINT *, ' add_pbl_tend, zzdq ', zzdq 58 CALL add_phys_tend(zdu, zdv, zzdt, zzdq, zdql, zdqi, paprs, text,abortphy )59 CALL add_phys_tend(zdu, zdv, zzdt, zzdq, zdql, zdqi, paprs, text,abortphy,flag_inhib_tend) 59 60 ELSE 60 CALL add_phys_tend(zdu, zdv, zdt, zdq, zdql, zdqi, paprs, text,abortphy )61 CALL add_phys_tend(zdu, zdv, zdt, zdq, zdql, zdqi, paprs, text,abortphy,flag_inhib_tend) 61 62 END IF 62 63 -
LMDZ5/trunk/libf/phylmd/add_phys_tend.F90
r2400 r2611 2 2 ! $Id$ 3 3 ! 4 SUBROUTINE add_phys_tend (zdu,zdv,zdt,zdq,zdql,zdqi,paprs,text,abortphy )4 SUBROUTINE add_phys_tend (zdu,zdv,zdt,zdq,zdql,zdqi,paprs,text,abortphy,flag_inhib_tend) 5 5 !====================================================================== 6 6 ! Ajoute les tendances des variables physiques aux variables … … 20 20 USE geometry_mod, ONLY: longitude_deg, latitude_deg 21 21 USE print_control_mod, ONLY: prt_level 22 USE cmp_seri_mod 22 23 IMPLICIT none 23 24 include "YOMCST.h" … … 31 32 CHARACTER*(*) text 32 33 INTEGER abortphy 34 INTEGER flag_inhib_tend ! if flag_inhib_tend != 0, tendencies are not added 33 35 34 36 ! Local : … … 55 57 ! Initialisations 56 58 57 IF (abortphy==1) RETURN ! on n ajoute pas les tendance si le modele 59 IF (prt_level >= 5) then 60 write (*,*) "In add_phys_tend, after ",text 61 call flush 62 end if 63 64 ! if flag_inhib_tend != 0, tendencies are not added 65 IF (flag_inhib_tend /= 0) then 66 ! If requiered, diagnostics are shown 67 IF (flag_inhib_tend > 0) then 68 ! print some diagnostics if xxx_seri have changed 69 call cmp_seri(flag_inhib_tend,text) 70 END IF 71 RETURN ! on n ajoute pas les tendance 72 END IF 73 74 IF (abortphy==1) RETURN ! on n ajoute pas les tendance si le modele 58 75 ! a deja plante. 59 76 … … 259 276 260 277 261 262 END 278 RETURN 279 END SUBROUTINE add_phys_tend -
LMDZ5/trunk/libf/phylmd/dyn1d/lmdz1d.F90
r2602 r2611 248 248 integer jcode 249 249 INTEGER read_climoz 250 ! 251 integer :: it_end ! iteration number of the last call 250 252 !Al1 251 253 integer ecrit_slab_oc !1=ecrit,-1=lit,0=no file 252 254 data ecrit_slab_oc/-1/ 255 ! 256 ! if flag_inhib_forcing = 0, tendencies of forcing are added 257 ! <> 0, tendencies of forcing are not added 258 INTEGER :: flag_inhib_forcing = 0 253 259 254 260 !===================================================================== … … 747 753 pbl_tke(:,2,:)=1.e-2 748 754 PRINT *, ' pbl_tke dans lmdz1d ' 749 DO nsrf = 1,4 750 PRINT *,'pbl_tke(1,:,',nsrf,') ',pbl_tke(1,:,nsrf) 751 ENDDO 755 if (prt_level .ge. 5) then 756 DO nsrf = 1,4 757 PRINT *,'pbl_tke(1,:,',nsrf,') ',pbl_tke(1,:,nsrf) 758 ENDDO 759 end if 752 760 753 761 !>jyg … … 900 908 !===================================================================== 901 909 902 do while(it.le.nint(fnday*day_step)) 910 it_end = nint(fnday*day_step) 911 !test JLD it_end = 10 912 do while(it.le.it_end) 903 913 904 914 if (prt_level.ge.1) then 905 915 print*,'XXXXXXXXXXXXXXXXXXX ITAP,day,time=', & 906 & it,day,time, nint(fnday*day_step),day_step916 & it,day,time,it_end,day_step 907 917 print*,'PAS DE TEMPS ',timestep 908 918 endif 909 919 !Al1 demande de restartphy.nc 910 if (it.eq. nint(fnday*day_step)) lastcall=.True.920 if (it.eq.it_end) lastcall=.True. 911 921 912 922 !--------------------------------------------------------------------- … … 938 948 write(*,*) 'firstcall,lastcall,phis', & 939 949 & firstcall,lastcall,phis 950 end if 951 if (prt_level>=5) then 940 952 write(*,'(a10,2a4,4a13)') 'BEFOR1 IT=','it','l', & 941 953 & 'presniv','plev','play','phi' … … 959 971 960 972 !--------------------------------------------------------------------- 961 ! Listing output for debug prt_level>=1962 !--------------------------------------------------------------------- 963 if (prt_level>= 1) then973 ! Listing output for debug 974 !--------------------------------------------------------------------- 975 if (prt_level>=5) then 964 976 write(*,'(a11,2a4,4a13)') 'AFTER1 IT=','it','l', & 965 977 & 'presniv','plev','play','phi' … … 998 1010 endif 999 1011 1000 IF (prt_level >= 1) print*, 'fcoriolis, xlat,mxcalc ', &1012 IF (prt_level >= 5) print*, 'fcoriolis, xlat,mxcalc ', & 1001 1013 fcoriolis, xlat,mxcalc 1002 1014 … … 1048 1060 !! Increment state variables 1049 1061 !!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1062 IF (flag_inhib_forcing == 0) then ! if tendency of forcings should be added 1063 1050 1064 ! pour les cas sandu et astex, on reclacule u,v,q,temp et teta dans 1D_nudge_sandu_astex.h 1051 1065 ! au dessus de 700hpa, on relaxe vers les profils initiaux … … 1066 1080 & +d_q_nudge(1:mxcalc,:) ) 1067 1081 1068 if (prt_level.ge. 1) then1082 if (prt_level.ge.3) then 1069 1083 print *, & 1070 1084 & 'physiq-> temp(1),dt_phys(1),d_th_adv(1),dt_cooling(1) ', & … … 1113 1127 !cc q(1:mxcalc,2)=tmpvar(1:mxcalc) 1114 1128 1129 END IF ! end if tendency of tendency should be added 1130 1115 1131 !--------------------------------------------------------------------- 1116 1132 ! Air temperature : -
LMDZ5/trunk/libf/phylmd/physiq_mod.F90
r2606 r2611 216 216 217 217 USE paramLMDZ_phy_mod 218 219 USE cmp_seri_mod 218 220 219 221 !IM stations CFMIP … … 801 803 ! eva: evaporation de l'eau liquide nuageuse 802 804 ! vdf: couche limite (Vertical DiFfusion) 803 805 ! 804 806 ! tendance nulles 805 807 REAL, dimension(klon,klev):: du0, dv0, dt0, dq0, dql0, dqi0 808 ! 809 ! Flag pour pouvoir ne pas ajouter les tendances. 810 ! Par defaut, les tendances doivente etre ajoutees et 811 ! flag_inhib_tend = 0 812 ! flag_inhib_tend > 0 : tendances non ajoutees, avec un nombre 813 ! croissant de print quand la valeur du flag augmente 814 !!! attention, ce flag doit etre change avec prudence !!! 815 INTEGER :: flag_inhib_tend = 0 ! 0 is the default value 816 !! INTEGER :: flag_inhib_tend = 2 806 817 807 818 ! … … 1772 1783 ENDDO 1773 1784 ENDDO 1785 ! Initialize variables used for diagnostic purpose 1786 if (flag_inhib_tend .ne. 0) call init_cmp_seri 1774 1787 !IM 1775 1788 IF (ip_ebil_phy.ge.1) THEN … … 2217 2230 CALL add_pbl_tend & 2218 2231 (d_u_vdf,d_v_vdf,d_t_vdf+d_t_diss,d_q_vdf,dql0,dqi0,paprs,& 2219 'vdf',abortphy )2232 'vdf',abortphy,flag_inhib_tend) 2220 2233 ELSE 2221 2234 CALL add_phys_tend & 2222 2235 (d_u_vdf,d_v_vdf,d_t_vdf+d_t_diss,d_q_vdf,dql0,dqi0,paprs,& 2223 'vdf',abortphy )2236 'vdf',abortphy,flag_inhib_tend) 2224 2237 ENDIF 2225 2238 !-------------------------------------------------------------------- … … 2599 2612 2600 2613 CALL add_phys_tend(d_u_con, d_v_con, d_t_con, d_q_con, dql0, dqi0, paprs, & 2601 'convection',abortphy )2614 'convection',abortphy,flag_inhib_tend) 2602 2615 2603 2616 !------------------------------------------------------------------------- … … 2772 2785 d_q_wake(:,:)=dq_wake(:,:)*dtime 2773 2786 CALL add_phys_tend(du0,dv0,d_t_wake,d_q_wake,dql0,dqi0,paprs,'wake', & 2774 abortphy )2787 abortphy,flag_inhib_tend) 2775 2788 !------------------------------------------------------------------------ 2776 2789 … … 2919 2932 ! 2920 2933 CALL add_phys_tend(d_u_ajs,d_v_ajs,d_t_ajs,d_q_ajs, & 2921 dql0,dqi0,paprs,'thermals', abortphy )2934 dql0,dqi0,paprs,'thermals', abortphy,flag_inhib_tend) 2922 2935 ! 2923 2936 !>jyg … … 2983 2996 ! ajout des tendances de l'ajustement sec ou des thermiques 2984 2997 CALL add_phys_tend(du0,dv0,d_t_ajsb,d_q_ajsb,dql0,dqi0,paprs, & 2985 'ajsb',abortphy )2998 'ajsb',abortphy,flag_inhib_tend) 2986 2999 d_t_ajs(:,:)=d_t_ajs(:,:)+d_t_ajsb(:,:) 2987 3000 d_q_ajs(:,:)=d_q_ajs(:,:)+d_q_ajsb(:,:) … … 3042 3055 3043 3056 CALL add_phys_tend(du0,dv0,d_t_lsc,d_q_lsc,d_ql_lsc,d_qi_lsc,paprs, & 3044 'lsc',abortphy )3057 'lsc',abortphy,flag_inhib_tend) 3045 3058 !--------------------------------------------------------------------------- 3046 3059 DO k = 1, klev … … 3804 3817 ENDDO 3805 3818 3806 CALL add_phys_tend(du0,dv0,d_t_swr,dq0,dql0,dqi0,paprs,'SW',abortphy )3807 CALL add_phys_tend(du0,dv0,d_t_lwr,dq0,dql0,dqi0,paprs,'LW',abortphy )3819 CALL add_phys_tend(du0,dv0,d_t_swr,dq0,dql0,dqi0,paprs,'SW',abortphy,flag_inhib_tend) 3820 CALL add_phys_tend(du0,dv0,d_t_lwr,dq0,dql0,dqi0,paprs,'LW',abortphy,flag_inhib_tend) 3808 3821 3809 3822 ! … … 3889 3902 ! ajout des tendances de la trainee de l'orographie 3890 3903 CALL add_phys_tend(d_u_oro,d_v_oro,d_t_oro,dq0,dql0,dqi0,paprs,'oro', & 3891 abortphy )3904 abortphy,flag_inhib_tend) 3892 3905 !---------------------------------------------------------------------- 3893 3906 ! … … 3935 3948 ! ajout des tendances de la portance de l'orographie 3936 3949 CALL add_phys_tend(d_u_lif, d_v_lif, d_t_lif, dq0, dql0, dqi0, paprs, & 3937 'lif', abortphy )3950 'lif', abortphy,flag_inhib_tend) 3938 3951 ENDIF ! fin de test sur ok_orolf 3939 3952 … … 3958 3971 d_t_hin(:, :)=0. 3959 3972 CALL add_phys_tend(du_gwd_hines, dv_gwd_hines, d_t_hin, dq0, dql0, & 3960 dqi0, paprs, 'hin', abortphy )3973 dqi0, paprs, 'hin', abortphy,flag_inhib_tend) 3961 3974 ENDIF 3962 3975 … … 3975 3988 3976 3989 CALL add_phys_tend(du_gwd_front, dv_gwd_front, dt0, dq0, dql0, dqi0, & 3977 paprs, 'front_gwd_rando', abortphy )3990 paprs, 'front_gwd_rando', abortphy,flag_inhib_tend) 3978 3991 ENDIF 3979 3992 … … 3983 3996 du_gwd_rando, dv_gwd_rando, east_gwstress, west_gwstress) 3984 3997 CALL add_phys_tend(du_gwd_rando, dv_gwd_rando, dt0, dq0, dql0, dqi0, & 3985 paprs, 'flott_gwd_rando', abortphy )3998 paprs, 'flott_gwd_rando', abortphy,flag_inhib_tend) 3986 3999 zustr_gwd_rando=0. 3987 4000 zvstr_gwd_rando=0. … … 4046 4059 ! ajout de la tendance d'humidite due au methane 4047 4060 CALL add_phys_tend(du0, dv0, dt0, d_q_ch4*dtime, dql0, dqi0, paprs, & 4048 'q_ch4', abortphy )4061 'q_ch4', abortphy,flag_inhib_tend) 4049 4062 END IF 4050 4063 ! -
LMDZ5/trunk/libf/phylmd/radlwsw_m.F90
r2530 r2611 465 465 PWV(i,k) = MAX (q(iof+i,k), 1.0e-12) 466 466 PQS(i,k) = PWV(i,k) 467 ! Confert from column density of ozone in a cell, in kDU, to a mass fraction 467 468 POZON(i,k, :) = wo(iof+i, k, :) * RG * dobson_u * 1e3 & 468 469 / (paprs(iof+i, k) - paprs(iof+i, k+1))
Note: See TracChangeset
for help on using the changeset viewer.