57 flux_rad, DDENS, DENS_hyd, CVtot, &
58 lcmesh, elem3D, elem2D, &
59 element3D_operation, &
65 real(rp),
intent(out) :: rhoh(elem3d%np,lcmesh%nea)
66 real(rp),
intent(in) :: flux_rad(elem3d%np,lcmesh%ne,2,2)
67 real(rp),
intent(in) :: ddens(elem3d%np,lcmesh%nea)
68 real(rp),
intent(in) :: dens_hyd(elem3d%np,lcmesh%nea)
69 real(rp),
intent(in) :: cvtot(elem3d%np,lcmesh%nea)
71 real(rp),
intent(out),
optional :: temp_t(elem3d%np,lcmesh%nea,2)
74 real(rp) :: fz_lw(elem3d%np)
75 real(rp) :: fz_sw(elem3d%np)
76 real(rp) :: dens(elem3d%np)
81 if (
present(temp_t))
then
88 do ke=lcmesh%NeS, lcmesh%NeE
89 call element3d_operation%Dz( flux_rad(:,ke,i_lw,i_up) - flux_rad(:,ke,i_lw,i_dn), fz_lw )
90 call element3d_operation%Dz( flux_rad(:,ke,i_sw,i_up) - flux_rad(:,ke,i_sw,i_dn), fz_sw )
92 rhoh(:,ke) = - lcmesh%Escale(:,ke,3,3) * ( fz_lw(:) + fz_sw(:) )
94 if ( cal_temp_t )
then
95 dens(:) = dens_hyd(:,ke) + ddens(:,ke)
96 temp_t(:,ke,1) = - lcmesh%Escale(:,ke,3,3) * fz_lw(:) / ( dens(:) * cvtot(:,ke) )
97 temp_t(:,ke,2) = - lcmesh%Escale(:,ke,3,3) * fz_sw(:) / ( dens(:) * cvtot(:,ke) )
subroutine, public atm_phy_rd_dgm_calc_heating(rhoh, flux_rad, ddens, dens_hyd, cvtot, lcmesh, elem3d, elem2d, element3d_operation, temp_t)