Ignore:
Timestamp:
Sep 30, 2010 1:18:59 PM (11 years ago)
Author:
helmke
Message:

several changes for an unlimited output of mask data and message IDs changed

File:
1 edited

Legend:

Unmodified
Added
Removed
  • palm/trunk/SOURCE/init_masks.f90

    r558 r564  
    44! Current revisions:
    55! -----------------
    6 !
     6! assignment of mask_xyz_loop added, palm message identifiers of masked output
     7! changed
    78!
    89! Former revisions:
     
    6465                        '3 (NetCDF 4) and 4 (NetCDF 4 Classic model)'//  &
    6566                        '&are currently not supported (not yet tested).'
    66        CALL message( 'init_masks', 'PA9998', 1, 2, 0, 6, 0 )
     67       CALL message( 'init_masks', 'PA0328', 1, 2, 0, 6, 0 )
    6768    ENDIF
    6869
     
    7071!-- Store data output parameters for masked data output in few shared arrays
    7172    DO mid = 1, masks
     73   
    7274       do_mask     (mid,:) = data_output_masks(mid,:)
    7375       do_mask_user(mid,:) = data_output_masks_user(mid,:)
     
    7577       mask      (mid,2,:) = mask_y(mid,:)
    7678       mask      (mid,3,:) = mask_z(mid,:)
    77        mask_loop (mid,1,:) = mask_x_loop(mid,:)
    78        mask_loop (mid,2,:) = mask_y_loop(mid,:)
    79        mask_loop (mid,3,:) = mask_z_loop(mid,:)
     79       
     80       IF ( mask_x_loop(mid,1) == -1.0 .AND. mask_x_loop(mid,2) == -1.0  &
     81            .AND. mask_x_loop(mid,3) == -1.0 ) THEN
     82          mask_loop(mid,1,1:2) = -1.0
     83          mask_loop(mid,1,3) = 0.0
     84       ELSE
     85          mask_loop(mid,1,:) = mask_x_loop(mid,:)
     86       ENDIF
     87       IF ( mask_y_loop(mid,1) == -1.0 .AND. mask_y_loop(mid,2) == -1.0  &
     88            .AND. mask_y_loop(mid,3) == -1.0 ) THEN
     89          mask_loop(mid,2,1:2) = -1.0
     90          mask_loop(mid,2,3) = 0.0
     91       ELSE
     92          mask_loop(mid,2,:) = mask_y_loop(mid,:)
     93       ENDIF
     94       IF ( mask_z_loop(mid,1) == -1.0 .AND. mask_z_loop(mid,2) == -1.0  &
     95            .AND. mask_z_loop(mid,3) == -1.0 ) THEN
     96          mask_loop(mid,3,1:2) = -1.0
     97          mask_loop(mid,3,3) = 0.0
     98       ELSE
     99          mask_loop(mid,3,:) = mask_z_loop(mid,:)
     100       ENDIF
     101       
    80102    ENDDO
    81103   
     
    107129                     'given by data_output_mask and data_output_mask_user ', &
    108130                     'exceeds the limit of 100'
    109                 CALL message( 'init_masks', 'PA9998', 1, 2, 0, 6, 0 )
     131                CALL message( 'init_masks', 'PA0329', 1, 2, 0, 6, 0 )
    110132             ENDIF
    111133             do_mask(mid,i) = do_mask_user(mid,j)
     
    138160                   WRITE ( message_string, * ) 'output of "', TRIM( var ), &
    139161                        '" requires constant_diffusion = .FALSE.'
    140                    CALL message( 'init_masks', 'PA9998', 1, 2, 0, 6, 0 )
     162                   CALL message( 'init_masks', 'PA0103', 1, 2, 0, 6, 0 )
    141163                ENDIF
    142164                unit = 'm2/s2'
     
    147169                        '" requires a "particles_par"-NAMELIST in the ', &
    148170                        'parameter file (PARIN)'
    149                    CALL message( 'init_masks', 'PA9998', 1, 2, 0, 6, 0 )
     171                   CALL message( 'init_masks', 'PA0104', 1, 2, 0, 6, 0 )
    150172                ENDIF
    151173                IF ( TRIM( var ) == 'pc' )  unit = 'number'
     
    156178                   WRITE ( message_string, * ) 'output of "', TRIM( var ), &
    157179                        '" requires humidity = .TRUE.'
    158                    CALL message( 'init_masks', 'PA9998', 1, 2, 0, 6, 0 )
     180                   CALL message( 'init_masks', 'PA0105', 1, 2, 0, 6, 0 )
    159181                ENDIF
    160182                IF ( TRIM( var ) == 'q'   )  unit = 'kg/kg'
     
    166188                        '" requires cloud_physics = .TRUE. or cloud_droplets', &
    167189                        ' = .TRUE.'
    168                    CALL message( 'init_masks', 'PA9998', 1, 2, 0, 6, 0 )
     190                   CALL message( 'init_masks', 'PA0108', 1, 2, 0, 6, 0 )
    169191                ENDIF
    170192                unit = 'kg/kg'
     
    174196                   WRITE ( message_string, * ) 'output of "', TRIM( var ), &
    175197                        '" requires cloud_droplets = .TRUE.'
    176                    CALL message( 'init_masks', 'PA9998', 1, 2, 0, 6, 0 )
     198                   CALL message( 'init_masks', 'PA0107', 1, 2, 0, 6, 0 )
    177199                ENDIF
    178200                IF ( TRIM( var ) == 'ql_c'  )  unit = 'kg/kg'
     
    184206                   WRITE ( message_string, * ) 'output of "', TRIM( var ), &
    185207                        '" requires cloud_physics = .TRUE.'
    186                    CALL message( 'init_masks', 'PA9998', 1, 2, 0, 6, 0 )
     208                   CALL message( 'init_masks', 'PA0108', 1, 2, 0, 6, 0 )
    187209                ENDIF
    188210                unit = 'kg/kg'
     
    192214                   WRITE ( message_string, * ) 'output of "', TRIM( var ), &
    193215                        '" requires ocean = .TRUE.'
    194                    CALL message( 'init_masks', 'PA9998', 1, 2, 0, 6, 0 )
     216                   CALL message( 'init_masks', 'PA0109', 1, 2, 0, 6, 0 )
    195217                ENDIF
    196218                unit = 'kg/m3'
     
    200222                   WRITE ( message_string, * ) 'output of "', TRIM( var ), &
    201223                        '" requires passive_scalar = .TRUE.'
    202                    CALL message( 'init_masks', 'PA9998', 1, 2, 0, 6, 0 )
     224                   CALL message( 'init_masks', 'PA0110', 1, 2, 0, 6, 0 )
    203225                ENDIF
    204226                unit = 'conc'
     
    208230                   WRITE ( message_string, * ) 'output of "', TRIM( var ), &
    209231                        '" requires ocean = .TRUE.'
    210                    CALL message( 'init_masks', 'PA9998', 1, 2, 0, 6, 0 )
     232                   CALL message( 'init_masks', 'PA0109', 1, 2, 0, 6, 0 )
    211233                ENDIF
    212234                unit = 'psu'
     
    216238                     'output: "', TRIM( var ), '" is only allowed', &
    217239                     'for horizontal cross section'
    218                 CALL message( 'init_masks', 'PA9998', 1, 2, 0, 6, 0 )
     240                CALL message( 'init_masks', 'PA0111', 1, 2, 0, 6, 0 )
    219241!                IF ( TRIM( var ) == 'lwp*'  .AND.  .NOT. cloud_physics )  THEN
    220242!                   WRITE ( message_string, * ) 'output of "', TRIM( var ), &
    221243!                         '" requires cloud_physics = .TRUE.'
    222 !                   CALL message( 'init_masks', 'PA9998', 1, 2, 0, 6, 0 )
     244!                   CALL message( 'init_masks', 'PA0108', 1, 2, 0, 6, 0 )
    223245!                ENDIF
    224246!                IF ( TRIM( var ) == 'pra*'  .AND.  .NOT. precipitation )  THEN
    225247!                   WRITE ( message_string, * ) 'output of "', TRIM( var ), &
    226248!                         '" requires precipitation = .TRUE.'
    227 !                   CALL message( 'init_masks', 'PA9998', 1, 2, 0, 6, 0 )
     249!                   CALL message( 'init_masks', 'PA0112', 1, 2, 0, 6, 0 )
    228250!                ENDIF
    229251!                IF ( TRIM( var ) == 'pra*'  .AND.  j == 1 )  THEN
     
    231253!                         ' precipitation amount "', TRIM( var ),         &
    232254!                         '" not possible'
    233 !                   CALL message( 'init_masks', 'PA9998', 1, 2, 0, 6, 0 )
     255!                   CALL message( 'init_masks', 'PA0113', 1, 2, 0, 6, 0 )
    234256!                ENDIF
    235257!                IF ( TRIM( var ) == 'prr*'  .AND.  .NOT. precipitation )  THEN
    236258!                   WRITE ( message_string, * ) 'output of "', TRIM( var ), &
    237259!                         '" requires precipitation = .TRUE.'
    238 !                   CALL message( 'init_masks', 'PA9998', 1, 2, 0, 6, 0 )
     260!                   CALL message( 'init_masks', 'PA0112', 1, 2, 0, 6, 0 )
    239261!                ENDIF
    240262!
     
    262284                           'output or data_output_user: "', &
    263285                           TRIM( do_mask(mid,i) ), '"'
    264                       CALL message( 'init_masks', 'PA9998', 1, 2, 0, 6, 0 )
     286                      CALL message( 'init_masks', 'PA0114', 1, 2, 0, 6, 0 )
    265287                   ELSE
    266288                      WRITE ( message_string, * ) 'illegal value for data_',&
    267289                           'output: "', TRIM( do_mask(mid,i) ), '"'
    268                       CALL message( 'init_masks', 'PA9998', 1, 2, 0, 6, 0 )
     290                      CALL message( 'init_masks', 'PA0330', 1, 2, 0, 6, 0 )
    269291                   ENDIF
    270292                ENDIF
     
    451473                     m,' in mask ',mid,' along dimension ',dim,  &
    452474                     ' exceeds ',nxyz_string,' = ',nxyz
    453                 CALL message( 'init_masks', 'PA9998', 1, 2, 0, 6, 0 )
     475                CALL message( 'init_masks', 'PA0331', 1, 2, 0, 6, 0 )
    454476             ENDIF
    455477             IF ( m >= lb .AND. m <= ub )  THEN
     
    490512                     nxyz_string,'*',dxyz_string,'/mask_scale(',dim,')=', &
    491513                     nxyz*dxyz/mask_scale(dim)
    492                 CALL message( 'init_masks', 'PA9998', 1, 2, 0, 6, 0 )
     514                CALL message( 'init_masks', 'PA0332', 1, 2, 0, 6, 0 )
    493515             ENDIF
    494516             loop_begin  = NINT( mask_loop(mid,dim,1) * mask_scale(dim) * ddxyz )
     
    507529                     mask_loop(mid,dim,2),'&exceed zw(nz)/mask_scale(',dim, &
    508530                     ')=',zw(nz)/mask_scale(dim)
    509                 CALL message( 'init_masks', 'PA9998', 1, 2, 0, 6, 0 )
     531                CALL message( 'init_masks', 'PA0333', 1, 2, 0, 6, 0 )
    510532             ENDIF
    511533             ind_array =  &
     
    530552                     'match the desired heights&within the stretching ', &
    531553                     'region. Recommendation: use mask instead of mask_loop.'
    532                 CALL message( 'init_masks', 'PA9998', 0, 1, 0, 6, 0 )
     554                CALL message( 'init_masks', 'PA0334', 0, 1, 0, 6, 0 )
    533555             ENDIF
    534556
Note: See TracChangeset for help on using the changeset viewer.