21 #ifndef _aspect_mesh_deformation_fastscape_h 22 #define _aspect_mesh_deformation_fastscape_h 26 #ifdef ASPECT_WITH_FASTSCAPE 34 namespace MeshDeformation
44 class FastScape :
public Interface<dim>,
public SimulatorAccess<dim>
55 ~FastScape()
override;
65 compute_velocity_constraints_on_boundary(
const DoFHandler<dim> &mesh_deformation_dof_handler,
66 AffineConstraints<double> &mesh_velocity_constraints,
67 const std::set<types::boundary_id> &boundary_id)
const override;
72 bool needs_surface_stabilization ()
const override;
83 void parse_parameters (ParameterHandler &prm)
override;
96 void set_ghost_nodes(std::vector<double> &elevation,
97 std::vector<double> &velocity_x,
98 std::vector<double> &velocity_y,
99 std::vector<double> &velocity_z,
100 const double &fastscape_timestep_in_years,
101 const bool init)
const;
106 bool is_ghost_node(
const unsigned int &index,
107 const bool &exclude_boundaries)
const;
112 void fill_fastscape_arrays(std::vector<double> &elevation,
113 std::vector<double> &bedrock_transport_coefficient_array,
114 std::vector<double> &bedrock_river_incision_rate_array,
115 std::vector<double> &velocity_x,
116 std::vector<double> &velocity_y,
117 std::vector<double> &velocity_z,
118 std::vector<std::vector<double>> &temporary_variables)
const;
123 std::vector<std::vector<double>> get_aspect_values()
const;
128 void initialize_fastscape(std::vector<double> &elevation,
129 std::vector<double> &basement,
130 std::vector<double> &bedrock_transport_coefficient_array,
131 std::vector<double> &bedrock_river_incision_rate_array,
132 std::vector<double> &silt_fraction)
const;
137 void execute_fastscape(std::vector<double> &elevation,
138 std::vector<double> &extra_vtk_field,
139 std::vector<double> &velocity_x,
140 std::vector<double> &velocity_y,
141 std::vector<double> &velocity_z,
142 const double &fastscape_timestep_in_years,
143 const unsigned int &fastscape_iterations)
const;
149 void apply_orographic_controls(
const std::vector<double> &elevation,
150 std::vector<double> &bedrock_river_incision_rate_array,
151 std::vector<double> &bedrock_transport_coefficient_array)
const;
156 Table<dim,double> fill_data_table(std::vector<double> &values,
157 TableIndices<dim> &size_idx,
158 const unsigned int &fastscape_nx,
159 const unsigned int &fastscape_ny)
const;
164 void read_restart_files(std::vector<double> &elevation,
165 std::vector<double> &basement,
166 std::vector<double> &silt_fraction)
const;
171 void save_restart_files(
const std::vector<double> &elevation,
172 std::vector<double> &basement,
173 std::vector<double> &silt_fraction)
const;
180 unsigned int fastscape_steps_per_aspect_step;
186 double maximum_fastscape_timestep;
196 mutable bool restart;
211 double fastscape_x_extent;
216 double fastscape_y_extent;
221 double fastscape_y_extent_2d;
226 unsigned int fastscape_nx;
231 unsigned int fastscape_ny;
241 unsigned int additional_refinement_levels;
248 unsigned int maximum_surface_refinement_level;
261 unsigned int surface_refinement_difference;
268 bool average_out_of_plane_surface_topography;
278 std::array<std::pair<double,double>,dim> grid_extent;
283 std::array<unsigned int, dim> table_intervals;
288 bool use_ghost_nodes;
295 double noise_elevation;
301 std::vector<double> sediment_rain_rates;
308 std::vector<double> sediment_rain_times;
315 bool fastscape_advection_uplift;
324 double node_tolerance;
331 double output_interval;
337 mutable double last_output_time;
379 bool topbottom_ghost_nodes_periodic;
380 bool leftright_ghost_nodes_periodic;
385 unsigned int fastscape_boundary_conditions;
418 double drainage_area_exponent_m;
423 double slope_exponent_n;
429 double slope_exponent_p;
435 double bedrock_deposition_g;
442 double sediment_deposition_g;
448 double bedrock_river_incision_rate;
455 double sediment_river_incision_rate;
460 double bedrock_transport_coefficient;
467 double sediment_transport_coefficient;
490 bool use_fixed_erosional_base;
495 double h_erosional_base;
500 double sand_surface_porosity;
505 double silt_surface_porosity;
510 double sand_efold_depth;
515 double silt_efold_depth;
520 double sand_silt_ratio;
525 double sand_silt_averaging_depth;
530 double sand_transport_coefficient;
535 double silt_transport_coefficient;
540 bool use_marine_component;
561 int wind_barrier_elevation;
566 unsigned int wind_direction;
572 double flat_erosional_factor;
578 double wind_barrier_erosional_factor;
588 bool use_orographic_controls;
void declare_parameters(ParameterHandler &prm)