one-dimensional(1D) hydrodynamic(HD) simulation: formation of solar prominences

In this passage, I will introduce how to use AMRVAC to do a 1D HD simulation.

First, I will give some background information of the physics behind the simulation.

Solar prominences are cool and dense plasma suspending in the solar corona. Like the picture here.

They are usually 100 times cooler and 100 times denser than the surronding environment.

Then, a straightforward question is, why such a heavy thing could float in the corona?

You might say that, well, it is similar with clouds floating in the air.

But actually it is different.

Although clouds are composed of water, their density is close to the air, only a bit heavier. So that most of the clouds are actually going down with a very low speed.

However, for solar pormineces, they are really heavy, 100 times denser. Why they can still float in the corona?

Nowadays, it is believed that, solar prominence are supported by the Lorentz force. On the earth, magnetic field is weak. We cannot feel the effect of Lorentz forece. But on the sun, magnetic field is so stronge that the plasma could be supported by the Lorentz force. Especially on the solar corona, everything is dominated by the magnetic field, and the plasma is trapped inside the magnetic field. Suppose I have a magnetic line, like shown in the figure below. Then, plasma can only move along such a magnetic line.

Then, it is easy to image that, if the magnetic field line has a upward dip, it is possible to support the heavy plasma, e.g., solar prominence.

However, here comes another question. Why is the prominence come from?

Well, you must know that the cloud on the earth is formed by sort of evaporation and condensation. While for the prominence, though we have many mechanisms to explain that, one of the most popular mechanism is call `evaporation and condensation’ model.

As shown in the GIF below. If I have a strong heating (caused by some activities in the lower atmosphere usually in the photosphere or chromosphere), at the footpoints of the magnetic field lines, plasma will be evaporated and then accumulated at the top of the magnetic field line. Here, condensation might happen because of a physical process called `thermal instabiliy’. So that we can see the formation of a cool and dense solar prominence.

Then, what is `thermal instabiliy’ ?

Well, briefly, plasma will alway loose their energy, all the time everywhere. But note that we have a global heating in the corona (so that corona is always hotter than chromosphere), they can usually make a balance between the loss and the gain of the energy.

However, plasma at different temperature will lose their enery with different speeds. See the figure below. The dashed (or solid) curve, called cooling curve, describes how much energy plasma at a certain temperature will lose per second.

Solar corona is usually at a temperature of 1 MK, e.g., 10^6 K. Then, suppose that plasma at 1 MK is suffered from some perturbation, and its temperature dropps to 0.99 MK. From the curve, you can see that it will lose more energy, while at the same time, the energy it gains from the global heating is not changed. So the balance is broken. It will lose more and more energy and become cooler and cooler. Such a catastrophic process is the `thermal instabiliy’.

In AMRVAC, we have a test code for the formation of solar prominece.

Note that, everything happens in a 1D rigid tube, and plasma now could be understand as normal fluid, a 1D hydrodynamic simulation is enough to simulate such a physcial process.

This code works in two stages.

First step, the code start from an hydrostatic equilibrium state, we only have a background global heating. We relax it to a thermal dynamic equilibrium state. This stage is from t=0 to t=200.

Second step, after we get an equilibrium tube, we start to add the strong heating at footpoint so that evaporation could happen. This stage is from t=200 to `time_max’ you input to the code (see below).

In the folder amrvac/tests/hd/prominence_formation_1D, you can find the mod_usr.t file and amrvac.par.

Move them to your own folder, complie it. Then, everything you need to do is in the amrvac.par file.

You can now run the code directly with the commend `mpirun -np 2 amrvac’ (here -np 2 means using 2 cpus, 2 or 4 is recommended for these test code). But before that, I recommend to change two lines in the amrvac.par file: time_max and refine_max_level. Time_max = 400 is enough for most cases. Refine_max_level = 3 is already good enough, setting it to 4~6 would have a better result but will spend much more time.

Save an exit the .par file and run the code.

With my ten-years-ago ancient mechaine, it is finished in 10 minutes. I guess it would be faster in your Macbook or desktops.Now you can check the result with ParaView, OK and Apply (on the left side).

Use the `plot over line’ tool, Apply.

And then, on your left side, you can see all the avaliable variables. Here we choose `Te’, means temperature in the unit of 1 MK. (rho is number density in the unit of 10^9 / cm^3, p is pressure with the unit of 0.317 erg / cm^3, and v1 is velocity with the unit of 116.45 km/s.). Untick other variables.

Then, on the right side, you can see the initial temperature distribution.

Find the time box on the top of the tool. Change it to 40. Since in the code, we save our snapshots every 5 time unit (controlled by the parameter dtsave_dat = 5.d0), the 40th snapshot should be t=40*5=200, e.g., the end of our first stage.

This is what temperature profile looks like at t=200, a nice curve.

With continous heating, you will find the temperature changes dramatically. And at the 52nd snapshot, you can already see that the temperature at the center drop down to 0.01, or 10^4 K. We have successfully got the prominence.

Note that, by default, we use the cooling curve called `JCcorona’.

In the amrvac.par file, you can find it.

Well, it is a good curve and has been used in many simulation works. But there are many other cooling curves calculated from different assumptions. In AMRVAC, you can set the coolcruve parameter to Hildner, FM, RP, DM, MB, MLsolar1, cloudy_solar, SPEX, SPEX_DM. You can find them in amrvac/src/physics/mod_radiative_cooling.t file.

The above mentioned curves are all calculated based on solar metallicity. But the results could be different. For example, we see the formation of prominence at the 51st snapshot (or 51*5=255 time unit) with the default JCcoroan curve, but using other curves might give you different results.

You can also quantify some other phsycial quantities and include them in your results. For example, with cooling curve A, the formation happens at t1=280, after 100 time unit, e.g., t2=380, the prominence has a denisity of xx, temperature of yy, the length of the promince is zz. But for cooling curve B, the formation happens at t1’=310, the, at t2’=410, you can measure its density xx’, temperature yy’ and the length zz’. They should also be different from curve to curve.

P.S. You can set the parameter `dtsave_dat’ smaller to have more output snapshots.

P.S.2 ParaView is convenient, but Python can do more things. If you are familiar with Python, you can check the following links to see the Python tools in AMRVAC.

http://amrvac.org/md_doc_python_datfiles.html

http://amrvac.org/md_doc_python_vtkfiles.html

Good luck ~