21 #ifndef _aspect_mesh_deformation_fastscape_h 22 #define _aspect_mesh_deformation_fastscape_h 26 #ifdef ASPECT_WITH_FASTSCAPE 34 namespace MeshDeformation
45 class FastScape :
public Interface<dim>,
public SimulatorAccess<dim>
56 ~FastScape()
override;
66 compute_velocity_constraints_on_boundary(
const DoFHandler<dim> &mesh_deformation_dof_handler,
67 AffineConstraints<double> &mesh_velocity_constraints,
68 const std::set<types::boundary_id> &boundary_id)
const override;
73 bool needs_surface_stabilization ()
const override;
84 void parse_parameters (ParameterHandler &prm)
override;
97 void set_ghost_nodes(std::vector<double> &elevation,
98 std::vector<double> &velocity_x,
99 std::vector<double> &velocity_y,
100 std::vector<double> &velocity_z,
101 const double &fastscape_timestep_in_years,
102 const bool init)
const;
107 bool is_ghost_node(
const unsigned int &index,
108 const bool &exclude_boundaries)
const;
113 void fill_fastscape_arrays(std::vector<double> &elevation,
114 std::vector<double> &bedrock_transport_coefficient_array,
115 std::vector<double> &bedrock_river_incision_rate_array,
116 std::vector<double> &velocity_x,
117 std::vector<double> &velocity_y,
118 std::vector<double> &velocity_z,
119 std::vector<std::vector<double>> &temporary_variables)
const;
124 std::vector<std::vector<double>> get_aspect_values()
const;
129 void initialize_fastscape(std::vector<double> &elevation,
130 std::vector<double> &basement,
131 std::vector<double> &bedrock_transport_coefficient_array,
132 std::vector<double> &bedrock_river_incision_rate_array,
133 std::vector<double> &silt_fraction)
const;
138 void execute_fastscape(std::vector<double> &elevation,
139 std::vector<double> &extra_vtk_field,
140 std::vector<double> &velocity_x,
141 std::vector<double> &velocity_y,
142 std::vector<double> &velocity_z,
143 const double &fastscape_timestep_in_years,
144 const unsigned int &fastscape_iterations)
const;
150 void apply_orographic_controls(
const std::vector<double> &elevation,
151 std::vector<double> &bedrock_river_incision_rate_array,
152 std::vector<double> &bedrock_transport_coefficient_array)
const;
157 Table<dim,double> fill_data_table(std::vector<double> &values,
158 TableIndices<dim> &size_idx,
159 const unsigned int &fastscape_nx,
160 const unsigned int &fastscape_ny)
const;
165 void read_restart_files(std::vector<double> &elevation,
166 std::vector<double> &basement,
167 std::vector<double> &silt_fraction)
const;
172 void save_restart_files(
const std::vector<double> &elevation,
173 std::vector<double> &basement,
174 std::vector<double> &silt_fraction)
const;
181 unsigned int fastscape_steps_per_aspect_step;
187 double maximum_fastscape_timestep;
197 mutable bool restart;
212 double fastscape_x_extent;
217 double fastscape_y_extent;
222 double fastscape_y_extent_2d;
227 unsigned int fastscape_nx;
232 unsigned int fastscape_ny;
242 unsigned int additional_refinement_levels;
249 unsigned int maximum_surface_refinement_level;
262 unsigned int surface_refinement_difference;
269 bool average_out_of_plane_surface_topography;
279 std::array<std::pair<double,double>,dim> grid_extent;
284 std::array<unsigned int, dim> table_intervals;
289 bool use_ghost_nodes;
296 double noise_elevation;
302 std::vector<double> sediment_rain_rates;
309 std::vector<double> sediment_rain_times;
316 bool fastscape_advection_uplift;
325 double node_tolerance;
332 double output_interval;
338 mutable double last_output_time;
380 bool topbottom_ghost_nodes_periodic;
381 bool leftright_ghost_nodes_periodic;
386 unsigned int fastscape_boundary_conditions;
419 double drainage_area_exponent_m;
424 double slope_exponent_n;
430 double slope_exponent_p;
436 double bedrock_deposition_g;
443 double sediment_deposition_g;
449 double bedrock_river_incision_rate;
456 double sediment_river_incision_rate;
461 double bedrock_transport_coefficient;
468 double sediment_transport_coefficient;
491 bool use_fixed_erosional_base;
496 double h_erosional_base;
501 double sand_surface_porosity;
506 double silt_surface_porosity;
511 double sand_efold_depth;
516 double silt_efold_depth;
521 double sand_silt_ratio;
526 double sand_silt_averaging_depth;
531 double sand_transport_coefficient;
536 double silt_transport_coefficient;
541 bool use_marine_component;
562 int wind_barrier_elevation;
567 unsigned int wind_direction;
573 double flat_erosional_factor;
579 double wind_barrier_erosional_factor;
589 bool use_orographic_controls;
void declare_parameters(ParameterHandler &prm)