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

ionmapf units issue #127

Open
ourairquality opened this issue Nov 24, 2024 · 0 comments
Open

ionmapf units issue #127

ourairquality opened this issue Nov 24, 2024 · 0 comments

Comments

@ourairquality
Copy link

Describe the bug

ionmapf() appears to expect the hion argument to be in km, and it is passed a value from mapping_function_layer_height in km, but the calculation in ionmapf() adds hion in km to RE_MEAN in meters which appears wrong, generating the wrong slant factor (a little on the high side). Except for the E_IonoMapFn::KLOBUCHAR path which does not use the hion argument.

With this corrected, was the M-SLM model the model of choice here? The regular mapping function probably generates higher values closer to the possible erroneous values generated using the M-SLM model. Has anyone studied the suitable choice for AU?

In the context of ionosphere maps (INX files) would it be expected that ionmapf() used the base radius defined in the file? These files seem to commonly use the same radius as RE_MEAN, but if these files were computed with a different base radius then would such computations use this base radius in their slant factor mapping functions too, or just for ionppp() which is passed the file base radius? Have not seen their code, so just don't know, but might you.

Fwiw these were some key settings needed to use these files:
inputs: ionosphere: ion_files: [...]
ppp_filter: corr_mode: TOTAL_ELECTRON_CONTENT

But could not see how to change the mapping_function_layer_height in the config file?

Perhaps also add that ionmodel() bakes in its mapping function, where ionmapf() appears to support this as E_IonoMapFn::KLOBUCHAR.

src/cpp/common/ionModels.cpp

double ionmapf(
	const VectorPos&	pos,	///< receiver position in geocentric spherical coordinates
	const AzEl&			azel,	///< satellite azimuth/elevation angle (rad)
	E_IonoMapFn			mapFn,	///< model of mapping function
	double				hion)	///< layer height (km)
...
	double rp = RE_MEAN / (RE_MEAN + hion) * sin(alpha * (PI / 2 - azel.el));

src/cpp/common/constants.hpp
#define RE_MEAN 6371000.0 ///< mean Earth radius (m)
src/cpp/common/acsConfig.hpp
double mapping_function_layer_height = 506.7;

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

1 participant