Ignore:
Timestamp:
Jul 21, 2017 12:47:43 PM (4 years ago)
Author:
suehring
Message:

large-scale forcing and nudging modularized

File:
1 edited

Legend:

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

    r2312 r2320  
    2020! Current revisions:
    2121! -----------------
    22 !
    23 !
     22! 
     23! 
    2424! Former revisions:
    2525! -----------------
    2626! $Id$
     27! Modularize large-scale forcing and nudging
     28!
     29! 2312 2017-07-14 20:26:51Z hoffmann
    2730! PA0349 and PA0420 removed.
    2831!
     
    498501        ONLY: lsm_check_data_output, lsm_check_data_output_pr,                 &
    499502              lsm_check_parameters
     503
     504    USE lsf_nudging_mod,                                                       &
     505        ONLY:  lsf_nudging_check_parameters, lsf_nudging_check_data_output_pr, &
     506               qsws_surf, shf_surf
    500507
    501508    USE kinds
     
    12271234!-- When radiation model is used, peform addtional checks
    12281235    IF ( radiation )  CALL radiation_check_parameters
     1236!
     1237!-- When large-scale forcing or nudging is used, peform addtional checks
     1238    IF ( large_scale_forcing  .OR.  nudging )  CALL lsf_nudging_check_parameters
     1239
    12291240
    12301241
     
    28482859             ENDIF
    28492860
    2850           CASE ( 'td_lsa_lpt' )
    2851              IF (  .NOT.  large_scale_forcing )  THEN
    2852                 message_string = 'data_output_pr = ' //                        &
    2853                                  TRIM( data_output_pr(i) ) // ' is not imp' // &
    2854                                  'lemented for large_scale_forcing = .FALSE.'
    2855                 CALL message( 'check_parameters', 'PA0393', 1, 2, 0, 6, 0 )
    2856              ELSE
    2857                 dopr_index(i) = 81
    2858                 dopr_unit(i)  = 'K/s'
    2859                 hom(:,2,81,:) = SPREAD( zu, 2, statistic_regions+1 )
    2860              ENDIF
    2861 
    2862           CASE ( 'td_lsa_q' )
    2863              IF (  .NOT.  large_scale_forcing )  THEN
    2864                 message_string = 'data_output_pr = ' //                        &
    2865                                  TRIM( data_output_pr(i) ) // ' is not imp' // &
    2866                                  'lemented for large_scale_forcing = .FALSE.'
    2867                 CALL message( 'check_parameters', 'PA0393', 1, 2, 0, 6, 0 )
    2868              ELSE
    2869                 dopr_index(i) = 82
    2870                 dopr_unit(i)  = 'kg/kgs'
    2871                 hom(:,2,82,:) = SPREAD( zu, 2, statistic_regions+1 )
    2872              ENDIF
    2873 
    2874           CASE ( 'td_sub_lpt' )
    2875              IF (  .NOT.  large_scale_forcing )  THEN
    2876                 message_string = 'data_output_pr = ' //                        &
    2877                                  TRIM( data_output_pr(i) ) // ' is not imp' // &
    2878                                  'lemented for large_scale_forcing = .FALSE.'
    2879                 CALL message( 'check_parameters', 'PA0393', 1, 2, 0, 6, 0 )
    2880              ELSE
    2881                 dopr_index(i) = 83
    2882                 dopr_unit(i)  = 'K/s'
    2883                 hom(:,2,83,:) = SPREAD( zu, 2, statistic_regions+1 )
    2884              ENDIF
    2885 
    2886           CASE ( 'td_sub_q' )
    2887              IF (  .NOT.  large_scale_forcing )  THEN
    2888                 message_string = 'data_output_pr = ' //                        &
    2889                                  TRIM( data_output_pr(i) ) // ' is not imp' // &
    2890                                  'lemented for large_scale_forcing = .FALSE.'
    2891                 CALL message( 'check_parameters', 'PA0393', 1, 2, 0, 6, 0 )
    2892              ELSE
    2893                 dopr_index(i) = 84
    2894                 dopr_unit(i)  = 'kg/kgs'
    2895                 hom(:,2,84,:) = SPREAD( zu, 2, statistic_regions+1 )
    2896              ENDIF
    2897 
    2898           CASE ( 'td_nud_lpt' )
    2899              IF (  .NOT.  nudging )  THEN
    2900                 message_string = 'data_output_pr = ' //                        &
    2901                                  TRIM( data_output_pr(i) ) // ' is not imp' // &
    2902                                  'lemented for nudging = .FALSE.'
    2903                 CALL message( 'check_parameters', 'PA0394', 1, 2, 0, 6, 0 )
    2904              ELSE
    2905                 dopr_index(i) = 85
    2906                 dopr_unit(i)  = 'K/s'
    2907                 hom(:,2,85,:) = SPREAD( zu, 2, statistic_regions+1 )
    2908              ENDIF
    2909 
    2910           CASE ( 'td_nud_q' )
    2911              IF (  .NOT.  nudging )  THEN
    2912                 message_string = 'data_output_pr = ' //                        &
    2913                                  TRIM( data_output_pr(i) ) // ' is not imp' // &
    2914                                  'lemented for nudging = .FALSE.'
    2915                 CALL message( 'check_parameters', 'PA0394', 1, 2, 0, 6, 0 )
    2916              ELSE
    2917                 dopr_index(i) = 86
    2918                 dopr_unit(i)  = 'kg/kgs'
    2919                 hom(:,2,86,:) = SPREAD( zu, 2, statistic_regions+1 )
    2920              ENDIF
    2921 
    2922           CASE ( 'td_nud_u' )
    2923              IF (  .NOT.  nudging )  THEN
    2924                 message_string = 'data_output_pr = ' //                        &
    2925                                  TRIM( data_output_pr(i) ) // ' is not imp' // &
    2926                                  'lemented for nudging = .FALSE.'
    2927                 CALL message( 'check_parameters', 'PA0394', 1, 2, 0, 6, 0 )
    2928              ELSE
    2929                 dopr_index(i) = 87
    2930                 dopr_unit(i)  = 'm/s2'
    2931                 hom(:,2,87,:) = SPREAD( zu, 2, statistic_regions+1 )
    2932              ENDIF
    2933 
    2934           CASE ( 'td_nud_v' )
    2935              IF (  .NOT.  nudging )  THEN
    2936                 message_string = 'data_output_pr = ' //                        &
    2937                                  TRIM( data_output_pr(i) ) // ' is not imp' // &
    2938                                  'lemented for nudging = .FALSE.'
    2939                 CALL message( 'check_parameters', 'PA0394', 1, 2, 0, 6, 0 )
    2940              ELSE
    2941                 dopr_index(i) = 88
    2942                 dopr_unit(i)  = 'm/s2'
    2943                 hom(:,2,88,:) = SPREAD( zu, 2, statistic_regions+1 )
    2944              ENDIF
    2945 
    29462861          CASE ( 's*2' )
    29472862             IF (  .NOT.  passive_scalar )  THEN
     
    29622877             CALL lsm_check_data_output_pr( data_output_pr(i), i, unit,        &
    29632878                                            dopr_unit(i) )
     2879
     2880             CALL lsf_nudging_check_data_output_pr( data_output_pr(i), i,      &
     2881                                                    unit, dopr_unit(i) )
    29642882
    29652883             IF ( unit == 'illegal' )  THEN
     
    38853803
    38863804!
    3887 !-- Check nudging and large scale forcing from external file
    3888     IF ( nudging  .AND.  (  .NOT.  large_scale_forcing ) )  THEN
    3889        message_string = 'Nudging requires large_scale_forcing = .T.. &'//      &
    3890                         'Surface fluxes and geostrophic wind should be &'//    &
    3891                         'prescribed in file LSF_DATA'
    3892        CALL message( 'check_parameters', 'PA0374', 1, 2, 0, 6, 0 )
    3893     ENDIF
    3894 
    3895     IF ( large_scale_forcing  .AND.  ( bc_lr /= 'cyclic'  .OR.                 &
    3896                                     bc_ns /= 'cyclic' ) )  THEN
    3897        message_string = 'Non-cyclic lateral boundaries do not allow for &' //  &
    3898                         'the usage of large scale forcing from external file.'
    3899        CALL message( 'check_parameters', 'PA0375', 1, 2, 0, 6, 0 )
    3900     ENDIF
    3901 
    3902     IF ( large_scale_forcing  .AND.  (  .NOT.  humidity ) )  THEN
    3903        message_string = 'The usage of large scale forcing from external &'//   &
    3904                         'file LSF_DATA requires humidity = .T..'
    3905        CALL message( 'check_parameters', 'PA0376', 1, 2, 0, 6, 0 )
    3906     ENDIF
    3907 
    3908     IF ( large_scale_forcing  .AND.  passive_scalar )  THEN
    3909        message_string = 'The usage of large scale forcing from external &'//   &
    3910                         'file LSF_DATA is not implemented for passive scalars'
    3911        CALL message( 'check_parameters', 'PA0440', 1, 2, 0, 6, 0 )
    3912     ENDIF
    3913 
    3914     IF ( large_scale_forcing  .AND.  topography /= 'flat'                      &
    3915                               .AND.  .NOT.  lsf_exception )  THEN
    3916        message_string = 'The usage of large scale forcing from external &'//   &
    3917                         'file LSF_DATA is not implemented for non-flat topography'
    3918        CALL message( 'check_parameters', 'PA0377', 1, 2, 0, 6, 0 )
    3919     ENDIF
    3920 
    3921     IF ( large_scale_forcing  .AND.  ocean )  THEN
    3922        message_string = 'The usage of large scale forcing from external &'//   &
    3923                         'file LSF_DATA is not implemented for ocean runs'
    3924        CALL message( 'check_parameters', 'PA0378', 1, 2, 0, 6, 0 )
    3925     ENDIF
    3926 
    3927 !
    39283805!-- Prevent empty time records in volume, cross-section and masked data in case
    39293806!-- of non-parallel netcdf-output in restart runs
Note: See TracChangeset for help on using the changeset viewer.