Changeset 4222 for dynamico_lmdz/simple_physics/phyparam/dynphy_lonlat
- Timestamp:
- Jan 9, 2020, 4:58:29 PM (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
dynamico_lmdz/simple_physics/phyparam/dynphy_lonlat/iniphysiq_mod.F90
r4221 r4222 3 3 ! 4 4 MODULE iniphysiq_mod 5 IMPLICIT NONE 6 7 CONTAINS 8 9 SUBROUTINE iniphysiq(iim,jjm,nlayer, & 10 & nbp, communicator, & 11 & punjours, pdayref,ptimestep, & 12 & rlatu,rlatv,rlonu,rlonv,aire,cu,cv, & 13 & prad,pg,pr,pcpp,iflag_phys) 14 USE dimphy, ONLY: init_dimphy 15 USE inigeomphy_mod, ONLY: inigeomphy 16 USE iniphyparam_mod, ONLY : iniphyparam 17 USE mod_phys_lmdz_para, ONLY: klon_omp ! number of columns (on local omp grid) 18 USE infotrac, ONLY: nqtot, type_trac 19 USE infotrac_phy, ONLY: init_infotrac_phy 20 USE inifis_mod, ONLY: inifis 21 USE phyaqua_mod, ONLY: iniaqua 22 USE nrtype, ONLY: pi 23 24 ! 25 !======================================================================= 26 ! Initialisation of the physical constants and some positional and 27 ! geometrical arrays for the physics 28 !======================================================================= 29 30 include "iniprint.h" 31 32 REAL,INTENT(IN) :: prad ! radius of the planet (m) 33 REAL,INTENT(IN) :: pg ! gravitational acceleration (m/s2) 34 REAL,INTENT(IN) :: pr ! ! reduced gas constant R/mu 35 REAL,INTENT(IN) :: pcpp ! specific heat Cp 36 REAL,INTENT(IN) :: punjours ! length (in s) of a standard day 37 INTEGER, INTENT (IN) :: nlayer ! number of atmospheric layers 38 INTEGER, INTENT (IN) :: iim ! number of atmospheric coulumns along longitudes 39 INTEGER, INTENT (IN) :: jjm ! number of atompsheric columns along latitudes 40 INTEGER, INTENT(IN) :: nbp ! number of physics columns for this MPI process 41 INTEGER, INTENT(IN) :: communicator ! MPI communicator 42 REAL, INTENT (IN) :: rlatu(jjm+1) ! latitudes of the physics grid 43 REAL, INTENT (IN) :: rlatv(jjm) ! latitude boundaries of the physics grid 44 REAL, INTENT (IN) :: rlonv(iim+1) ! longitudes of the physics grid 45 REAL, INTENT (IN) :: rlonu(iim+1) ! longitude boundaries of the physics grid 46 REAL, INTENT (IN) :: aire(iim+1,jjm+1) ! area of the dynamics grid (m2) 47 REAL, INTENT (IN) :: cu((iim+1)*(jjm+1)) ! cu coeff. (u_covariant = cu * u) 48 REAL, INTENT (IN) :: cv((iim+1)*jjm) ! cv coeff. (v_covariant = cv * v) 49 INTEGER, INTENT (IN) :: pdayref ! reference day of for the simulation 50 REAL,INTENT(IN) :: ptimestep !physics time step (s) 51 INTEGER,INTENT(IN) :: iflag_phys ! type of physics to be called 52 53 INTEGER :: ibegin,iend,offset 54 INTEGER :: i,j,k 55 CHARACTER (LEN=20) :: modname='iniphysiq' 56 CHARACTER (LEN=80) :: abort_message 57 58 59 print*,'INInnn iniphysiq_mod' 60 61 ! --> initialize physics distribution, global fields and geometry 62 ! (i.e. things in phy_common or dynphy_lonlat) 63 CALL inigeomphy(iim,jjm,nlayer, & 64 nbp, communicator, & 65 rlatu,rlatv, & 66 rlonu,rlonv, & 67 aire,cu,cv) 68 69 ! --> now initialize things specific to the phydev physics package 70 71 !$OMP PARALLEL 72 73 ! Initialize physical constants in physics: 74 CALL inifis(prad,pg,pr,pcpp) 75 76 ! Initialize tracer names, numbers, etc. for physics 77 CALL init_infotrac_phy(nqtot,type_trac) 78 79 ! Additional initializations for aquaplanets 80 IF (iflag_phys>=100) THEN 81 CALL iniaqua(klon_omp,iflag_phys) 82 ENDIF 5 83 6 CONTAINS 84 CALL setup_phyparam 7 85 8 SUBROUTINE iniphysiq(iim,jjm,nlayer, & 9 nbp, communicator, & 10 punjours, pdayref,ptimestep, & 11 rlatu,rlatv,rlonu,rlonv,aire,cu,cv, & 12 prad,pg,pr,pcpp,iflag_phys) 13 USE dimphy, ONLY: init_dimphy 14 USE inigeomphy_mod, ONLY: inigeomphy 15 USE iniphyparam_mod, ONLY : iniphyparam 16 USE mod_phys_lmdz_para, ONLY: klon_omp ! number of columns (on local omp grid) 17 USE infotrac, ONLY: nqtot, type_trac 18 USE infotrac_phy, ONLY: init_infotrac_phy 19 USE inifis_mod, ONLY: inifis 20 USE phyaqua_mod, ONLY: iniaqua 21 USE nrtype, ONLY: pi 22 IMPLICIT NONE 86 CALL iniphyparam(klon_omp,nlayer, & 87 punjours, & 88 pdayref,ptimestep, & 89 prad,pg,pr,pcpp) 90 91 !$OMP END PARALLEL 92 93 94 END SUBROUTINE iniphysiq 95 96 SUBROUTINE setup_phyparam 97 USE comgeomfi, ONLY : nlayermx, init_comgeomfi 98 USE dimphy, ONLY : klon, klev 99 USE mod_grid_phy_lmdz, ONLY : klon_glo 100 USE mod_phys_lmdz_para, ONLY : klon_omp 101 USE geometry_mod, ONLY : longitude,latitude 102 USE read_param_mod 103 USE phyparam_plugins_lmdz 23 104 24 ! 25 !======================================================================= 26 ! Initialisation of the physical constants and some positional and 27 ! geometrical arrays for the physics 28 !======================================================================= 29 30 31 include "iniprint.h" 105 read_paramr_plugin => read_paramr 106 read_parami_plugin => read_parami 107 read_paramb_plugin => read_paramb 32 108 33 REAL,INTENT(IN) :: prad ! radius of the planet (m) 34 REAL,INTENT(IN) :: pg ! gravitational acceleration (m/s2) 35 REAL,INTENT(IN) :: pr ! ! reduced gas constant R/mu 36 REAL,INTENT(IN) :: pcpp ! specific heat Cp 37 REAL,INTENT(IN) :: punjours ! length (in s) of a standard day 38 INTEGER, INTENT (IN) :: nlayer ! number of atmospheric layers 39 INTEGER, INTENT (IN) :: iim ! number of atmospheric coulumns along longitudes 40 INTEGER, INTENT (IN) :: jjm ! number of atompsheric columns along latitudes 41 INTEGER, INTENT(IN) :: nbp ! number of physics columns for this MPI process 42 INTEGER, INTENT(IN) :: communicator ! MPI communicator 43 REAL, INTENT (IN) :: rlatu(jjm+1) ! latitudes of the physics grid 44 REAL, INTENT (IN) :: rlatv(jjm) ! latitude boundaries of the physics grid 45 REAL, INTENT (IN) :: rlonv(iim+1) ! longitudes of the physics grid 46 REAL, INTENT (IN) :: rlonu(iim+1) ! longitude boundaries of the physics grid 47 REAL, INTENT (IN) :: aire(iim+1,jjm+1) ! area of the dynamics grid (m2) 48 REAL, INTENT (IN) :: cu((iim+1)*(jjm+1)) ! cu coeff. (u_covariant = cu * u) 49 REAL, INTENT (IN) :: cv((iim+1)*jjm) ! cv coeff. (v_covariant = cv * v) 50 INTEGER, INTENT (IN) :: pdayref ! reference day of for the simulation 51 REAL,INTENT(IN) :: ptimestep !physics time step (s) 52 INTEGER,INTENT(IN) :: iflag_phys ! type of physics to be called 109 CALL init_comgeomfi(klon_omp, klev, longitude, latitude) 53 110 54 INTEGER :: ibegin,iend,offset 55 INTEGER :: i,j,k 56 CHARACTER (LEN=20) :: modname='iniphysiq' 57 CHARACTER (LEN=80) :: abort_message 111 IF (klon.NE.klon_omp) THEN 112 PRINT*,'STOP in setup_phyparam' 113 PRINT*,'Probleme de dimensions :' 114 PRINT*,'klon = ',klon 115 PRINT*,'klon_omp = ',klon_omp 116 STOP 117 ENDIF 58 118 119 IF (klev.NE.nlayermx) THEN 120 PRINT*,'STOP in setup_phyparam' 121 PRINT*,'Probleme de dimensions :' 122 PRINT*,'nlayer = ',klev 123 PRINT*,'nlayermx = ',nlayermx 124 STOP 125 ENDIF 59 126 60 print*,'INInnn iniphysiq_mod' 127 IF (klon_omp.NE.klon_glo) THEN 128 PRINT*,'STOP in setup_phyparam' 129 PRINT*,'Probleme de dimensions :' 130 PRINT*,'ngrid = ', klon_omp 131 PRINT*,'ngridmax = ',klon_glo 132 STOP 133 ENDIF 61 134 62 ! --> initialize physics distribution, global fields and geometry 63 ! (i.e. things in phy_common or dynphy_lonlat) 64 CALL inigeomphy(iim,jjm,nlayer, & 65 nbp, communicator, & 66 rlatu,rlatv, & 67 rlonu,rlonv, & 68 aire,cu,cv) 69 70 ! --> now initialize things specific to the phydev physics package 71 72 !$OMP PARALLEL 73 74 ! Initialize physical constants in physics: 75 CALL inifis(prad,pg,pr,pcpp) 135 END SUBROUTINE setup_phyparam 76 136 77 ! Initialize tracer names, numbers, etc. for physics78 CALL init_infotrac_phy(nqtot,type_trac)79 80 ! Additional initializations for aquaplanets81 IF (iflag_phys>=100) THEN82 CALL iniaqua(klon_omp,iflag_phys)83 ENDIF84 CALL iniphyparam(klon_omp,nlayer, &85 punjours, &86 pdayref,ptimestep, &87 prad,pg,pr,pcpp)88 89 !$OMP END PARALLEL90 91 92 END SUBROUTINE iniphysiq93 94 137 END MODULE iniphysiq_mod
Note: See TracChangeset
for help on using the changeset viewer.
