MarkerCoordinates

Initialization

EarthBox.Markers.MarkerCoordinates.initialize!Function
initialize!(
    model::ModelData;
    marker_distribution::Union{Int, String, Symbol, Nothing}=nothing
)::Nothing

Initialize marker coordinates.

Arguments

  • model::ModelData: The model data object containing model parameters and arrays.
  • marker_distribution::Union{Int, String, Symbol, Nothing}: Controls the type of initial marker distribution. The marker distribution type is stored in the model data container as an integer ID (iuse_random). If marker_distribution is nothing the current marker distribution type defined in the model data container will be used.

Available options for marker_distribution are as follows:

  • "Regular", :Regular, or 0
    • Initial marker distribution is regular.
  • "Randomized", :Randomized, or 1
    • Initial marker distribution is randomized.

Marker distribution type can be accessed from the model data container as follows:

  • iuse_random = model.markers.parameters.distribution.iuse_random.value

Returns

  • Nothing
source

Accessing Option Names

Available marker distribution options can be accessed programmatically:

  • Markers.MarkerCoordinates.option_names.Regular
  • Markers.MarkerCoordinates.option_names.Randomized

Example: Initializing a model with a randomized marker distribution

using EarthBox
using CairoMakie

eb = EarthBoxState(
    xnum = 100, ynum = 100, 
    xsize = 100000.0, ysize = 100000.0, 
    dx_marker = 1000.0, dy_marker = 1000.0);

model = eb.model_manager.model;

option_names = Markers.MarkerCoordinates.option_names;
Markers.MarkerCoordinates.initialize!(model, marker_distribution=option_names.Randomized);

marker_x = model.markers.arrays.location.marker_x.array;
marker_y = model.markers.arrays.location.marker_y.array;

fig, ax, plt = scatter(
    marker_x ./ 1000.0, marker_y ./ 1000.0; 
    color = :dodgerblue, markersize = 2, 
    axis = (; aspect = 1, xlabel = "X (km)", ylabel = "Y (km)", limits=(0.0, 100.0, 0.0, 100.0)),
    );
fig