Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Inconsistency in temperatures used to calculate column densities in beam heating? #104

Open
jwreep opened this issue Mar 15, 2024 · 4 comments

Comments

@jwreep
Copy link
Member

jwreep commented Mar 15, 2024

The electron temperature is used to determine whether the a cell is below OPTICALLY_THICK_TEMPERATURE when calculating column densities:

HYDRAD/HYDRAD/source/eqns.cpp

Lines 2116 to 2128 in 0fa1f99

#ifdef OPTICALLY_THICK_RADIATION
if( CellProperties.T[ELECTRON] < OPTICALLY_THICK_TEMPERATURE )
{
// Calculate the neutral hydrogen column number density
fHI_c += ( CellProperties.HI * CellProperties.n[HYDROGEN] ) * CellProperties.cell_width;
CellProperties.HI_c = fHI_c;
#ifndef NLTE_CHROMOSPHERE
// Calculate the mass column density
frho_c += CellProperties.rho[1] * CellProperties.cell_width;
CellProperties.rho_c = frho_c;
#endif // NLTE_CHROMOSPHERE
}
#endif // OPTICALLY_THICK_RADIATION

but the LTE chromosphere uses the hydrogen temperature, and even has a comment about using consistent rates:

HYDRAD/HYDRAD/source/eqns.cpp

Lines 1160 to 1178 in 0fa1f99

/////////////////////////////////////////////////////////////////
// Calculate the electron density for the LTE chromosphere //
/////////////////////////////////////////////////////////////////
// NOTE: We can't use the non-equilibrium population here because it's based on a completely different set of rates.
// If you try to use it (or the RadiationModel object to get an equilibrium population) for CellProperties.HI
// then you end up with a completely different value for the neutral hydrogen population at T[HYDROGEN] than
// pHI->GetIonFrac returns and, consequently, a different electron density. The non-equilibrium populations quickly
// evolves to a new equilibrium in the dense lower atmosphere. The different electron density leads to a different
// electron temperature (very different to the hydrogen temperature) in the lower chromosphere, particularly at the
// boundaries which don't get updated except by refinement and quickly propagates into the domain, messing
// everything up quite spectacularly!
// The bottom line is: USE CONSISTENT RATES AND ION POPULATIONS EVERYWHERE
if( CellProperties.T[HYDROGEN] < OPTICALLY_THICK_TEMPERATURE )
CellProperties.HI = pHI->GetIonFrac( log10(CellProperties.T[HYDROGEN]) );
else
CellProperties.HI = 0.0;

Perhaps one could argue that the temperatures should be quickly collisionally equilibrated, but I think we could sidestep any potential issues by changing this line to use the hydrogen temperature:

if( CellProperties.T[ELECTRON] < OPTICALLY_THICK_TEMPERATURE )

Or am I missing something?

@jwreep
Copy link
Member Author

jwreep commented Mar 15, 2024

I'm guess I'm missing that the NLTE chromosphere seems to use the electron temperature to calculate excitation rates, so perhaps we might want to check all of this for consistency.

@sjbradshaw
Copy link
Contributor

sjbradshaw commented Mar 15, 2024 via email

@jwreep
Copy link
Member Author

jwreep commented Mar 15, 2024

I'll do some simple tests. It might be completely unimportant, but it caught my attention this week. I'm looking at implementing some return current heating, so reviewing what is currently in there.

@sjbradshaw
Copy link
Contributor

sjbradshaw commented Mar 15, 2024 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants