Page 1 Source Listing CALRH2 2025-03-12 18:23 CALRH2.f 1 SUBROUTINE CALRH2(P1,T1,Q1,ICE1,RH,IM,JM) 2 C$$$ SUBPROGRAM DOCUMENTATION BLOCK 3 C . . . 4 C SUBPROGRAM: CALRH2 COMPUTES RELATIVE HUMIDITY 5 C PRGRMMR: TREADON ORG: W/NP2 DATE: 92-12-22 6 C 7 C ABSTRACT: 8 C THIS ROUTINE COMPUTES RELATIVE HUMIDITY GIVEN PRESSURE, 9 C TEMPERATURE, SPECIFIC HUMIDITY, CLOUD WATER, AND CLOUD 10 C ICE/WATER FLAG. THE CODE IS BASED ON SUBROUTINE GSCOND 11 C IN THE ETA MODEL. AN UPPER AND LOWER BOUND 12 C OF 100 AND 1 PERCENT RELATIVE HUMIDITY IS ENFORCED. WHEN 13 C THESE BOUNDS ARE APPLIED THE PASSED SPECIFIC HUMIDITY 14 C ARRAY IS ADJUSTED AS NECESSARY TO PRODUCE THE SET RELATIVE 15 C HUMIDITY. 16 C . 17 C 18 C PROGRAM HISTORY LOG: 19 C ??-??-?? DENNIS DEAVEN 20 C 92-12-22 RUSS TREADON - MODIFIED AS DESCRIBED ABOVE. 21 C 98-06-08 T BLACK - CONVERSION FROM 1-D TO 2-D 22 C 98-08-18 MIKE BALDWIN - MODIFY TO COMPUTE RH OVER ICE AS IN MODEL 23 C 98-12-16 GEOFF MANIKIN - UNDO RH COMPUTATION OVER ICE 24 C 00-01-04 JIM TUCCILLO - MPI VERSION 25 C 26 C USAGE: CALL CALRH2(P1,T1,Q1,ICE1,RH,IM,JM) 27 C INPUT ARGUMENT LIST: 28 C P1 - PRESSURE (PA) 29 C T1 - TEMPERATURE (K) 30 C Q1 - SPECIFIC HUMIDITY (KG/KG) 31 C ICE1 - CLOUD ICE (KG/KG) 32 C IM,JM - ARRAY DIMENSIONS 33 C 34 C OUTPUT ARGUMENT LIST: 35 C RH - RELATIVE HUMIDITY (DECIMAL FORM) 36 C Q1 - ADJUSTED SPECIFIC HUMIDITY (KG/KG) 37 C 38 C OUTPUT FILES: 39 C NONE 40 C 41 C SUBPROGRAMS CALLED: 42 C UTILITIES: 43 C LIBRARY: 44 C NONE 45 C 46 C ATTRIBUTES: 47 C LANGUAGE: FORTRAN 48 C MACHINE : CRAY C-90 49 C$$$ 50 C 51 INCLUDE "CTLBLK.comm" 52 C 53 C SET PARAMETER. 54 C 69 PARAMETER (A2=17.2693882,A3=273.16,A4=35.86, 70 & PQ0=379.90516) 71 C Page 2 Source Listing CALRH2 2025-03-12 18:23 CALRH2.f 72 C DECLARE VARIABLES. 73 C 74 C REAL QI,QINT,QC,P1(IM,JM),T1(IM,JM),Q1(IM,JM),RH(IM,JM) 75 REAL QC,P1(IM,JM),T1(IM,JM),Q1(IM,JM),RH(IM,JM) 76 C REAL ICE1(IM,JM) 77 C*************************************************************** 78 C** THE CODE WRITTEN TO ADD IN THE ICE COMPUTATION HAS BEEN 79 C** COMMENTED OUT. SIMPLY UNCOMMENT THE SECTIONS BELOW AND 80 C** COMMENT OUT THE 8 LINES USED 17 LINES BELOW THIS ONE 81 C** IF YOU WISH TO ADD THE ICE COMPUTATION BACK. 82 C 83 C START CALRH2. 84 C 85 C DO J=JSTA,JEND 86 C DO I=1,IM 87 C IF (ABS(P1(I,J)).GT.1) THEN 88 C TMT0=T1(I,J)-273.16 89 C TMT15=AMIN1(TMT0,-15.) 90 C AI=0.008855 91 C BI=1. 92 C IF(TMT0.LT.-20.)THEN 93 C AI=0.007225 94 C BI=0.9674 95 C ENDIF 96 C QW=PQ0/P1(I,J) 97 C 1 *EXP(A2*(T1(I,J)-A3)/(T1(I,J)-A4)) 98 C QI=QW*(BI+AI*AMIN1(TMT0,0.)) 99 C QINT=QW*(1.-0.00032*TMT15*(TMT15+15.)) 100 C 101 DO J=JSTA,JEND 102 DO I=1,IM 103 IF (ABS(P1(I,J)).GT.1) THEN 104 QC=PQ0/P1(I,J) 105 1 *EXP(A2*(T1(I,J)-A3)/(T1(I,J)-A4)) 106 C 107 C 108 RH(I,J)=Q1(I,J)/QC 109 110 C IF TEMP IS BELOW -15 C OR IF THERE IS ANY CLOUD ICE 111 C AND TEMP IS BETWEEN -15 AND 0 C, THEN DO RH OVER ICE 112 C 113 C IF(TMT0.LT.-15.)THEN 114 C QC=QI 115 C ELSEIF(TMT0.GE.0.)THEN 116 C QC=QINT 117 C ELSE 118 C IF(ICE1(I,J).GT.0.0) THEN 119 C QC=QI 120 C ELSE 121 C QC=QINT 122 C ENDIF 123 C ENDIF 124 C 125 C RH(I,J)=Q1(I,J)/QC 126 C 127 C BOUNDS CHECK 128 C Page 3 Source Listing CALRH2 2025-03-12 18:23 CALRH2.f 129 IF (RH(I,J).GT.1.0) THEN 130 RH(I,J)=1.0 131 Q1(I,J)=RH(I,J)*QC 132 ENDIF 133 IF (RH(I,J).LT.0.01) THEN 134 RH(I,J)=0.01 135 Q1(I,J)=RH(I,J)*QC 136 ENDIF 137 C 138 ENDIF 139 ENDDO 140 ENDDO 141 142 RETURN 143 END ENTRY POINTS Name calrh2_ SYMBOL CROSS REFERENCE Name Object Declared Type Bytes Dimen Elements Attributes References A2 Param 69 R(4) 4 scalar 105 A3 Param 69 R(4) 4 scalar 105 A4 Param 69 R(4) 4 scalar 105 ABS Func 103 scalar 103 CALRH2 Subr 1 CTLBLK Common 56 96 SAVE EXP Func 105 scalar 105 I Local 102 I(4) 4 scalar 102,103,104,105,108,129,130,131,13 3,134,135 ICE1 Dummy 1 I(4) 4 scalar ARG,INOUT IM Dummy 1 I(4) 4 scalar ARG,INOUT 75,102 J Local 101 I(4) 4 scalar 101,103,104,105,108,129,130,131,13 3,134,135 JM Dummy 1 I(4) 4 scalar ARG,INOUT 75 P1 Dummy 1 R(4) 4 2 0 ARG,INOUT 103,104 PARALLEL Common 63 8240 PQ0 Param 70 R(4) 4 scalar 104 Q1 Dummy 1 R(4) 4 2 0 ARG,INOUT 108,131,135 QC Local 75 R(4) 4 scalar 104,108,131,135 RH Dummy 1 R(4) 4 2 0 ARG,INOUT 108,129,130,131,133,134,135 T1 Dummy 1 R(4) 4 2 0 ARG,INOUT 105 Page 4 Source Listing CALRH2 2025-03-12 18:23 Symbol Table CALRH2.f 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 IUP I(4) 4 32 scalar COM JEND I(4) 4 12 scalar COM 101 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 101 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 5 Source Listing CALRH2 2025-03-12 18:23 Subprograms/Common Blocks CALRH2.f SUBPROGRAMS/COMMON BLOCKS Name Object Declared Type Bytes Dimen Elements Attributes References CALRH2 Subr 1 CTLBLK Common 56 96 SAVE PARALLEL Common 63 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 6 Source Listing CALRH2 2025-03-12 18:23 CALRH2.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 7 Source Listing CALRH2 2025-03-12 18:23 CALRH2.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 : CALRH2.lst no -o COMPILER: Intel(R) Fortran 19.1-1655