Changeset 2235
- Timestamp:
- Mar 17, 2015, 10:56:59 AM (10 years ago)
- Location:
- LMDZ5/trunk/libf/phylmd
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/trunk/libf/phylmd/add_pbl_tend.F90
r2086 r2235 1 SUBROUTINE add_pbl_tend(zdu, zdv, zdt, zdq, zdql, zdqi, paprs, text )1 SUBROUTINE add_pbl_tend(zdu, zdv, zdt, zdq, zdql, zdqi, paprs, text,abortphy) 2 2 ! ====================================================================== 3 3 ! Ajoute les tendances de couche limite, soit determinees par la … … 20 20 REAL hqturb_gcssold(llm) 21 21 REAL dtime_frcg 22 INTEGER abortphy 22 23 LOGICAL turb_fcg_gcssold 23 24 COMMON /turb_forcing/dtime_frcg, hthturb_gcssold, hqturb_gcssold, & … … 46 47 PRINT *, ' add_pbl_tend, zzdt ', zzdt 47 48 PRINT *, ' add_pbl_tend, zzdq ', zzdq 48 CALL add_phys_tend(zdu, zdv, zzdt, zzdq, zdql, zdqi, paprs, text )49 CALL add_phys_tend(zdu, zdv, zzdt, zzdq, zdql, zdqi, paprs, text,abortphy) 49 50 ELSE 50 CALL add_phys_tend(zdu, zdv, zdt, zdq, zdql, zdqi, paprs, text )51 CALL add_phys_tend(zdu, zdv, zdt, zdq, zdql, zdqi, paprs, text,abortphy) 51 52 END IF 52 53 -
LMDZ5/trunk/libf/phylmd/add_phys_tend.F90
r2086 r2235 2 2 ! $Id$ 3 3 ! 4 SUBROUTINE add_phys_tend (zdu,zdv,zdt,zdq,zdql,zdqi,paprs,text )4 SUBROUTINE add_phys_tend (zdu,zdv,zdt,zdq,zdql,zdqi,paprs,text,abortphy) 5 5 !====================================================================== 6 6 ! Ajoute les tendances des variables physiques aux variables … … 28 28 REAL paprs(klon,klev+1) 29 29 CHARACTER*(*) text 30 INTEGER abortphy 30 31 31 32 ! Local : … … 52 53 ! Initialisations 53 54 54 debug_level=10 55 IF (abortphy==1) RETURN ! on n ajoute pas les tendance si le modele 56 ! a deja plante. 57 58 debug_level=10 55 59 if (first) then 56 60 itap=0 … … 230 234 ENDIF 231 235 232 CALL hgardfou(t_seri,ftsol,text) 236 237 !====================================================================== 238 ! Contrôle des min/max pour arrêt du modèle 239 ! Si le modele est en mode abortphy, on retire les tendances qu'on 240 ! vient d'ajouter. Pas exactement parce qu'on ne tient pas compte des 241 ! seuils. 242 !====================================================================== 243 244 CALL hgardfou(t_seri,ftsol,text,abortphy) 245 IF (abortphy==1) THEN 246 Print*,'ERROR ABORT hgardfou dans ',text 247 u_seri(:,:)=u_seri(:,:)-zdu(:,:) 248 v_seri(:,:)=v_seri(:,:)-zdv(:,:) 249 ql_seri(:,:)=ql_seri(:,:)-zdql(:,:) 250 qs_seri(:,:)=qs_seri(:,:)-zdqi(:,:) 251 ENDIF 252 253 254 233 255 RETURN 234 256 END -
LMDZ5/trunk/libf/phylmd/hgardfou.F90
r2100 r2235 1 1 2 2 ! $Id$ 3 SUBROUTINE hgardfou(t, tsol, text )3 SUBROUTINE hgardfou(t, tsol, text,abortphy) 4 4 USE dimphy 5 5 USE phys_state_var_mod … … 15 15 CHARACTER(len=*), intent(in):: text 16 16 CHARACTER (LEN=20) :: modname = 'hgardfou' 17 INTEGER abortphy 17 18 18 19 INTEGER i, k, nsrf … … 128 129 END DO 129 130 130 IF (.NOT. ok) CALL abort_gcm(modname, text, 1) 131 ! IF (.NOT. ok) CALL abort_gcm(modname, text, 1) 132 IF (.NOT. ok) abortphy=1 131 133 132 134 END SUBROUTINE hgardfou -
LMDZ5/trunk/libf/phylmd/physiq.F90
r2231 r2235 291 291 SAVE itap ! compteur pour la physique 292 292 !$OMP THREADPRIVATE(itap) 293 294 INTEGER, SAVE :: abortphy=0 ! Reprere si on doit arreter en fin de phys 295 !$OMP THREADPRIVATE(abortphy) 293 296 ! 294 297 REAL,save :: solarlong0 … … 1603 1606 !IM END 1604 1607 ! 1605 CALL hgardfou(t_seri,ftsol,'debutphy') 1608 CALL hgardfou(t_seri,ftsol,'debutphy',abortphy) 1609 IF (abortphy==1) Print*,'ERROR ABORT hgardfou debutphy' 1610 1606 1611 ! 1607 1612 !IM BEG … … 1908 1913 IF (klon_glo==1) THEN 1909 1914 CALL add_pbl_tend & 1910 (d_u_vdf,d_v_vdf,d_t_vdf+d_t_diss,d_q_vdf,dql0,dqi0,paprs,'vdf')1915 (d_u_vdf,d_v_vdf,d_t_vdf+d_t_diss,d_q_vdf,dql0,dqi0,paprs,'vdf',abortphy) 1911 1916 ELSE 1912 1917 CALL add_phys_tend & 1913 (d_u_vdf,d_v_vdf,d_t_vdf+d_t_diss,d_q_vdf,dql0,dqi0,paprs,'vdf')1918 (d_u_vdf,d_v_vdf,d_t_vdf+d_t_diss,d_q_vdf,dql0,dqi0,paprs,'vdf',abortphy) 1914 1919 ENDIF 1915 1920 !-------------------------------------------------------------------- … … 2345 2350 2346 2351 CALL add_phys_tend(d_u_con, d_v_con, d_t_con, d_q_con, dql0, dqi0, paprs, & 2347 'convection') 2352 'convection',abortphy) 2353 2348 2354 !---------------------------------------------------------------------------- 2349 2355 … … 2514 2520 d_t_wake(:,:)=dt_wake(:,:)*dtime 2515 2521 d_q_wake(:,:)=dq_wake(:,:)*dtime 2516 CALL add_phys_tend(du0,dv0,d_t_wake,d_q_wake,dql0,dqi0,paprs,'wake' )2522 CALL add_phys_tend(du0,dv0,d_t_wake,d_q_wake,dql0,dqi0,paprs,'wake',abortphy) 2517 2523 !------------------------------------------------------------------------ 2518 2524 … … 2825 2831 !----------------------------------------------------------------------- 2826 2832 ! ajout des tendances de l'ajustement sec ou des thermiques 2827 CALL add_phys_tend(du0,dv0,d_t_ajsb,d_q_ajsb,dql0,dqi0,paprs,'ajsb' )2833 CALL add_phys_tend(du0,dv0,d_t_ajsb,d_q_ajsb,dql0,dqi0,paprs,'ajsb',abortphy) 2828 2834 d_t_ajs(:,:)=d_t_ajs(:,:)+d_t_ajsb(:,:) 2829 2835 d_q_ajs(:,:)=d_q_ajs(:,:)+d_q_ajsb(:,:) … … 2882 2888 WHERE (snow_lsc < 0) snow_lsc = 0. 2883 2889 2884 CALL add_phys_tend(du0,dv0,d_t_lsc,d_q_lsc,d_ql_lsc,d_qi_lsc,paprs,'lsc' )2890 CALL add_phys_tend(du0,dv0,d_t_lsc,d_q_lsc,d_ql_lsc,d_qi_lsc,paprs,'lsc',abortphy) 2885 2891 !--------------------------------------------------------------------------- 2886 2892 DO k = 1, klev … … 3561 3567 d_t_sw0(:,:)=heat0(:,:)*dtime/RDAY 3562 3568 d_t_lw0(:,:)=-cool0(:,:)*dtime/RDAY 3563 CALL add_phys_tend(du0,dv0,d_t_swr,dq0,dql0,dqi0,paprs,'SW' )3564 CALL add_phys_tend(du0,dv0,d_t_lwr,dq0,dql0,dqi0,paprs,'LW' )3569 CALL add_phys_tend(du0,dv0,d_t_swr,dq0,dql0,dqi0,paprs,'SW',abortphy) 3570 CALL add_phys_tend(du0,dv0,d_t_lwr,dq0,dql0,dqi0,paprs,'LW',abortphy) 3565 3571 3566 3572 ! … … 3645 3651 !----------------------------------------------------------------------------------------- 3646 3652 ! ajout des tendances de la trainee de l'orographie 3647 CALL add_phys_tend(d_u_oro,d_v_oro,d_t_oro,dq0,dql0,dqi0,paprs,'oro' )3653 CALL add_phys_tend(d_u_oro,d_v_oro,d_t_oro,dq0,dql0,dqi0,paprs,'oro',abortphy) 3648 3654 !----------------------------------------------------------------------------------------- 3649 3655 ! … … 3691 3697 !----------------------------------------------------------------------------------------- 3692 3698 ! ajout des tendances de la portance de l'orographie 3693 CALL add_phys_tend(d_u_lif,d_v_lif,d_t_lif,dq0,dql0,dqi0,paprs,'lif' )3699 CALL add_phys_tend(d_u_lif,d_v_lif,d_t_lif,dq0,dql0,dqi0,paprs,'lif',abortphy) 3694 3700 !----------------------------------------------------------------------------------------- 3695 3701 ! … … 3705 3711 ! 3706 3712 ! ajout des tendances 3707 CALL add_phys_tend(d_u_hin,d_v_hin,d_t_hin,dq0,dql0,dqi0,paprs,'hin' )3713 CALL add_phys_tend(d_u_hin,d_v_hin,d_t_hin,dq0,dql0,dqi0,paprs,'hin',abortphy) 3708 3714 3709 3715 ENDIF … … 3714 3720 du_gwd_rando, dv_gwd_rando) 3715 3721 CALL add_phys_tend(du_gwd_rando, dv_gwd_rando, dt0, dq0, dql0,dqi0,paprs, & 3716 'flott_gwd_rando' )3722 'flott_gwd_rando',abortphy) 3717 3723 end if 3718 3724 … … 3768 3774 CALL METHOX(1,klon,klon,klev,q_seri,d_q_ch4,pplay) 3769 3775 ! ajout de la tendance d'humidite due au methane 3770 CALL add_phys_tend(du0,dv0,dt0,d_q_ch4*dtime,dql0,'q_ch4' )3776 CALL add_phys_tend(du0,dv0,dt0,d_q_ch4*dtime,dql0,'q_ch4',abortphy) 3771 3777 END IF 3772 3778 ! … … 4149 4155 !On effectue les sorties: 4150 4156 4151 CALL phys_output_write(itap, pdtphys, paprs, pphis, 4157 CALL phys_output_write(itap, pdtphys, paprs, pphis, & 4152 4158 pplay, lmax_th, aerosol_couple, & 4153 4159 ok_ade, ok_aie, ivap, new_aod, ok_sync, & … … 4158 4164 4159 4165 4160 4161 4166 include "write_histday_seri.h" 4162 4167 … … 4164 4169 4165 4170 #endif 4171 4172 4173 !==================================================================== 4174 ! Arret du modele apres hgardfou en cas de detection d'un 4175 ! plantage par hgardfou 4176 !==================================================================== 4177 4178 IF (abortphy==1) THEN 4179 abort_message ='Plantage hgardfou' 4180 CALL abort_gcm (modname,abort_message,1) 4181 ENDIF 4182 4166 4183 4167 4184 ! 22.03.04 END
Note: See TracChangeset
for help on using the changeset viewer.