Model trainer: use ground altitude instead of crust mass distribution

[?]
Jul 5, 2021, 11:59 PM
EB3DTD435BDETZX5B3SJCEW666AILYCP5GQI2D2AKAH2CBYHCJ4QC

Dependencies

  • [2] 7ML3OFE7 Model trainer: initial train and visualize thread pair (total crust mass; todo: altitude instead)
  • [3] TCMUFA6E Try some different hyperparameters
  • [*] X5U7KRUI Parse some of the data into tensors

Change contents

  • edit in trainmodel/src/model.py at line 4
    [2.1194]
    [2.1194]
    from . import geology
  • replacement in trainmodel/src/model.py at line 19
    [2.1776][2.1776:1872]()
    return (simresult.vertices, tf.math.multiply(1/700000000, simresult.crust_layers['total']))
    [2.1776]
    [2.1872]
    return (simresult.vertices, (geology.isostatic_displacement(simresult) + 1.) / 25000.)
  • file addition: geology.py (----------)
    [5.6]
    import tensorflow as tf
    # In tectonics.js surface height is calculated at Lithosphere.surface_height()
    # surface_height
    # - displacement
    # - thickness ✓
    # - density ✓
    # - material_density ✓
    # - sealevel (guess)
    material_density = {
    'fine_sediment': 1500.,
    'voarse_sediment': 1500.,
    'sediment': 1500.,
    'sedimentary': 2600.,
    'metamorphic': 2800.,
    'felsic_plutonic': 2600.,
    'felsic_volcanic': 2600.,
    'mafic_volcanic_min': 2890., # Carlson & Raskin 1984
    'mafic_volcanic_max': 3300.,
    'mantle': 3075., # derived empirically using isostatic model
    'ocean': 1026.,
    }
    def get_thickness(saved):
    fraction_of_lifetime = saved.crust_layers['age'] / 7889537440886400.0
    mafic_density = material_density['mafic_volcanic_min'] + (material_density['mafic_volcanic_max'] - material_density['mafic_volcanic_min']) * fraction_of_lifetime
    total_thickness = (saved.crust_layers['mafic_volcanic'] + saved.crust_layers['mafic_plutonic']) / mafic_density
    for rocktype, density in material_density.items():
    if rocktype in saved.crust_layers:
    total_thickness += saved.crust_layers[rocktype] / density
    return total_thickness
    def isostatic_displacement(saved):
    thickness = get_thickness(saved)
    return thickness - saved.crust_layers['total'] / material_density['mantle']