Changeset 5117 for LMDZ6/branches/Amaury_dev/libf/phydev
- Timestamp:
- Jul 24, 2024, 4:23:34 PM (6 months ago)
- Location:
- LMDZ6/branches/Amaury_dev/libf/phydev
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/Amaury_dev/libf/phydev/gr_fi_ecrit.F90
r5099 r5117 10 10 INTEGER,INTENT(IN) :: nfield,nlon,iim,jjmp1 11 11 REAL,INTENT(IN) :: fi(nlon,nfield) 12 REAL,INTENT( out) :: ecrit(iim*jjmp1,nfield)12 REAL,INTENT(OUT) :: ecrit(iim*jjmp1,nfield) 13 13 14 14 INTEGER :: i, n, ig, jjm -
LMDZ6/branches/Amaury_dev/libf/phydev/infotrac_phy.F90
r4729 r5117 4 4 MODULE infotrac_phy 5 5 6 USE strings_mod, ONLY: maxlen6 USE lmdz_strings, ONLY: maxlen 7 7 ! PUBLIC :: tracers, type_trac !--- Full tracers database, tracers type keyword 8 8 ! PUBLIC :: nqtot, nbtr, nqo, nqCO2, nqtottr !--- Main dimensions -
LMDZ6/branches/Amaury_dev/libf/phydev/iophy.F90
r5116 r5117 3 3 module iophy 4 4 5 ! abd REAL,PRIVATE, allocatable,dimension(:),save :: io_lat6 ! abd REAL,PRIVATE, allocatable,dimension(:),save :: io_lon7 REAL, allocatable, dimension(:), save :: io_lat8 REAL, allocatable, dimension(:), save :: io_lon5 ! abd REAL,PRIVATE,ALLOCATABLE,DIMENSION(:),save :: io_lat 6 ! abd REAL,PRIVATE,ALLOCATABLE,DIMENSION(:),save :: io_lon 7 REAL, ALLOCATABLE, DIMENSION(:), save :: io_lat 8 REAL, ALLOCATABLE, DIMENSION(:), save :: io_lon 9 9 INTEGER, save :: phys_domain_id 10 10 INTEGER, save :: npstn 11 INTEGER, allocatable, dimension(:), save :: nptabij11 INTEGER, ALLOCATABLE, DIMENSION(:), save :: nptabij 12 12 13 13 … … 34 34 USE lmdz_grid_phy, ONLY: nbp_lon, nbp_lat 35 35 USE ioipsl, ONLY: flio_dom_set 36 usewxios, ONLY: wxios_domain_param, using_xios37 IMPLICIT NONE 38 real, dimension(klon), intent(in) :: rlon39 real, dimension(klon), intent(in) :: rlat40 41 REAL, dimension(klon_glo) :: rlat_glo42 REAL, dimension(klon_glo) :: rlon_glo36 USE lmdz_wxios, ONLY: wxios_domain_param, using_xios 37 IMPLICIT NONE 38 REAL, DIMENSION(klon), INTENT(IN) :: rlon 39 REAL, DIMENSION(klon), INTENT(IN) :: rlat 40 41 REAL, DIMENSION(klon_glo) :: rlat_glo 42 REAL, DIMENSION(klon_glo) :: rlon_glo 43 43 44 44 INTEGER, DIMENSION(2) :: ddid … … 93 93 dpl = (/ nbp_lon, jj_end /) 94 94 dhs = (/ ii_begin - 1, 0 /) 95 if(mpi_rank==mpi_size - 1) THEN95 IF (mpi_rank==mpi_size - 1) THEN 96 96 dhe = (/0, 0/) 97 97 else … … 117 117 END IF 118 118 119 if(prt_level>=10) THEN119 IF (prt_level>=10) THEN 120 120 WRITE(lunout, *) "init_iophy_new: mpirank=", mpi_rank, " iibegin=", ii_begin, " ii_end=", ii_end, " jjbegin=", jj_begin, " jj_nb=", jj_nb, " jj_end=", jj_end 121 121 WRITE(lunout, *) "init_iophy_new: mpirank=", mpi_rank, " nbp_lon=", nbp_lon, " nbp_lat=", nbp_lat … … 140 140 SUBROUTINE histbeg_phy(name, itau0, zjulian, dtime, nhori, nid_day) 141 141 USE lmdz_phys_para, ONLY: is_sequential, jj_begin, jj_end, jj_nb 142 useioipsl, ONLY: histbeg142 USE ioipsl, ONLY: histbeg 143 143 USE lmdz_print_control, ONLY: prt_level, lunout 144 144 USE lmdz_grid_phy, ONLY: nbp_lon 145 145 IMPLICIT NONE 146 146 147 character*(*), intent(IN) :: name148 integer, intent(in) :: itau0149 real, intent(in) :: zjulian150 real, intent(in) :: dtime151 integer, intent(out) :: nhori152 integer, intent(out) :: nid_day153 154 !$OMP MASTER 155 if(is_sequential) THEN147 character*(*), INTENT(IN) :: name 148 INTEGER, INTENT(IN) :: itau0 149 REAL, INTENT(IN) :: zjulian 150 REAL, INTENT(IN) :: dtime 151 INTEGER, INTENT(OUT) :: nhori 152 INTEGER, INTENT(OUT) :: nid_day 153 154 !$OMP MASTER 155 IF (is_sequential) THEN 156 156 CALL histbeg(name, nbp_lon, io_lon, jj_nb, io_lat(jj_begin:jj_end), & 157 157 1, nbp_lon, 1, jj_nb, itau0, zjulian, dtime, nhori, nid_day) … … 170 170 SUBROUTINE histbeg_phyxios(name, ffreq, lev) 171 171 USE lmdz_phys_para, ONLY: is_using_mpi, is_mpi_root 172 usewxios, ONLY: wxios_add_file172 USE lmdz_wxios, ONLY: wxios_add_file 173 173 IMPLICIT NONE 174 174 175 175 character*(*), INTENT(IN) :: name 176 ! integer, INTENT(IN) :: itau0176 ! INTEGER, INTENT(IN) :: itau0 177 177 ! REAL,INTENT(IN) :: zjulian 178 178 ! REAL,INTENT(IN) :: dtime 179 179 character(LEN = *), INTENT(IN) :: ffreq 180 180 INTEGER, INTENT(IN) :: lev 181 ! integer,intent(out) :: nhori182 ! integer,intent(out) :: nid_day181 ! INTEGER,INTENT(OUT) :: nhori 182 ! INTEGER,INTENT(OUT) :: nid_day 183 183 184 184 !$OMP MASTER … … 207 207 IMPLICIT NONE 208 208 209 integer, intent(in) :: nid210 logical, intent(in) :: lpoint211 character*(*), intent(IN) :: name212 integer, intent(in) :: itau213 real, dimension(:), intent(in) :: field214 REAL, dimension(klon_mpi) :: buffer_omp215 INTEGER, allocatable, dimension(:) :: index2d209 INTEGER, INTENT(IN) :: nid 210 logical, INTENT(IN) :: lpoint 211 character*(*), INTENT(IN) :: name 212 INTEGER, INTENT(IN) :: itau 213 REAL, DIMENSION(:), INTENT(IN) :: field 214 REAL, DIMENSION(klon_mpi) :: buffer_omp 215 INTEGER, ALLOCATABLE, DIMENSION(:) :: index2d 216 216 REAL :: Field2d(nbp_lon, jj_nb) 217 217 218 218 INTEGER :: ip 219 real, allocatable, dimension(:) :: fieldok219 REAL, ALLOCATABLE, DIMENSION(:) :: fieldok 220 220 221 221 IF (size(field)/=klon) CALL abort_physic('iophy::histwrite2d', 'Field first dimension not equal to klon', 1) … … 267 267 IMPLICIT NONE 268 268 269 integer, intent(in) :: nid270 logical, intent(in) :: lpoint271 character*(*), intent(IN) :: name272 integer, intent(in) :: itau273 real, dimension(:, :), intent(in) :: field ! --> field(klon,:)274 REAL, dimension(klon_mpi, size(field, 2)) :: buffer_omp269 INTEGER, INTENT(IN) :: nid 270 logical, INTENT(IN) :: lpoint 271 character*(*), INTENT(IN) :: name 272 INTEGER, INTENT(IN) :: itau 273 REAL, DIMENSION(:, :), INTENT(IN) :: field ! --> field(klon,:) 274 REAL, DIMENSION(klon_mpi, size(field, 2)) :: buffer_omp 275 275 REAL :: Field3d(nbp_lon, jj_nb, size(field, 2)) 276 276 INTEGER :: ip, n, nlev 277 INTEGER, ALLOCATABLE, dimension(:) :: index3d278 real, allocatable, dimension(:, :) :: fieldok277 INTEGER, ALLOCATABLE, DIMENSION(:) :: index3d 278 REAL, ALLOCATABLE, DIMENSION(:, :) :: fieldok 279 279 280 280 IF (size(field, 1)/=klon) CALL abort_physic('iophy::histwrite3d', 'Field first dimension not equal to klon', 1) -
LMDZ6/branches/Amaury_dev/libf/phydev/phyetat0.F90
r5116 r5117 14 14 IMPLICIT NONE 15 15 16 CHARACTER(len=*),INTENT( in) :: fichnom ! input file name16 CHARACTER(len=*),INTENT(IN) :: fichnom ! input file name 17 17 18 18 REAL :: lon_startphy(klon), lat_startphy(klon) -
LMDZ6/branches/Amaury_dev/libf/phydev/phys_state_var_mod.F90
r5116 r5117 19 19 ! use dimphy, ONLY: klon 20 20 21 ! if (. not.allocated(rlat)) THEN21 ! if (.NOT.allocated(rlat)) THEN 22 22 ! ALLOCATE(rlat(klon),rlon(klon)) 23 23 ! else 24 24 ! WRITE(*,*) "phys_state_var_init: warning, rlat already allocated" 25 ! endif25 ! ENDIF 26 26 27 27 END SUBROUTINE phys_state_var_init -
LMDZ6/branches/Amaury_dev/libf/phydev/physiq_mod.F90
r5116 r5117 24 24 25 25 USE lmdz_xios, ONLY: xios_update_calendar, using_xios 26 USE wxios, ONLY: wxios_add_vaxis, wxios_set_cal, wxios_closedef26 USE lmdz_wxios, ONLY: wxios_add_vaxis, wxios_set_cal, wxios_closedef 27 27 USE iophy, ONLY: histwrite_phy 28 28 … … 31 31 ! Routine argument: 32 32 33 integer,intent(in) :: nlon ! number of atmospheric colums34 integer,intent(in) :: nlev ! number of vertical levels (should be =klev)35 logical, intent(in) :: debut ! signals first CALL to physics36 logical, intent(in) :: lafin ! signals last CALL to physics37 real,intent(in) :: pdtphys ! physics time step (s)38 real,intent(in) :: paprs(klon,klev+1) ! interlayer pressure (Pa)39 real,intent(in) :: pplay(klon,klev) ! mid-layer pressure (Pa)40 real,intent(in) :: pphi(klon,klev) ! geopotential at mid-layer41 real,intent(in) :: pphis(klon) ! surface geopotential42 real,intent(in) :: presnivs(klev) ! pseudo-pressure (Pa) of mid-layers43 real,intent(in) :: u(klon,klev) ! eastward zonal wind (m/s)44 real,intent(in) :: v(klon,klev) ! northward meridional wind (m/s)45 real,intent(in) :: t(klon,klev) ! temperature (K)46 real,intent(in) :: qx(klon,klev,nqtot) ! tracers (.../kg_air)47 real,intent(in) :: flxmass_w(klon,klev) ! vertical mass flux48 real,intent(out) :: d_u(klon,klev) ! physics tendency on u (m/s/s)49 real,intent(out) :: d_v(klon,klev) ! physics tendency on v (m/s/s)50 real,intent(out) :: d_t(klon,klev) ! physics tendency on t (K/s)51 real,intent(out) :: d_qx(klon,klev,nqtot) ! physics tendency on tracers52 real,intent(out) :: d_ps(klon) ! physics tendency on surface pressure33 INTEGER,INTENT(IN) :: nlon ! number of atmospheric colums 34 INTEGER,INTENT(IN) :: nlev ! number of vertical levels (should be =klev) 35 logical,INTENT(IN) :: debut ! signals first CALL to physics 36 logical,INTENT(IN) :: lafin ! signals last CALL to physics 37 REAL,INTENT(IN) :: pdtphys ! physics time step (s) 38 REAL,INTENT(IN) :: paprs(klon,klev+1) ! interlayer pressure (Pa) 39 REAL,INTENT(IN) :: pplay(klon,klev) ! mid-layer pressure (Pa) 40 REAL,INTENT(IN) :: pphi(klon,klev) ! geopotential at mid-layer 41 REAL,INTENT(IN) :: pphis(klon) ! surface geopotential 42 REAL,INTENT(IN) :: presnivs(klev) ! pseudo-pressure (Pa) of mid-layers 43 REAL,INTENT(IN) :: u(klon,klev) ! eastward zonal wind (m/s) 44 REAL,INTENT(IN) :: v(klon,klev) ! northward meridional wind (m/s) 45 REAL,INTENT(IN) :: t(klon,klev) ! temperature (K) 46 REAL,INTENT(IN) :: qx(klon,klev,nqtot) ! tracers (.../kg_air) 47 REAL,INTENT(IN) :: flxmass_w(klon,klev) ! vertical mass flux 48 REAL,INTENT(OUT) :: d_u(klon,klev) ! physics tendency on u (m/s/s) 49 REAL,INTENT(OUT) :: d_v(klon,klev) ! physics tendency on v (m/s/s) 50 REAL,INTENT(OUT) :: d_t(klon,klev) ! physics tendency on t (K/s) 51 REAL,INTENT(OUT) :: d_qx(klon,klev,nqtot) ! physics tendency on tracers 52 REAL,INTENT(OUT) :: d_ps(klon) ! physics tendency on surface pressure 53 53 54 integer,save :: itau=0 ! counter to count number of calls to physics54 INTEGER,save :: itau=0 ! counter to count number of calls to physics 55 55 !$OMP THREADPRIVATE(itau) 56 56 REAL :: temp_newton(klon,klev) … … 64 64 REAL :: dtime 65 65 INTEGER :: nhori ! horizontal coordinate ID 66 integer,save :: nid_hist ! output file ID66 INTEGER,save :: nid_hist ! output file ID 67 67 !$OMP THREADPRIVATE(nid_hist) 68 68 INTEGER :: zvertid ! vertical coordinate ID 69 integer,save :: iwrite_phys ! output every iwrite_phys physics step69 INTEGER,save :: iwrite_phys ! output every iwrite_phys physics step 70 70 !$OMP THREADPRIVATE(iwrite_phys) 71 integer,save :: iwrite_phys_omp ! intermediate variable to read iwrite_phys71 INTEGER,save :: iwrite_phys_omp ! intermediate variable to read iwrite_phys 72 72 ! (must be shared by all threads) 73 73 REAL :: t_ops ! frequency of the IOIPSL operations (eg average over...)
Note: See TracChangeset
for help on using the changeset viewer.