AetherModel / Aether

This is the home of the Aether model of the thermosphere and ionosphere
GNU General Public License v3.0
19 stars 29 forks source link

[FEAT] Add high-latitude electrodynamics system #13

Closed aaronjridley closed 3 years ago

aaronjridley commented 3 years ago

Is your feature request related to a problem? Please describe. Add a high-latitude potential and aurora to the model. These will be sub-models, either empirical or file driven.

Describe the solution you'd like In GITM, this is done where you can choose which sub-model you would like to run. You then set the indices and grid and then ask for the potential or aurora. We should use the same framework. If we can get the fortran code to work, then we don't need to do much. If we want to rewrite to C/C++ that is fine. This is not a computational heavy section of the code, so we can clean it up (i.e., update from Fortran into C++) and it will be much nicer.

Describe alternatives you've considered Figure out how to get the fortran code working and call it good. I already have the sub-model as a stand-alone library, so maybe we just use that to begin with?

Additional context Some of the codes (e.g., Weimer) are written in Fortran anyways, so we will have to get those working.

aaronjridley commented 3 years ago

Created electrodynamics branch to deal with this issue.

aaronjridley commented 3 years ago

I sent this to Rutvik:

One of the things that we may want to do as a first step is write a python code (or find one on the web...) that will read in the omniweb data file in the input directory. I am sure that one of these exists somewhere, but even if it doesn't, it should be pretty easy to write one... Then with the omniweb file read in, we can create and electrodynamics file using the Bz and By in the omniweb file.

It would be good if we could just do something like:

./electrodynamics_write -omni=omni_file.txt -dt=60 -out=output.nc

That is probably a good first step along the way. The next thing we would have to do it make an Electrodynamics class in Aether, which would contain a bunch of private variables, such as: time (1d), latitude (1d), magnetic local time (1d), potential (3d - time/2 space), auroral energy flux (3d), auroral average energy (3d). Then, we need to make a bunch of methods, like:

aaronjridley commented 3 years ago

More info:

The next steps would be to create an electrodynamics class and then start working on methods within the class. I should probably make the class and commit it, and then you could start working on the methods. Somethings that we will definitely have to do:

This is probably a good starting place.

aaronjridley commented 3 years ago

This issue is done, with the incorporation of the electrodynamics branch.