eqtide
Contents
eqtide.c
Subroutines that control the integration of the tidal model. Also includes subroutines that switch between the two models.
- Author
Rory Barnes (RoryBarnes)
- Date
May 29 2014
Functions
-
void ReadTidalQMantle(BODY *body, CONTROL *control, FILES *files, OPTIONS *options, SYSTEM *system, int iFile)
-
void ReadDiscreteRot(BODY *body, CONTROL *control, FILES *files, OPTIONS *options, SYSTEM *system, int iFile)
-
void ReadHaltDblSync(BODY *body, CONTROL *control, FILES *files, OPTIONS *options, SYSTEM *system, int iFile)
-
void ReadFixOrbit(BODY *body, CONTROL *control, FILES *files, OPTIONS *options, SYSTEM *system, int iFile)
-
void ReadForceEqSpin(BODY *body, CONTROL *control, FILES *files, OPTIONS *options, SYSTEM *system, int iFile)
-
void ReadHaltTideLock(BODY *body, CONTROL *control, FILES *files, OPTIONS *options, SYSTEM *system, int iFile)
-
void ReadHaltSyncRot(BODY *body, CONTROL *control, FILES *files, OPTIONS *options, SYSTEM *system, int iFile)
-
void ReadK2(BODY *body, CONTROL *control, FILES *files, OPTIONS *options, SYSTEM *system, int iFile)
-
void ReadTidalRadius(BODY *body, CONTROL *control, FILES *files, OPTIONS *options, SYSTEM *system, int iFile)
-
void ReadK2Ocean(BODY *body, CONTROL *control, FILES *files, OPTIONS *options, SYSTEM *system, int iFile)
-
void ReadK2Env(BODY *body, CONTROL *control, FILES *files, OPTIONS *options, SYSTEM *system, int iFile)
-
void ReadK2Mantle(BODY *body, CONTROL *control, FILES *files, OPTIONS *options, SYSTEM *system, int iFile)
-
void ReadMaxLockDiff(BODY *body, CONTROL *control, FILES *files, OPTIONS *options, SYSTEM *system, int iFile)
-
void ReadSyncEcc(BODY *body, CONTROL *control, FILES *files, OPTIONS *options, SYSTEM *system, int iFile)
-
void ReadTidalQOcean(BODY *body, CONTROL *control, FILES *files, OPTIONS *options, SYSTEM *system, int iFile)
-
void ReadTidalQEnv(BODY *body, CONTROL *control, FILES *files, OPTIONS *options, SYSTEM *system, int iFile)
-
void ReadTidalTau(BODY *body, CONTROL *control, FILES *files, OPTIONS *options, SYSTEM *system, int iFile)
-
void ReadTideModel(BODY *body, CONTROL *control, FILES *files, OPTIONS *options, SYSTEM *system, int iFile)
-
void ReadTidePerts(BODY *body, CONTROL *control, FILES *files, OPTIONS *options, SYSTEM *system, int iFile)
-
void ReadEqtideOceanTides(BODY *body, CONTROL *control, FILES *files, OPTIONS *options, SYSTEM *system, int iFile)
-
void ReadEqtideMantleTides(BODY *body, CONTROL *control, FILES *files, OPTIONS *options, SYSTEM *system, int iFile)
-
void ReadUseTidalRadius(BODY *body, CONTROL *control, FILES *files, OPTIONS *options, SYSTEM *system, int iFile)
-
void ReadEqtideEnvTides(BODY *body, CONTROL *control, FILES *files, OPTIONS *options, SYSTEM *system, int iFile)
-
void InitializeOptionsEqtide(OPTIONS *options, fnReadOption fnRead[])
-
void ReadOptionsEqtide(BODY *body, CONTROL *control, FILES *files, OPTIONS *options, SYSTEM *system, fnReadOption fnRead[], int iBody)
-
void VerifyRotationEqtideWarning(char cName1[], char cName2[], char cFile[], int iLine1, int iLine2, int iVerbose)
-
void VerifyLostEngEqtide(BODY *body, UPDATE *update, CONTROL *control, OPTIONS *options, int iBody)
-
void VerifyRotationEqtide(BODY *body, CONTROL *control, UPDATE *update, OPTIONS *options, char cFile[], int iBody)
-
int fiTideFile(int *iLine, int iNumFiles)
-
void VerifyCTL(BODY *body, CONTROL *control, FILES *files, OPTIONS *options, OUTPUT *output, UPDATE *update, int iBody, int iModule)
-
void VerifyCPL(BODY *body, CONTROL *control, FILES *files, OPTIONS *options, OUTPUT *output, UPDATE *update, int iBody, int iModule)
-
void VerifyPerturbersEqtide(BODY *body, FILES *files, OPTIONS *options, UPDATE *update, int iNumBodies, int iBody)
Verify all arguments to saTidePerturbers. This subroutine will called from each body using module eqtide, but we must make sure that each pair of perturbing bodies points to each other, so we must loop through verify all the bodies at the same time. This means all these lines will be repeated for each tidally evolving body. But, if it’s verified the first time, it should verify every time!
-
void AssignEqtideDerivatives(BODY *body, EVOLVE *evolve, UPDATE *update, fnUpdateVariable ***fnUpdate, int iBody)
-
void NullEqtideDerivatives(BODY *body, EVOLVE *evolve, UPDATE *update, fnUpdateVariable ***fnUpdate, int iBody)
-
void VerifyEqtide(BODY *body, CONTROL *control, FILES *files, OPTIONS *options, OUTPUT *output, SYSTEM *system, UPDATE *update, int iBody, int iModule)
-
void FinalizeUpdateHeccEqtide(BODY *body, UPDATE *update, int *iEqn, int iVar, int iBody, int iFoo)
-
void FinalizeUpdateLostEngEqtide(BODY *body, UPDATE *update, int *iEqn, int iVar, int iBody, int iFoo)
-
void FinalizeUpdateKeccEqtide(BODY *body, UPDATE *update, int *iEqn, int iVar, int iBody, int iFoo)
-
void FinalizeUpdateXoblEqtide(BODY *body, UPDATE *update, int *iEqn, int iVar, int iBody, int iFoo)
-
void FinalizeUpdateYoblEqtide(BODY *body, UPDATE *update, int *iEqn, int iVar, int iBody, int iFoo)
-
void FinalizeUpdateZoblEqtide(BODY *body, UPDATE *update, int *iEqn, int iVar, int iBody, int iFoo)
-
void FinalizeUpdateSemiEqtide(BODY *body, UPDATE *update, int *iEqn, int iVar, int iBody, int iFoo)
-
int HaltDblSync(BODY *body, EVOLVE *evolve, HALT *halt, IO *io, UPDATE *update, fnUpdateVariable ***fnUpdate, int iBody)
-
int HaltTideLock(BODY *body, EVOLVE *evolve, HALT *halt, IO *io, UPDATE *update, fnUpdateVariable ***fnUpdate, int iBody)
-
int HaltSyncRot(BODY *body, EVOLVE *evolve, HALT *halt, IO *io, UPDATE *update, fnUpdateVariable ***fnUpdate, int iBody)
-
void WriteBodyDsemiDtEqtide(BODY *body, CONTROL *control, OUTPUT *output, SYSTEM *system, UNITS *units, UPDATE *update, int iBody, double *dTmp, char cUnit[])
-
void WriteBodyDeccDtEqtide(BODY *body, CONTROL *control, OUTPUT *output, SYSTEM *system, UNITS *units, UPDATE *update, int iBody, double *dTmp, char cUnit[])
-
void WriteLockTime(BODY *body, CONTROL *control, OUTPUT *output, SYSTEM *system, UNITS *units, UPDATE *update, int iBody, double *dTmp, char cUnit[])
-
void WriteTidalRadius(BODY *body, CONTROL *control, OUTPUT *output, SYSTEM *system, UNITS *units, UPDATE *update, int iBody, double *dTmp, char cUnit[])
-
void WriteDOblDtEqtide(BODY *body, CONTROL *control, OUTPUT *output, SYSTEM *system, UNITS *units, UPDATE *update, int iBody, double *dTmp, char cUnit[])
-
void WriteTidalQOcean(BODY *body, CONTROL *control, OUTPUT *output, SYSTEM *system, UNITS *units, UPDATE *update, int iBody, double *dTmp, char cUnit[])
-
void WriteTidalQEnv(BODY *body, CONTROL *control, OUTPUT *output, SYSTEM *system, UNITS *units, UPDATE *update, int iBody, double *dTmp, char cUnit[])
-
void WriteDSemiDtEqtide(BODY *body, CONTROL *control, OUTPUT *output, SYSTEM *system, UNITS *units, UPDATE *update, int iBody, double *dTmp, char cUnit[])
-
void WriteDEccDtEqtide(BODY *body, CONTROL *control, OUTPUT *output, SYSTEM *system, UNITS *units, UPDATE *update, int iBody, double *dTmp, char cUnit[])
-
void WriteDMeanMotionDtEqtide(BODY *body, CONTROL *control, OUTPUT *output, SYSTEM *system, UNITS *units, UPDATE *update, int iBody, double *dTmp, char cUnit[])
-
void WriteDOrbPerDtEqtide(BODY *body, CONTROL *control, OUTPUT *output, SYSTEM *system, UNITS *units, UPDATE *update, int iBody, double *dTmp, char cUnit[])
-
void WriteDRotPerDtEqtide(BODY *body, CONTROL *control, OUTPUT *output, SYSTEM *system, UNITS *units, UPDATE *update, int iBody, double *dTmp, char cUnit[])
-
void WriteDRotRateDtEqtide(BODY *body, CONTROL *control, OUTPUT *output, SYSTEM *system, UNITS *units, UPDATE *update, int iBody, double *dTmp, char cUnit[])
-
void WriteDHeccDtEqtide(BODY *body, CONTROL *control, OUTPUT *output, SYSTEM *system, UNITS *units, UPDATE *update, int iBody, double *dTmp, char cUnit[])
-
void WriteDKeccDtEqtide(BODY *body, CONTROL *control, OUTPUT *output, SYSTEM *system, UNITS *units, UPDATE *update, int iBody, double *dTmp, char cUnit[])
-
void WriteDXoblDtEqtide(BODY *body, CONTROL *control, OUTPUT *output, SYSTEM *system, UNITS *units, UPDATE *update, int iBody, double *dTmp, char cUnit[])
-
void WriteDYoblDtEqtide(BODY *body, CONTROL *control, OUTPUT *output, SYSTEM *system, UNITS *units, UPDATE *update, int iBody, double *dTmp, char cUnit[])
-
void WriteDZoblDtEqtide(BODY *body, CONTROL *control, OUTPUT *output, SYSTEM *system, UNITS *units, UPDATE *update, int iBody, double *dTmp, char cUnit[])
-
void WriteEccTimescaleEqtide(BODY *body, CONTROL *control, OUTPUT *output, SYSTEM *system, UNITS *units, UPDATE *update, int iBody, double *dTmp, char cUnit[])
-
void WriteEqRotPer(BODY *body, CONTROL *control, OUTPUT *output, SYSTEM *system, UNITS *units, UPDATE *update, int iBody, double *dTmp, char cUnit[])
-
void WriteEqRotPerCont(BODY *body, CONTROL *control, OUTPUT *output, SYSTEM *system, UNITS *units, UPDATE *update, int iBody, double *dTmp, char cUnit[])
-
void WriteEqRotPerDiscrete(BODY *body, CONTROL *control, OUTPUT *output, SYSTEM *system, UNITS *units, UPDATE *update, int iBody, double *dTmp, char cUnit[])
-
void WriteEqRotRate(BODY *body, CONTROL *control, OUTPUT *output, SYSTEM *system, UNITS *units, UPDATE *update, int iBody, double *dTmp, char cUnit[])
-
void WriteEqRotRateCont(BODY *body, CONTROL *control, OUTPUT *output, SYSTEM *system, UNITS *units, UPDATE *update, int iBody, double *dTmp, char cUnit[])
-
void WriteEqRotRateDiscrete(BODY *body, CONTROL *control, OUTPUT *output, SYSTEM *system, UNITS *units, UPDATE *update, int iBody, double *dTmp, char cUnit[])
-
void WriteEqTidePower(BODY *body, CONTROL *control, OUTPUT *output, SYSTEM *system, UNITS *units, UPDATE *update, int iBody, double *dTmp, char cUnit[])
-
void WriteGammaOrb(BODY *body, CONTROL *control, OUTPUT *output, SYSTEM *system, UNITS *units, UPDATE *update, int iBody, double *dTmp, char cUnit[])
-
void WriteGammaRot(BODY *body, CONTROL *control, OUTPUT *output, SYSTEM *system, UNITS *units, UPDATE *update, int iBody, double *dTmp, char cUnit[])
-
void WriteK2Ocean(BODY *body, CONTROL *control, OUTPUT *output, SYSTEM *system, UNITS *units, UPDATE *update, int iBody, double *dTmp, char cUnit[])
-
void WriteK2Env(BODY *body, CONTROL *control, OUTPUT *output, SYSTEM *system, UNITS *units, UPDATE *update, int iBody, double *dTmp, char cUnit[])
-
void WriteOblTimescaleEqtide(BODY *body, CONTROL *control, OUTPUT *output, SYSTEM *system, UNITS *units, UPDATE *update, int iBody, double *dTmp, char cUnit[])
-
void WriteRotTimescaleEqtide(BODY *body, CONTROL *control, OUTPUT *output, SYSTEM *system, UNITS *units, UPDATE *update, int iBody, double *dTmp, char cUnit[])
-
void WriteSemiTimescaleEqtide(BODY *body, CONTROL *control, OUTPUT *output, SYSTEM *system, UNITS *units, UPDATE *update, int iBody, double *dTmp, char cUnit[])
-
void WritePowerEqtide(BODY *body, CONTROL *control, OUTPUT *output, SYSTEM *system, UNITS *units, UPDATE *update, int iBody, double *dTmp, char cUnit[])
-
void WriteEnergyFluxEqtide(BODY *body, CONTROL *control, OUTPUT *output, SYSTEM *system, UNITS *units, UPDATE *update, int iBody, double *dTmp, char cUnit[])
-
void WriteTidalTau(BODY *body, CONTROL *control, OUTPUT *output, SYSTEM *system, UNITS *units, UPDATE *update, int iBody, double *dTmp, char cUnit[])
-
void WriteTideLock(BODY *body, CONTROL *control, OUTPUT *output, SYSTEM *system, UNITS *units, UPDATE *update, int iBody, double *dTmp, char cUnit[])
-
void InitializeOutputEqtide(OUTPUT *output, fnWriteOutput fnWrite[])
-
void LogEqtide(BODY *body, CONTROL *control, OUTPUT *output, SYSTEM *system, UPDATE *update, fnWriteOutput fnWrite[], FILE *fp)
-
void LogBodyEqtide(BODY *body, CONTROL *control, OUTPUT *output, SYSTEM *system, UPDATE *update, fnWriteOutput fnWrite[], FILE *fp, int iBody)
-
double fdEqRotRate(BODY *body, int iBody, double dMeanMotion, double dEccSq, int iTideModel, int bDiscreteRot)
-
int fbTidalLock(BODY *body, EVOLVE *evolve, IO *io, int iBody, int iOrbiter, UPDATE *update, fnUpdateVariable ***fnUpdate, SYSTEM *system)
-
double fdDEdTCPLEqtide(BODY *body, SYSTEM *system, int *iaBody)
Lost energy due to tidal heating in the CPL model.
-
double fdDEdTCTLEqtide(BODY *body, SYSTEM *system, int *iaBody)
Lost energy due to tidal heating in the CTL model.
-
void ForceBehaviorEqtide(BODY *body, MODULE *module, EVOLVE *evolve, IO *io, SYSTEM *system, UPDATE *update, fnUpdateVariable ***fnUpdate, int iBody, int iModule)
-
int fiAssignTidalPerturber(BODY *body, int iBody)
Identify and return the index for the perturbing body.
-
double fdGammaRot(double dEccSq, double dPsi, int *epsilon)
-
double fdGammaOrb(double dEccSq, double dPsi, int *epsilon)
-
void fiaCPLEpsilon(double dRotRate, double dMeanMotion, double dObliquity, int *iEpsilon)
-
double fdCPLTidePowerEq(double dTidalZ, double dEccSq, double dMeanMotion, double dObliquity, int bDiscrete)
-
double fdCPLEqRotRateCont(double dMeanMotion, double dEccSq)
-
double fdCPLEqRotRateDiscrete(double dMeanMotion, double dEccSq)
-
double fdCPLEqRotRate(double dEccSq, double dMeanMotion, int bDiscrete)
-
double fdCPLDsemiDt(BODY *body, SYSTEM *system, int *iaBody)
Equations governing semi-major axis derivative from Ferraz-Mello 2008 Combines tidally-locked and not-tidally locked equations
-
double fdCTLBeta(double dEcc)
-
double fdCTLF1(double dEcc)
-
double fdCTLF2(double dEcc)
-
double fdCTLF3(double dEcc)
-
double fdCTLF4(double dEcc)
-
double fdCTLF5(double dEcc)
-
double fdCTLEqRotRate(double dEccSq, double dObliquity, double dMeanMotion)
eqtide.h
Subroutines that control the integration of the tidal model. Also includes subroutines that switch between the two models.
- Author
Rory Barnes (RoryBarnes)
- Date
May 29 2014
Defines
-
CPL
-
CTL
-
DB15
-
OPTSTARTEQTIDE
-
OPTENDEQTIDE
-
OPT_USETIDALRADIUS
-
OPT_TIDALRADIUS
-
OPT_DISCRETEROT
-
OPT_FIXORBIT
-
OPT_FORCEEQSPIN
-
OPT_HALTDBLSYNC
-
OPT_HALTTIDELOCK
-
OPT_HALTSYNCROT
-
OPT_K2
-
OPT_K2OCEAN
-
OPT_K2ENV
-
OPT_MAXLOCKDIFF
-
OPT_SYNCECC
-
OPT_TIDEMODEL
-
OPT_TIDEPERTS
-
OPT_TIDALTAU
-
OPT_TIDALQOCEAN
-
OPT_OCEANTIDES
-
OPT_TIDALQENV
-
OPT_ENVTIDES
-
OUT_ECCA
-
OPT_MANTLETIDES
-
OPT_TIDALQMANTLE
-
OPT_K2MANTLE
-
EQTIDEHALTSYSEND
-
EQTIDEHALTBODYEND
-
OUTSTARTEQTIDE
-
OUT_TIDALRADIUS
-
OUTBODYSTARTEQTIDE
-
OUTENDEQTIDE
-
OUT_DSEMIDTEQTIDE
-
OUT_DECCDTEQTIDE
-
OUT_DMMDTEQTIDE
-
OUT_DORBPERDTEQTIDE
-
OUT_DORBEPSILON
-
OUT_ECCTIMEEQTIDE
-
OUT_SEMITIMEEQTIDE
-
OUT_DHECCDTEQTIDE
-
OUT_DKECCDTEQTIDE
-
OUT_DXOBLDTEQTIDE
-
OUT_DYOBLDTEQTIDE
-
OUT_DZOBLDTEQTIDE
-
OUT_LOCKTIME
-
OUT_BODYDSEMIDTEQTIDE
-
OUT_BODYDECCDTEQTIDE
-
OUT_DOBLDTEQTIDE
-
OUT_DROTPERDTEQTIDE
-
OUT_DROTRATEDTEQTIDE
-
OUT_EQROTRATEEQTIDE
-
OUT_EQROTRATEDISCRETE
-
OUT_EQROTPERDISCRETE
-
OUT_EQROTRATECONT
-
OUT_EQROTPERCONT
-
OUT_EQROTPER
-
OUT_EQROTRATE
-
OUT_EQTIDEPOWER
-
OUT_GAMMAROT
-
OUT_GAMMAORB
-
OUT_K2OCEAN
-
OUT_TIDALQOCEAN
-
OUT_TIDALQENV
-
OUT_TIDALTAU
-
OUT_TIDELOCK
-
OUT_ROTRATETIMEEQTIDE
-
OUT_K2ENV
-
OUT_OBLTIMEEQTIDE
-
OUT_POWEREQTIDE
-
OUT_ENFLUXEQTIDE
-
OUT_BENV
-
OUT_BOCEAN