Page 1 Source Listing CLMAX 2014-12-17 20:47 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 2014-12-17 20:47 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 69 !$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 2014-12-17 20:47 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 2014-12-17 20:47 Symbol Table CLMAX.f SYMBOL CROSS REFERENCE Name Object Declared Type Bytes Dimen Elements Attributes References 220 Label 120 78 ALPHAL Param 51 R(4) 4 scalar 129 ALPHAS Param 51 R(4) 4 scalar 129 AMAX1 Func 128 scalar 128 AMIN1 Func 128 scalar 128 CLMAX Subr 1 CTLBLK Common 2 96 DETA Dummy 2 R(4) 4 1 0 ARG,INOUT 102 DP Local 102 R(4) 4 scalar 102,110,115 DT Scalar 4 R(4) 4 scalar COM EL0 Dummy 3 R(4) 4 2 0 ARG,INOUT 128 EL0M Param 54 R(4) 4 scalar 131 ELMIN Param 54 R(4) 4 scalar 131 EPSQ2 Param 57 R(4) 4 scalar 83,130 FIRST Scalar 3 R(4) 4 scalar COM HGT Dummy 2 R(4) 4 2 0 ARG,INOUT 110 HTM Dummy 2 R(4) 4 3 0 ARG,INOUT 102 I Local 71 I(4) 4 scalar 71,72,73,74,82,83,84,86,102,106,11 0,111,115,116,127,128,129,130 ICNT Scalar 7 I(4) 4 1 1024 COM IDAT Scalar 3 I(4) 4 1 3 COM IDN Scalar 7 I(4) 4 scalar COM IDSP Scalar 7 I(4) 4 1 1024 COM IDTAD Scalar 4 I(4) 4 scalar COM IHRST Scalar 3 I(4) 4 scalar COM IM Dummy 2 I(4) 4 scalar ARG,INOUT 62,63,64,71,82,127 IOUT Scalar 3 I(4) 4 scalar COM IUP Scalar 7 I(4) 4 scalar COM J Local 70 I(4) 4 scalar 70,72,73,74,81,83,84,86,102,106,11 0,111,115,116,126,128,129,130 JEND Scalar 6 I(4) 4 scalar COM 70,81,126 JEND_2U Scalar 8 I(4) 4 scalar COM JEND_M Scalar 7 I(4) 4 scalar COM JEND_M2 Scalar 7 I(4) 4 scalar COM JM Dummy 2 I(4) 4 scalar ARG,INOUT 62,63,64 JSTA Scalar 6 I(4) 4 scalar COM 70,81,126 JSTA_2L Scalar 8 I(4) 4 scalar COM JSTA_M Scalar 7 I(4) 4 scalar COM JSTA_M2 Scalar 7 I(4) 4 scalar COM L Local 78 I(4) 4 scalar 78,83,86,102,110 LIST Scalar 3 I(4) 4 scalar COM LM Dummy 2 I(4) 4 scalar ARG,INOUT 62,78 LMH Dummy 2 I(4) 4 2 0 ARG,INOUT LP1 Dummy 2 I(4) 4 scalar ARG,INOUT 63 ME Scalar 6 I(4) 4 scalar COM NBC Scalar 3 I(4) 4 scalar COM NBOCO Scalar 4 I(4) 4 scalar COM NCP Scalar 4 I(4) 4 scalar COM NDDAMP Scalar 4 I(4) 4 scalar COM NFCST Scalar 3 I(4) 4 scalar COM NPHS Scalar 5 I(4) 4 scalar COM Page 5 Source Listing CLMAX 2014-12-17 20:47 Symbol Table CLMAX.f Name Object Declared Type Bytes Dimen Elements Attributes References NPREC Scalar 4 I(4) 4 scalar COM NRADL Scalar 5 I(4) 4 scalar COM NRADS Scalar 5 I(4) 4 scalar COM NSHDE Scalar 4 I(4) 4 scalar COM NTSD Scalar 4 I(4) 4 scalar COM NTSTM Scalar 4 I(4) 4 scalar COM NUM_PROCS Scalar 6 I(4) 4 scalar COM PARALLEL Common 9 8240 PDSL Dummy 2 R(4) 4 2 0 ARG,INOUT 102 Q2 Dummy 2 R(4) 4 3 0 ARG,INOUT 83,86 RESTRT Scalar 3 R(4) 4 scalar COM RQ2H Dummy 4 R(4) 4 2 0 ARG,INOUT 74,106,116 RQ2L Dummy 4 R(4) 4 2 0 ARG,INOUT 84,86,106,116 RQ2M Local 106 R(4) 4 scalar 106,110,115 RUN Scalar 3 R(4) 4 scalar COM SIGMA Scalar 3 R(4) 4 scalar COM SM Dummy 2 R(4) 4 2 0 ARG,INOUT 129 SQ Dummy 4 R(4) 4 2 0 ARG,INOUT 73,115,130 SQRT Func 86 scalar 86 SQZ Dummy 4 R(4) 4 2 0 ARG,INOUT 72,110,111,129 ZINT Dummy 2 R(4) 4 3 0 ARG,INOUT 110 Page 6 Source Listing CLMAX 2014-12-17 20:47 CLMAX.f 151 Page 7 Source Listing CLMAX 2014-12-17 20:47 Subprograms/Common Blocks CLMAX.f SUBPROGRAMS/COMMON BLOCKS Name Object Declared Type Bytes Dimen Elements Attributes References CLMAX Subr 1 CTLBLK Common 2 96 PARALLEL Common 9 8240 COMPILER OPTIONS BEING USED -align nocommons -align nodcommons -align noqcommons -align records -align nosequence -align norec1byte -align norec2byte -align norec4byte -align norec8byte -align norec16byte -altparam -assume accuracy_sensitive -assume nobscc -assume nobuffered_io -assume byterecl -assume nocc_omp -assume nocstring -assume nodummy_aliases -assume nofpe_summary -assume noieee_fpe_flags -assume nominus0 -assume noold_boz -assume old_unit_star -assume old_ldout_format -assume noold_logical_ldio -assume old_maxminloc -assume old_xor -assume protect_constants -assume noprotect_parens -assume split_common -assume source_include -assume nostd_intent_in -assume nostd_mod_proc_name -assume norealloc_lhs -assume underscore -assume no2underscores no -auto -auto_scalar no -bintext -ccdefault default -check noargs -check noarg_temp_created -check nobounds -check noformat -check nooutput_conversion -check nooverflow -check nopointers -check power -check noshape -check nounderflow -check nouninitialized -coarray-num-procs 0 no -coarray-config-file -convert big_endian -cross_reference -D __INTEL_COMPILER=1210 -D __unix__ -D __unix -D __linux__ -D __linux -D __gnu_linux__ -D unix -D linux -D __ELF__ -D __x86_64 -D __x86_64__ -D _MT -D __INTEL_COMPILER_BUILD_DATE=20120612 -D __i686 -D __i686__ -D __pentiumpro -D __pentiumpro__ -D __pentium4 -D __pentium4__ -D __tune_pentium4__ -D __SSE2__ -D __SSE__ -D __MMX__ -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 Page 8 Source Listing CLMAX 2014-12-17 20:47 CLMAX.f -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 no -intconstant -integer_size 32 no -mixed_str_len_arg no -module -names lowercase no -noinclude -O2 no -pad_source -real_size 32 no -recursive -reentrancy none no -sharable_localsaves -vec=simd -show noinclude -show map -show options no -syntax_only no -threadcom no -U no -vms -w noall -w nonone -w alignments -w noargument_checking -w nodeclarations -w general -w noignore_bounds -w noignore_loc -w nointerfaces -w notruncated_source -w uncalled -w uninitialized -w nounused -w usage -includepath : /gpfs/tp1/usrx/local/intel/composer_xe_2011_sp1.11.339/compiler/include/,.f,./.f,/usrx/local/intel/composerxe/mkl/include/.f, /usrx/local/intel/composerxe/tbb/include/.f,/gpfs/tp1/usrx/local/intel/composer_xe_2011_sp1.11.339/compiler/include/intel64/.f, /gpfs/tp1/usrx/local/intel/composer_xe_2011_sp1.11.339/compiler/include/.f,/usr/local/include/.f,/usr/lib/gcc/x86_64-redhat-linux/4.4.7/include/.f, /usr/include/.f,/usr/include/.f -list filename : CLMAX.lst -o filename : none COMPILER: Intel(R) Fortran 12.1-2100