BA Elias Saarmann: Difference between revisions

From Arbeitsgruppe Kuiper
Jump to navigation Jump to search
m (→‎aktuelle Probleme: Syntax gelöst)
Line 129: Line 129:
(gelöst)
(gelöst)


* Alle Parameter müssen angegeben werden, auch wenn nicht mittels <code>g_inputParam[]</code>.
* Alle Parameter müssen angegeben werden, auch wenn gar kein zugriff mittels <code>g_inputParam[]</code> erfolgt.
* Die Reihenfolge der Parameter muss der Nummerierung in user_defined_parameters.h folgen.
* Die Reihenfolge der Parameter muss der Nummerierung in user_defined_parameters.h folgen.

Revision as of 16:24, 15 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 Anzahl USER_DEF_PARAMETERS entsprechend erhöhen
  • den Wert von M_centr in 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_BEG durch (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() oder InitDomain() in den Geisterzellen (Zellen mit il<IBEG bzw. il>IEND) setzen
  • Wahl userdef in pluto.ini, aber in UserDefBoundary() am entsprechenden Rand gar keine Manipulationen vornehmen

aktuelle Probleme

auf Elias' Laptop (Ubuntu 26)

mpirun nötig

./belt ohne mpirun bleibt direkt "stecken".

-O2 nötig

./belt ohne -O2 compiliert bleibt nach dem Profiling-Output "stecken" oder bricht mit Fehlermeldung ab.

pluto.ini-Syntax

(gelöst)

  • Alle Parameter müssen angegeben werden, auch wenn gar kein zugriff mittels g_inputParam[] erfolgt.
  • Die Reihenfolge der Parameter muss der Nummerierung in user_defined_parameters.h folgen.