5 # define mut(...) (c1f(k)*XXPCTFXX(__VA_ARGS__)+c2f(k))
6 # define XXPCTFXX(...) mut(__VA_ARGS__)
7
8 # define Mut(...) (c1h(k)*XXPCTHXX(__VA_ARGS__)+c2h(k))
9 # define XXPCTHXX(...) Mut(__VA_ARGS__)
35 # define muts(...) (c1f(k)*XXPCTFSXX(__VA_ARGS__)+c2f(k))
36 # define XXPCTFSXX(...) muts(__VA_ARGS__)
37
38 # define Muts(...) (c1h(k)*XXPCTHSXX(__VA_ARGS__)+c2h(k))
39 # define XXPCTHSXX(...) Muts(__VA_ARGS__)
This line 318 should be using the "h" levels, not the "f" levels. The lower case, "muts" and "mut" in line 318, refer to the c1f and c2f coefficients.
314 DO j=j_start, j_end
315 DO k=k_start, k_end
316 DO i=i_start, i_end
317 t_save(i,k,j) = t_2(i,k,j)
318 t_2(i,k,j) = muts(i,j)*t_1(i,k,j)-mut(i,j)*t_2(i,k,j)
319 ENDDO
320 ENDDO
321 ENDDO
The correct line 318 in dyn_em/module_small_step_em.F, subroutine small_step_prep, should be using the "Muts" and "Mut" 1d arrays:
314 DO j=j_start, j_end
315 DO k=k_start, k_end
316 DO i=i_start, i_end
317 t_save(i,k,j) = t_2(i,k,j)
318 t_2(i,k,j) = Muts(i,j)*t_1(i,k,j)-Mut(i,j)*t_2(i,k,j)
319 ENDDO
320 ENDDO
321 ENDDO
This same mod is required for both v3.9 and v3.9.1.1 when using the the hybrid vertical coordinate option.
Look at the following lines in v4. If the identified line above for 3.9 and 3.9.1.1 is incorrect, then these may need to be addressed also.
> git checkout -b v3.9
> grep -n mut module_small_step_em.F | grep -i "t_2("
318: t_2(i,k,j) = muts(i,j)*t_1(i,k,j)-mut(i,j)*t_2(i,k,j)
467: t_2(i,k,j) = (t_2(i,k,j) + t_save(i,k,j)*mut(i,j))/muts(i,j)
476: t_2(i,k,j) = (t_2(i,k,j) + t_save(i,k,j)*mut(i,j))/muts(i,j)
485: t_2(i,k,j) = (t_2(i,k,j) - dts*number_of_small_timesteps*mut(i,j)*h_diabatic(i,k,j) &
> git checkout -b v4.0
> grep -n c1f module_small_step_em.F | grep -i "t_2("
263: t_2(i,k,j) = (c1f(k)*muts(i,j)+c2f(k))*t_1(i,k,j)-(c1f(k)*mut(i,j)+c2f(k))*t_2(i,k,j)
412: t_2(i,k,j) = (t_2(i,k,j) + t_save(i,k,j)*(c1f(k)*mut(i,j)+c2f(k)))/(c1f(k)*muts(i,j)+c2f(k))
421: t_2(i,k,j) = (t_2(i,k,j) - dts*number_of_small_timesteps*(c1f(k)*mut(i,j)+c2f(k))*h_diabatic(i,k,j) &