Solid Ball Geometry
The GeoDynamoBall module provides ball-specific domain setup.
Overview
╱‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾╲
╱ ╲
│ Full Sphere │
│ │
│ (No inner core) │
│ │
╲ ╱
╲____________________╱Ball geometry is for full-sphere simulations without an inner boundary—like stellar cores or early planetary interiors.
Ball Geometry API
GeoDynamo.GeoDynamoBall.BallConfig — Type
BallConfigAlias for SHTnsKitConfig, re-exported under a ball-specific name for clarity when working in full-sphere geometry (no inner boundary; off-center radial grid). It carries the spherical-harmonic transform plans, parallel layout, and buffers.
GeoDynamo.GeoDynamoBall.create_ball_pencils — Function
create_ball_pencils(cfg::BallConfig; optimize=true)GeoDynamo.GeoDynamoBall.create_ball_radial_domain — Function
create_ball_radial_domain(nr) -> RadialDomainCreate a radial domain for a solid sphere using an off-center cosine grid:
r_n = (1 − cos(πn/N)) / 2, n = 1, …, NThe outermost node rN = 1 exactly (cos(π) = −1). The innermost node r1 = (1 − cos(π/N))/2 > 0 — there is no node at the centre r = 0. All negative-power columns (1/r, 1/r²) are therefore finite and honest; no regularisation guard is needed. Regularity at r = 0 is imposed separately through l-dependent Robin boundary rows in the implicit matrices.
GeoDynamo.GeoDynamoBall.create_ball_velocity_fields — Function
create_ball_velocity_fields(T, cfg::BallConfig; nr)GeoDynamo.GeoDynamoBall.create_ball_temperature_field — Function
create_ball_temperature_field(T, cfg::BallConfig; nr)GeoDynamo.GeoDynamoBall.create_ball_composition_field — Function
create_ball_composition_field(T, cfg::BallConfig; nr)GeoDynamo.GeoDynamoBall.create_ball_magnetic_fields — Function
create_ball_magnetic_fields(T, cfg::BallConfig; nr)Create magnetic fields for a solid sphere. Since a "core" split is not used in a ball, we pass the same domain for both oc and ic to reuse the core implementation.
GeoDynamo.GeoDynamoBall.create_ball_physical_field — Method
create_ball_physical_field(T, cfg::BallConfig, domain::GeoDynamo.RadialDomain, pencil)GeoDynamo.GeoDynamoBall.create_ball_spectral_field — Method
create_ball_spectral_field(T, cfg::BallConfig, domain::GeoDynamo.RadialDomain, pencil)GeoDynamo.GeoDynamoBall.create_ball_vector_field — Method
create_ball_vector_field(T, cfg::BallConfig, domain::GeoDynamo.RadialDomain, pencils)