@jjlmoya/utils-science 1.24.0 → 1.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/package.json +1 -1
  2. package/src/category/index.ts +3 -1
  3. package/src/entries.ts +5 -1
  4. package/src/index.ts +2 -1
  5. package/src/tests/locale_completeness.test.ts +2 -3
  6. package/src/tests/tool_validation.test.ts +2 -2
  7. package/src/tool/lorenz-attractor/i18n/es.ts +12 -4
  8. package/src/tool/lorenz-attractor/lorenz-attractor.css +56 -25
  9. package/src/tool/radioactive-decay/bibliography.astro +15 -0
  10. package/src/tool/radioactive-decay/bibliography.ts +17 -0
  11. package/src/tool/radioactive-decay/component.astro +346 -0
  12. package/src/tool/radioactive-decay/entry.ts +26 -0
  13. package/src/tool/radioactive-decay/i18n/de.ts +78 -0
  14. package/src/tool/radioactive-decay/i18n/en.ts +223 -0
  15. package/src/tool/radioactive-decay/i18n/es.ts +106 -0
  16. package/src/tool/radioactive-decay/i18n/fr.ts +78 -0
  17. package/src/tool/radioactive-decay/i18n/id.ts +66 -0
  18. package/src/tool/radioactive-decay/i18n/it.ts +79 -0
  19. package/src/tool/radioactive-decay/i18n/ja.ts +65 -0
  20. package/src/tool/radioactive-decay/i18n/ko.ts +65 -0
  21. package/src/tool/radioactive-decay/i18n/nl.ts +72 -0
  22. package/src/tool/radioactive-decay/i18n/pl.ts +65 -0
  23. package/src/tool/radioactive-decay/i18n/pt.ts +78 -0
  24. package/src/tool/radioactive-decay/i18n/ru.ts +66 -0
  25. package/src/tool/radioactive-decay/i18n/sv.ts +66 -0
  26. package/src/tool/radioactive-decay/i18n/tr.ts +66 -0
  27. package/src/tool/radioactive-decay/i18n/zh.ts +65 -0
  28. package/src/tool/radioactive-decay/index.ts +12 -0
  29. package/src/tool/radioactive-decay/logic.test.ts +20 -0
  30. package/src/tool/radioactive-decay/logic.ts +120 -0
  31. package/src/tool/radioactive-decay/radioactive-decay-half-life-calculator.css +435 -0
  32. package/src/tool/radioactive-decay/seo.astro +16 -0
  33. package/src/tool/stellar-habitability-zone/bibliography.astro +14 -0
  34. package/src/tool/stellar-habitability-zone/bibliography.ts +12 -0
  35. package/src/tool/stellar-habitability-zone/component.astro +123 -0
  36. package/src/tool/stellar-habitability-zone/dom-updater.ts +94 -0
  37. package/src/tool/stellar-habitability-zone/entry.ts +26 -0
  38. package/src/tool/stellar-habitability-zone/i18n/de.ts +189 -0
  39. package/src/tool/stellar-habitability-zone/i18n/en.ts +189 -0
  40. package/src/tool/stellar-habitability-zone/i18n/es.ts +189 -0
  41. package/src/tool/stellar-habitability-zone/i18n/fr.ts +189 -0
  42. package/src/tool/stellar-habitability-zone/i18n/id.ts +189 -0
  43. package/src/tool/stellar-habitability-zone/i18n/it.ts +189 -0
  44. package/src/tool/stellar-habitability-zone/i18n/ja.ts +189 -0
  45. package/src/tool/stellar-habitability-zone/i18n/ko.ts +189 -0
  46. package/src/tool/stellar-habitability-zone/i18n/nl.ts +189 -0
  47. package/src/tool/stellar-habitability-zone/i18n/pl.ts +189 -0
  48. package/src/tool/stellar-habitability-zone/i18n/pt.ts +189 -0
  49. package/src/tool/stellar-habitability-zone/i18n/ru.ts +189 -0
  50. package/src/tool/stellar-habitability-zone/i18n/sv.ts +189 -0
  51. package/src/tool/stellar-habitability-zone/i18n/tr.ts +189 -0
  52. package/src/tool/stellar-habitability-zone/i18n/zh.ts +189 -0
  53. package/src/tool/stellar-habitability-zone/index.ts +11 -0
  54. package/src/tool/stellar-habitability-zone/interaction.ts +45 -0
  55. package/src/tool/stellar-habitability-zone/logic/StellarHabitabilityEngine.ts +158 -0
  56. package/src/tool/stellar-habitability-zone/renderer.ts +241 -0
  57. package/src/tool/stellar-habitability-zone/script.ts +273 -0
  58. package/src/tool/stellar-habitability-zone/seo.astro +15 -0
  59. package/src/tool/stellar-habitability-zone/stellar-habitability-zone.css +375 -0
  60. package/src/tools.ts +4 -1
@@ -0,0 +1,123 @@
1
+ ---
2
+ import './stellar-habitability-zone.css';
3
+
4
+ interface Props {
5
+ ui: Record<string, string>;
6
+ }
7
+
8
+ const { ui } = Astro.props;
9
+ ---
10
+
11
+ <div class="hz-calculator-root" id="hz-simulator-root">
12
+ <div class="hz-presets-container">
13
+ <div class="hz-presets">
14
+ <button class="hz-preset-btn active" data-type="G">G-Type (Sun-like)</button>
15
+ <button class="hz-preset-btn" data-type="M">M-Type (Red Dwarf)</button>
16
+ <button class="hz-preset-btn" data-type="K">K-Type (Orange Dwarf)</button>
17
+ <button class="hz-preset-btn" data-type="F">F-Type (Procyon-like)</button>
18
+ <button class="hz-preset-btn" data-type="A">A-Type (Sirius-like)</button>
19
+ <button class="hz-preset-btn" data-type="B">B-Type (Blue Giant)</button>
20
+ <button class="hz-preset-btn" data-type="O">O-Type (Blue Hypergiant)</button>
21
+ <div style="flex-grow: 1;"></div>
22
+ <button class="hz-preset-btn" id="hz-unit-toggle" style="opacity: 0.8; border-bottom: none;"></button>
23
+ </div>
24
+ </div>
25
+
26
+ <div class="hz-controls-section">
27
+ <div class="hz-input-group">
28
+ <label for="hz-temperature">{ui.starTemperature}</label>
29
+ <input type="range" id="hz-temperature" class="hz-slider" min="2000" max="50000" value="5778" step="100" />
30
+ <span id="hz-temperature-val" class="hz-input-val">5,778</span>
31
+ </div>
32
+
33
+ <div class="hz-input-group">
34
+ <label for="hz-luminosity">{ui.starLuminosity}</label>
35
+ <input type="range" id="hz-luminosity" class="hz-slider" min="-4" max="6" value="0" step="0.1" />
36
+ <span id="hz-luminosity-val" class="hz-input-val">1.0</span>
37
+ </div>
38
+
39
+ <div class="hz-input-group">
40
+ <label for="hz-mass">{ui.starMass}</label>
41
+ <input type="range" id="hz-mass" class="hz-slider" min="0.05" max="100" value="1.0" step="0.05" />
42
+ <span id="hz-mass-val" class="hz-input-val">1.0</span>
43
+ </div>
44
+
45
+ <div class="hz-input-group">
46
+ <label for="hz-radius">{ui.starRadius}</label>
47
+ <input type="range" id="hz-radius" class="hz-slider" min="0.05" max="30" value="1.0" step="0.05" />
48
+ <span id="hz-radius-val" class="hz-input-val">1.0</span>
49
+ </div>
50
+
51
+ <div class="hz-input-group">
52
+ <label for="hz-distance">{ui.planetDistance}</label>
53
+ <input type="range" id="hz-distance" class="hz-slider" min="-2" max="3" value="0" step="0.01" />
54
+ <span id="hz-distance-val" class="hz-input-val">1.00</span>
55
+ </div>
56
+
57
+ <div class="hz-input-group">
58
+ <label for="hz-albedo">{ui.planetAlbedo}</label>
59
+ <input type="range" id="hz-albedo" class="hz-slider" min="0.00" max="0.95" value="0.30" step="0.01" />
60
+ <span id="hz-albedo-val" class="hz-input-val">0.30</span>
61
+ </div>
62
+
63
+ <div class="hz-input-group">
64
+ <label for="hz-greenhouse">{ui.greenhouseDelta}</label>
65
+ <input type="range" id="hz-greenhouse" class="hz-slider" min="0" max="500" value="33" step="1" />
66
+ <span id="hz-greenhouse-val" class="hz-input-val">33</span>
67
+ </div>
68
+ </div>
69
+
70
+ <div class="hz-viewport-container">
71
+ <canvas id="hz-orbit-canvas"></canvas>
72
+ <div class="hz-canvas-section">
73
+ <h3>{ui.orbitCanvasTitle}</h3>
74
+ <div class="hz-canvas-container" id="hz-canvas-placeholder">
75
+ </div>
76
+ </div>
77
+
78
+ <div class="hz-results-section">
79
+ <div class="hz-result-grid">
80
+ <div class="hz-result-block">
81
+ <span class="hz-result-label">{ui.equilibriumTemperature}</span>
82
+ <span id="hz-eq-temp" class="hz-result-number">---</span>
83
+ </div>
84
+ <div class="hz-result-block">
85
+ <span class="hz-result-label">{ui.estimatedSurfaceTemp || ui.surfTempResult}</span>
86
+ <span id="hz-surf-temp" class="hz-result-number">---</span>
87
+ </div>
88
+ <div class="hz-result-block">
89
+ <span class="hz-result-label">{ui.stellarFluxResult}</span>
90
+ <span id="hz-stellar-flux" class="hz-result-number">---</span>
91
+ </div>
92
+ <div class="hz-result-block">
93
+ <span class="hz-result-label">{ui.orbitPeriodResult}</span>
94
+ <span id="hz-orbit-period" class="hz-result-number">---</span>
95
+ </div>
96
+ <div class="hz-result-block">
97
+ <span class="hz-result-label">{ui.orbitVelocityResult}</span>
98
+ <span id="hz-orbit-velocity" class="hz-result-number">---</span>
99
+ </div>
100
+ <div class="hz-result-block">
101
+ <span class="hz-result-label">{ui.innerLimit}</span>
102
+ <span id="hz-inner-limit" class="hz-result-number">---</span>
103
+ </div>
104
+ <div class="hz-result-block">
105
+ <span class="hz-result-label">{ui.outerLimit}</span>
106
+ <span id="hz-outer-limit" class="hz-result-number">---</span>
107
+ </div>
108
+ </div>
109
+
110
+ <div>
111
+ <div class="hz-status-box habitable" id="hz-status-box">
112
+ <div class="hz-status-title" id="hz-status-title">---</div>
113
+ <div class="hz-status-desc">{ui.statusExplanation}</div>
114
+ </div>
115
+ </div>
116
+ </div>
117
+ </div>
118
+ </div>
119
+
120
+ <script>
121
+ import { initStellarSimulator } from './script';
122
+ initStellarSimulator();
123
+ </script>
@@ -0,0 +1,94 @@
1
+ import type { SimulationResult } from './logic/StellarHabitabilityEngine';
2
+
3
+ export interface UpdateValTextsParams {
4
+ temp: number;
5
+ luminosity: number;
6
+ mass: number;
7
+ radius: number;
8
+ distanceAu: number;
9
+ albedo: number;
10
+ greenhouse: number;
11
+ isImperial: boolean;
12
+ tempVal: HTMLElement | null;
13
+ lumVal: HTMLElement | null;
14
+ massVal: HTMLElement | null;
15
+ radVal: HTMLElement | null;
16
+ distVal: HTMLElement | null;
17
+ albedoVal: HTMLElement | null;
18
+ greenVal: HTMLElement | null;
19
+ }
20
+
21
+ export interface UpdateResultsParams {
22
+ result: SimulationResult;
23
+ isImperial: boolean;
24
+ eqTempResult: HTMLElement | null;
25
+ surfTempResult: HTMLElement | null;
26
+ fluxResult: HTMLElement | null;
27
+ periodResult: HTMLElement | null;
28
+ velocityResult: HTMLElement | null;
29
+ innerResult: HTMLElement | null;
30
+ outerResult: HTMLElement | null;
31
+ }
32
+
33
+ function setText(el: HTMLElement | null, text: string) {
34
+ if (el) {
35
+ el.textContent = text;
36
+ }
37
+ }
38
+
39
+ export function updateSliderFill(slider: HTMLInputElement | null) {
40
+ if (!slider) return;
41
+ const min = parseFloat(slider.min) || 0;
42
+ const max = parseFloat(slider.max) || 100;
43
+ const val = parseFloat(slider.value) || 0;
44
+ const percentage = ((val - min) / (max - min)) * 100;
45
+ slider.style.setProperty('--percent', `${percentage}%`);
46
+ slider.style.background = `linear-gradient(to right, var(--hz-slider-active) 0%, var(--hz-slider-active) ${percentage}%, var(--hz-slider-track) ${percentage}%, var(--hz-slider-track) 100%)`;
47
+ }
48
+
49
+ export function updateValTexts(p: UpdateValTextsParams) {
50
+ setText(p.tempVal, p.temp.toLocaleString());
51
+ setText(p.lumVal, p.luminosity >= 100 || p.luminosity <= 0.01 ? p.luminosity.toExponential(2) : p.luminosity.toFixed(2));
52
+ setText(p.massVal, p.mass.toFixed(2));
53
+ setText(p.radVal, p.radius.toFixed(2));
54
+ const dist = p.isImperial ? `${(p.distanceAu * 92.9558).toFixed(1)} Mmi` : `${p.distanceAu.toFixed(2)} AU`;
55
+ setText(p.distVal, dist);
56
+ setText(p.albedoVal, p.albedo.toFixed(2));
57
+ setText(p.greenVal, p.greenhouse.toString());
58
+ }
59
+
60
+ export function updateResults(p: UpdateResultsParams) {
61
+ const isImp = p.isImperial;
62
+ const res = p.result;
63
+ const eq = isImp
64
+ ? `${Math.round((res.equilibriumTemperature - 273.15) * 1.8 + 32)}°F`
65
+ : `${Math.round(res.equilibriumTemperature - 273.15)}°C (${Math.round(res.equilibriumTemperature)}K)`;
66
+ setText(p.eqTempResult, eq);
67
+
68
+ const surf = isImp
69
+ ? `${Math.round((res.surfaceTemperature - 273.15) * 1.8 + 32)}°F`
70
+ : `${Math.round(res.surfaceTemperature - 273.15)}°C (${Math.round(res.surfaceTemperature)}K)`;
71
+ setText(p.surfTempResult, surf);
72
+
73
+ setText(p.fluxResult, `${res.stellarFlux.toFixed(2)} S⊕`);
74
+
75
+ const period = res.orbitalPeriod >= 365
76
+ ? `${(res.orbitalPeriod / 365.255).toFixed(1)} yr`
77
+ : `${Math.round(res.orbitalPeriod)} d`;
78
+ setText(p.periodResult, period);
79
+
80
+ const vel = isImp
81
+ ? `${Math.round(res.orbitalVelocity * 2236.936).toLocaleString()} mph`
82
+ : `${res.orbitalVelocity.toFixed(1)} km/s`;
83
+ setText(p.velocityResult, vel);
84
+
85
+ const inner = isImp
86
+ ? `${(res.hzLimits.runawayGreenhouse * 92.9558).toFixed(1)} Mmi`
87
+ : `${res.hzLimits.runawayGreenhouse.toFixed(2)} AU`;
88
+ setText(p.innerResult, inner);
89
+
90
+ const outer = isImp
91
+ ? `${(res.hzLimits.maximumGreenhouse * 92.9558).toFixed(1)} Mmi`
92
+ : `${res.hzLimits.maximumGreenhouse.toFixed(2)} AU`;
93
+ setText(p.outerResult, outer);
94
+ }
@@ -0,0 +1,26 @@
1
+ import type { ScienceToolEntry } from '../../types';
2
+
3
+ export const stellarHabitabilityZone: ScienceToolEntry = {
4
+ id: 'stellar-habitability-zone',
5
+ icons: {
6
+ bg: 'mdi:star-circle-outline',
7
+ fg: 'mdi:orbit',
8
+ },
9
+ i18n: {
10
+ de: () => import('./i18n/de').then((m) => m.content),
11
+ en: () => import('./i18n/en').then((m) => m.content),
12
+ es: () => import('./i18n/es').then((m) => m.content),
13
+ fr: () => import('./i18n/fr').then((m) => m.content),
14
+ id: () => import('./i18n/id').then((m) => m.content),
15
+ it: () => import('./i18n/it').then((m) => m.content),
16
+ ja: () => import('./i18n/ja').then((m) => m.content),
17
+ ko: () => import('./i18n/ko').then((m) => m.content),
18
+ nl: () => import('./i18n/nl').then((m) => m.content),
19
+ pl: () => import('./i18n/pl').then((m) => m.content),
20
+ pt: () => import('./i18n/pt').then((m) => m.content),
21
+ ru: () => import('./i18n/ru').then((m) => m.content),
22
+ sv: () => import('./i18n/sv').then((m) => m.content),
23
+ tr: () => import('./i18n/tr').then((m) => m.content),
24
+ zh: () => import('./i18n/zh').then((m) => m.content),
25
+ },
26
+ };
@@ -0,0 +1,189 @@
1
+ import { bibliography } from '../bibliography';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+
4
+ const slug = 'habitable-zonen-simulator';
5
+ const description = 'Berechnen und visualisieren Sie die habitable Zone (Goldlöckchen-Zone) um verschiedene Sterntypen mithilfe von stellaren und planetaren Konfigurationen.';
6
+ const title = 'Habitable Zonen Simulator: Goldlöckchen Zonen finden';
7
+
8
+ const howTo = [
9
+ {
10
+ name: 'Stellaren Pre-Set auswählen',
11
+ text: 'Wählen Sie einen Sterntyp von Blauen Riesen bis hin zu Roten Zwergen aus, um physikalische Standardeigenschaften wie Masse, Leuchtkraft und Temperatur zu laden.',
12
+ },
13
+ {
14
+ name: 'Planetare Parameter anpassen',
15
+ text: 'Verändern Sie die Orbitaldistanz des Planeten (große Halbachse), das Albedo und den Treibhauseffekt der Atmosphäre mithilfe der interaktiven Schieberegler.',
16
+ },
17
+ {
18
+ name: 'Umlaufbahn und Habitabilität analysieren',
19
+ text: 'Beobachten Sie den Planeten in Echtzeit auf seiner Umlaufbahn. Prüfen Sie, ob die Gleichgewichts- und Oberflächentemperaturen flüssiges Wasser zulassen.',
20
+ },
21
+ ];
22
+
23
+ const faq = [
24
+ {
25
+ question: 'Was ist die zirkumstellare habitable Zone?',
26
+ answer: 'Die zirkumstellare habitable Zone (oft auch als Goldlöckchen-Zone bezeichnet) ist der Bereich um einen Stern, in dem die Temperaturen auf der Planetenoberfläche ausreichen, um flüssiges Wasser unter einem bestimmten Atmosphärendruck aufrechtzuerhalten. Sie wird durch konservative und optimistische Grenzen definiert, die auf der Leuchtkraft und der Effektivtemperatur des Sterns basieren.',
27
+ },
28
+ {
29
+ question: 'Wie beeinflusst die Leuchtkraft eines Sterns die habitable Zone?',
30
+ answer: 'Die Leuchtkraft des Sterns bestimmt die Gesamtenergieabgabe des Sterns. Heißere und massereichere Sterne (wie O-, B- oder A-Sterne) sind extrem hell, wodurch ihre habitablen Zonen viel weiter entfernt liegen. Kühlere, weniger massereiche Sterne (wie orangefarbene oder rote Zwerge vom Typ K oder M) weisen eine geringe Leuchtkraft auf, was ihre habitablen Zonen extrem nah an den Stern verschiebt.',
31
+ },
32
+ {
33
+ question: 'Was ist der Unterschied zwischen Gleichgewichts- und Oberflächentemperatur?',
34
+ answer: 'Die Gleichgewichtstemperatur ist die theoretische Temperatur, die ein Planet hätte, wenn man annimmt, dass er sich wie ein Schwarzer Körper verhält, der die Sternstrahlung absorbiert und wieder in den Weltraum abgibt. Die Oberflächentemperatur schließt den Treibhauseffekt der Planetenatmosphäre ein, der Wärme speichert und den Planeten weiter erwärmt.',
35
+ },
36
+ {
37
+ question: 'Warum ist die Albedo für die planetare Habitabilität wichtig?',
38
+ answer: 'Die Albedo ist das Maß für das Reflexionsvermögen der Planetenoberfläche. Eine höhere Albedo (nahe 1.0) bedeutet, dass der Planet mehr des einfallenden Sternenlichts reflektiert, was ihn abkühlt. Eine niedrigere Albedo bedeutet, dass mehr Strahlung absorbiert wird, was die Gesamttemperatur erhöht.',
39
+ },
40
+ ];
41
+
42
+ export const content: ToolLocaleContent = {
43
+ slug,
44
+ title,
45
+ description,
46
+ ui: {
47
+ title: 'Habitable Zonen Simulator',
48
+ starPresetsLabel: 'Spektralklassen-Presets',
49
+ customStarHeader: 'Stellare Parameter',
50
+ starTemperature: 'Effektivtemperatur (K)',
51
+ starLuminosity: 'Leuchtkraft (L/L⊙)',
52
+ starMass: 'Masse (M/M⊙)',
53
+ starRadius: 'Radius (R/R⊙)',
54
+ planetHeader: 'Planetare Parameter',
55
+ planetDistance: 'Orbitaldistanz (AE)',
56
+ planetAlbedo: 'Bond-Albedo',
57
+ greenhouseDelta: 'Treibhauserwärmung (K)',
58
+ resultsHeader: 'Simulationsergebnisse',
59
+ stellarFluxResult: 'Empfangener Strahlungsfluss',
60
+ eqTempResult: 'Gleichgewichtstemperatur',
61
+ surfTempResult: 'Geschätzte Oberflächentemperatur',
62
+ orbitPeriodResult: 'Umlaufzeit',
63
+ orbitVelocityResult: 'Bahngeschwindigkeit',
64
+ hzLimitsHeader: 'Grenzen der habitablen Zone',
65
+ innerLimit: 'Konservative Innengrenze',
66
+ outerLimit: 'Konservative Außengrenze',
67
+ optInnerLimit: 'Optimistische Innengrenze',
68
+ optOuterLimit: 'Optimistische Außengrenze',
69
+ orbitCanvasTitle: 'Interaktiver Orbit-Visualisierer',
70
+ statusLabel: 'Habitabilitätsstatus',
71
+ statusTooHot: 'ZU HEISS (Wasser verdampft)',
72
+ statusHabitable: 'HABITABEL (Flüssiges Wasser möglich)',
73
+ statusTooCold: 'ZU KALT (Wasser gefriert)',
74
+ statusExplanation: 'Basierend auf konservativen Grenzen liegt dieser Planet innerhalb des angegebenen habitablen Zonenstatus.',
75
+ unitsLabel: 'Einheitensystem',
76
+ unitsScientific: 'Wissenschaftlich',
77
+ unitsImperial: 'Imperial',
78
+ },
79
+ seo: [
80
+ {
81
+ type: 'title',
82
+ text: 'ASTROBIOLOGIE: Physik stellarer habitabler Zonen',
83
+ level: 2,
84
+ },
85
+ {
86
+ type: 'paragraph',
87
+ html: 'Die Suche nach Leben außerhalb der Erde beginnt mit dem Verständnis der physikalischen Bedingungen, die für flüssiges Wasser erforderlich sind. Astrobiologen nutzen mathematische Modelle, um die Grenzen habitabler Zonen um verschiedene Sterntypen zu kartieren. Dieser Simulator verwendet die Modelle von Kopparapu et al. (2013), um den von Planeten empfangenen Energiefluss abzuschätzen und festzustellen, ob sie in der Goldlöckchen-Zone liegen. Die habitable Zone ist definiert als die Region, in der ein erdgroßer Planet mit einer CO2-H2O-N2-Atmosphäre flüssiges Wasser auf seiner Oberfläche halten kann.',
88
+ },
89
+ {
90
+ type: 'title',
91
+ text: 'Mathematische Formeln und atmosphärische Physik',
92
+ level: 3,
93
+ },
94
+ {
95
+ type: 'paragraph',
96
+ html: 'Die Grenzen der habitablen Zone werden bestimmt, indem der effektive stellare Strahlungsfluss (Seff) berechnet wird, der erforderlich ist, um einen unkontrollierbaren Treibhauseffekt oder ein Maximum-Treibhaus-Szenario auszulösen. Die Gleichung für Seff hängt von der Effektivtemperatur des Sterns (Teff) ab:<br><br>Seff = SeffSun + a * T* + b * T*^2 + c * T*^3 + d * T*^4<br><br>wobei T* = Teff - 5780 K ist und die Koeffizienten (a, b, c, d) empirisch aus 1D-Strahlungs-Konvektions-Klimamodellen abgeleitet wurden. Nach der Berechnung von Seff ist der Orbitalabstand d in Astronomischen Einheiten (AE) gegeben durch:<br><br>d = sqrt(L / Seff)<br><br>wobei L die Leuchtkraft des Sterns im Verhältnis zur Sonne ist. Die Gleichgewichtstemperatur (Teq) des Planeten wird unter der Annahme berechnet, dass sich der Planet wie ein kugelförmiger Schwarzer Körper im thermischen Gleichgewicht verhält:<br><br>Teq = Teff * sqrt(R* / 2d) * (1 - A)^0.25 = 278.5 * (S * (1 - A))^0.25<br><br>wobei R* der Sternradius, A die planetare Bond-Albedo und S der empfangene stellare Fluss in Einheiten der Solarkonstante der Erde ist.',
97
+ },
98
+ {
99
+ type: 'title',
100
+ text: 'Spektralklassifikation und habitable Grenzen',
101
+ level: 3,
102
+ },
103
+ {
104
+ type: 'paragraph',
105
+ html: 'Die Eigenschaften von Sternen variieren je nach Spektraltyp erheblich. Hier ist eine Zusammenfassung der typischen Eigenschaften und HZ-Grenzen:',
106
+ },
107
+ {
108
+ type: 'table',
109
+ headers: [
110
+ 'Spektralklasse',
111
+ 'Temperatur (K)',
112
+ 'Leuchtkraft (L/L⊙)',
113
+ 'HZ Innengrenze (AE)',
114
+ 'HZ Außengrenze (AE)',
115
+ ],
116
+ rows: [
117
+ ['O-Typ Riese', '40.000', '100.000', '300.0', '530.0'],
118
+ ['B-Typ Riese', '20.000', '1.000', '30.1', '53.2'],
119
+ ['A-Typ Sirius', '8.500', '20.0', '4.2', '7.4'],
120
+ ['F-Type Procyon', '6.500', '2.5', '1.5', '2.6'],
121
+ ['G-Typ Sonne', '5.778', '1.0', '0.95', '1.67'],
122
+ ['K-Typ Zwerg', '4.500', '0.15', '0.37', '0.65'],
123
+ ['M-Typ Zwerg', '3.200', '0.01', '0.09', '0.17'],
124
+ ],
125
+ },
126
+ {
127
+ type: 'title',
128
+ text: 'Einfluss der Spektralklasse auf die Habitabilität',
129
+ level: 3,
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: 'Jede Spektralklasse schafft eine einzigartige Strahlungs- und Gravitationsumgebung für ihre Planeten:<br><br><strong>O- und B-Typ-Sterne:</strong> Diese massereichen blauen Sterne senden intensive ultraviolette (UV) Strahlung aus und haben eine extrem kurze Lebensdauer (zehn Millionen Jahre). Flüssiges Wasser könnte zwar auf ihren äußeren Welten existieren, aber das Leben hätte nicht genug Zeit, um sich zu entwickeln, bevor der Stern in einer Supernova explodiert.<br><br><strong>A- und F-Typ-Sterne:</strong> Diese Sterne sind heller und heißer als die Sonne. Ihre habitablen Zonen sind breit und weit entfernt, was die Effekte einer gebundenen Rotation minimiert. Ein hohes Maß an naher UV-Strahlung kann jedoch ohne schützende Ozonschicht schwere Schäden an organischen Molekülen verursachen.<br><br><strong>G-Typ-Sterne (sonnenähnlich):</strong> Diese Sterne bieten über Milliarden von Jahren einen stabilen Strahlungsfluss und sind das primäre Ziel bei der Suche nach Leben. Ihre Strahlung entspricht den Standardbedingungen der Biochemie.<br><br><strong>K-Typ-Sterne (orangefarbene Zwerge):</strong> Von vielen Astrobiologen als "superhabitable" Wirte angesehen. Orangefarbene Zwerge leben Dutzende Milliarden Jahre, emittieren weniger schädliche UV-Strahlung als G-Sterne und neigen nicht zu den heftigen Strahlungsausbrüchen junger M-Zwerge.<br><br><strong>M-Typ-Sterne (rote Zwerge):</strong> Die häufigsten Sterne in der Galaxie. Da ihre habitablen Zonen extrem nah am Stern liegen (typischerweise < 0,2 AE), neigen Planeten zu einer gebundenen Rotation (eine Seite zeigt permanent zum Stern). Zudem erzeugen aktive M-Zwerge hochenergetische Sternwinde und Flares, die Planetenatmosphären wegpusten können.',
134
+ },
135
+ {
136
+ type: 'title',
137
+ text: 'Kritische Faktoren in planetaren habitablen Umgebungen',
138
+ level: 3,
139
+ },
140
+ {
141
+ type: 'paragraph',
142
+ html: 'Die physikalische Umgebung eines Planeten wird durch eine Vielzahl von Variablen geformt, die über die reine Entfernung von seinem Zentralstern hinausgehen:',
143
+ },
144
+ {
145
+ type: 'list',
146
+ items: [
147
+ '<strong>Atmosphärischer Treibhauseffekt:</strong> Natürliche Treibhausgase erhöhen die Oberflächentemperatur über das Gleichgewichtsniveau eines Schwarzen Körpers. Gesteinsplaneten benötigen Carbonat-Silicat-Zyklen, um das atmosphärische CO2 zu stabilisieren und die Temperaturen über geologische Zeiträume hinweg zu regulieren.',
148
+ '<strong>Planetare Bond-Albedo:</strong> Ein hohes Reflexionsvermögen (durch Wolken, Eiskappen oder Sulfataerosole) kühlt den Planeten ab, während eine niedrige Albedo (dunkle Böden, Wassermassen) mehr Sternenergie einfängt.',
149
+ '<strong>Magnetfelder:</strong> Eine starke planetare Magnetosphäre schützt die Atmosphäre vor Sonnen- und Sternwinden und verhindert den nicht-thermischen Verlust von Atmosphäre und Wasser.',
150
+ '<strong>Kältefallen-Dynamik:</strong> Der Kältefalleneffekt in der oberen Atmosphäre verhindert, dass Wasserdampf große Höhen erreicht, in denen die solare UV-Strahlung das Wasser in Wasserstoff und Sauerstoff spalten würde.',
151
+ ],
152
+ },
153
+ ],
154
+ faq,
155
+ bibliography,
156
+ howTo,
157
+ schemas: [
158
+ {
159
+ '@context': 'https://schema.org',
160
+ '@type': 'SoftwareApplication',
161
+ name: title,
162
+ description: description,
163
+ applicationCategory: 'ScientificApplication',
164
+ operatingSystem: 'Any',
165
+ },
166
+ {
167
+ '@context': 'https://schema.org',
168
+ '@type': 'FAQPage',
169
+ mainEntity: faq.map((item) => ({
170
+ '@type': 'Question',
171
+ name: item.question,
172
+ acceptedAnswer: {
173
+ '@type': 'Answer',
174
+ text: item.answer,
175
+ },
176
+ })),
177
+ },
178
+ {
179
+ '@context': 'https://schema.org',
180
+ '@type': 'HowTo',
181
+ name: title,
182
+ step: howTo.map((step) => ({
183
+ '@type': 'HowToStep',
184
+ name: step.name,
185
+ text: step.text,
186
+ })),
187
+ },
188
+ ],
189
+ };
@@ -0,0 +1,189 @@
1
+ import { bibliography } from '../bibliography';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+
4
+ const slug = 'stellar-habitability-zone';
5
+ const description = 'Calculate and visualize the habitable zones (Goldilocks zone) around different types of stars using stellar and planetary configurations.';
6
+ const title = 'Stellar Habitable Zone Simulator: Find Goldilocks Zones';
7
+
8
+ const howTo = [
9
+ {
10
+ name: 'Select a Stellar Preset',
11
+ text: 'Pick a stellar type from Blue Giants to Red Dwarfs to load standard physical properties like mass, luminosity, and temperature.',
12
+ },
13
+ {
14
+ name: 'Adjust Planetary Parameters',
15
+ text: 'Modify the planet\'s orbital distance (semi-major axis), albedo, and atmospheric greenhouse warming effect using the interactive sliders.',
16
+ },
17
+ {
18
+ name: 'Analyze the Orbit and Habitability',
19
+ text: 'Observe the planet orbiting the star in real-time. Check whether the equilibrium and surface temperatures support liquid water.',
20
+ },
21
+ ];
22
+
23
+ const faq = [
24
+ {
25
+ question: 'What is the circumstellar habitable zone?',
26
+ answer: 'The circumstellar habitable zone (often called the Goldilocks zone) is the region around a star where planetary-surface temperatures are sufficient to maintain liquid water under a given atmospheric pressure. It is defined by conservative and optimistic boundaries based on stellar luminosity and effective temperature.',
27
+ },
28
+ {
29
+ question: 'How does stellar luminosity affect the habitable zone?',
30
+ answer: 'Stellar luminosity determines the total energy output of the star. Hotter and more massive stars (like O, B, or A-type stars) are extremely bright, placing their habitable zones much farther away. Cooler, less massive stars (like K or M-type red dwarfs) have low luminosities, shifting their habitable zones extremely close to the star.',
31
+ },
32
+ {
33
+ question: 'What is the difference between equilibrium and surface temperature?',
34
+ answer: 'Equilibrium temperature is the theoretical temperature a planet would have assuming it behaves as a blackbody absorbing stellar radiation and re-radiating it back to space. Surface temperature includes the greenhouse effect of the planet\'s atmosphere, which traps heat and warms the planet further.',
35
+ },
36
+ {
37
+ question: 'Why is albedo important for planetary habitability?',
38
+ answer: 'Albedo is the measure of reflectivity of the planet\'s surface. A higher albedo (closer to 1.0) means the planet reflects more incoming stellar light, cooling it down. A lower albedo means more radiation is absorbed, raising its overall temperature.',
39
+ },
40
+ ];
41
+
42
+ export const content: ToolLocaleContent = {
43
+ slug,
44
+ title,
45
+ description,
46
+ ui: {
47
+ title: 'Stellar Habitable Zone Simulator',
48
+ starPresetsLabel: 'Spectral Presets',
49
+ customStarHeader: 'Stellar Parameters',
50
+ starTemperature: 'Effective Temperature (K)',
51
+ starLuminosity: 'Luminosity (L/L⊙)',
52
+ starMass: 'Mass (M/M⊙)',
53
+ starRadius: 'Radius (R/R⊙)',
54
+ planetHeader: 'Planetary Parameters',
55
+ planetDistance: 'Orbital Distance (AU)',
56
+ planetAlbedo: 'Bond Albedo',
57
+ greenhouseDelta: 'Greenhouse Warming (K)',
58
+ resultsHeader: 'Simulation Results',
59
+ stellarFluxResult: 'Stellar Flux Received',
60
+ eqTempResult: 'Equilibrium Temperature',
61
+ surfTempResult: 'Estimated Surface Temperature',
62
+ orbitPeriodResult: 'Orbital Period',
63
+ orbitVelocityResult: 'Orbital Velocity',
64
+ hzLimitsHeader: 'Habitable Zone Boundaries',
65
+ innerLimit: 'Conservative Inner Limit',
66
+ outerLimit: 'Conservative Outer Limit',
67
+ optInnerLimit: 'Optimistic Inner Limit',
68
+ optOuterLimit: 'Optimistic Outer Limit',
69
+ orbitCanvasTitle: 'Interactive Orbit Visualizer',
70
+ statusLabel: 'Habitability Status',
71
+ statusTooHot: 'TOO HOT (Water vaporizes)',
72
+ statusHabitable: 'HABITABLE (Liquid water possible)',
73
+ statusTooCold: 'TOO COLD (Water freezes)',
74
+ statusExplanation: 'Based on conservative boundaries, this planet lies within the specified habitable zone status.',
75
+ unitsLabel: 'Unit System',
76
+ unitsScientific: 'Scientific',
77
+ unitsImperial: 'Imperial',
78
+ },
79
+ seo: [
80
+ {
81
+ type: 'title',
82
+ text: 'ASTROBIOLOGY: Physics of Stellar Habitable Zones',
83
+ level: 2,
84
+ },
85
+ {
86
+ type: 'paragraph',
87
+ html: 'The search for life beyond Earth begins with understanding the physical conditions required for liquid water. Astrobiologists use mathematical models to map the boundaries of habitable zones around different star types. This simulator uses the Kopparapu et al. (2013) models to estimate the energy flux received by planets and determine if they lie in the Goldilocks zone. The habitable zone is defined as the region where a terrestrial-mass planet with a CO2-H2O-N2 atmosphere can maintain liquid water on its surface.',
88
+ },
89
+ {
90
+ type: 'title',
91
+ text: 'Mathematical Formulas and Atmospheric Physics',
92
+ level: 3,
93
+ },
94
+ {
95
+ type: 'paragraph',
96
+ html: 'The boundaries of the habitable zone are determined by calculating the effective stellar flux (Seff) required to trigger runaway or maximum greenhouse conditions. The equation for Seff depends on the star\'s effective temperature (Teff):<br><br>Seff = SeffSun + a * T* + b * T*^2 + c * T*^3 + d * T*^4<br><br>where T* = Teff - 5780 K, and the coefficients (a, b, c, d) are empirically derived from 1D radiative-convective climate models. Once Seff is computed, the orbital distance d in astronomical units (AU) is given by:<br><br>d = sqrt(L / Seff)<br><br>where L is the star\'s luminosity relative to the Sun. The equilibrium temperature (Teq) of the planet is calculated assuming a spherical blackbody in thermal equilibrium:<br><br>Teq = Teff * sqrt(R* / 2d) * (1 - A)^0.25 = 278.5 * (S * (1 - A))^0.25<br><br>where R* is the stellar radius, A is the planetary bond albedo, and S is the received stellar flux in units of Earth\'s solar constant.',
97
+ },
98
+ {
99
+ type: 'title',
100
+ text: 'Spectral Classification and Habitable Boundaries',
101
+ level: 3,
102
+ },
103
+ {
104
+ type: 'paragraph',
105
+ html: 'Stellar characteristics vary widely across spectral types. Here is a summary of typical properties and HZ boundaries:',
106
+ },
107
+ {
108
+ type: 'table',
109
+ headers: [
110
+ 'Spectral Class',
111
+ 'Temperature (K)',
112
+ 'Luminosity (L/L⊙)',
113
+ 'HZ Inner Limit (AU)',
114
+ 'HZ Outer Limit (AU)',
115
+ ],
116
+ rows: [
117
+ ['O-Type Giant', '40,000', '100,000', '300.0', '530.0'],
118
+ ['B-Type Giant', '20,000', '1,000', '30.1', '53.2'],
119
+ ['A-Type Sirius', '8,500', '20.0', '4.2', '7.4'],
120
+ ['F-Type Procyon', '6,500', '2.5', '1.5', '2.6'],
121
+ ['G-Type Sun', '5,778', '1.0', '0.95', '1.67'],
122
+ ['K-Type Dwarf', '4,500', '0.15', '0.37', '0.65'],
123
+ ['M-Type Dwarf', '3,200', '0.01', '0.09', '0.17'],
124
+ ],
125
+ },
126
+ {
127
+ type: 'title',
128
+ text: 'Detailed Spectral Class Impact on Habitability',
129
+ level: 3,
130
+ },
131
+ {
132
+ type: 'paragraph',
133
+ html: 'Each spectral class creates a unique radiation and gravitational environment for its planets:<br><br><strong>O and B-Type Stars:</strong> These massive blue stars emit intense ultraviolet (UV) radiation and have extremely short lifespans (tens of millions of years). Liquid water might exist on their outer worlds, but life would have insufficient time to evolve before the star undergoes a supernova explosion.<br><br><strong>A and F-Type Stars:</strong> These stars are brighter and hotter than the Sun. Their habitable zones are wide and far out, minimizing the effects of tidal locking. However, high levels of near-UV radiation can cause severe damage to organic molecules without a protective ozone layer.<br><br><strong>G-Type Stars (Sun-like):</strong> Providing a stable luminous flux for billions of years, these stars represent the primary targets for life searches. Their radiation output matches standard biochemistry requirements.<br><br><strong>K-Type Stars (Orange Dwarfs):</strong> Considered by many astrobiologists as the "superhabitable" hosts, orange dwarfs live for tens of billions of years, emit less harmful UV than G-type stars, and are not as prone to the severe flaring associated with younger M-dwarfs.<br><br><strong>M-Type Stars (Red Dwarfs):</strong> The most common stars in the galaxy. Because their habitable zones lie extremely close (typically < 0.2 AU), planets are prone to tidal locking, meaning one side permanently faces the star. Additionally, active M-dwarfs produce high-energy stellar winds and flares that can strip planetary atmospheres.',
134
+ },
135
+ {
136
+ type: 'title',
137
+ text: 'Critical Factors in Planetary Habitable Environments',
138
+ level: 3,
139
+ },
140
+ {
141
+ type: 'paragraph',
142
+ html: 'A planet\'s physical environment is shaped by multiple variables beyond just distance from its host star:',
143
+ },
144
+ {
145
+ type: 'list',
146
+ items: [
147
+ '<strong>Atmospheric Greenhouse Effect:</strong> Natural greenhouse gases raise the surface temperature above the blackbody equilibrium level. Terrestrial planets require carbon-silicate cycles to stabilize atmospheric CO2 and regulate temperatures over geological timescales.',
148
+ '<strong>Planetary Bond Albedo:</strong> High reflectivity (due to clouds, ice caps, or sulfate aerosols) cools the planet, whereas low reflectivity (dark soils, water bodies) traps more stellar energy.',
149
+ '<strong>Magnetic Fields:</strong> A strong planetary magnetosphere shields the atmosphere from solar and stellar winds, preventing non-thermal atmospheric escape and water loss.',
150
+ '<strong>Water-Trap Dynamics:</strong> The cold-trap effect in the upper atmosphere prevents water vapor from reaching high altitudes where solar UV radiation would dissociate it into hydrogen and oxygen.',
151
+ ],
152
+ },
153
+ ],
154
+ faq,
155
+ bibliography,
156
+ howTo,
157
+ schemas: [
158
+ {
159
+ '@context': 'https://schema.org',
160
+ '@type': 'SoftwareApplication',
161
+ name: title,
162
+ description: description,
163
+ applicationCategory: 'ScientificApplication',
164
+ operatingSystem: 'Any',
165
+ },
166
+ {
167
+ '@context': 'https://schema.org',
168
+ '@type': 'FAQPage',
169
+ mainEntity: faq.map((item) => ({
170
+ '@type': 'Question',
171
+ name: item.question,
172
+ acceptedAnswer: {
173
+ '@type': 'Answer',
174
+ text: item.answer,
175
+ },
176
+ })),
177
+ },
178
+ {
179
+ '@context': 'https://schema.org',
180
+ '@type': 'HowTo',
181
+ name: title,
182
+ step: howTo.map((step) => ({
183
+ '@type': 'HowToStep',
184
+ name: step.name,
185
+ text: step.text,
186
+ })),
187
+ },
188
+ ],
189
+ };