Changeset 8ed5f11 in flexpart.git
- Timestamp:
- Apr 7, 2016, 8:55:43 AM (8 years ago)
- Branches:
- master, 10.4.1_pesei, GFS_025, bugfixes+enhancements, dev, release-10, release-10.4.1, scaling-bug, univie
- Children:
- e31b3b5
- Parents:
- 7e52e2e
- Location:
- src
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
src/ecmwf_mod.f90
rdb712a8 r8ed5f11 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. *28 24 ! * 29 ! Author: ESO * 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. * 30 29 ! * 31 ! 2015 * 30 ! Author: ESO * 31 ! * 32 ! 2015 * 32 33 ! * 33 34 !******************************************************************************* … … 44 45 integer,parameter :: nxmax=361,nymax=181,nuvzmax=138,nwzmax=138,nzmax=138 !ECMWF new 45 46 integer,parameter :: nxshift=359 46 ! integer,parameter :: nxmax=361,nymax=181,nuvzmax=138,nwzmax=138,nzmax=138 !test BUG47 47 ! integer,parameter :: nxshift=0 48 48 49 !50 49 !********************************************* 51 50 ! Maximum dimensions of the nested input grids … … 55 54 ! integer,parameter :: maxnests=1,nxmaxn=86,nymaxn=31 56 55 56 ! nxmax,nymax maximum dimension of wind fields in x and y 57 ! direction, respectively 58 ! nuvzmax,nwzmax maximum dimension of (u,v) and (w) wind fields in z 59 ! direction (for fields on eta levels) 60 ! nzmax maximum dimension of wind fields in z direction 61 ! for the transformed Cartesian coordinates 62 ! nxshift for global grids (in x), the grid can be shifted by 63 ! nxshift grid points, in order to accomodate nested 64 ! grids, and output grids overlapping the domain "boundary" 65 ! nxshift must not be negative; "normal" setting would be 0 57 66 58 67 end module wind_mod -
src/gfs_mod.f90
rb0434e1 r8ed5f11 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. *28 24 ! * 29 ! Author: ESO * 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. * 30 29 ! * 31 ! 2015 * 30 ! Author: ESO * 31 ! * 32 ! 2015 * 32 33 ! * 33 34 !******************************************************************************* … … 44 45 integer,parameter :: nxshift=0 ! for GFS or FNL 45 46 47 !********************************************* 48 ! Maximum dimensions of the nested input grids 49 !********************************************* 50 46 51 integer,parameter :: maxnests=1,nxmaxn=361,nymaxn=181 52 53 ! nxmax,nymax maximum dimension of wind fields in x and y 54 ! direction, respectively 55 ! nuvzmax,nwzmax maximum dimension of (u,v) and (w) wind fields in z 56 ! direction (for fields on eta levels) 57 ! nzmax maximum dimension of wind fields in z direction 58 ! for the transformed Cartesian coordinates 59 ! nxshift for global grids (in x), the grid can be shifted by 60 ! nxshift grid points, in order to accomodate nested 61 ! grids, and output grids overlapping the domain "boundary" 62 ! nxshift must not be negative; "normal" setting would be 0 47 63 end module wind_mod -
src/mpi_mod.f90
r1c3c778 r8ed5f11 195 195 if (dep_prec==dp) then 196 196 mp_cp = MPI_REAL8 197 if (lroot) write(*,*) 'Using double precision for deposition fields' 197 ! TODO: write info message for serial version as well 198 if (lroot.and.verbosity>0) write(*,*) 'Using double precision for deposition fields' 198 199 else if (dep_prec==sp) then 199 200 mp_cp = MPI_REAL4 200 if (lroot ) write(*,*) 'Using single precision for deposition fields'201 if (lroot.and.verbosity>0) write(*,*) 'Using single precision for deposition fields' 201 202 else 202 203 write(*,*) 'ERROR: something went wrong setting MPI real precision' -
src/par_mod.f90
r1c3c778 r8ed5f11 28 28 ! 1997 * 29 29 ! * 30 ! Last update 15 August 2013 IP * 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 * 31 35 ! * 32 36 !******************************************************************************* … … 34 38 module par_mod 35 39 40 !************************************************************************ 36 41 ! wind_mod: is gfs_mod.f90 for target gfs, ecmwf_mod.f90 for target ecmwf 37 42 !************************************************************************ … … 135 140 !********************************************* 136 141 137 ! nxmax,nymax,nuvzmax,nwzmax,nzmax: 138 ! Moved to ecmwf.f90 (for ECMWF) / gfs.f90 (GFS) 142 ! Moved to ecmwf_mod.f90 (for ECMWF) / gfs_mod.f90 (for GFS) 139 143 140 141 !integer,parameter :: nxmax=361,nymax=181,nuvzmax=92,nwzmax=92,nzmax=92 !FNL XF142 !integer,parameter :: nxmax=361,nymax=181,nuvzmax=152,nwzmax=152,nzmax=152 !ECMWF new143 !integer,parameter :: nxmax=361,nymax=181,nuvzmax=92,nwzmax=92,nzmax=92 !ECMWF144 !integer,parameter :: nxmax=721,nymax=361,nuvzmax=64,nwzmax=64,nzmax=64145 146 ! integer,parameter :: nxshift=359 ! for ECMWF147 !integer,parameter :: nxshift=0 ! for GFS or FNL148 149 144 integer,parameter :: nconvlevmax = nuvzmax-1 150 145 integer,parameter :: na = nconvlevmax+1 151 152 ! moved to gfs_mod.f90 / ecmwf_mod.f90153 !154 ! nxmax,nymax maximum dimension of wind fields in x and y155 ! direction, respectively156 ! nuvzmax,nwzmax maximum dimension of (u,v) and (w) wind fields in z157 ! direction (for fields on eta levels)158 ! nzmax maximum dimension of wind fields in z direction159 ! for the transformed Cartesian coordinates160 ! nxshift for global grids (in x), the grid can be shifted by161 ! nxshift grid points, in order to accomodate nested162 ! grids, and output grids overlapping the domain "boundary"163 ! nxshift must not be negative; "normal" setting would be 0164 146 165 147 ! ntracermax maximum number of tracer species in convection 166 148 ! nconvlevmax maximum number of levels for convection 167 149 ! na parameter used in Emanuel's convect subroutine 168 169 170 !*********************************************171 ! Maximum dimensions of the nested input grids172 !*********************************************173 174 !integer,parameter :: maxnests=0, nxmaxn=0, nymaxn=0175 !integer,parameter :: maxnests=0,nxmaxn=351,nymaxn=351 !ECMWF176 177 !integer,parameter :: maxnests=1, nxmaxn=201, nymaxn=161 ! FNL XF178 ! maxnests maximum number of nested grids179 ! nxmaxn,nymaxn maximum dimension of nested wind fields in180 ! x and y direction, respectively181 150 182 151 … … 217 186 !************************************************** 218 187 219 integer,parameter :: maxpart= 40000000188 integer,parameter :: maxpart=10000 220 189 integer,parameter :: maxspec=1 221 190 real,parameter :: minmass=0.0001 -
src/timemanager_mpi.f90
r7e52e2e r8ed5f11 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: 230 231 ! Version 1 (lmp_sync=.true.) uses a read-ahead process where send/recv is done 231 232 ! 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 a 235 ! read-ahead process where sending/receiving of the 3rd fields is done in 236 ! the background in parallel with performing computations with fields 1&2 237 !******************************************************************************** 238 232 239 if (lmp_sync.and.lmp_use_reader.and.memstat.gt.0) then 233 240 call mpif_gf_send_vars(memstat) 234 241 if (numbnests>0) call mpif_gf_send_vars_nest(memstat) 235 ! Version 2 (lmp_sync=.false. , see below) is also used whenever 2 new fields are242 ! Version 2 (lmp_sync=.false.) is also used whenever 2 new fields are 236 243 ! read (as at first time step), in which case async send/recv is impossible. 237 244 else if (.not.lmp_sync.and.lmp_use_reader.and.memstat.ge.32) then … … 240 247 end if 241 248 242 ! Version 2 (lmp_sync=.false.) is for holding three fields in memory. Uses a243 ! read-ahead process where sending/receiving of the 3rd fields is done in244 ! the background in parallel with performing computations with fields 1&2245 !********************************************************************************246 249 if (.not.lmp_sync) then 247 250 248 ! R EADER PROCESS:251 ! Reader process: 249 252 if (memstat.gt.0..and.memstat.lt.32.and.lmp_use_reader.and.lmpreader) then 250 253 if (mp_dev_mode) write(*,*) 'Reader process: calling mpif_gf_send_vars_async' … … 252 255 end if 253 256 254 ! C OMPLETION CHECK:257 ! Completion check: 255 258 ! Issued at start of each new field period. 256 259 if (memstat.ne.0.and.memstat.lt.32.and.lmp_use_reader) then … … 258 261 end if 259 262 260 ! R ECVEIVING PROCESS(ES):261 262 263 ! Recveiving process(es): 264 ! eso TODO: at this point we do not know if clwc/ciwc will be available 265 ! at next time step. Issue receive request anyway, cancel at mpif_gf_request 263 266 if (memstat.gt.0.and.lmp_use_reader.and..not.lmpreader) then 264 267 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.