Page 1 Source Listing CLMAX 2025-03-12 18:23 CLMAX.f 1 SUBROUTINE CLMAX 2 I (DETA,PDSL,HTM,Q2,ZINT,SM,HGT,LMH,IM,JM,LM,LP1 3 O, EL0 4 W, SQZ,SQ,RQ2L,RQ2H) 5 CFPP$ NOCONCUR R 6 C 7 C CALCULATES THE FREE-ATMOSPHERE ASYMPTOTE OF THE TURBULENCE LENGTH 8 C SCALE (L-INF IN THE BLACKADAR's FORMULA) FROM THE DISTRIBUTION 9 C OF THE TURBULENT ENERGY (see MY82) 10 C 11 C EXTRACTED FROM EXISTING CODE BY L. LOBOCKI, JULY 28, 1992 12 C 13 C INPUT: 14 C ------ 15 C 16 C DETA (LM) - VECTOR OF THE ETA COORDINATE STEPS 17 C PDSL (IM,JM) - VECTORIZED ARRAY OF SURFACE PRESSURE 18 C HTM (IM,JM,LM) - HEIGHT TOPOGRAPHY MASK ARRAY 19 C Q2 (IM,JM,LM) - TWICE THE TURBULENT ENERGY FIELD 20 C ZINT (IM,JM,LP1) - ETA INTERFACES HEIGHT FIELD 21 C SM (IM,JM) - SEA MASK 22 C HGT (IM,JM) - SURFACE ELEVATION ARRAY 23 C LMH (IM,JM) - TOPOGRAPHY INDEXES ARRAY 24 C IM,JM - ARRAY DIMENSIONS FOR HORIZONTAL GRIDS 25 C IN A VECTORIZED FORM 26 C KHL00 - INDEX POINTING TO THE BEGIN OF INTERNAL H-POINTS 27 C IN HORIZONTAL GRIDS 28 C KHH00 - INDEX POINTING TO THE END OF INTERNAL H-POINTS 29 C IN HORIZONTAL GRIDS 30 C LM - ARRAY DIMENSION FOR VERTICAL GRIDS 31 C LP1 = LM+1 32 C 33 C 34 C OUTPUT: 35 C ------- 36 C 37 C EL0 (IM,JM) - ARRAY OF RESULTING ASYMPTOTIC MIXING LENGTHS 38 C 39 C 40 C SCRATCH AREAS: 41 C -------------- 42 C 43 C SQZ(IM,JM),SQ(IM,JM),RQ2L(IM,JM),RQ2H(IM,JM) 44 C 45 C 46 C RELEVANT CONSTANTS: 47 C ------------------- 48 C 49 C PROPORTIONALITY CONSTANT BETWEEN ASYMPTOTIC MIXING LENGTH AND THE 50 C S.D. OF Q DISTRIBUTION, FOR LAND AND SEA AREAS, CORRESPONDINGLY: 51 PARAMETER (ALPHAL=0.2, ALPHAS=0.2) 52 C 53 C ASYMPTOTIC MIXING LENGTH LIMITATIONS: 54 PARAMETER (EL0M=300.0, ELMIN=11.0) 55 C 56 C MINIMAL VALUE OF TURBULENT ENERGY: 57 PARAMETER (EPSQ2=1.0E-4) Page 2 Source Listing CLMAX 2025-03-12 18:23 CLMAX.f 58 C 59 C ------------------------------------------------------------------ 60 C 61 D I M E N S I O N 62 & DETA(LM),PDSL(IM,JM),HTM(IM,JM,LM),Q2(IM,JM,LM) 63 &,ZINT(IM,JM,LP1),SM(IM,JM),HGT(IM,JM),EL0(IM,JM),LMH(IM,JM) 64 &,SQZ(IM,JM),SQ(IM,JM),RQ2L(IM,JM),RQ2H(IM,JM) 65 C ------------------------------------------------------------------ 66 C 67 INCLUDE "CTLBLK.comm" 68 C 83 !$omp parallel do 84 DO J=JSTA,JEND 85 DO I=1,IM 86 SQZ(I,J)=0.0 87 SQ(I,J)=0.0 88 RQ2H(I,J)=0.0 89 ENDDO 90 ENDDO 91 C 92 DO 220 L=1,LM 93 !$omp parallel do 94 !$omp& private(dp,rq2m) 95 DO J=JSTA,JEND 96 DO I=1,IM 97 IF(Q2(I,J,L).LE.EPSQ2) THEN 98 RQ2L(I,J)=0.0 99 ELSE 100 RQ2L(I,J)=SQRT(Q2(I,J,L)) 101 ENDIF 102 C 103 C ----------------------------------------------------------------- 104 C THIS PART OF THE CODE IS LEFT FOR TESTING OTHER PARAMETERIZATION 105 C SCHEMES 106 C 107 C IF (L.GE.LMH(I,J)) GOTO 215 108 c RQ2L(I,J)=SQRT(Q2(I,J,L)) 109 c IF(Q2(I,J,L).LT.0.0)THEN 110 c write(3,*)'NEGATIVE Q2 AT (I,J,L)=(',I,',',J,',',L,'): ', 111 c Q2(I,J,L) 112 c STOP 113 c ENDIF 114 C ----------------------------------------------------------------- 115 C 116 DP=DETA(L)*PDSL(I,J)*HTM(I,J,L) 117 C*** 118 C*** SUM OF Q2 AT BOTH LOWER & UPPER SURFACES: 119 C*** 120 RQ2M=(RQ2H(I,J)+RQ2L(I,J)) 121 C*** 122 C*** INTEGRAL OF Q*Z OVER DP 123 C*** 124 SQZ(I,J)=((ZINT(I,J,L)+ZINT(I,J,L+1))*0.5-HGT(I,J))*RQ2M*DP 125 1 +SQZ(I,J) 126 C*** 127 C*** INTEGRAL OF Q OVER DP: 128 C*** Page 3 Source Listing CLMAX 2025-03-12 18:23 CLMAX.f 129 SQ(I,J)=RQ2M*DP+SQ(I,J) 130 RQ2H(I,J)=RQ2L(I,J) 131 ENDDO 132 ENDDO 133 c215 CONTINUE 134 220 CONTINUE 135 C*** 136 C*** CLIPPING & APPLYING DIFFERENT VALUES OF THE PROPORTIONALITY 137 C*** CONSTANT ALPHA FOR THE LAND AND SEA AREA: 138 C*** 139 !$omp parallel do 140 DO J=JSTA,JEND 141 DO I=1,IM 142 EL0(I,J)= AMAX1(AMIN1( 143 1 ((SM(I,J)*ALPHAS+(1.0-SM(I,J))*ALPHAL)*SQZ(I,J) 144 2 /(SQ(I,J)+EPSQ2)), 145 3 EL0M),ELMIN) 146 ENDDO 147 ENDDO 148 C 149 RETURN 150 END ENTRY POINTS Name clmax_ Page 4 Source Listing CLMAX 2025-03-12 18:23 Symbol Table CLMAX.f SYMBOL CROSS REFERENCE Name Object Declared Type Bytes Dimen Elements Attributes References 220 Label 134 92 ALPHAL Param 51 R(4) 4 scalar 143 ALPHAS Param 51 R(4) 4 scalar 143 AMAX1 Func 142 scalar 142 AMIN1 Func 142 scalar 142 CLMAX Subr 1 CTLBLK Common 70 96 SAVE DETA Dummy 2 R(4) 4 1 0 ARG,INOUT 116 DP Local 116 R(4) 4 scalar 116,124,129 EL0 Dummy 3 R(4) 4 2 0 ARG,INOUT 142 EL0M Param 54 R(4) 4 scalar 145 ELMIN Param 54 R(4) 4 scalar 145 EPSQ2 Param 57 R(4) 4 scalar 97,144 HGT Dummy 2 R(4) 4 2 0 ARG,INOUT 124 HTM Dummy 2 R(4) 4 3 0 ARG,INOUT 116 I Local 85 I(4) 4 scalar 85,86,87,88,96,97,98,100,116,120,1 24,125,129,130,141,142,143,144 IM Dummy 2 I(4) 4 scalar ARG,INOUT 62,63,64,85,96,141 J Local 84 I(4) 4 scalar 84,86,87,88,95,97,98,100,116,120,1 24,125,129,130,140,142,143,144 JM Dummy 2 I(4) 4 scalar ARG,INOUT 62,63,64 L Local 92 I(4) 4 scalar 92,97,100,116,124 LM Dummy 2 I(4) 4 scalar ARG,INOUT 62,92 LMH Dummy 2 I(4) 4 2 0 ARG,INOUT LP1 Dummy 2 I(4) 4 scalar ARG,INOUT 63 PARALLEL Common 77 8240 PDSL Dummy 2 R(4) 4 2 0 ARG,INOUT 116 Q2 Dummy 2 R(4) 4 3 0 ARG,INOUT 97,100 RQ2H Dummy 4 R(4) 4 2 0 ARG,INOUT 88,120,130 RQ2L Dummy 4 R(4) 4 2 0 ARG,INOUT 98,100,120,130 RQ2M Local 120 R(4) 4 scalar 120,124,129 SM Dummy 2 R(4) 4 2 0 ARG,INOUT 143 SQ Dummy 4 R(4) 4 2 0 ARG,INOUT 87,129,144 SQRT Func 100 scalar 100 SQZ Dummy 4 R(4) 4 2 0 ARG,INOUT 86,124,125,143 ZINT Dummy 2 R(4) 4 3 0 ARG,INOUT 124 TYPE COMPONENTS/COMMON VARIABLES Name Type Bytes Offset Dimen Elements Attributes References DT R(4) 4 48 scalar COM FIRST R(4) 4 24 scalar COM ICNT I(4) 4 40 1 1024 COM IDAT I(4) 4 8 1 3 COM IDN I(4) 4 36 scalar COM IDSP I(4) 4 4136 1 1024 COM IDTAD I(4) 4 68 scalar COM IHRST I(4) 4 20 scalar COM IOUT I(4) 4 44 scalar COM Page 5 Source Listing CLMAX 2025-03-12 18:23 Symbol Table CLMAX.f Name Type Bytes Offset Dimen Elements Attributes References IUP I(4) 4 32 scalar COM JEND I(4) 4 12 scalar COM 84,95,140 JEND_2U I(4) 4 8236 scalar COM JEND_M I(4) 4 20 scalar COM JEND_M2 I(4) 4 28 scalar COM JSTA I(4) 4 8 scalar COM 84,95,140 JSTA_2L I(4) 4 8232 scalar COM JSTA_M I(4) 4 16 scalar COM JSTA_M2 I(4) 4 24 scalar COM LIST I(4) 4 40 scalar COM ME I(4) 4 4 scalar COM NBC I(4) 4 36 scalar COM NBOCO I(4) 4 72 scalar COM NCP I(4) 4 80 scalar COM NDDAMP I(4) 4 60 scalar COM NFCST I(4) 4 32 scalar COM NPHS I(4) 4 84 scalar COM NPREC I(4) 4 64 scalar COM NRADL I(4) 4 92 scalar COM NRADS I(4) 4 88 scalar COM NSHDE I(4) 4 76 scalar COM NTSD I(4) 4 52 scalar COM NTSTM I(4) 4 56 scalar COM NUM_PROCS I(4) 4 0 scalar COM RESTRT R(4) 4 28 scalar COM RUN R(4) 4 4 scalar COM SIGMA R(4) 4 0 scalar COM Page 6 Source Listing CLMAX 2025-03-12 18:23 CLMAX.f 151 Page 7 Source Listing CLMAX 2025-03-12 18:23 Subprograms/Common Blocks CLMAX.f SUBPROGRAMS/COMMON BLOCKS Name Object Declared Type Bytes Dimen Elements Attributes References CLMAX Subr 1 CTLBLK Common 70 96 SAVE PARALLEL Common 77 8240 COMPILER OPTIONS BEING USED -align noall -align nonone -align nocommons -align nodcommons -align noqcommons -align nozcommons -align records -align nosequence -align norec1byte -align norec2byte -align norec4byte -align norec8byte -align norec16byte -align norec32byte -align norec64byte -align noarray8byte -align noarray16byte -align noarray32byte -align noarray64byte -align noarray128byte -align noarray256byte -altparam -assume accuracy_sensitive -assume nobscc -assume nobuffered_io -assume nobuffered_stdout -assume byterecl -assume nocontiguous_assumed_shape -assume nocontiguous_pointer -assume nocc_omp -assume nocstring -assume nodummy_aliases -assume nofpe_summary -assume noieee_fpe_flags -assume nominus0 -assume noold_boz -assume old_complex_align -assume old_unit_star -assume old_inquire_recl -assume old_ldout_format -assume old_ldout_zero -assume noold_logical_assign -assume noold_logical_ldio -assume old_maxminloc -assume old_xor -assume noprotect_allocates -assume protect_constants -assume noprotect_parens -assume split_common -assume source_include -assume nostd_intent_in -assume std_minus0_rounding -assume nostd_mod_proc_name -assume std_value -assume realloc_lhs -assume underscore -assume no2underscores -assume norecursion no -auto -auto_scalar no -bintext -ccdefault default -check noarg_temp_created -check noassume -check nobounds -check nocontiguous -check noformat -check nooutput_conversion -check nooverflow -check nopointers -check noshape -check nostack -check nouninitialized -check noudio_iostat -coarray-num-procs 0 no -coarray-config-file -convert big_endian -cross_reference -D __INTEL_COMPILER=1910 -D __INTEL_COMPILER_UPDATE=3 -D __unix__ -D __unix -D __linux__ -D __linux -D __gnu_linux__ -D unix -D linux -D __ELF__ -D __x86_64 -D __x86_64__ Page 8 Source Listing CLMAX 2025-03-12 18:23 CLMAX.f -D __amd64 -D __amd64__ -D __INTEL_COMPILER_BUILD_DATE=20200925 -D __INTEL_OFFLOAD -D __MMX__ -D __SSE__ -D __SSE_MATH__ -D __SSE2__ -D __SSE2_MATH__ -D __SSE3__ -D __SSSE3__ -D __SSE4_1__ -D __SSE4_2__ -D __POPCNT__ -D __PCLMUL__ -D __AES__ -D __AVX__ -D __F16C__ -D __AVX_I__ -D __RDRND__ -D __FMA__ -D __FP_FAST_FMA -D __FP_FAST_FMAF -D __BMI__ -D __LZCNT__ -D __AVX2__ -D __haswell -D __haswell__ -D __tune_haswell__ -D __core_avx2 -D __core_avx2__ -D __tune_core_avx2__ -D __CRAY_X86_ROME -D __CRAYXT_COMPUTE_LINUX_TARGET -double_size 64 no -d_lines no -Qdyncom -error_limit 30 no -f66 no -f77rtl no -fast -fpscomp nofilesfromcmd -fpscomp nogeneral -fpscomp noioformat -fpscomp noldio_spacing -fpscomp nologicals -fixed no -fpconstant -fpe3 -fprm nearest no -ftz -fp_model noprecise -fp_model fast -fp_model nostrict -fp_model nosource -fp_model nodouble -fp_model noextended -fp_model novery_fast -fp_model noexcept -fp_model nono_except -heap_arrays 0 no -threadprivate_compat -g2 -iface nomixed_str_len_arg -iface nono_mixed_str_len_arg -init noarrays -init nohuge -init noinfinity -init nominus_huge -init nominus_infinity -init nominus_tiny -init nonan -init nosnan -init notiny -init nozero no -intconstant -integer_size 32 no -mixed_str_len_arg no -module -names lowercase no -noinclude no -o -offload-build=host -openmp-simd -O2 no -pad_source -real_size 32 no -recursive -reentrancy threaded -vec=simd -show nofullpath -show noinclude -show map -show options no -syntax_only no -threadcom no -U no -vms -w noall -w nonone -w alignments -w nodeclarations -w noexternals -w general -w noignore_bounds -w noignore_loc -w nointerfaces -w noshape -w notruncated_source -w uncalled -w uninitialized -w nounused -w usage no -wrap-margins Page 9 Source Listing CLMAX 2025-03-12 18:23 CLMAX.f -includepath : /pe/intel/compilers_and_libraries_2020.4.304/linux/pstl/include/,/pe/intel/compilers_and_libraries_2020.4.304/linux/compiler/include/, .f90,./.f90,/opt/cray/pe/mpich/8.1.12/ofi/intel/19.0/include/.f90,/pe/intel/compilers_and_libraries_2020.4.304/linux/ipp/include/.f90, /pe/intel/compilers_and_libraries_2020.4.304/linux/mkl/include/.f90,/pe/intel/compilers_and_libraries_2020.4.304/linux/pstl/include/.f90, /pe/intel/compilers_and_libraries_2020.4.304/linux/pstl/stdlib/.f90,/pe/intel/compilers_and_libraries_2020.4.304/linux/tbb/include/.f90, /pe/intel/compilers_and_libraries_2020.4.304/linux/compiler/include/intel64/.f90,/pe/intel/compilers_and_libraries_2020.4.304/linux/compiler/include/icc/.f90, /pe/intel/compilers_and_libraries_2020.4.304/linux/compiler/include/.f90,/usr/lib64/gcc/x86_64-suse-linux/7/include/.f90, /usr/lib64/gcc/x86_64-suse-linux/7/include-fixed/.f90,/usr/include/.f90,/usr/include/.f90,/usr/include/.f90 -list filename : CLMAX.lst no -o COMPILER: Intel(R) Fortran 19.1-1655