:py:mod:`exo_k.two_stream.two_stream_crisp` =========================================== .. py:module:: exo_k.two_stream.two_stream_crisp .. autoapi-nested-parse:: Created in Jan 2021 @author: jeremy leconte Module Contents --------------- .. py:data:: jit :value: False .. py:function:: solve_2stream_nu_xsec(source_nu, dtau_nu, omega0_nu, g_asym_nu, flux_top_dw_nu, mu0=2.0 / 3.0, alb_surf=0.0, verbose=False, flux_at_level=False) Deals with the spectral axis .. py:function:: solve_2stream_nu_corrk(source_nu, dtau_nu, omega0_nu, g_asym_nu, flux_top_dw_nu, mu0=2.0 / 3.0, alb_surf=0.0, verbose=False, flux_at_level=False) Deals with the spectral axis .. py:function:: solve_2stream(source, dtau, omega0, g_asym, mu0=2.0 / 3.0, flux_top_dw=0.0, alb_surf=0.0, verbose=False) Inherited from ExoRem (Blain et al. 2020): https://gitlab.obspm.fr/dblain/exorem/-/blob/master/src/fortran/exorem/radiative_transfer.f90 PURPOSE: THIS subroutine COMPUTES THE UPWARD, DOWNWARD AND NET THERMAL FLUX IN AN INHOMOGENEOUS ABSORBING, SCATTERING ATMOSPHERE. THE TWO_STREAM APPROXIMATION (QUADRATURE WITH COS OF AVERAGE ANGLE = mu0) IS USED TO FIND THE DIFFUSE REFLECTIVITY AND TRANSMISSIVITY AND THE TOTAL UPWARD AND DOWNWARD FLUXES FOR EACH OF THE NLAY HOMOGENEOUS LAYERS. THE ADDING METHOD IS then USED TO COMBINE THESE LAYERS. IF ANY LAYER IS THICKER THAN DTAU = *EMAX1*, IT IS ASSUMED TO BE SEMI-INFINITE. LAYERS THICKER THAN DTAU = *EMAX2*, ARE TREATED AS INFINITE LAYERS. NOTE: TO ACCOUNT FOR A DIFFUSE FLUX AT THE TOP OF THE ATMOS- PHERE, THE USER MUST SET flux_dw(1) EQUAL TO THAT VALUE. FOR NO DOWNWARD DIFFUSE FLUX AT THE TOP OF THE ATMOSPHERE, THE USER MUST INITIALIZE flux_dw(1) TO ZERO IN THE CALLING PROGRAM. :param source: PLANCK function AT EACH LEVEL FROM TOP OF THE ATMOSPHERE (L=0) TO THE SURFACE (L=NLAY) (NLAY+1 VALUES) JL: actually seems to be pi times the planck function as defined in the rest of the code. :type source: :class:`array`, :class:`np.ndarray` :param dtau: ARRAY OF NORMAL INCIDENCE OPTICAL DEPTHS IN EACH HOMOGENEOUS MODEL LAYER. (NLAY VALUES) :type dtau: :class:`array`, :class:`np.ndarray` :param omega0: ARRAY OF SINGLE SCATTERING ALBEDOS FOR EACH HOMO- GENEOUS MODEL LAYER. (NLAY VALUES) :type omega0: :class:`array`, :class:`np.ndarray` :param g_asym: ARRAY OF ASSYMETRY parameterS FOR EACH HOMOGENEOUS MODEL LAYER. (NLAY VALUES) :type g_asym: :class:`array`, :class:`np.ndarray` :returns: flux_up: array, np.ndarray UPWARD FLUX AT NLAY+1 LAYER BOUNDARIES. (flux_up(L) REFERS TO THE UPWARD FLUX AT THE TOP OF LAYER L) flux_dw: array, np.ndarray DOWNWARD FLUX AT NLAY+1 LAYER BOUNDARIES. (flux_dw(L) REFERS TO THE DOWNWARD FLUX AT THE BOTTOM OF LAYER L-1) flux_up-flux_dw: array, np.ndarray Net flux at the same levels :param mu0: Cos of quadrature angle (Original mu0 was 2/3.) :type mu0: :class:`float` :param flux_top_dw: Diffuse downward flux at upper interface. :type flux_top_dw: :class:`float` .. py:function:: _DEDIR1(BATM1, BATM2, AIR, GIR, TAU, mu0) CCCCCCCCCCCCCCCCCCCCCCCCCCC D E D I R 1 CCCCCCCCCCCCCCCCCCCCCCCCCCCCC C CC C PURPOSE : CC C CC C THIS subroutine USES THE TWO-STREAM ROUTINE (QUADRATURE WITH CC C COS OF AVERAGE ANGLE = mu0) TO FIND THE UPWARD AND DOWNWARD CC C THERMAL FLUXES EMITTED FROM A HOMOGENEOUS LAYER. CC C CC C AUTHORS: DAVID PAIGE AND DAVID CRISP CC C CC C INPUT: CC C CC C BTATM1 IS ATMOSPHERIC EMISSION at level L (ARBITRARY UNITS) CC C BTATM2 IS ATMOSPHERIC EMISSION at level L+1 (ARBITRARY UNITS) CC C AIR IS IR SINGLE SCATTERING ALBEDO CC C GIR IS IR ASYMMETRY parameter CC C TAU IS OPTICAL DEPTH (EXTINCTION = ABSORPTION + SCATTERING) CC C CC C OUTPUT : CC C CC C FUPTOP IS UPWARD FLUX AT TOP OF ATM (SAME UNITS AS BTATM1 or 2) CC C FDNBOT IS DOWNWARD FLUX AT SURFACE CC C FUPBOT IS UPWARD FLUX AT SURFACE CC C CC CCCCCCCCCCCCCCCCCCCCCCCCCCC D E D I R 1 CCCCCCCCCCCCCCCCCCCCCCCCCCCCC