KRC for Exoplanets

From krc
Jump to: navigation, search

A user can define the orbital parameters of any body rotating around any star. PORB generates the rotation matrix accordingly.

Two approaches exist: one most suited for bodies where the orbital parameters are very precisely known (Option 1), and one with more generic orbital parameters (Option 2).

Option 1

Run PORB to create a structure that can be ingested to generate the orbital rotation matrix. The following arguments are needed:

e: Eccentricity (Default=0)
a: Semi-Major Axis in AU (Default=1)
i: Inclination of mean orbit to ecliptic in degrees (Default=0)
node: Longitude of the ascending node in degrees (Default=0)
per: Argument of perihelion in degrees (Default=0)
m: Mean Anomaly at epoch in degrees (Default=0)
rot_per: sideral rotation period in hours (Default=23.9345)
polera: Right Ascension of the pole in degrees (Default=0)
merid: Prime meridian at epoch in degrees (Default=0)
poledec: Declination of the pole in degrees (Default=0)
period: Sideral orbital period in Earth days (Default=365.256)
name: Body name (default ="None")


Then run generic_porb() with these arguments, for example:

tmp = generic_porb(e=0,a=1.,i=1.3,node=100.4,peri=293.9,m=79.6,rot_per=200.,polera=273.8,poledec=0.,merid=7.7, period=4332.5,name="IdealJupiterTrojan")

To run KRC:

OUT = krc(lat=0.,body=tmp)

Note: in this mode, the bodies are airless, unless otherwise specified by the user (set PTOTAL, DUSTA, ARC2_G0, TAU_RAT, TFROST, etc.).


Option 2

Run PORB to create a structure that can be ingested to generate the orbital rotation matrix. The following arguments are needed:

name: Body name (default ="None")
Vismag: Visual Magnitude of host star; used to derive a correction factor for SOLCON. 0 is recommended, and set SOLCON
epoch: Time of periastron as full Julian date ; 2000 Jan 1 noon UTC= 2451545.0
DisEarth: Distance from Earth to host star, in lightyears. 0 is recommended, and set SOLCON
a: Semi-Major Axis in AU (Default=1)
period: Sideral orbital period in Earth days (Default=365.256)
e: Eccentricity (Default=0)
Obliq: Obliquity of planet pole, in degree
Lsperi: Season (Ls) at periastron, in degree
rot_per: sideral rotation period in hours (Default=23.9345)


Then run exo_porb() with these arguments, for example:

tmp = exo_porb(name="Exoplanet_0001",epoch=2451545.00,VisMag=0.,DisEarth=0.,e=0.5,a=1.2,rot_per=365.256,period=23.9345,Obliq=45.,Lsperi=0.)

To run KRC:

OUT = krc(lat=0.,body=tmp,PTOTAL0.,DUSTA=0.,ARC2_G0=0.,TAU_RAT=0.,TFROST=0.,GRAV=0.)

Note: in this mode, the user must provide PTOTAL, DUSTA, ARC2_G0, TAU_RAT, TFROST and GRAV because exoplanets may have an atmosphere. If an atmosphere is present, the user must assign the adequate values to the parameters describing the properties of the atmosphere.

General Comments

These two cases above assumes the Sun as the central star. Any star can be defined by setting SOLCON (solar constant defined as the total stellar irradiance at 1AU in W/m^2. In the solar system, SOLCON ~ 1,361 W/m2.

out = krc(lat=0.,lon=0,INERTIA=20.,ALBEDO=.05,LKofT="F",body=tmp,SOLCON=2722.)

The case above assumes a star outputting twice as much energy as the Sun ("Super Sun"), and the body defined in Option 1.

Exoplanets.png

Example of surface temperatures for airless body around a warm Sun.


Sometimes, a planet may only experience a few days per year. In this case, keep in mind that KRC does not run season-dependent diurnal properties. In other words, KRC is not best suited to run cases with extremely long days compared to a year, especially if seasons are vey pronounced.

Sometimes, a planet may only experience days that may last more than 1 degree Ls. In this case, it is recommended to calculate N5 (maximum number of "seasons" to run) and JDISK (seasons when KRC output values).

Let's take the example of a planet that experiences 12 days in a year. First, generate the body structure that will be used by porb()

body = exo_porb(name="Exoplanet",epoch=2451545.00,VisMag=0.,DisEarth=0.,e=0.1,a=0.,rot_per=81.676,period=40.838,Lsperi=0.,Obliq=0.)

The number of days in a year P_Rat is given by the ratio of the rotation period (rotation period in hours) to the sideral period (Earth days):

P_Rat = int(40.838/(81.676/24.))

To avoid outputting more than one year, the user my specify N5 and JDISK. Assuming we want KRC to run for two years to model the seasonal wave at depth, and spit out the surface temperature the 3rd year:

JDISK = 2*P_Rat + 1
N5 = 3*P_Rat
OUT = krc(N5=N5,JDISK=JDISK,body=body,SOLCON=120.,ALBEDO=0.2,lat=0.,INERTIA=12.,PTOTAL=0.,DUSTA=0.,GRAV=0.,TAURAT=0.,ARC2_G0=0.,N1=30,lbound=0.,LKofT="F",N24=N24)

Here the output structure contains P_Rat = 12 days, occurring at OUT.ls = 0.10, 30.10, 60.10, 90.10, 120.10, 150.10, 180.10, 210.10, 240.10, 270.10, 300.10, 330.10

If N sols are desired for the sake out homogeneity when comparing with other bodies, one solution is to resample the ls axis with a pre-defined ls array. For example we want a seasonal sampling defined by DELLS = 10 degrees

Ls_array = create(1,1,int(360./DELLS),start=DELLS/2.,step=DELLS,format=float)
Temp = resample(cat(KRC.tsurf[,,],KRC.tsurf[,,1],axis=z),cat(KRC.ls,2*KRC.ls[1,1,dim(KRC.tsurf)[3]]-KRC.ls[1,1,dim(KRC.tsurf)[3]-1],axis=z),Ls_array).data

...and now the temperature array contains diurnal temperature curves 36 times in a year.

Note 1: here we cat() the first temperature (and ls) at the end of the arrays in order to sample close to ls = 360;

Note 2: the resampling is nothing more than a resampling of existing data. Use with caution! This approach does not create new information.

Personal tools