Changeset 9cdf8bd in flexpart.git


Ignore:
Timestamp:
Oct 4, 2016, 10:07:33 AM (8 years ago)
Author:
Don Morton <Don.Morton@…>
Branches:
FPv9.3.1, FPv9.3.2, fp9.3.1-20161214-nc4, grib2nc4_repair
Children:
b398fb6
Parents:
29feaef
Message:

Incorporated checking of allocated dimensions in preprocessed files
versus the FLEXPART which reads them. See

https://www.flexpart.eu/ticket/161

Location:
flexpart_code
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • flexpart_code/fpmetbinary_mod.F90

    r496c607 r9cdf8bd  
    3131    USE com_mod
    3232    USE conv_mod
     33    USE par_mod, ONLY : nxmax, nymax, nzmax, nuvzmax, nwzmax
    3334
    3435    IMPLICIT NONE
     
    248249                                                  ! most com_mod variables.
    249250                                                  ! Should be 1 or 2
     251
     252        ! These are temporary variables, used in the LOAD option, for
     253        ! comparing against the current values in FLEXPART of nxmax, nymax, ...
     254        INTEGER :: temp_nxmax, temp_nymax, temp_nzmax, &
     255&                  temp_nuvzmax, temp_nwzmax
     256
    250257        CHARACTER(LEN=128) :: errmesg
    251258
    252259        if (op == 'DUMP') THEN
     260
     261            ! Write the compiled max dimensions from par_mod - these are
     262            ! not meant to be reassigned during a LOAD, but used as "header"
     263            ! information to provide the structure of arrays
     264            WRITE (iounit) nxmax, nymax, nzmax, nuvzmax, nwzmax
    253265
    254266            ! Scalar values
     
    390402        ELSE IF (op == 'LOAD') THEN
    391403
     404            ! Read the compiled max dimensions that were dumped from par_mod
     405            ! when creating the fp file, so that we can compare against
     406            ! current FLEXPART dimensions - they need to be the same, or else
     407            ! we abort.
     408            READ (iounit) temp_nxmax, temp_nymax, temp_nzmax, &
     409&                         temp_nuvzmax, temp_nwzmax
     410
     411
     412            IF ( (temp_nxmax == nxmax) .AND. (temp_nymax == nymax) .AND. &
     413&                   (temp_nzmax == nzmax) .AND. &
     414&                   (temp_nuvzmax == nuvzmax) .AND. &
     415&                   (temp_nwzmax == nwzmax) ) THEN
     416                CONTINUE
     417            ELSE
     418                PRINT *, 'Incompatible dimensions between fp file and current FLEXPART!'
     419                PRINT *, ''
     420                PRINT *, '                  FP file     Compiled FP'
     421                PRINT *, 'nxmax:     ', temp_nxmax, '    ', nxmax
     422                PRINT *, 'nymax:     ', temp_nymax, '    ', nymax
     423                PRINT *, 'nzmax:     ', temp_nzmax, '    ', nzmax
     424                PRINT *, 'nuvzmax:     ', temp_nuvzmax, '    ', nuvzmax
     425                PRINT *, 'nwzmax:     ', temp_nwzmax, '    ', nwzmax
     426                PRINT *, ''
     427                STOP
     428            END IF
     429
     430
    392431            ! Scalar values
    393432            READ(iounit) nx, ny, nxmin1, nymin1, nxfield
  • flexpart_code/par_mod.F90

    r496c607 r9cdf8bd  
    130130  !integer,parameter :: nxmax=361,nymax=181,nuvzmax=92,nwzmax=92,nzmax=92
    131131  !integer,parameter :: nxmax=361,nymax=181,nuvzmax=61,nwzmax=61,nzmax=61
    132   integer,parameter :: nxmax=721,nymax=361,nuvzmax=140,nwzmax=140,nzmax=140
     132  integer,parameter :: nxmax=721,nymax=361,nuvzmax=138,nwzmax=138,nzmax=138
    133133  !integer,parameter :: nxshift=359  ! for ECMWF
    134134  integer,parameter :: nxshift=0     ! for GFS
Note: See TracChangeset for help on using the changeset viewer.
hosted by ZAMG