Changes in / [e31b3b5:ec7fc72] in flexpart.git
- Location:
- src
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
src/ecmwf_mod.f90
r8ed5f11 rdb712a8 22 22 !******************************************************************************* 23 23 ! Include file for calculation of particle trajectories (Program FLEXPART) * 24 ! This file contains ECMWF specific parameters used in FLEXPART * 25 ! Note that module name differs from file name. * 26 ! The makefile selects either this file, or gfs_mod.f90, depending * 27 ! on target. * 24 28 ! * 25 ! This file contains ECMWF specific parameters used in FLEXPART * 26 ! Note that module name differs from file name. * 27 ! The makefile selects either this file, or gfs_mod.f90, depending * 28 ! on target. * 29 ! Author: ESO * 29 30 ! * 30 ! Author: ESO * 31 ! * 32 ! 2015 * 31 ! 2015 * 33 32 ! * 34 33 !******************************************************************************* … … 45 44 integer,parameter :: nxmax=361,nymax=181,nuvzmax=138,nwzmax=138,nzmax=138 !ECMWF new 46 45 integer,parameter :: nxshift=359 46 ! integer,parameter :: nxmax=361,nymax=181,nuvzmax=138,nwzmax=138,nzmax=138 !test BUG 47 47 ! integer,parameter :: nxshift=0 48 48 49 ! 49 50 !********************************************* 50 51 ! Maximum dimensions of the nested input grids … … 54 55 ! integer,parameter :: maxnests=1,nxmaxn=86,nymaxn=31 55 56 56 ! nxmax,nymax maximum dimension of wind fields in x and y57 ! direction, respectively58 ! nuvzmax,nwzmax maximum dimension of (u,v) and (w) wind fields in z59 ! direction (for fields on eta levels)60 ! nzmax maximum dimension of wind fields in z direction61 ! for the transformed Cartesian coordinates62 ! nxshift for global grids (in x), the grid can be shifted by63 ! nxshift grid points, in order to accomodate nested64 ! grids, and output grids overlapping the domain "boundary"65 ! nxshift must not be negative; "normal" setting would be 066 57 67 58 end module wind_mod -
src/gfs_mod.f90
r8ed5f11 rb0434e1 22 22 !******************************************************************************* 23 23 ! Include file for calculation of particle trajectories (Program FLEXPART) * 24 ! This file contains GFS specific parameters used in FLEXPART * 25 ! Note that module name differs from file name. * 26 ! The makefile selects either this file, or ecmwf_mod.f90, depending * 27 ! on target. * 24 28 ! * 25 ! This file contains GFS specific parameters used in FLEXPART * 26 ! Note that module name differs from file name. * 27 ! The makefile selects either this file, or ecmwf_mod.f90, depending * 28 ! on target. * 29 ! Author: ESO * 29 30 ! * 30 ! Author: ESO * 31 ! * 32 ! 2015 * 31 ! 2015 * 33 32 ! * 34 33 !******************************************************************************* … … 45 44 integer,parameter :: nxshift=0 ! for GFS or FNL 46 45 47 !*********************************************48 ! Maximum dimensions of the nested input grids49 !*********************************************50 51 46 integer,parameter :: maxnests=1,nxmaxn=361,nymaxn=181 52 53 ! nxmax,nymax maximum dimension of wind fields in x and y54 ! direction, respectively55 ! nuvzmax,nwzmax maximum dimension of (u,v) and (w) wind fields in z56 ! direction (for fields on eta levels)57 ! nzmax maximum dimension of wind fields in z direction58 ! for the transformed Cartesian coordinates59 ! nxshift for global grids (in x), the grid can be shifted by60 ! nxshift grid points, in order to accomodate nested61 ! grids, and output grids overlapping the domain "boundary"62 ! nxshift must not be negative; "normal" setting would be 063 47 end module wind_mod -
src/mpi_mod.f90
rec7fc72 rec7fc72 195 195 if (dep_prec==dp) then 196 196 mp_cp = MPI_REAL8 197 ! TODO: write info message for serial version as well 198 if (lroot.and.verbosity>0) write(*,*) 'Using double precision for deposition fields' 197 if (lroot) write(*,*) 'Using double precision for deposition fields' 199 198 else if (dep_prec==sp) then 200 199 mp_cp = MPI_REAL4 201 if (lroot .and.verbosity>0) write(*,*) 'Using single precision for deposition fields'200 if (lroot) write(*,*) 'Using single precision for deposition fields' 202 201 else 203 202 write(*,*) 'ERROR: something went wrong setting MPI real precision' -
src/par_mod.f90
r8ed5f11 r1c3c778 28 28 ! 1997 * 29 29 ! * 30 ! Update 15 August 2013 IP * 31 ! * 32 ! ESO 2016: * 33 ! GFS specific parameters moved to gfs_mod.f90 * 34 ! ECMWF specific parameters moved to ecmwf_mod.f90 * 30 ! Last update 15 August 2013 IP * 35 31 ! * 36 32 !******************************************************************************* … … 38 34 module par_mod 39 35 40 !************************************************************************41 36 ! wind_mod: is gfs_mod.f90 for target gfs, ecmwf_mod.f90 for target ecmwf 42 37 !************************************************************************ … … 140 135 !********************************************* 141 136 142 ! Moved to ecmwf_mod.f90 (for ECMWF) / gfs_mod.f90 (for GFS) 137 ! nxmax,nymax,nuvzmax,nwzmax,nzmax: 138 ! Moved to ecmwf.f90 (for ECMWF) / gfs.f90 (GFS) 143 139 140 141 !integer,parameter :: nxmax=361,nymax=181,nuvzmax=92,nwzmax=92,nzmax=92 !FNL XF 142 !integer,parameter :: nxmax=361,nymax=181,nuvzmax=152,nwzmax=152,nzmax=152 !ECMWF new 143 !integer,parameter :: nxmax=361,nymax=181,nuvzmax=92,nwzmax=92,nzmax=92 !ECMWF 144 !integer,parameter :: nxmax=721,nymax=361,nuvzmax=64,nwzmax=64,nzmax=64 145 146 ! integer,parameter :: nxshift=359 ! for ECMWF 147 !integer,parameter :: nxshift=0 ! for GFS or FNL 148 144 149 integer,parameter :: nconvlevmax = nuvzmax-1 145 150 integer,parameter :: na = nconvlevmax+1 151 152 ! moved to gfs_mod.f90 / ecmwf_mod.f90 153 ! 154 ! nxmax,nymax maximum dimension of wind fields in x and y 155 ! direction, respectively 156 ! nuvzmax,nwzmax maximum dimension of (u,v) and (w) wind fields in z 157 ! direction (for fields on eta levels) 158 ! nzmax maximum dimension of wind fields in z direction 159 ! for the transformed Cartesian coordinates 160 ! nxshift for global grids (in x), the grid can be shifted by 161 ! nxshift grid points, in order to accomodate nested 162 ! grids, and output grids overlapping the domain "boundary" 163 ! nxshift must not be negative; "normal" setting would be 0 146 164 147 165 ! ntracermax maximum number of tracer species in convection 148 166 ! nconvlevmax maximum number of levels for convection 149 167 ! na parameter used in Emanuel's convect subroutine 168 169 170 !********************************************* 171 ! Maximum dimensions of the nested input grids 172 !********************************************* 173 174 !integer,parameter :: maxnests=0, nxmaxn=0, nymaxn=0 175 !integer,parameter :: maxnests=0,nxmaxn=351,nymaxn=351 !ECMWF 176 177 !integer,parameter :: maxnests=1, nxmaxn=201, nymaxn=161 ! FNL XF 178 ! maxnests maximum number of nested grids 179 ! nxmaxn,nymaxn maximum dimension of nested wind fields in 180 ! x and y direction, respectively 150 181 151 182 … … 186 217 !************************************************** 187 218 188 integer,parameter :: maxpart= 10000219 integer,parameter :: maxpart=40000000 189 220 integer,parameter :: maxspec=1 190 221 real,parameter :: minmass=0.0001 -
src/timemanager_mpi.f90
rec7fc72 rec7fc72 228 228 if (mp_measure_time.and..not.(lmpreader.and.lmp_use_reader)) call mpif_mtime('getfields',0) 229 229 230 ! Two approaches to MPI getfields is implemented:231 230 ! Version 1 (lmp_sync=.true.) uses a read-ahead process where send/recv is done 232 231 ! in sync at start of each new field time interval 233 !234 ! Version 2 (lmp_sync=.false.) is for holding three fields in memory. Uses a235 ! read-ahead process where sending/receiving of the 3rd fields is done in236 ! the background in parallel with performing computations with fields 1&2237 !********************************************************************************238 239 232 if (lmp_sync.and.lmp_use_reader.and.memstat.gt.0) then 240 233 call mpif_gf_send_vars(memstat) 241 234 if (numbnests>0) call mpif_gf_send_vars_nest(memstat) 242 ! Version 2 (lmp_sync=.false. ) is also used whenever 2 new fields are235 ! Version 2 (lmp_sync=.false., see below) is also used whenever 2 new fields are 243 236 ! read (as at first time step), in which case async send/recv is impossible. 244 237 else if (.not.lmp_sync.and.lmp_use_reader.and.memstat.ge.32) then … … 247 240 end if 248 241 242 ! Version 2 (lmp_sync=.false.) is for holding three fields in memory. Uses a 243 ! read-ahead process where sending/receiving of the 3rd fields is done in 244 ! the background in parallel with performing computations with fields 1&2 245 !******************************************************************************** 249 246 if (.not.lmp_sync) then 250 247 251 ! R eader process:248 ! READER PROCESS: 252 249 if (memstat.gt.0..and.memstat.lt.32.and.lmp_use_reader.and.lmpreader) then 253 250 if (mp_dev_mode) write(*,*) 'Reader process: calling mpif_gf_send_vars_async' … … 255 252 end if 256 253 257 ! C ompletion check:254 ! COMPLETION CHECK: 258 255 ! Issued at start of each new field period. 259 256 if (memstat.ne.0.and.memstat.lt.32.and.lmp_use_reader) then … … 261 258 end if 262 259 263 ! R ecveiving process(es):264 ! eso TODO: at this point we do not know if clwc/ciwc will be available265 ! at next time step. Issue receive request anyway, cancel at mpif_gf_request260 ! RECVEIVING PROCESS(ES): 261 ! eso TODO: at this point we do not know if clwc/ciwc will be available 262 ! at next time step. Issue receive request anyway, cancel at mpif_gf_request 266 263 if (memstat.gt.0.and.lmp_use_reader.and..not.lmpreader) then 267 264 if (mp_dev_mode) write(*,*) 'Receiving process: calling mpif_gf_send_vars_async. PID: ', mp_pid
Note: See TracChangeset
for help on using the changeset viewer.