sources_planetheating_mod Module Reference

heating of a planet by a star More...

Data Types

type  sources_planetheating
 

Functions/Subroutines

subroutine initsources (this, Mesh, Physics, Fluxes, config, IO)
 Constructor of the heating module for a planetary atmosphere. More...
 
subroutine setoutput (this, Mesh, config, IO)
 
subroutine infosources (this, Mesh)
 
subroutine updateplanetheating (this, Mesh, Physics, time, pvar)
 Updates the heating for a given time. More...
 
subroutine finalize (this)
 Destructor. More...
 

Variables

character(len=32), parameter source_name = "heating of planetary atmosphere"
 
real, parameter au = 1.49597870691E+11
 

Detailed Description

heating of a planet by a star

Author
Jannes Klee
Tobias Illenseer
Warning
use SI units

Program and data initialization for the heating of a planet with a shallow atmosphere by a star.

Includes:

  • different intensities (distance + luminosity of star)
  • years and seasons (inclination of ecliptic)
  • days

Assumes:

  • optically thin atmosphere for infalling radiation directly at the surface
  • parallel infall of radiation (star not too close)

See subroutine updateplanetheating for detailed prescription.

References: [40]

Function/Subroutine Documentation

◆ finalize()

subroutine sources_planetheating_mod::finalize ( type(sources_planetheating), intent(inout)  this)

Destructor.

Definition at line 345 of file sources_planetheating.f90.

◆ infosources()

subroutine sources_planetheating_mod::infosources ( class(sources_planetheating), intent(in)  this,
class(mesh_base), intent(in)  Mesh 
)
private

Definition at line 221 of file sources_planetheating.f90.

◆ initsources()

subroutine sources_planetheating_mod::initsources ( class(sources_planetheating), intent(inout)  this,
class(mesh_base), intent(in)  Mesh,
class(physics_base), intent(in)  Physics,
class(fluxes_base), intent(in)  Fluxes,
type(dict_typ), pointer  config,
type(dict_typ), pointer  IO 
)

Constructor of the heating module for a planetary atmosphere.

Definition at line 113 of file sources_planetheating.f90.

◆ setoutput()

subroutine sources_planetheating_mod::setoutput ( class(sources_planetheating), intent(inout)  this,
class(mesh_base), intent(in)  Mesh,
type(dict_typ), pointer  config,
type(dict_typ), pointer  IO 
)

Definition at line 204 of file sources_planetheating.f90.

◆ updateplanetheating()

subroutine sources_planetheating_mod::updateplanetheating ( class(sources_planetheating), intent(inout)  this,
class(mesh_base), intent(in)  Mesh,
class(physics_euler), intent(in)  Physics,
real, intent(in)  time,
class(statevector_euler), intent(in)  pvar 
)

Updates the heating for a given time.

Heating is done via

\[ Q_{\mathrm{star}} = \left(1-A\right) Q_{\mathrm{star,AU}} \left( \frac{1 \mathsf{AU}}{r}\right)^2 \sin{\theta'}\cos{\varphi'}, \]

where \( A \) is the Bond albedo, \( Q_{\mathrm{star,AU}} \) is the radiant flux density at \( 1\,\)AU distance from the central star, and \( r\) is the current distance between planet and star. The angles \( \theta' \) and \( \varphi' \) are transformed angles that correspond to the view factor.

In order to derive the new angles you need to use spherical trigonometry. It yields:

\[ \theta' = \arccos{(\cos{\theta}\cos{\theta_0(t)})+\sin{\theta} \sin{\theta_0(t)}\cos{(\varphi-\varphi_0(t))}} \\ \varphi' = \arctan{\left( \frac{\sin \theta \sin{(\varphi - \varphi_0(t))}}{\cos{\theta}\sin{\theta_0(t)}- \sin{\theta}\cos{\theta_0(t)}\cos{(\varphi - \varphi_0(t))}} \right)}. \]

where \( \theta_0 \) is the angle where the sun beam falls vertically onto the planet. The value vor \( \varphi_0 \) just changes were the day begins and can be safely set to zero.

In order to simulate seasons \( \theta_0(t) = \theta_0(0) \cos{2\pi\frac{t}{t_a}} \), with \( t_a \) the time of a year is applied. For days \( \varphi(t) = \varphi_0(0) + 2 \pi f t \) is calculated. Here f is the frequency [ \( s^{-1} \)].

Todo:
It seems that the result does not depend on the current position angle, i.e. the true anomaly. However, this should in general be the case.

Definition at line 289 of file sources_planetheating.f90.

Here is the call graph for this function:

Variable Documentation

◆ au

real, parameter sources_planetheating_mod::au = 1.49597870691E+11
private

Definition at line 84 of file sources_planetheating.f90.

◆ source_name

character(len=32), parameter sources_planetheating_mod::source_name = "heating of planetary atmosphere"
private

Definition at line 83 of file sources_planetheating.f90.