BA Elias Saarmann: Difference between revisions
No edit summary |
(+Reference-System) |
||
| Line 87: | Line 87: | ||
(While the zero gradient conditions do not match theoretical curves they should still be appropriate as the will only lead to local <s>devastation</s>deviations near the respective boundary.) | (While the zero gradient conditions do not match theoretical curves they should still be appropriate as the will only lead to local <s>devastation</s>deviations near the respective boundary.) | ||
= das ''Reference-System'' = | |||
<small>(Lothar)</small> | |||
Die Definitionen von <code>UNIT_DENSITY</code>, <code>UNIT_LENGTH</code> und <code>UNIT_VELOCITY</code> in user_defined_parameters.h legen die Umrechungsfaktoren von g/cm³, cm und cm/s in ein vom User gewähltes Einheitensystem (den "Code-Einheiten") fest. Daraus lassen sich dann die Umrechungsfaktoren auch für alle anderen Größen definieren, was durch den Aufruf <code>InitializeReferenceSystem();</code> in init.c durchgeführt wird. Der Umrechnungsfaktor heißt dann immer <code>Reference...</code>. Daher ist es eine Standard-Aktion, einen User-Parameter aus pluto.ini zu nehmen (<code>g_inputParam[</code>...<code>]</code>) und ihn meist sofort durch das entsprechende <code>Reference...</code> zu dividieren, um ihn in Code-Einheiten zu haben. | |||
Die <code>ReferenceTemperature</code> fällt ein bisschen raus, da sie auf 1 fixiert ist, unabhängig von obigen drei Basisgrößen. Die Code-Einheit für die Temperatur ist also stets Kelvin und die Division durch die <code>ReferenceTemperature</code> wird nur "der Konsistenz halber" gemacht. | |||
= Code-Anpassungen...= | = Code-Anpassungen...= | ||
Revision as of 18:10, 14 July 2026
Literature
Bondary Conditions
in Radiating Bondi Flows I
For the outer boundry conditions \(r \rightarrow \infty\) \[ (\tilde{\rho},\mathcal{M}, s, \tilde{L}, \tilde{E}_\text{r}) \rightarrow (1, 0, s_\infty, \tilde{L}_\infty, 1) \]
With dimensionless density \( \tilde{\rho} = \frac{\rho(r)}{\rho_\infty}\), Mach number \(\mathcal{M} = \frac{v(r)}{c_s(r)}\), dimensionless entropy \( s = \frac{S}{c_\text{V}}\) and dimensionless radiation Energy density \(\tilde{E}_\text{r} = \frac{E_\text{r}}{a_\text{r}T_\infty^4}\).
in PLUTO/belt
General independent paramters:
- Density at infinity \(\rho_\infty\)
- Temperature at infinity \(T_\infty\)
- Constant opacity \(\kappa\)
- Adiabatic constant \(\gamma\)
- Central mass \(M\)
- molecular Mass of gas molecules \(m_\text{molec}\)
Useful dependent parameters:
- Sound velocity:
\[c_\text{s} = \sqrt{\frac{T \gamma k_\text{B}}{m_\text{molec}}}\]
- Bondi Radius:
\[r_\text{B} = \frac{GM}{2c_{\text{s},\infty}^2} = \frac{GM m_\text{molec}}{2T\gamma k_\text{B}}\]
Parameters for belt:
- Central Mass:
\[M = M_\odot\]
- Optical density:
\[\kappa = \]
- Adiabatic constant/degrees of freedom
\[\gamma = \frac{7}{5} \rightarrow \text{degrees of freedom} = 5\]
- inner radius:
\[r_\text{s} = 10^{-2} r_B\]
- outer radius:
\[r_\text{s} = 10^{-2} r_B\]
- molecular mass:
\[m_\text{molec} = \]
Boundary conditions for fields in belt...
...at outer radius \(r_\text{o}\):
\[ p(r_\text{o}) = \frac{\rho_\infty k_\text{b} T_\infty}{m_\text{molec}}\]
\[ \rho (r_\text{o}) = \rho_\infty\]
\[\partial_r v(r_\text{o}) = 0\]
\[E_\text{r}(r_\text{o}) = a_\text{r} T_\infty^4\]
...at inner radius \(r_\text{s}\):
\[\partial_r p(r_\text{s}) = 0\]
\[\partial_r \rho (r_\text{s}) = 0\]
\[\partial_r v(r_\text{s}) = 0\]
\[\partial_r E_\text{r}(r_\text{s}) = 0\]
(While the zero gradient conditions do not match theoretical curves they should still be appropriate as the will only lead to local devastationdeviations near the respective boundary.)
das Reference-System
(Lothar)
Die Definitionen von UNIT_DENSITY, UNIT_LENGTH und UNIT_VELOCITY in user_defined_parameters.h legen die Umrechungsfaktoren von g/cm³, cm und cm/s in ein vom User gewähltes Einheitensystem (den "Code-Einheiten") fest. Daraus lassen sich dann die Umrechungsfaktoren auch für alle anderen Größen definieren, was durch den Aufruf InitializeReferenceSystem(); in init.c durchgeführt wird. Der Umrechnungsfaktor heißt dann immer Reference.... Daher ist es eine Standard-Aktion, einen User-Parameter aus pluto.ini zu nehmen (g_inputParam[...]) und ihn meist sofort durch das entsprechende Reference... zu dividieren, um ihn in Code-Einheiten zu haben.
Die ReferenceTemperature fällt ein bisschen raus, da sie auf 1 fixiert ist, unabhängig von obigen drei Basisgrößen. Die Code-Einheit für die Temperatur ist also stets Kelvin und die Division durch die ReferenceTemperature wird nur "der Konsistenz halber" gemacht.
Code-Anpassungen...
(Lothar)
für konstante Zentralmasse
M_centr(o.Ä.) als weiteren Parameter in user_defined_parameters.h definieren und die AnzahlUSER_DEF_PARAMETERSentsprechend erhöhen- den Wert von
M_centrin pluto.ini unter[Parameters]setzen (in Gramm) - body-force.c aus belt/src/Misc in den Run-Folder kopieren und in Zeile 64 die
M_X1_BEGdurch(g_inputParam[M_centr]/ReferenceMass)ersetzen
für Dirichlet-RBn
Abgesehen von reflective zur Nullsetzung der Normalkomponenten von \(\vec v\) und \(\vec B\) bietet PLUTO keine Dirichlet-RBn. Workaround:
- gewünschte Randwerte in
Init()oderInitDomain()in den Geisterzellen (Zellen mitil<IBEGbzw.il>IEND) setzen - Wahl
userdefin pluto.ini, aber inUserDefBoundary()am entsprechenden Rand gar keine Manipulationen vornehmen
aktuelle Probleme
Run wirft Fehler mit folgendem Output im Terminal:
### ... Initialize Profiling ... ### ### prof[ 0]: Main Loop ### prof[ 1]: Magneto-Hydrodynamics / Self-Gravity / Haumea ### prof[ 2]: Self-Gravity / Haumea ### prof[ 3]: Radiation / Makemake ### prof[ 4]: Ionization / Sedna ### prof[ 5]: Stellar Evolution ### prof[ 6]: Dust Evolution ### prof[ 7]: CAK Line Acceleration ### prof[ 8]: I/O ### prof[ 9]: Radiation - Irradiation ### prof[10]: Radiation - FLD ### prof[11]: Radiation - UpdateDustTemperature ! ParamFileGet(): label '10.0 ' was not found [elias-HP-Pavilion-Laptop-15-cw1xxx:21078] *** Process received signal *** [elias-HP-Pavilion-Laptop-15-cw1xxx:21078] Signal: Segmentation fault (11) [elias-HP-Pavilion-Laptop-15-cw1xxx:21078] Signal code: Address not mapped (1) [elias-HP-Pavilion-Laptop-15-cw1xxx:21078] Failing at address: 0xc0 [elias-HP-Pavilion-Laptop-15-cw1xxx:21078] [ 0] /usr/lib/x86_64-linux-gnu/libc.so.6(+0x45cb0) [0x7ae2c8c45cb0] [elias-HP-Pavilion-Laptop-15-cw1xxx:21078] [ 1] /usr/lib/x86_64-linux-gnu/libc.so.6(+0x707c5) [0x7ae2c8c707c5] [elias-HP-Pavilion-Laptop-15-cw1xxx:21078] [ 2] ./belt(+0x1a0ea) [0x5ef72f2440ea] [elias-HP-Pavilion-Laptop-15-cw1xxx:21078] [ 3] ./belt(+0x146aa) [0x5ef72f23e6aa] [elias-HP-Pavilion-Laptop-15-cw1xxx:21078] [ 4] ./belt(+0x1d725) [0x5ef72f247725] [elias-HP-Pavilion-Laptop-15-cw1xxx:21078] [ 5] ./belt(+0xcff9) [0x5ef72f236ff9] [elias-HP-Pavilion-Laptop-15-cw1xxx:21078] [ 6] /usr/lib/x86_64-linux-gnu/libc.so.6(+0x2a601) [0x7ae2c8c2a601] [elias-HP-Pavilion-Laptop-15-cw1xxx:21078] [ 7] /usr/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0x88) [0x7ae2c8c2a718] [elias-HP-Pavilion-Laptop-15-cw1xxx:21078] [ 8] ./belt(+0xe015) [0x5ef72f238015] [elias-HP-Pavilion-Laptop-15-cw1xxx:21078] *** End of error message ***
Was könnte den segmentation fault verursachen?