Scaling#
The Scaling class is an abstract base class for crater scaling relationships. Use the Scaling.maker method to create a specific scaling model.
Available Implementations#
Class |
Argument name |
Example Usage |
|---|---|---|
“montecarlo” |
scaling_model = Scaling.maker(“montecarlo”, target=”Mars”, projectile=”asteroids”) |
|
“ctem” |
scaling_model = Scaling.maker(“ctem”, target=”Mars”, projectile=”asteroids”) |
- class cratermaker.components.scaling.Scaling(target=None, projectile=None, rng=None, rng_seed=None, rng_state=None, **kwargs)[source]#
Bases:
ComponentBaseThe abstract base class for all scaling models. It defines the interface for converting between projectile and crater diameters.
- classmethod maker(scaling=None, target=None, projectile=None, rng=None, rng_seed=None, rng_state=None, **kwargs)[source]#
Initialize a Scaling model with the given name or instance.
- Parameters:
scaling (str, Scaling, or None, default=None) – The name of the scaling model to initialize. If None, the default model is used.
target (Target | str, default=”Moon”) – The target body for the impact. Can be a Target object or a string representing the target name.
projectile (Projectile | str, default=”asteroids”) – The projectile model for the impact. Can be an Projectile object or a string representing the projectile name.
rng (numpy.random.Generator | None) – A numpy random number generator. If None, a new generator is created using the rng_seed if it is provided.
rng_seed (Any type allowed by the rng_seed argument of numpy.random.Generator, optional) – The rng_seed for the RNG. If None, a new RNG is created.
rng_state (dict, optional) – The state of the random number generator. If None, a new state is created.
**kwargs (Any) – Additional keyword arguments that are either ignored or passed to internal functions as needed.
- Returns:
Scaling – An instance of the specified scaling model.
- Raises:
Available models:
montecarloctem
- property target#
The Target object associated with this Scaling object.
- property projectile#
The Projectile object associated with this Scaling object.
- property model#
The name of the scaling model.
MonteCarloScaling#
See Scaling for inherited methods and attributes.
- class cratermaker.components.scaling.montecarlo.MonteCarloScaling(target=None, projectile=None, material=None, K1=None, mu=None, Ybar=None, density=None, monte_carlo_scaling=True, rng=None, rng_seed=None, rng_state=None, **kwargs)[source]#
Bases:
ScalingAn operations class for computing the scaling relationships between projectiles and craters.
This class encapsulates the logic for converting between projectile properties and crater properties, as well as determining crater morphology based on size and target properties. This implements the scaling laws similar to those in Richardson (2009) that were implemented in CTEM. However, unlike in CTEM, we apply monte carlo methods to the scaling laws to account for the uncertainty in the scaling laws. We have also included updated simple-to-complex transition diameter values from Schenk et al. (2021).
- Parameters:
target (Target | str, default=”Moon”) – The target body for the impact. Can be a Target object or a string representing the target name.
projectile (Projectile | str, default=”asteroids”) – The projectile model for the impact. Can be an Projectile object or a string representing the projectile name.
material (str or None) – Name of the target material composition of the target body to look up from the built-in catalogue. Options include “water”, “sand”, “dry soil”, “wet soil”, “soft rock”, “hard rock”, and “ice”.
K1 (FloatLike, optional) – Variable used in crater scaling (see Richardson 2009)
mu (FloatLike, optional) – Variable used in crater scaling (see Richardson 2009)
Ybar (FloatLike, optional) – The strength of the target material, (Pa)
density (FloatLike, optional) – Volumentric density of target material, (kg/m³)
monte_carlo_scaling (bool, default=True) – If True, the scaling laws will be applied using monte carlo methods to account for the uncertainty in the scaling laws. If False, the scaling laws will be applied deterministically.
rng (numpy.random.Generator | None) – A numpy random number generator. If None, a new generator is created using the rng_seed if it is provided.
rng_seed (Any type allowed by the rng_seed argument of numpy.random.Generator, optional) – The rng_seed for the RNG. If None, a new RNG is created.
rng_state (dict, optional) – The state of the random number generator. If None, a new state is created.
**kwargs (Any) – Additional keyword arguments that are either ignored or passed to internal functions as needed.
Notes
The target parameter is required and must be an instance of the Target class.
The material parameter is optional. If not provided, it will be retrieved from target. Setting it explicitly will override the value in target.
The K1, mu, Ybar, and density parameters are optional. If not provided, they will be retrieved from the material catalogue based on the material. Setting them explicitly will override the values in the catalogue.
The built-in material property values are from Holsapple (1993) and Kraus et al. (2011).
Complex crater scaling parameters are a synthesis of Pike (1980), Croft (1985), and Schenk et al. (2004), with updated simple-to-complex transition diameter values from Schenk et al. (2021).
References
Richardson, J.E., 2009. Cratering saturation and equilibrium: A new model looks at an old problem. Icarus 204, 697-715. doi:10.1016/j.icarus.2009.07.029
Holsapple, K.A., 1993. The scaling of impact processes in planetary sciences 21, 333-373. doi:10.1146/annurev.ea.21.050193.002001
Kraus, R.G., Senft, L.E., Stewart, S.T., 2011. Impacts onto H2O ice: Scaling laws for melting, vaporization, excavation, and final crater size. Icarus 214, 724-738. doi:10.1016/j.icarus.2011.05.016
Pike, R.J., 1980. Control of crater morphology by gravity and target type - Mars, earth, moon. In: Lunar and Planetary Science Conference 11, 2159-2189.
Croft, S.K., 1985. The scaling of complex craters. Proceedings of the Fifteenth Lunar and Planetary Science Conference, Part 2 Journal of Geophysical Research 90, Supplement, C828-C842.
Schenk, P.M., Chapman, C.R., Zahnle, K., Moore, J.M., 2004. Ages and interiors: the cratering record of the Galilean satellites, Cambridge University Press.
Schenk, P., Castillo-Rogez, J., Otto, K.A., Marchi, S., O’Brien, D., Bland, M., Hughson, K., Schmidt, B., Scully, J., Buczkowski, D., Krohn, K., Hoogenboom, T., Kramer, G., Bray, V., Neesemann, A., Hiesinger, H., Platz, T., De Sanctis, M.C., Schroeder, S., Le Corre, L., McFadden, L., Sykes, M., Raymond, C., Russell, C.T., 2021. Compositional control on impact crater formation on mid-sized planetary bodies: Dawn at Ceres and Vesta, Cassini at Saturn. Icarus 359, 114343. doi:10.1016/j.icarus.2021.114343
- final_to_transient(final_diameter=None, morphology_type=None, **kwargs)[source]#
Computes the transient diameter of a crater based on its final diameter and morphology type.
This method first ensures that the morphology type of the crater is computed. It then calculates the transient crater diameter based on the final diameter using scaling factors for simple or complex crater morphologies.
- Parameters:
final_diameter (float-like) – The final crater diameter in meters for which to compute the transient diameter.
morphology_type (str, optional) – The morphology type of the crater (“simple”, “complex”, “transitional”)
- Returns:
float – Returns the crater transient diameter in meters
- transient_to_final(transient_diameter, **kwargs)[source]#
Computes the final diameter of a crater based on its transient diameter and morphology type.
This method first ensures that the morphology type of the crater is computed. It then calculates the final crater diameter based on the transient diameter using scaling factors for simple or complex crater morphologies. This is a bit more complicated than the final->transient calculation because In the transition region, a particular transient crater diameter could be associate with simple, complex, or transitional crater morphologies. Therefore we need to monte carlo our way into a solution to avoid biasing in favor of one or another in the transient->final computation
- Parameters:
transient_diameter (FloatLike) – The transient diameter in meters of the crater to convert to final.
- Returns:
float – The final crater diameter
str – The morphology type of the crater
- projectile_to_transient(projectile_diameter, **kwargs)[source]#
Calculate the transient diameter of a crater based on the properties of the projectile and target.
- Returns:
float – The calculated transient diameter of the crater resulting from the impact.
- transient_to_projectile(transient_diameter, **kwargs)[source]#
Estimate the characteristics of the projectile that could have created a given crater.
This method approximates the properties of a hypothetical projectile based on the characteristics of a known crater.
- Parameters:
transient_diameter (float) – The diameter of the crater in meters.
**kwargs (Any) – Additional keyword arguments that are either ignored or passed to internal functions as needed.
- Returns:
Crater – The computed projectile for the crater.
- property material_catalogue#
The material catalogue used to look up material properties. Material property values are from Holsapple (1993) and Kraus et al. (2011).
- Returns:
dict – The material catalogue.
References
Holsapple, K.A., 1993. The scaling of impact processes in planetary sciences 21, 333-373. doi:10.1146/annurev.ea.21.050193.002001
Kraus, R.G., Senft, L.E., Stewart, S.T., 2011. Impacts onto H2O ice: Scaling laws for melting, vaporization, excavation, and final crater size. Icarus 214, 724-738. doi:10.1016/j.icarus.2011.05.016
- recompute()[source]#
Computes and sets the internal attributes for transition factors between simple and complex craters.
- property transition_diameter#
The transition diameter between simple and complex craters in m.
- property transition_nominal#
The nominal transition diameter between simple and complex craters in m.
- property simple_enlargement_factor#
The enlargement factor for simple craters.
- property complex_enlargement_factor#
The enlargement factor for complex craters.
- property final_exp#
The exponent used in the final rim radius to simple crater radius relationship.
- property K1#
The K₁ term in the crater scaling relationship.
- property mu#
The μ term in the crater scaling relationship.
- property Ybar#
The Ȳ term in the crater scaling relationship, which is the strength of the material in Pa.
- property catalogue_key#
The key used to identify the property used as the key in a catalogue.
- property material#
The name of the material composition of the target body.
- property monte_carlo_scaling#
If True, the scaling laws will be applied using monte carlo methods to account for the uncertainty in the scaling laws. If False, the scaling laws will be applied deterministically.
Usage example#
1 from cratermaker import Scaling
2 scaling_model = Scaling.maker("montecarlo", target="Mars", projectile="asteroids")
CTEMScaling#
See MonteCarloScaling for inherited methods and attributes.
- class cratermaker.components.scaling.ctem.CTEMScaling(target=None, projectile=None, material=None, K1=None, mu=None, Ybar=None, density=None, **kwargs)[source]#
Bases:
MonteCarloScalingAn operations class for computing the scaling relationships between projectiles and craters.
This class encapsulates the logic for converting between projectile properties and crater properties, as well as determining crater morphology based on size and target propertiesImplements the scaling laws described in Richardson (2009) that were implemented in CTEM.
- Parameters:
target (Target | str, default=”Moon”) – The target body for the impact. Can be a Target object or a string representing the target name.
projectile (Projectile | str, default=”asteroids”) – The projectile model for the impact. Can be an Projectile object or a string representing the projectile name.
material (str or None) – Name of the target material composition of the target body to look up from the built-in catalogue. Options include “water”, “sand”, “dry soil”, “wet soil”, “soft rock”, “hard rock”, and “ice”.
K1 (FloatLike, optional) – Variable used in crater scaling (see Richardson 2009)
mu (FloatLike, optional) – Variable used in crater scaling (see Richardson 2009)
Ybar (FloatLike, optional) – The strength of the target material, (Pa)
density (FloatLike, optional) – Volumentric density of target material, (kg/m³)
**kwargs (Any) – Additional keyword arguments that are either ignored or passed to internal functions as needed.
Notes
The target parameter is required and must be an instance of the Target class.
The material parameter is optional. If not provided, it will be retrieved from target. Setting it explicitly will override the value in target.
The K1, mu, Ybar, and density parameters are optional. If not provided, they will be retrieved from the material catalogue based on the material. Setting them explicitly will override the values in the catalogue.
The built-in material property values are from Holsapple (1993) and Kraus et al. (2011).
Complex craater scaling parameters are a synthesis of Pike (1980), Croft (1985), and Schenk et al. (2004).
References
Richardson, J.E., 2009. Cratering saturation and equilibrium: A new model looks at an old problem. Icarus 204, 697-715. doi:10.1016/j.icarus.2009.07.029
Holsapple, K.A., 1993. The scaling of impact processes in planetary sciences 21, 333-373. doi:10.1146/annurev.ea.21.050193.002001
Kraus, R.G., Senft, L.E., Stewart, S.T., 2011. Impacts onto H2O ice: Scaling laws for melting, vaporization, excavation, and final crater size. Icarus 214, 724-738. doi:10.1016/j.icarus.2011.05.016
Pike, R.J., 1980. Control of crater morphology by gravity and target type - Mars, earth, moon. In: Lunar and Planetary Science Conference 11, 2159-2189.
Croft, S.K., 1985. The scaling of complex craters. Proceedings of the Fifteenth Lunar and Planetary Science Conference, Part 2 Journal of Geophysical Research 90, Supplement, C828-C842.
Schenk, P.M., Chapman, C.R., Zahnle, K., Moore, J.M., 2004. Ages and interiors: the cratering record of the Galilean satellites, Cambridge University Press. Cambridge University Press, Cambridge, UK.
Usage example#
1 from cratermaker import Scaling
2 scaling_model = Scaling.maker("ctem", target="Mars", projectile="asteroids")