/home66/gary/public_html/cloudy/c08_branch/source/dynamics.cpp File Reference

#include "cddefines.h"
#include "cddrive.h"
#include "struc.h"
#include "input.h"
#include "colden.h"
#include "radius.h"
#include "thirdparty.h"
#include "hextra.h"
#include "rfield.h"
#include "iterations.h"
#include "trace.h"
#include "conv.h"
#include "timesc.h"
#include "dense.h"
#include "mole.h"
#include "thermal.h"
#include "pressure.h"
#include "phycon.h"
#include "wind.h"
#include "hmi.h"
#include "dynamics.h"

Include dependency graph for dynamics.cpp:

Go to the source code of this file.

Defines

#define DIAG_PRINT   false
#define MAINPRINT   false
#define NTIME   200
#define SUBSONIC   1
#define SUPERSONIC   2
#define STRONGD   4
#define ORIGINAL   5
#define SHOCK   6
#define ANTISHOCK   7
#define ANTISHOCK2   8

Functions

STATIC void DynaNewStep (void)
STATIC void DynaSaveLast (void)
STATIC double timestep_next (void)
double DynaPresChngFactor (void)
void DynaIonize (void)
void DynaStartZone (void)
void DynaEndZone (void)
void DynaEndIter (void)
realnum DynaFlux (double depth)
void DynaZero (void)
void DynaCreateArrays (void)
STATIC void advection_set_detault (bool lgWind)
void ParseDynaTime (char *chCard)
void ParseDynaWind (char *chCard)
void DynaPrtZone (void)
void DynaPunchTimeDep (FILE *ipPnunit, const char *chJob)
void DynaPunch (FILE *ipPnunit, char chJob)

Variables

static int ipUpstream = 0
static int iphUpstream = 0
static int ipyUpstream = 0
static double ** UpstreamIon
static double * UpstreamElem
static double * Upstream_H2_molec
static double * Upstream_CO_molec
static double timestep_init
static double timestep
static double timestep_stop
static double timestep_factor
static double * time_elapsed_time
static double * time_flux_ratio
static double * time_dt
static double * time_dt_scale_factor
bool lgtime_dt_specified
int * lgtime_Recom
static long int nTime_flux
static double Dyn_dr
static double AdvecSpecificEnthalpy
static double Upstream_hden
static realnumOld_histr
static realnumOld_xLyman_depth
static realnumOld_depth
static realnumOld_hiistr
static realnumOld_pressure
static realnumOld_hden
static realnumOld_DenMass
static realnumEnthalpyDensity
static realnumOld_ednstr
static realnumOld_EnthalpyDensity
static realnum ** Old_H2_molec
static realnum ** Old_CO_molec
static realnum *** Old_xIonDense
static realnum ** Old_gas_phase
static long int nOld_zone
static realnum DivergePresInteg


Define Documentation

#define ANTISHOCK   7

Definition at line 216 of file dynamics.cpp.

Referenced by DynaPresChngFactor().

#define ANTISHOCK2   8

Definition at line 217 of file dynamics.cpp.

Referenced by DynaPresChngFactor().

#define DIAG_PRINT   false

Definition at line 53 of file dynamics.cpp.

Referenced by DynaEndZone(), and DynaPresChngFactor().

#define MAINPRINT   false

Definition at line 54 of file dynamics.cpp.

Referenced by DynaIonize().

#define NTIME   200

Definition at line 85 of file dynamics.cpp.

Referenced by ParseDynaTime().

#define ORIGINAL   5

Definition at line 214 of file dynamics.cpp.

Referenced by DynaPresChngFactor().

#define SHOCK   6

Definition at line 215 of file dynamics.cpp.

Referenced by DynaPresChngFactor().

#define STRONGD   4

Definition at line 213 of file dynamics.cpp.

Referenced by DynaPresChngFactor().

#define SUBSONIC   1

Definition at line 210 of file dynamics.cpp.

Referenced by DynaPresChngFactor().

#define SUPERSONIC   2

Definition at line 211 of file dynamics.cpp.

Referenced by DynaPresChngFactor().


Function Documentation

STATIC void advection_set_detault ( bool  lgWind  ) 

Definition at line 1929 of file dynamics.cpp.

References co, conv, DEBUG_ENTRY, dynamics, t_conv::EdenErrorAllowed, t_conv::HeatCoolRelErrorAllowed, t_dynamics::lgAdvection, t_co::lgNoCOMole, t_phycon::lgPhysOK, t_thermal::lgPredNextTe, t_pressure::lgPres_magnetic_ON, t_pressure::lgPres_radiation_ON, t_pressure::lgPres_ram_ON, phycon, pressure, t_conv::PressureErrorAllowed, and thermal.

Referenced by ParseDynaTime(), and ParseDynaWind().

void DynaCreateArrays ( void   ) 

DynaCreateArrays allocate some space needed to save the dynamics structure variables, called from atmdat_readin

Definition at line 1810 of file dynamics.cpp.

References t_dynamics::CO_molec, DEBUG_ENTRY, dynamics, EnthalpyDensity, t_dynamics::H2_molec, ipHYDROGEN, MALLOC, mole, t_mole::num_comole_calc, t_struc::nzlim, Old_CO_molec, Old_DenMass, Old_depth, Old_ednstr, Old_EnthalpyDensity, Old_gas_phase, Old_H2_molec, Old_hden, Old_hiistr, Old_histr, Old_pressure, Old_xIonDense, Old_xLyman_depth, t_dynamics::Rate, t_dynamics::Source, struc, Upstream_CO_molec, Upstream_H2_molec, UpstreamElem, and UpstreamIon.

void DynaEndIter ( void   ) 

routine called at end of iteration when advection is turned on

Definition at line 1256 of file dynamics.cpp.

References t_dynamics::AdvecLengthInit, DEBUG_ENTRY, t_radius::depth, DivergePresInteg, Dyn_dr, dynamics, ioQQQ, t_iterations::iter_malloc, iteration, iterations, t_dynamics::lgStatic, t_dynamics::n_initial_relax, radius, and t_radius::router.

Referenced by IterRestart().

void DynaEndZone ( void   ) 

DynaEndZone called at end of iteration when advection is turned on

Definition at line 1236 of file dynamics.cpp.

References DEBUG_ENTRY, t_radius::depth, DIAG_PRINT, DivergePresInteg, t_radius::drad, DynaFlux(), ioQQQ, radius, wind, and t_wind::windv.

Referenced by ZoneEnd().

Here is the call graph for this function:

realnum DynaFlux ( double  depth  ) 

Definition at line 1704 of file dynamics.cpp.

References DEBUG_ENTRY, dense, dynamics, t_dynamics::FluxCenter, t_dynamics::FluxIndex, t_dynamics::FluxScale, t_dynamics::lgFluxDScale, and t_dense::xMassDensity0.

Referenced by DynaEndZone(), and DynaPresChngFactor().

void DynaIonize ( void   ) 

DynaIonize, called from ionize to evaluate advective terms for current conditions

Definition at line 604 of file dynamics.cpp.

References AdvecSpecificEnthalpy, ASSERT, t_dynamics::CO_molec, t_dynamics::Cool, t_dynamics::dCooldT, DEBUG_ENTRY, dense, t_dynamics::dHeatdT, Dyn_dr, dynamics, EnthalpyDensity, t_phycon::EnthalpyDensity, t_dense::gas_phase, t_dynamics::H2_molec, t_dynamics::Heat, ioQQQ, ipHYDROGEN, iteration, t_dynamics::lgCoolHeat, t_dynamics::lgStatic, LIMELM, MAINPRINT, mole, N_H_MOLEC, t_dynamics::n_initial_relax, t_mole::num_comole_calc, t_struc::nzlim, nzone, phycon, POW2, t_pressure::PresGasCurr, pressure, t_dynamics::Rate, t_dynamics::Source, struc, t_phycon::te, timestep, wind, t_wind::windv, and t_dense::xMassDensity.

STATIC void DynaNewStep ( void   ) 

Definition at line 1533 of file dynamics.cpp.

References ASSERT, BIGFLOAT, t_struc::CO_molec, t_dynamics::convergence_error, DEBUG_ENTRY, t_struc::depth, dynamics, t_dynamics::error_scale1, t_struc::H2_molec, t_struc::hden, ipHYDROGEN, mole, nOld_zone, t_mole::num_comole_calc, t_struc::nzlim, nzone, Old_CO_molec, Old_depth, Old_H2_molec, Old_hden, Old_xIonDense, POW2, SMALLFLOAT, struc, and t_struc::xIonDense.

double DynaPresChngFactor ( void   ) 

DynaPresChngFactor, called from PressureChange to evaluate new density needed for current conditions and wind solution, returns ratio of new to old density, called when wind velocity is negative for D-critical solutions

Todo:
2 this should be setable at run time as per Robin Williams email rshock = 4e16;

Todo:
2 Switch to supersonic when bad enough failure for STRONGD -- need to improve this logic when the p(rho) data is cleaner

Definition at line 219 of file dynamics.cpp.

References ANTISHOCK, ANTISHOCK2, ASSERT, cdEXIT, t_dynamics::chPresMode, DEBUG_ENTRY, dense, t_radius::depth, DIAG_PRINT, DivergePresInteg, DynaFlux(), dynamics, t_dense::gas_phase, ioQQQ, ipHYDROGEN, t_pressure::lgContRadPresOn, t_dynamics::lgSetPresMode, t_pressure::lgSonicPointAbortOK, t_dynamics::lgStatic, t_trace::lgTrace, MAX2, t_trace::nTrConvg, nzone, ORIGINAL, t_pressure::PresGasCurr, t_pressure::PresInteg, t_pressure::PresRamCurr, pressure, PresTotCurrent(), t_pressure::PresTotlCorrect, t_pressure::PresTotlCurr, t_pressure::PresTotlInit, radius, SHOCK, t_dynamics::ShockDepth, t_dynamics::ShockMach, sign(), SMALLFLOAT, STRONGD, SUBSONIC, SUPERSONIC, trace, wind, t_wind::windv, and t_dense::xMassDensity.

Referenced by lgConvPres().

Here is the call graph for this function:

void DynaPrtZone ( void   ) 

DynaPrtZone - called to print zone results

Definition at line 2306 of file dynamics.cpp.

References AdvecSpecificEnthalpy, ASSERT, t_dynamics::Cool, t_thermal::ctot, DEBUG_ENTRY, dense, dynamics, t_phycon::EnergyBinding, t_phycon::EnergyExcitation, t_phycon::EnergyIonization, EnthalpyDensity, t_dense::gas_phase, t_dynamics::Heat, ioQQQ, ipHYDROGEN, t_struc::nzlim, nzone, phycon, POW2, t_pressure::PresGasCurr, pressure, t_timesc::sound_speed_adiabatic, struc, thermal, timesc, wind, t_wind::windv, and t_dense::xMassDensity.

Referenced by PrtZone().

void DynaPunch ( FILE *  ipPnunit,
char  chJob 
)

DynaPunch punch info related to advection

Parameters:
ipPnunit 
chJob 

Definition at line 2442 of file dynamics.cpp.

References AdvecSpecificEnthalpy, t_dynamics::Cool, t_dynamics::dCooldT, DEBUG_ENTRY, dense, t_radius::depth_mid_zone, dynamics, t_phycon::EnthalpyDensity, t_dense::gas_phase, t_dynamics::Heat, t_thermal::htot, ipHYDROGEN, phycon, radius, t_dynamics::Rate, t_dynamics::Source, thermal, and TotalInsanity().

Here is the call graph for this function:

void DynaPunchTimeDep ( FILE *  ipPnunit,
const char *  chJob 
)

DynaPunchTimeDep - punch info about time dependent solution

Parameters:
ipPnunit 
*chJob 

Definition at line 2336 of file dynamics.cpp.

References cdIonFrac(), cdTemp(), colden, t_colden::colden, DEBUG_ENTRY, dense, dynamics, findspecies(), t_dense::gas_phase, ipCOL_HTOT, ipHYDROGEN, rfield, SDIV(), t_rfield::time_continuum_scale, t_dynamics::time_elapsed, timestep, and TotalInsanity().

Here is the call graph for this function:

STATIC void DynaSaveLast ( void   ) 

Definition at line 1653 of file dynamics.cpp.

References ASSERT, t_struc::CO_molec, DEBUG_ENTRY, t_struc::DenMass, dense, t_struc::depth, dynamics, t_struc::ednstr, EnthalpyDensity, t_dense::gas_phase, t_struc::H2_molec, t_struc::hden, t_struc::hiistr, t_struc::histr, ipHYDROGEN, mole, nOld_zone, t_mole::num_comole_calc, t_struc::nzlim, nzone, Old_CO_molec, Old_DenMass, Old_depth, Old_ednstr, Old_EnthalpyDensity, Old_gas_phase, Old_H2_molec, Old_hden, Old_hiistr, Old_histr, Old_pressure, Old_xIonDense, Old_xLyman_depth, t_dynamics::oldFullDepth, t_struc::pressure, struc, t_struc::xIonDense, and t_struc::xLyman_depth.

void DynaStartZone ( void   ) 

DynaStartZone called at start of iteration when advection is turned on

Definition at line 825 of file dynamics.cpp.

References AdvecSpecificEnthalpy, ASSERT, BIGFLOAT, COmole, DEBUG_ENTRY, t_radius::depth, Dyn_dr, hmi, ioQQQ, iphUpstream, ipHYDROGEN, ipUpstream, ipyUpstream, iteration, t_mole::lgElem_in_chemistry, MAX2, mole, molecule::nElem, nOld_zone, t_hmi::nProton, t_mole::num_comole_calc, Old_CO_molec, Old_depth, Old_EnthalpyDensity, Old_H2_molec, Old_hden, Old_xIonDense, radius, SMALLFLOAT, Upstream_CO_molec, Upstream_H2_molec, Upstream_hden, UpstreamElem, and UpstreamIon.

void DynaZero ( void   ) 

DynaZero zero some dynamics variables, called from zero.c

Definition at line 1733 of file dynamics.cpp.

References t_dynamics::AdvecLengthInit, AdvecSpecificEnthalpy, BIGFLOAT, t_dynamics::convergence_tolerance, t_dynamics::Cool, t_dynamics::CoolMax, t_dynamics::dCooldT, DEBUG_ENTRY, t_dynamics::dHeatdT, t_dynamics::discretization_error, DivergePresInteg, t_dynamics::dRad, dynamics, t_dynamics::error_scale2, t_dynamics::FluxCenter, t_dynamics::FluxIndex, t_dynamics::FluxScale, t_dynamics::Heat, t_dynamics::HeatMax, ipH_LIKE, t_dynamics::lgAdvection, t_dynamics::lgCoolHeat, t_dynamics::lgFluxDScale, t_dynamics::lgISO, t_dynamics::lgMETALS, t_dynamics::lgRecom, t_dynamics::lgSetPresMode, t_dynamics::lgStatic, t_dynamics::lgStatic_completed, t_dynamics::n_initial_relax, NISO, nOld_zone, t_dynamics::Rate, t_dynamics::time_elapsed, timestep_factor, and timestep_init.

void ParseDynaTime ( char *  chCard  ) 

ParseDynaTime parse the time command, called from ParseCommands, in dynamics.c

Parameters:
*chCard 

Definition at line 1984 of file dynamics.cpp.

References advection_set_detault(), caps(), cdEXIT, t_dense::chDenseLaw, DEBUG_ENTRY, dense, dynamics, FFmtRead(), INPUT_LINE_LENGTH, input_readarray(), ioQQQ, t_dynamics::lgStatic, lgtime_dt_specified, lgtime_Recom, MALLOC, nMatch(), NoNumb(), NTIME, nTime_flux, time_dt, time_dt_scale_factor, time_elapsed_time, time_flux_ratio, timestep, timestep_init, timestep_stop, wind, t_wind::windv, and t_wind::windv0.

Here is the call graph for this function:

void ParseDynaWind ( char *  chCard  ) 

ParseDynaWind parse the wind command, called from ParseCommands

Parameters:
*chCard 

Todo:
2 Need to include divergence terms in pressure balance if flux index is != 0

Todo:
2 Need to include divergence terms in pressure balance if flux index is != 0

Definition at line 2129 of file dynamics.cpp.

References advection_set_detault(), BIGDOUBLE, cdEXIT, t_dense::chDenseLaw, t_wind::comass, DEBUG_ENTRY, dense, dynamics, FFmtRead(), t_dynamics::FluxCenter, t_dynamics::FluxIndex, t_dynamics::FluxScale, INPUT_LINE_LENGTH, ioQQQ, t_pressure::lgContRadPresOn, t_wind::lgDisk, t_dynamics::lgFluxDScale, t_wind::lgWindOK, nMatch(), NoNumb(), pressure, wind, t_wind::windv, and t_wind::windv0.

Here is the call graph for this function:

STATIC double timestep_next ( void   ) 

Definition at line 145 of file dynamics.cpp.

References cdTemp(), DEBUG_ENTRY, dynamics, ioQQQ, t_dynamics::lgRecom, MAX2, MIN2, SDIV(), timestep, timestep_init, and TotalInsanity().

Here is the call graph for this function:


Variable Documentation

double AdvecSpecificEnthalpy [static]

Definition at line 103 of file dynamics.cpp.

Referenced by DynaIonize(), DynaPrtZone(), DynaPunch(), DynaStartZone(), and DynaZero().

realnum DivergePresInteg [static]

Definition at line 142 of file dynamics.cpp.

Referenced by DynaEndIter(), DynaEndZone(), DynaPresChngFactor(), and DynaZero().

double Dyn_dr [static]

Definition at line 100 of file dynamics.cpp.

Referenced by DynaEndIter(), DynaIonize(), and DynaStartZone().

realnum * EnthalpyDensity [static]

Definition at line 109 of file dynamics.cpp.

Referenced by DynaCreateArrays(), DynaIonize(), DynaPrtZone(), and DynaSaveLast().

int iphUpstream = 0 [static]

Definition at line 39 of file dynamics.cpp.

Referenced by DynaStartZone().

int ipUpstream = 0 [static]

Definition at line 39 of file dynamics.cpp.

Referenced by DynaStartZone().

int ipyUpstream = 0 [static]

Definition at line 39 of file dynamics.cpp.

Referenced by DynaStartZone().

bool lgtime_dt_specified

Definition at line 83 of file dynamics.cpp.

Referenced by ParseDynaTime().

int* lgtime_Recom

Definition at line 84 of file dynamics.cpp.

Referenced by ParseDynaTime().

long int nOld_zone [static]

Definition at line 139 of file dynamics.cpp.

Referenced by DynaNewStep(), DynaSaveLast(), DynaStartZone(), and DynaZero().

long int nTime_flux [static]

Definition at line 88 of file dynamics.cpp.

Referenced by ParseDynaTime().

realnum** Old_CO_molec [static]

Definition at line 130 of file dynamics.cpp.

Referenced by DynaCreateArrays(), DynaNewStep(), DynaSaveLast(), and DynaStartZone().

realnum * Old_DenMass [static]

Definition at line 109 of file dynamics.cpp.

Referenced by DynaCreateArrays(), and DynaSaveLast().

realnum * Old_depth [static]

Definition at line 109 of file dynamics.cpp.

Referenced by DynaCreateArrays(), DynaNewStep(), DynaSaveLast(), and DynaStartZone().

realnum * Old_ednstr [static]

Definition at line 109 of file dynamics.cpp.

Referenced by DynaCreateArrays(), and DynaSaveLast().

realnum * Old_EnthalpyDensity [static]

Definition at line 109 of file dynamics.cpp.

Referenced by DynaCreateArrays(), DynaSaveLast(), and DynaStartZone().

realnum** Old_gas_phase [static]

Definition at line 136 of file dynamics.cpp.

Referenced by DynaCreateArrays(), and DynaSaveLast().

realnum** Old_H2_molec [static]

Definition at line 129 of file dynamics.cpp.

Referenced by DynaCreateArrays(), DynaNewStep(), DynaSaveLast(), and DynaStartZone().

realnum * Old_hden [static]

Definition at line 109 of file dynamics.cpp.

Referenced by DynaCreateArrays(), DynaNewStep(), DynaSaveLast(), and DynaStartZone().

realnum * Old_hiistr [static]

Definition at line 109 of file dynamics.cpp.

Referenced by DynaCreateArrays(), and DynaSaveLast().

realnum* Old_histr [static]

Definition at line 109 of file dynamics.cpp.

Referenced by DynaCreateArrays(), and DynaSaveLast().

realnum * Old_pressure [static]

Definition at line 109 of file dynamics.cpp.

Referenced by DynaCreateArrays(), and DynaSaveLast().

realnum*** Old_xIonDense [static]

Definition at line 133 of file dynamics.cpp.

Referenced by DynaCreateArrays(), DynaNewStep(), DynaSaveLast(), and DynaStartZone().

realnum * Old_xLyman_depth [static]

Definition at line 109 of file dynamics.cpp.

Referenced by DynaCreateArrays(), and DynaSaveLast().

double * time_dt [static]

Definition at line 79 of file dynamics.cpp.

Referenced by ParseDynaTime().

double * time_dt_scale_factor [static]

Definition at line 79 of file dynamics.cpp.

Referenced by ParseDynaTime().

double* time_elapsed_time [static]

Definition at line 79 of file dynamics.cpp.

Referenced by ParseDynaTime().

double * time_flux_ratio [static]

Definition at line 79 of file dynamics.cpp.

Referenced by ParseDynaTime().

double timestep [static]

Definition at line 73 of file dynamics.cpp.

Referenced by DynaIonize(), DynaPunchTimeDep(), ParseDynaTime(), and timestep_next().

double timestep_factor [static]

Definition at line 73 of file dynamics.cpp.

Referenced by DynaZero().

double timestep_init [static]

Definition at line 73 of file dynamics.cpp.

Referenced by DynaZero(), ParseDynaTime(), and timestep_next().

double timestep_stop [static]

Definition at line 73 of file dynamics.cpp.

Referenced by ParseDynaTime().

double* Upstream_CO_molec [static]

Definition at line 66 of file dynamics.cpp.

Referenced by DynaCreateArrays(), and DynaStartZone().

double* Upstream_H2_molec [static]

Definition at line 63 of file dynamics.cpp.

Referenced by DynaCreateArrays(), and DynaStartZone().

double Upstream_hden [static]

Definition at line 106 of file dynamics.cpp.

Referenced by DynaStartZone().

double* UpstreamElem [static]

Definition at line 60 of file dynamics.cpp.

Referenced by DynaCreateArrays(), and DynaStartZone().

double** UpstreamIon [static]

Definition at line 58 of file dynamics.cpp.

Referenced by DynaCreateArrays(), and DynaStartZone().


Generated on Mon Feb 16 12:06:02 2009 for cloudy by  doxygen 1.4.7