4 SUBROUTINE physiq (nlon,nlev, &
5 & debut,lafin,jd_cur, jh_cur,
pdtphys, &
9 & d_u, d_v, d_t, d_qx, d_ps &
23 USE xios
, ONLY: xios_update_calendar
24 USE wxios
, only: wxios_add_vaxis, wxios_set_timestep, wxios_closedef, &
32 integer,
intent(in) :: nlon
33 integer,
intent(in) :: nlev
34 real,
intent(in) :: jD_cur
35 real,
intent(in) :: jH_cur
36 logical,
intent(in) :: debut
37 logical,
intent(in) :: lafin
38 real,
intent(in) :: pdtphys
39 real,
intent(in) :: paprs(
klon,
klev+1)
42 real,
intent(in) :: pphis(
klon)
43 real,
intent(in) :: presnivs(
klev)
48 real,
intent(in) :: flxmass_w(
klon,
klev)
53 real,
intent(out) :: d_ps(
klon)
58 integer,
save :: itau=0
62 logical,
save :: first=.
true.
70 integer,
save :: nid_hist
73 integer,
save :: iwrite_phys
75 integer,
save :: iwrite_phys_omp
91 call getin(
"iwrite_phys",iwrite_phys_omp)
94 iwrite_phys=iwrite_phys_omp
95 t_ops=pdtphys*iwrite_phys
96 t_wrt=pdtphys*iwrite_phys
99 call ymds2ju(1979, 1, 1, 0.0, zjulian)
101 #ifndef CPP_IOIPSL_NO_OUTPUT
103 call histbeg_phy(
"histins.nc",itau0,zjulian,dtime,nhori,nid_hist)
108 #ifndef CPP_IOIPSL_NO_OUTPUT
111 call histvert(nid_hist,
"presnivs",
"Vertical levels",
"Pa",
klev, &
112 presnivs,zvertid,
'down')
114 call histdef(nid_hist,
'temperature',
'Atmospheric temperature',
'K', &
116 'inst(X)',t_ops,t_wrt)
117 call histdef(nid_hist,
'u',
'Eastward Zonal Wind',
'm/s', &
119 'inst(X)',t_ops,t_wrt)
120 call histdef(nid_hist,
'v',
'Northward Meridional Wind',
'm/s', &
122 'inst(X)',t_ops,t_wrt)
123 call histdef(nid_hist,
'ps',
'Surface Pressure',
'Pa', &
124 nbp_lon,jj_nb,nhori,1,1,1,zvertid,32, &
125 'inst(X)',t_ops,t_wrt)
127 call histend(nid_hist)
134 CALL wxios_add_vaxis(
"presnivs",
klev, presnivs)
137 CALL wxios_set_timestep(dtime)
140 CALL wxios_closedef()
166 print*,
'PHYDEV: itau=',itau
170 #ifndef CPP_IOIPSL_NO_OUTPUT
171 if (modulo(itau,iwrite_phys)==0)
then
183 CALL xios_update_calendar(itau)
!$Id zjulian!correction pour l heure initiale!jyg!jyg CALL ymds2ju(annee_ref, 1, day_ref, hour, zjulian)!jyg CALL histbeg_phy("histrac"
subroutine phyredem(fichnom)
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL false
!$Id zjulian!correction pour l heure initiale!jyg!jyg CALL nid_tra CALL histvert(nid_tra,"presnivs","Vertical levels","Pa", klev, presnivs, nvert,"down") zsto
subroutine physiq(nlon, nlev, debut, lafin, jD_cur, jH_cur, pdtphys, paprs, pplay, pphi, pphis, presnivs, u, v, rot, t, qx, flxmass_w, d_u, d_v, d_t, d_qx, d_ps, dudyn)
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL pplay
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL ulevSTD CALL &zphi philevSTD CALL &zx_rh rhlevSTD!DO klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon du jour ou toutes les read_climoz CALL &zphi geo500!IM on interpole a chaque pas de temps le paprs
subroutine histbeg_phy(name, itau0, zjulian, dtime, nhori, nid_day)
!$Id Turb_fcg_gcssold get_uvd hqturb_gcssold endif!large scale llm day day1 day day1 *dt_toga endif!time annee_ref dt_toga u_toga vq_toga w_prof vq_prof llm u(l)
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL ulevSTD CALL &zphi philevSTD CALL &zx_rh rhlevSTD!DO klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon du jour ou toutes les read_climoz CALL true
!$Id zjulian!correction pour l heure initiale!jyg!jyg CALL pdtphys
subroutine phys_state_var_init()
subroutine phyetat0(fichnom)
real, dimension(:), allocatable, save latitude