Changeset 1425 for palm/trunk
- Timestamp:
- Jul 5, 2014 10:57:53 AM (10 years ago)
- Location:
- palm/trunk/SOURCE
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/check_parameters.f90
r1403 r1425 20 20 ! Current revisions: 21 21 ! ----------------- 22 ! 22 ! bugfix: perturbation domain modified for parallel random number generator 23 23 ! 24 24 ! Former revisions: … … 2427 2427 hom(:,2,53,:) = SPREAD( zw, 2, statistic_regions+1 ) 2428 2428 ELSE 2429 message_string = 'data_output_pr = ' // &2429 message_string = 'data_output_pr = ' // & 2430 2430 TRIM( data_output_pr(i) ) // ' is not imp' // & 2431 2431 'lemented for cloud_physics = .FALSE. an&' // & … … 2436 2436 CASE ( 'ql' ) 2437 2437 IF ( .NOT. cloud_physics .AND. .NOT. cloud_droplets ) THEN 2438 message_string = 'data_output_pr = ' // &2438 message_string = 'data_output_pr = ' // & 2439 2439 TRIM( data_output_pr(i) ) // ' is not imp' // & 2440 2440 'lemented for cloud_physics = .FALSE. or' // & … … 2495 2495 CASE ( 'rho' ) 2496 2496 IF ( .NOT. ocean ) THEN 2497 message_string = 'data_output_pr = ' // &2497 message_string = 'data_output_pr = ' // & 2498 2498 TRIM( data_output_pr(i) ) // ' is not imp' // & 2499 2499 'lemented for ocean = .FALSE.' … … 2513 2513 CASE ( 'w"sa"' ) 2514 2514 IF ( .NOT. ocean ) THEN 2515 message_string = 'data_output_pr = ' // &2515 message_string = 'data_output_pr = ' // & 2516 2516 TRIM( data_output_pr(i) ) // ' is not imp' // & 2517 2517 'lemented for ocean = .FALSE.' … … 2525 2525 CASE ( 'w*sa*' ) 2526 2526 IF ( .NOT. ocean ) THEN 2527 message_string = 'data_output_pr = ' // &2527 message_string = 'data_output_pr = ' // & 2528 2528 TRIM( data_output_pr(i) ) // ' is not imp' // & 2529 2529 'lemented for ocean = .FALSE.' … … 2537 2537 CASE ( 'wsa' ) 2538 2538 IF ( .NOT. ocean ) THEN 2539 message_string = 'data_output_pr = ' // &2539 message_string = 'data_output_pr = ' // & 2540 2540 TRIM( data_output_pr(i) ) // ' is not imp' // & 2541 2541 'lemented for ocean = .FALSE.' … … 2559 2559 CASE ( 'q*2' ) 2560 2560 IF ( .NOT. humidity ) THEN 2561 message_string = 'data_output_pr = ' // &2561 message_string = 'data_output_pr = ' // & 2562 2562 TRIM( data_output_pr(i) ) // ' is not imp' // & 2563 2563 'lemented for humidity = .FALSE.' … … 2571 2571 CASE ( 'prho' ) 2572 2572 IF ( .NOT. ocean ) THEN 2573 message_string = 'data_output_pr = ' // &2573 message_string = 'data_output_pr = ' // & 2574 2574 TRIM( data_output_pr(i) ) // ' is not imp' // & 2575 2575 'lemented for ocean = .FALSE.' … … 2588 2588 CASE ( 'nr' ) 2589 2589 IF ( .NOT. cloud_physics ) THEN 2590 message_string = 'data_output_pr = ' // &2590 message_string = 'data_output_pr = ' // & 2591 2591 TRIM( data_output_pr(i) ) // ' is not imp' // & 2592 2592 'lemented for cloud_physics = .FALSE.' 2593 2593 CALL message( 'check_parameters', 'PA0094', 1, 2, 0, 6, 0 ) 2594 2594 ELSEIF ( icloud_scheme /= 0 ) THEN 2595 message_string = 'data_output_pr = ' // &2595 message_string = 'data_output_pr = ' // & 2596 2596 TRIM( data_output_pr(i) ) // ' is not imp' // & 2597 2597 'lemented for cloud_scheme /= seifert_beheng' 2598 2598 CALL message( 'check_parameters', 'PA0358', 1, 2, 0, 6, 0 ) 2599 2599 ELSEIF ( .NOT. precipitation ) THEN 2600 message_string = 'data_output_pr = ' // &2600 message_string = 'data_output_pr = ' // & 2601 2601 TRIM( data_output_pr(i) ) // ' is not imp' // & 2602 2602 'lemented for precipitation = .FALSE.' … … 2610 2610 CASE ( 'qr' ) 2611 2611 IF ( .NOT. cloud_physics ) THEN 2612 message_string = 'data_output_pr = ' // &2612 message_string = 'data_output_pr = ' // & 2613 2613 TRIM( data_output_pr(i) ) // ' is not imp' // & 2614 2614 'lemented for cloud_physics = .FALSE.' 2615 2615 CALL message( 'check_parameters', 'PA0094', 1, 2, 0, 6, 0 ) 2616 2616 ELSEIF ( icloud_scheme /= 0 ) THEN 2617 message_string = 'data_output_pr = ' // &2617 message_string = 'data_output_pr = ' // & 2618 2618 TRIM( data_output_pr(i) ) // ' is not imp' // & 2619 2619 'lemented for cloud_scheme /= seifert_beheng' 2620 2620 CALL message( 'check_parameters', 'PA0358', 1, 2, 0, 6, 0 ) 2621 2621 ELSEIF ( .NOT. precipitation ) THEN 2622 message_string = 'data_output_pr = ' // &2622 message_string = 'data_output_pr = ' // & 2623 2623 TRIM( data_output_pr(i) ) // ' is not imp' // & 2624 2624 'lemented for precipitation = .FALSE.' … … 2632 2632 CASE ( 'qc' ) 2633 2633 IF ( .NOT. cloud_physics ) THEN 2634 message_string = 'data_output_pr = ' // &2634 message_string = 'data_output_pr = ' // & 2635 2635 TRIM( data_output_pr(i) ) // ' is not imp' // & 2636 2636 'lemented for cloud_physics = .FALSE.' 2637 2637 CALL message( 'check_parameters', 'PA0094', 1, 2, 0, 6, 0 ) 2638 2638 ELSEIF ( icloud_scheme /= 0 ) THEN 2639 message_string = 'data_output_pr = ' // &2639 message_string = 'data_output_pr = ' // & 2640 2640 TRIM( data_output_pr(i) ) // ' is not imp' // & 2641 2641 'lemented for cloud_scheme /= seifert_beheng' … … 2649 2649 CASE ( 'prr' ) 2650 2650 IF ( .NOT. cloud_physics ) THEN 2651 message_string = 'data_output_pr = ' // &2651 message_string = 'data_output_pr = ' // & 2652 2652 TRIM( data_output_pr(i) ) // ' is not imp' // & 2653 2653 'lemented for cloud_physics = .FALSE.' 2654 2654 CALL message( 'check_parameters', 'PA0094', 1, 2, 0, 6, 0 ) 2655 2655 ELSEIF ( icloud_scheme /= 0 ) THEN 2656 message_string = 'data_output_pr = ' // &2656 message_string = 'data_output_pr = ' // & 2657 2657 TRIM( data_output_pr(i) ) // ' is not imp' // & 2658 2658 'lemented for cloud_scheme /= seifert_beheng' 2659 2659 CALL message( 'check_parameters', 'PA0358', 1, 2, 0, 6, 0 ) 2660 2660 ELSEIF ( .NOT. precipitation ) THEN 2661 message_string = 'data_output_pr = ' // &2661 message_string = 'data_output_pr = ' // & 2662 2662 TRIM( data_output_pr(i) ) // ' is not imp' // & 2663 2663 'lemented for precipitation = .FALSE.' … … 2682 2682 CASE ( 'w_subs' ) 2683 2683 IF ( .NOT. large_scale_subsidence ) THEN 2684 message_string = 'data_output_pr = ' // &2684 message_string = 'data_output_pr = ' // & 2685 2685 TRIM( data_output_pr(i) ) // ' is not imp' // & 2686 2686 'lemented for large_scale_subsidence = .FALSE.' … … 2694 2694 CASE ( 'td_lsa_lpt' ) 2695 2695 IF ( .NOT. large_scale_forcing ) THEN 2696 message_string = 'data_output_pr = ' // &2696 message_string = 'data_output_pr = ' // & 2697 2697 TRIM( data_output_pr(i) ) // ' is not imp' // & 2698 2698 'lemented for large_scale_forcing = .FALSE.' … … 2706 2706 CASE ( 'td_lsa_q' ) 2707 2707 IF ( .NOT. large_scale_forcing ) THEN 2708 message_string = 'data_output_pr = ' // &2708 message_string = 'data_output_pr = ' // & 2709 2709 TRIM( data_output_pr(i) ) // ' is not imp' // & 2710 2710 'lemented for large_scale_forcing = .FALSE.' … … 2718 2718 CASE ( 'td_sub_lpt' ) 2719 2719 IF ( .NOT. large_scale_forcing ) THEN 2720 message_string = 'data_output_pr = ' // &2720 message_string = 'data_output_pr = ' // & 2721 2721 TRIM( data_output_pr(i) ) // ' is not imp' // & 2722 2722 'lemented for large_scale_forcing = .FALSE.' … … 2730 2730 CASE ( 'td_sub_q' ) 2731 2731 IF ( .NOT. large_scale_forcing ) THEN 2732 message_string = 'data_output_pr = ' // &2732 message_string = 'data_output_pr = ' // & 2733 2733 TRIM( data_output_pr(i) ) // ' is not imp' // & 2734 2734 'lemented for large_scale_forcing = .FALSE.' … … 2742 2742 CASE ( 'td_nud_lpt' ) 2743 2743 IF ( .NOT. nudging ) THEN 2744 message_string = 'data_output_pr = ' // &2744 message_string = 'data_output_pr = ' // & 2745 2745 TRIM( data_output_pr(i) ) // ' is not imp' // & 2746 2746 'lemented for nudging = .FALSE.' … … 2754 2754 CASE ( 'td_nud_q' ) 2755 2755 IF ( .NOT. nudging ) THEN 2756 message_string = 'data_output_pr = ' // &2756 message_string = 'data_output_pr = ' // & 2757 2757 TRIM( data_output_pr(i) ) // ' is not imp' // & 2758 2758 'lemented for nudging = .FALSE.' … … 2766 2766 CASE ( 'td_nud_u' ) 2767 2767 IF ( .NOT. nudging ) THEN 2768 message_string = 'data_output_pr = ' // &2768 message_string = 'data_output_pr = ' // & 2769 2769 TRIM( data_output_pr(i) ) // ' is not imp' // & 2770 2770 'lemented for nudging = .FALSE.' … … 2778 2778 CASE ( 'td_nud_v' ) 2779 2779 IF ( .NOT. nudging ) THEN 2780 message_string = 'data_output_pr = ' // &2780 message_string = 'data_output_pr = ' // & 2781 2781 TRIM( data_output_pr(i) ) // ' is not imp' // & 2782 2782 'lemented for nudging = .FALSE.' … … 2795 2795 IF ( unit == 'illegal' ) THEN 2796 2796 IF ( data_output_pr_user(1) /= ' ' ) THEN 2797 message_string = 'illegal value for data_output_pr or ' // &2798 'data_output_pr_user = "' // &2797 message_string = 'illegal value for data_output_pr or ' // & 2798 'data_output_pr_user = "' // & 2799 2799 TRIM( data_output_pr(i) ) // '"' 2800 2800 CALL message( 'check_parameters', 'PA0097', 1, 2, 0, 6, 0 ) 2801 2801 ELSE 2802 message_string = 'illegal value for data_output_pr = "' // &2802 message_string = 'illegal value for data_output_pr = "' // & 2803 2803 TRIM( data_output_pr(i) ) // '"' 2804 2804 CALL message( 'check_parameters', 'PA0098', 1, 2, 0, 6, 0 ) … … 2851 2851 var = data_output(i)(1:ilen) 2852 2852 IF ( ilen > 3 ) THEN 2853 IF ( data_output(i)(ilen-2:ilen) == '_xy' .OR. &2854 data_output(i)(ilen-2:ilen) == '_xz' .OR. &2853 IF ( data_output(i)(ilen-2:ilen) == '_xy' .OR. & 2854 data_output(i)(ilen-2:ilen) == '_xz' .OR. & 2855 2855 data_output(i)(ilen-2:ilen) == '_yz' ) THEN 2856 2856 k = 1 ! 2d data … … 2864 2864 CASE ( 'e' ) 2865 2865 IF ( constant_diffusion ) THEN 2866 message_string = 'output of "' // TRIM( var ) // '" requi' // &2866 message_string = 'output of "' // TRIM( var ) // '" requi' // & 2867 2867 'res constant_diffusion = .FALSE.' 2868 2868 CALL message( 'check_parameters', 'PA0103', 1, 2, 0, 6, 0 ) … … 2872 2872 CASE ( 'lpt' ) 2873 2873 IF ( .NOT. cloud_physics ) THEN 2874 message_string = 'output of "' // TRIM( var ) // '" requi' // &2874 message_string = 'output of "' // TRIM( var ) // '" requi' // & 2875 2875 'res cloud_physics = .TRUE.' 2876 2876 CALL message( 'check_parameters', 'PA0108', 1, 2, 0, 6, 0 ) … … 2880 2880 CASE ( 'nr' ) 2881 2881 IF ( .NOT. cloud_physics ) THEN 2882 message_string = 'output of "' // TRIM( var ) // '" requi' // &2882 message_string = 'output of "' // TRIM( var ) // '" requi' // & 2883 2883 'res cloud_physics = .TRUE.' 2884 2884 CALL message( 'check_parameters', 'PA0108', 1, 2, 0, 6, 0 ) 2885 2885 ELSEIF ( icloud_scheme /= 0 ) THEN 2886 message_string = 'output of "' // TRIM( var ) // '" requi' // &2886 message_string = 'output of "' // TRIM( var ) // '" requi' // & 2887 2887 'res cloud_scheme = seifert_beheng' 2888 2888 CALL message( 'check_parameters', 'PA0359', 1, 2, 0, 6, 0 ) … … 2901 2901 CASE ( 'prr' ) 2902 2902 IF ( .NOT. cloud_physics ) THEN 2903 message_string = 'output of "' // TRIM( var ) // '" requi' // &2903 message_string = 'output of "' // TRIM( var ) // '" requi' // & 2904 2904 'res cloud_physics = .TRUE.' 2905 2905 CALL message( 'check_parameters', 'PA0108', 1, 2, 0, 6, 0 ) 2906 2906 ELSEIF ( icloud_scheme /= 0 ) THEN 2907 message_string = 'output of "' // TRIM( var ) // '" requi' // &2907 message_string = 'output of "' // TRIM( var ) // '" requi' // & 2908 2908 'res cloud_scheme = seifert_beheng' 2909 2909 CALL message( 'check_parameters', 'PA0359', 1, 2, 0, 6, 0 ) 2910 2910 ELSEIF ( .NOT. precipitation ) THEN 2911 message_string = 'output of "' // TRIM( var ) // '" requi' // &2911 message_string = 'output of "' // TRIM( var ) // '" requi' // & 2912 2912 'res precipitation = .TRUE.' 2913 2913 CALL message( 'check_parameters', 'PA0112', 1, 2, 0, 6, 0 ) … … 2917 2917 CASE ( 'q', 'vpt' ) 2918 2918 IF ( .NOT. humidity ) THEN 2919 message_string = 'output of "' // TRIM( var ) // '" requi' // &2919 message_string = 'output of "' // TRIM( var ) // '" requi' // & 2920 2920 'res humidity = .TRUE.' 2921 2921 CALL message( 'check_parameters', 'PA0105', 1, 2, 0, 6, 0 ) … … 2926 2926 CASE ( 'qc' ) 2927 2927 IF ( .NOT. cloud_physics ) THEN 2928 message_string = 'output of "' // TRIM( var ) // '" requi' // &2928 message_string = 'output of "' // TRIM( var ) // '" requi' // & 2929 2929 'res cloud_physics = .TRUE.' 2930 2930 CALL message( 'check_parameters', 'PA0108', 1, 2, 0, 6, 0 ) 2931 2931 ELSEIF ( icloud_scheme /= 0 ) THEN 2932 message_string = 'output of "' // TRIM( var ) // '" requi' // &2932 message_string = 'output of "' // TRIM( var ) // '" requi' // & 2933 2933 'res cloud_scheme = seifert_beheng' 2934 2934 CALL message( 'check_parameters', 'PA0359', 1, 2, 0, 6, 0 ) … … 2938 2938 CASE ( 'ql' ) 2939 2939 IF ( .NOT. ( cloud_physics .OR. cloud_droplets ) ) THEN 2940 message_string = 'output of "' // TRIM( var ) // '" requi' // &2940 message_string = 'output of "' // TRIM( var ) // '" requi' // & 2941 2941 'res cloud_physics = .TRUE. or cloud_droplets = .TRUE.' 2942 2942 CALL message( 'check_parameters', 'PA0106', 1, 2, 0, 6, 0 ) … … 2946 2946 CASE ( 'ql_c', 'ql_v', 'ql_vp' ) 2947 2947 IF ( .NOT. cloud_droplets ) THEN 2948 message_string = 'output of "' // TRIM( var ) // '" requi' // &2948 message_string = 'output of "' // TRIM( var ) // '" requi' // & 2949 2949 'res cloud_droplets = .TRUE.' 2950 2950 CALL message( 'check_parameters', 'PA0107', 1, 2, 0, 6, 0 ) … … 2956 2956 CASE ( 'qr' ) 2957 2957 IF ( .NOT. cloud_physics ) THEN 2958 message_string = 'output of "' // TRIM( var ) // '" requi' // &2958 message_string = 'output of "' // TRIM( var ) // '" requi' // & 2959 2959 'res cloud_physics = .TRUE.' 2960 2960 CALL message( 'check_parameters', 'PA0108', 1, 2, 0, 6, 0 ) 2961 2961 ELSEIF ( icloud_scheme /= 0 ) THEN 2962 message_string = 'output of "' // TRIM( var ) // '" requi' // &2962 message_string = 'output of "' // TRIM( var ) // '" requi' // & 2963 2963 'res cloud_scheme = seifert_beheng' 2964 2964 CALL message( 'check_parameters', 'PA0359', 1, 2, 0, 6, 0 ) 2965 2965 ELSEIF ( .NOT. precipitation ) THEN 2966 message_string = 'output of "' // TRIM( var ) // '" requi' // &2966 message_string = 'output of "' // TRIM( var ) // '" requi' // & 2967 2967 'res precipitation = .TRUE.' 2968 2968 CALL message( 'check_parameters', 'PA0112', 1, 2, 0, 6, 0 ) … … 2972 2972 CASE ( 'qv' ) 2973 2973 IF ( .NOT. cloud_physics ) THEN 2974 message_string = 'output of "' // TRIM( var ) // '" requi' // &2974 message_string = 'output of "' // TRIM( var ) // '" requi' // & 2975 2975 'res cloud_physics = .TRUE.' 2976 2976 CALL message( 'check_parameters', 'PA0108', 1, 2, 0, 6, 0 ) … … 2980 2980 CASE ( 'rho' ) 2981 2981 IF ( .NOT. ocean ) THEN 2982 message_string = 'output of "' // TRIM( var ) // '" requi' // &2982 message_string = 'output of "' // TRIM( var ) // '" requi' // & 2983 2983 'res ocean = .TRUE.' 2984 2984 CALL message( 'check_parameters', 'PA0109', 1, 2, 0, 6, 0 ) … … 2988 2988 CASE ( 's' ) 2989 2989 IF ( .NOT. passive_scalar ) THEN 2990 message_string = 'output of "' // TRIM( var ) // '" requi' // &2990 message_string = 'output of "' // TRIM( var ) // '" requi' // & 2991 2991 'res passive_scalar = .TRUE.' 2992 2992 CALL message( 'check_parameters', 'PA0110', 1, 2, 0, 6, 0 ) … … 2996 2996 CASE ( 'sa' ) 2997 2997 IF ( .NOT. ocean ) THEN 2998 message_string = 'output of "' // TRIM( var ) // '" requi' // &2998 message_string = 'output of "' // TRIM( var ) // '" requi' // & 2999 2999 'res ocean = .TRUE.' 3000 3000 CALL message( 'check_parameters', 'PA0109', 1, 2, 0, 6, 0 ) … … 3004 3004 CASE ( 'u*', 't*', 'lwp*', 'pra*', 'prr*', 'qsws*', 'shf*', 'z0*', 'z0h*' ) 3005 3005 IF ( k == 0 .OR. data_output(i)(ilen-2:ilen) /= '_xy' ) THEN 3006 message_string = 'illegal value for data_output: "' // &3007 TRIM( var ) // '" & only 2d-horizontal ' // &3006 message_string = 'illegal value for data_output: "' // & 3007 TRIM( var ) // '" & only 2d-horizontal ' // & 3008 3008 'cross sections are allowed for this value' 3009 3009 CALL message( 'check_parameters', 'PA0111', 1, 2, 0, 6, 0 ) 3010 3010 ENDIF 3011 3011 IF ( TRIM( var ) == 'lwp*' .AND. .NOT. cloud_physics ) THEN 3012 message_string = 'output of "' // TRIM( var ) // '" requi' // &3012 message_string = 'output of "' // TRIM( var ) // '" requi' // & 3013 3013 'res cloud_physics = .TRUE.' 3014 3014 CALL message( 'check_parameters', 'PA0108', 1, 2, 0, 6, 0 ) 3015 3015 ENDIF 3016 3016 IF ( TRIM( var ) == 'pra*' .AND. .NOT. precipitation ) THEN 3017 message_string = 'output of "' // TRIM( var ) // '" requi' // &3017 message_string = 'output of "' // TRIM( var ) // '" requi' // & 3018 3018 'res precipitation = .TRUE.' 3019 3019 CALL message( 'check_parameters', 'PA0112', 1, 2, 0, 6, 0 ) 3020 3020 ENDIF 3021 3021 IF ( TRIM( var ) == 'pra*' .AND. j == 1 ) THEN 3022 message_string = 'temporal averaging of precipitation ' // &3022 message_string = 'temporal averaging of precipitation ' // & 3023 3023 'amount "' // TRIM( var ) // '" is not possible' 3024 3024 CALL message( 'check_parameters', 'PA0113', 1, 2, 0, 6, 0 ) 3025 3025 ENDIF 3026 3026 IF ( TRIM( var ) == 'prr*' .AND. .NOT. precipitation ) THEN 3027 message_string = 'output of "' // TRIM( var ) // '" requi' // &3027 message_string = 'output of "' // TRIM( var ) // '" requi' // & 3028 3028 'res precipitation = .TRUE.' 3029 3029 CALL message( 'check_parameters', 'PA0112', 1, 2, 0, 6, 0 ) 3030 3030 ENDIF 3031 3031 IF ( TRIM( var ) == 'qsws*' .AND. .NOT. humidity ) THEN 3032 message_string = 'output of "' // TRIM( var ) // '" requi' // &3032 message_string = 'output of "' // TRIM( var ) // '" requi' // & 3033 3033 'res humidity = .TRUE.' 3034 3034 CALL message( 'check_parameters', 'PA0322', 1, 2, 0, 6, 0 ) … … 3059 3059 IF ( unit == 'illegal' ) THEN 3060 3060 IF ( data_output_user(1) /= ' ' ) THEN 3061 message_string = 'illegal value for data_output or ' // &3061 message_string = 'illegal value for data_output or ' // & 3062 3062 'data_output_user = "' // TRIM( data_output(i) ) // '"' 3063 3063 CALL message( 'check_parameters', 'PA0114', 1, 2, 0, 6, 0 ) 3064 3064 ELSE 3065 message_string = 'illegal value for data_output =' // &3065 message_string = 'illegal value for data_output =' // & 3066 3066 TRIM( data_output(i) ) // '"' 3067 3067 CALL message( 'check_parameters', 'PA0115', 1, 2, 0, 6, 0 ) … … 3139 3139 IF ( z_max_do2d == -1.0_wp ) z_max_do2d = zu(nzt) 3140 3140 IF ( z_max_do2d < zu(nzb+1) .OR. z_max_do2d > zu(nzt) ) THEN 3141 WRITE( message_string, * ) 'z_max_do2d = ', z_max_do2d, &3141 WRITE( message_string, * ) 'z_max_do2d = ', z_max_do2d, & 3142 3142 ' must be >= ', zu(nzb+1), '(zu(nzb+1)) and <= ', zu(nzt), & 3143 3143 ' (zu(nzt))' … … 3184 3184 !-- Check mask conditions 3185 3185 DO mid = 1, max_masks 3186 IF ( data_output_masks(mid,1) /= ' ' .OR. &3186 IF ( data_output_masks(mid,1) /= ' ' .OR. & 3187 3187 data_output_masks_user(mid,1) /= ' ' ) THEN 3188 3188 masks = masks + 1 … … 3191 3191 3192 3192 IF ( masks < 0 .OR. masks > max_masks ) THEN 3193 WRITE( message_string, * ) 'illegal value: masks must be >= 0 and ', &3193 WRITE( message_string, * ) 'illegal value: masks must be >= 0 and ', & 3194 3194 '<= ', max_masks, ' (=max_masks)' 3195 3195 CALL message( 'check_parameters', 'PA0325', 1, 2, 0, 6, 0 ) … … 3200 3200 mask_scale(3) = mask_scale_z 3201 3201 IF ( ANY( mask_scale <= 0.0_wp ) ) THEN 3202 WRITE( message_string, * ) &3203 'illegal value: mask_scale_x, mask_scale_y and mask_scale_z', &3202 WRITE( message_string, * ) & 3203 'illegal value: mask_scale_x, mask_scale_y and mask_scale_z', & 3204 3204 'must be > 0.0' 3205 3205 CALL message( 'check_parameters', 'PA0326', 1, 2, 0, 6, 0 ) … … 3232 3232 CONTINUE 3233 3233 #else 3234 message_string = 'netCDF: netCDF4 format requested but no ' // &3235 'cpp-directive __netcdf4 given & switch ' // &3234 message_string = 'netCDF: netCDF4 format requested but no ' // & 3235 'cpp-directive __netcdf4 given & switch ' // & 3236 3236 'back to 64-bit offset format' 3237 3237 CALL message( 'check_parameters', 'PA0171', 0, 1, 0, 6, 0 ) … … 3260 3260 ntdim_3d(0) = INT( ( end_time - skip_time_do3d ) / dt_do3d ) 3261 3261 IF ( do3d_at_begin ) ntdim_3d(0) = ntdim_3d(0) + 1 3262 ntdim_3d(1) = INT( ( end_time - skip_time_data_output_av ) &3262 ntdim_3d(1) = INT( ( end_time - skip_time_data_output_av ) & 3263 3263 / dt_data_output_av ) 3264 3264 ntdim_2d_xy(0) = INT( ( end_time - skip_time_do2d_xy ) / dt_do2d_xy ) … … 3290 3290 ELSE 3291 3291 IF ( prandtl_number < 0.0_wp ) THEN 3292 WRITE( message_string, * ) 'prandtl_number = ', prandtl_number, &3292 WRITE( message_string, * ) 'prandtl_number = ', prandtl_number, & 3293 3293 ' < 0.0' 3294 3294 CALL message( 'check_parameters', 'PA0122', 1, 2, 0, 6, 0 ) … … 3297 3297 3298 3298 IF ( prandtl_layer ) THEN 3299 message_string = 'prandtl_layer is not allowed with fixed ' // &3299 message_string = 'prandtl_layer is not allowed with fixed ' // & 3300 3300 'value of km' 3301 3301 CALL message( 'check_parameters', 'PA0123', 1, 2, 0, 6, 0 ) … … 3308 3308 !-- potential temperature, check the width of the damping layer 3309 3309 IF ( bc_lr /= 'cyclic' ) THEN 3310 IF ( pt_damping_width < 0.0_wp .OR. pt_damping_width > REAL( nx * dx ) ) THEN 3310 IF ( pt_damping_width < 0.0_wp .OR. & 3311 pt_damping_width > REAL( nx * dx ) ) THEN 3311 3312 message_string = 'pt_damping_width out of range' 3312 3313 CALL message( 'check_parameters', 'PA0124', 1, 2, 0, 6, 0 ) … … 3315 3316 3316 3317 IF ( bc_ns /= 'cyclic' ) THEN 3317 IF ( pt_damping_width < 0.0_wp .OR. pt_damping_width > REAL( ny * dy ) ) THEN 3318 IF ( pt_damping_width < 0.0_wp .OR. & 3319 pt_damping_width > REAL( ny * dy ) ) THEN 3318 3320 message_string = 'pt_damping_width out of range' 3319 3321 CALL message( 'check_parameters', 'PA0124', 1, 2, 0, 6, 0 ) … … 3324 3326 !-- Check value range for rif 3325 3327 IF ( rif_min >= rif_max ) THEN 3326 WRITE( message_string, * ) 'rif_min = ', rif_min, ' must be less ', &3328 WRITE( message_string, * ) 'rif_min = ', rif_min, ' must be less ', & 3327 3329 'than rif_max = ', rif_max 3328 3330 CALL message( 'check_parameters', 'PA0125', 1, 2, 0, 6, 0 ) 3331 ENDIF 3332 3333 ! 3334 !-- Check random generator 3335 IF ( (random_generator /= 'system-specific' .AND. & 3336 random_generator /= 'random-parallel' ) .AND. & 3337 random_generator /= 'numerical-recipes' ) THEN 3338 message_string = 'unknown random generator: random_generator = "' // & 3339 TRIM( random_generator ) // '"' 3340 CALL message( 'check_parameters', 'PA0135', 1, 2, 0, 6, 0 ) 3329 3341 ENDIF 3330 3342 … … 3340 3352 ENDIF 3341 3353 ELSEIF ( disturbance_level_b < zu(3) ) THEN 3342 WRITE( message_string, * ) 'disturbance_level_b = ', &3354 WRITE( message_string, * ) 'disturbance_level_b = ', & 3343 3355 disturbance_level_b, ' must be >= ', zu(3), '(zu(3))' 3344 3356 CALL message( 'check_parameters', 'PA0126', 1, 2, 0, 6, 0 ) 3345 3357 ELSEIF ( disturbance_level_b > zu(nzt-2) ) THEN 3346 WRITE( message_string, * ) 'disturbance_level_b = ', &3358 WRITE( message_string, * ) 'disturbance_level_b = ', & 3347 3359 disturbance_level_b, ' must be <= ', zu(nzt-2), '(zu(nzt-2))' 3348 3360 CALL message( 'check_parameters', 'PA0127', 1, 2, 0, 6, 0 ) … … 3365 3377 ENDIF 3366 3378 ELSEIF ( disturbance_level_t > zu(nzt-2) ) THEN 3367 WRITE( message_string, * ) 'disturbance_level_t = ', &3379 WRITE( message_string, * ) 'disturbance_level_t = ', & 3368 3380 disturbance_level_t, ' must be <= ', zu(nzt-2), '(zu(nzt-2))' 3369 3381 CALL message( 'check_parameters', 'PA0128', 1, 2, 0, 6, 0 ) 3370 3382 ELSEIF ( disturbance_level_t < disturbance_level_b ) THEN 3371 WRITE( message_string, * ) 'disturbance_level_t = ', &3372 disturbance_level_t, ' must be >= disturbance_level_b = ', &3383 WRITE( message_string, * ) 'disturbance_level_t = ', & 3384 disturbance_level_t, ' must be >= disturbance_level_b = ', & 3373 3385 disturbance_level_b 3374 3386 CALL message( 'check_parameters', 'PA0129', 1, 2, 0, 6, 0 ) … … 3387 3399 !-- z-direction. 3388 3400 IF ( disturbance_level_ind_t < disturbance_level_ind_b ) THEN 3389 WRITE( message_string, * ) 'disturbance_level_ind_t = ', &3401 WRITE( message_string, * ) 'disturbance_level_ind_t = ', & 3390 3402 disturbance_level_ind_t, ' must be >= disturbance_level_b = ', & 3391 3403 disturbance_level_b … … 3398 3410 !-- near the inflow and the perturbation area is further limited to ...(1) 3399 3411 !-- after the initial phase of the flow. 3400 dist_nxl = 0; dist_nxr = nx 3401 dist_nys = 0; dist_nyn = ny 3412 3402 3413 IF ( bc_lr /= 'cyclic' ) THEN 3403 3414 IF ( inflow_disturbance_begin == -1 ) THEN … … 3436 3447 ENDIF 3437 3448 3438 IF ( bc_lr == 'radiation/dirichlet' ) THEN 3439 dist_nxr = nx - inflow_disturbance_begin 3440 dist_nxl(1) = nx - inflow_disturbance_end 3441 ELSEIF ( bc_lr == 'dirichlet/radiation' ) THEN 3442 dist_nxl = inflow_disturbance_begin 3443 dist_nxr(1) = inflow_disturbance_end 3444 ENDIF 3445 IF ( bc_ns == 'dirichlet/radiation' ) THEN 3446 dist_nyn = ny - inflow_disturbance_begin 3447 dist_nys(1) = ny - inflow_disturbance_end 3448 ELSEIF ( bc_ns == 'radiation/dirichlet' ) THEN 3449 dist_nys = inflow_disturbance_begin 3450 dist_nyn(1) = inflow_disturbance_end 3449 IF ( random_generator == 'random-parallel' ) THEN 3450 dist_nxl = nxl; dist_nxr = nxr 3451 dist_nys = nys; dist_nyn = nyn 3452 IF ( bc_lr == 'radiation/dirichlet' ) THEN 3453 dist_nxr = MIN( nx - inflow_disturbance_begin, nxr ) 3454 dist_nxl(1) = MAX( nx - inflow_disturbance_end, nxl ) 3455 ELSEIF ( bc_lr == 'dirichlet/radiation' ) THEN 3456 dist_nxl = MAX( inflow_disturbance_begin, nxl ) 3457 dist_nxr(1) = MIN( inflow_disturbance_end, nxr ) 3458 ENDIF 3459 IF ( bc_ns == 'dirichlet/radiation' ) THEN 3460 dist_nyn = MIN( ny - inflow_disturbance_begin, nyn ) 3461 dist_nys(1) = MAX( ny - inflow_disturbance_end, nys ) 3462 ELSEIF ( bc_ns == 'radiation/dirichlet' ) THEN 3463 dist_nys = MAX( inflow_disturbance_begin, nys ) 3464 dist_nyn(1) = MIN( inflow_disturbance_end, nyn ) 3465 ENDIF 3466 ELSE 3467 dist_nxl = 0; dist_nxr = nx 3468 dist_nys = 0; dist_nyn = ny 3469 IF ( bc_lr == 'radiation/dirichlet' ) THEN 3470 dist_nxr = nx - inflow_disturbance_begin 3471 dist_nxl(1) = nx - inflow_disturbance_end 3472 ELSEIF ( bc_lr == 'dirichlet/radiation' ) THEN 3473 dist_nxl = inflow_disturbance_begin 3474 dist_nxr(1) = inflow_disturbance_end 3475 ENDIF 3476 IF ( bc_ns == 'dirichlet/radiation' ) THEN 3477 dist_nyn = ny - inflow_disturbance_begin 3478 dist_nys(1) = ny - inflow_disturbance_end 3479 ELSEIF ( bc_ns == 'radiation/dirichlet' ) THEN 3480 dist_nys = inflow_disturbance_begin 3481 dist_nyn(1) = inflow_disturbance_end 3482 ENDIF 3451 3483 ENDIF 3452 3484 … … 3455 3487 !-- boundary (so far, a turbulent inflow is realized from the left side only) 3456 3488 IF ( turbulent_inflow .AND. bc_lr /= 'dirichlet/radiation' ) THEN 3457 message_string = 'turbulent_inflow = .T. requires a Dirichlet ' // &3489 message_string = 'turbulent_inflow = .T. requires a Dirichlet ' // & 3458 3490 'condition at the inflow boundary' 3459 3491 CALL message( 'check_parameters', 'PA0133', 1, 2, 0, 6, 0 ) … … 3465 3497 IF ( turbulent_inflow .AND. initializing_actions /= 'cyclic_fill' .AND. & 3466 3498 initializing_actions /= 'read_restart_data' ) THEN 3467 message_string = 'turbulent_inflow = .T. requires ' // &3499 message_string = 'turbulent_inflow = .T. requires ' // & 3468 3500 'initializing_actions = ''cyclic_fill'' ' 3469 3501 CALL message( 'check_parameters', 'PA0055', 1, 2, 0, 6, 0 ) … … 3490 3522 3491 3523 ! 3492 !-- Check random generator3493 IF ( (random_generator /= 'system-specific' .AND. &3494 random_generator /= 'random-parallel' ) .AND. &3495 random_generator /= 'numerical-recipes' ) THEN3496 message_string = 'unknown random generator: random_generator = "' // &3497 TRIM( random_generator ) // '"'3498 CALL message( 'check_parameters', 'PA0135', 1, 2, 0, 6, 0 )3499 ENDIF3500 3501 !3502 3524 !-- Determine damping level index for 1D model 3503 3525 IF ( INDEX( initializing_actions, 'set_1d-model_profiles' ) /= 0 ) THEN … … 3506 3528 damp_level_ind_1d = nzt + 1 3507 3529 ELSEIF ( damp_level_1d < 0.0_wp .OR. damp_level_1d > zu(nzt+1) ) THEN 3508 WRITE( message_string, * ) 'damp_level_1d = ', damp_level_1d, &3530 WRITE( message_string, * ) 'damp_level_1d = ', damp_level_1d, & 3509 3531 ' must be > 0.0 and < ', zu(nzt+1), '(zu(nzt+1))' 3510 3532 CALL message( 'check_parameters', 'PA0136', 1, 2, 0, 6, 0 ) … … 3521 3543 ! 3522 3544 !-- Check some other 1d-model parameters 3523 IF ( TRIM( mixing_length_1d ) /= 'as_in_3d_model' .AND. &3545 IF ( TRIM( mixing_length_1d ) /= 'as_in_3d_model' .AND. & 3524 3546 TRIM( mixing_length_1d ) /= 'blackadar' ) THEN 3525 message_string = 'mixing_length_1d = "' // TRIM( mixing_length_1d ) // &3547 message_string = 'mixing_length_1d = "' // TRIM( mixing_length_1d ) // & 3526 3548 '" is unknown' 3527 3549 CALL message( 'check_parameters', 'PA0137', 1, 2, 0, 6, 0 ) 3528 3550 ENDIF 3529 IF ( TRIM( dissipation_1d ) /= 'as_in_3d_model' .AND. &3551 IF ( TRIM( dissipation_1d ) /= 'as_in_3d_model' .AND. & 3530 3552 TRIM( dissipation_1d ) /= 'detering' ) THEN 3531 message_string = 'dissipation_1d = "' // TRIM( dissipation_1d ) // &3553 message_string = 'dissipation_1d = "' // TRIM( dissipation_1d ) // & 3532 3554 '" is unknown' 3533 3555 CALL message( 'check_parameters', 'PA0138', 1, 2, 0, 6, 0 ) … … 3565 3587 !-- MPP_TREMAIN gives the remaining CPU time only in steps of 30 seconds 3566 3588 IF ( termination_time_needed <= 30.0_wp ) THEN 3567 WRITE( message_string, * ) 'termination_time_needed = ', &3568 termination_time_needed, ' must be > 30.0 on host "', &3589 WRITE( message_string, * ) 'termination_time_needed = ', & 3590 termination_time_needed, ' must be > 30.0 on host "', & 3569 3591 TRIM( host ), '"' 3570 3592 CALL message( 'check_parameters', 'PA0139', 1, 2, 0, 6, 0 ) … … 3576 3598 !-- copying of files, etc.) has to be regarded 3577 3599 IF ( termination_time_needed < 300.0_wp ) THEN 3578 WRITE( message_string, * ) 'termination_time_needed = ', &3579 termination_time_needed, ' should be >= 300.0 on host "', &3600 WRITE( message_string, * ) 'termination_time_needed = ', & 3601 termination_time_needed, ' should be >= 300.0 on host "', & 3580 3602 TRIM( host ), '"' 3581 3603 CALL message( 'check_parameters', 'PA0140', 1, 2, 0, 6, 0 ) … … 3603 3625 ENDIF 3604 3626 IF ( ANY( dpdxy /= 0.0_wp ) .AND. .NOT. dp_external ) THEN 3605 WRITE( message_string, * ) 'dpdxy is nonzero but dp_external is ', &3627 WRITE( message_string, * ) 'dpdxy is nonzero but dp_external is ', & 3606 3628 '.FALSE., i.e. the external pressure gradient & will not be applied' 3607 3629 CALL message( 'check_parameters', 'PA0153', 0, 1, 0, 6, 0 ) … … 3613 3635 3614 3636 ELSEIF ( TRIM( conserve_volume_flow_mode ) /= 'initial_profiles' .AND. & 3615 TRIM( conserve_volume_flow_mode ) /= 'inflow_profile' .AND. &3637 TRIM( conserve_volume_flow_mode ) /= 'inflow_profile' .AND. & 3616 3638 TRIM( conserve_volume_flow_mode ) /= 'bulk_velocity' ) THEN 3617 WRITE( message_string, * ) 'unknown conserve_volume_flow_mode: ', &3639 WRITE( message_string, * ) 'unknown conserve_volume_flow_mode: ', & 3618 3640 conserve_volume_flow_mode 3619 3641 CALL message( 'check_parameters', 'PA0154', 1, 2, 0, 6, 0 ) 3620 3642 ENDIF 3621 IF ( (bc_lr /= 'cyclic' .OR. bc_ns /= 'cyclic') .AND. &3643 IF ( (bc_lr /= 'cyclic' .OR. bc_ns /= 'cyclic') .AND. & 3622 3644 TRIM( conserve_volume_flow_mode ) == 'bulk_velocity' ) THEN 3623 WRITE( message_string, * ) 'non-cyclic boundary conditions ', &3645 WRITE( message_string, * ) 'non-cyclic boundary conditions ', & 3624 3646 'require conserve_volume_flow_mode = ''initial_profiles''' 3625 3647 CALL message( 'check_parameters', 'PA0155', 1, 2, 0, 6, 0 ) 3626 3648 ENDIF 3627 IF ( bc_lr == 'cyclic' .AND. bc_ns == 'cyclic' .AND. &3649 IF ( bc_lr == 'cyclic' .AND. bc_ns == 'cyclic' .AND. & 3628 3650 TRIM( conserve_volume_flow_mode ) == 'inflow_profile' ) THEN 3629 WRITE( message_string, * ) 'cyclic boundary conditions ', &3630 'require conserve_volume_flow_mode = ''initial_profiles''', &3651 WRITE( message_string, * ) 'cyclic boundary conditions ', & 3652 'require conserve_volume_flow_mode = ''initial_profiles''', & 3631 3653 ' or ''bulk_velocity''' 3632 3654 CALL message( 'check_parameters', 'PA0156', 1, 2, 0, 6, 0 ) 3633 3655 ENDIF 3634 3656 ENDIF 3635 IF ( ( u_bulk /= 0.0_wp .OR. v_bulk /= 0.0_wp ) .AND. &3636 ( .NOT. conserve_volume_flow .OR. &3657 IF ( ( u_bulk /= 0.0_wp .OR. v_bulk /= 0.0_wp ) .AND. & 3658 ( .NOT. conserve_volume_flow .OR. & 3637 3659 TRIM( conserve_volume_flow_mode ) /= 'bulk_velocity' ) ) THEN 3638 WRITE( message_string, * ) 'nonzero bulk velocity requires ', &3639 'conserve_volume_flow = .T. and ', &3660 WRITE( message_string, * ) 'nonzero bulk velocity requires ', & 3661 'conserve_volume_flow = .T. and ', & 3640 3662 'conserve_volume_flow_mode = ''bulk_velocity''' 3641 3663 CALL message( 'check_parameters', 'PA0157', 1, 2, 0, 6, 0 ) … … 3645 3667 !-- Check particle attributes 3646 3668 IF ( particle_color /= 'none' ) THEN 3647 IF ( particle_color /= 'absuv' .AND. particle_color /= 'pt*' .AND. &3669 IF ( particle_color /= 'absuv' .AND. particle_color /= 'pt*' .AND. & 3648 3670 particle_color /= 'z' ) THEN 3649 message_string = 'illegal value for parameter particle_color: ' // &3671 message_string = 'illegal value for parameter particle_color: ' // & 3650 3672 TRIM( particle_color) 3651 3673 CALL message( 'check_parameters', 'PA0313', 1, 2, 0, 6, 0 ) … … 3674 3696 !-- Check nudging and large scale forcing from external file 3675 3697 IF ( nudging .AND. ( .NOT. large_scale_forcing ) ) THEN 3676 message_string = 'Nudging requires large_scale_forcing = .T.. &'// &3677 'Surface fluxes and geostrophic wind should be &'// &3698 message_string = 'Nudging requires large_scale_forcing = .T.. &'// & 3699 'Surface fluxes and geostrophic wind should be &'// & 3678 3700 'prescribed in file LSF_DATA' 3679 3701 CALL message( 'check_parameters', 'PA0374', 1, 2, 0, 6, 0 ) 3680 3702 ENDIF 3681 3703 3682 IF ( large_scale_forcing .AND. ( bc_lr /= 'cyclic' .OR. &3704 IF ( large_scale_forcing .AND. ( bc_lr /= 'cyclic' .OR. & 3683 3705 bc_ns /= 'cyclic' ) ) THEN 3684 message_string = 'Non-cyclic lateral boundaries do not allow for &' // &3706 message_string = 'Non-cyclic lateral boundaries do not allow for &' // & 3685 3707 'the usage of large scale forcing from external file.' 3686 3708 CALL message( 'check_parameters', 'PA0375', 1, 2, 0, 6, 0 ) … … 3688 3710 3689 3711 IF ( large_scale_forcing .AND. ( .NOT. humidity ) ) THEN 3690 message_string = 'The usage of large scale forcing from external &'// &3712 message_string = 'The usage of large scale forcing from external &'// & 3691 3713 'file LSF_DATA requires humidity = .T..' 3692 3714 CALL message( 'check_parameters', 'PA0376', 1, 2, 0, 6, 0 ) … … 3694 3716 3695 3717 IF ( large_scale_forcing .AND. topography /= 'flat' ) THEN 3696 message_string = 'The usage of large scale forcing from external &'// &3718 message_string = 'The usage of large scale forcing from external &'// & 3697 3719 'file LSF_DATA is not implemented for non-flat topography' 3698 3720 CALL message( 'check_parameters', 'PA0377', 1, 2, 0, 6, 0 ) … … 3700 3722 3701 3723 IF ( large_scale_forcing .AND. ocean ) THEN 3702 message_string = 'The usage of large scale forcing from external &'// &3724 message_string = 'The usage of large scale forcing from external &'// & 3703 3725 'file LSF_DATA is not implemented for ocean runs' 3704 3726 CALL message( 'check_parameters', 'PA0378', 1, 2, 0, 6, 0 ) -
palm/trunk/SOURCE/disturb_field.f90
r1401 r1425 20 20 ! Current revisions: 21 21 ! ------------------ 22 ! 22 ! bugfix: Parallel random number generator loop: print-statement no needed 23 23 ! 24 24 ! Former revisions: … … 135 135 ENDIF 136 136 ENDDO 137 ! IF (myid == 0) PRINT*, nxl, i, nxr, i, nys, j, nyn, j138 137 CALL random_seed_parallel( get=seq_random_array(:, j, i) ) 139 138 ENDDO
Note: See TracChangeset
for help on using the changeset viewer.