21 #ifndef _aspect_mesh_deformation_fastscape_h 22 #define _aspect_mesh_deformation_fastscape_h 26 #ifdef ASPECT_WITH_FASTSCAPE 32 namespace MeshDeformation
43 class FastScape :
public Interface<dim>,
public SimulatorAccess<dim>
54 ~FastScape()
override;
64 compute_velocity_constraints_on_boundary(
const DoFHandler<dim> &mesh_deformation_dof_handler,
65 AffineConstraints<double> &mesh_velocity_constraints,
66 const std::set<types::boundary_id> &boundary_id)
const override;
71 bool needs_surface_stabilization ()
const override;
82 void parse_parameters (ParameterHandler &prm)
override;
95 void set_ghost_nodes(std::vector<double> &elevation,
96 std::vector<double> &velocity_x,
97 std::vector<double> &velocity_y,
98 std::vector<double> &velocity_z,
99 const double &fastscape_timestep_in_years,
100 const bool init)
const;
105 bool is_ghost_node(
const unsigned int &index,
106 const bool &exclude_boundaries)
const;
111 void fill_fastscape_arrays(std::vector<double> &elevation,
112 std::vector<double> &bedrock_transport_coefficient_array,
113 std::vector<double> &bedrock_river_incision_rate_array,
114 std::vector<double> &velocity_x,
115 std::vector<double> &velocity_y,
116 std::vector<double> &velocity_z,
117 std::vector<std::vector<double>> &temporary_variables)
const;
122 std::vector<std::vector<double>> get_aspect_values()
const;
127 void initialize_fastscape(std::vector<double> &elevation,
128 std::vector<double> &basement,
129 std::vector<double> &bedrock_transport_coefficient_array,
130 std::vector<double> &bedrock_river_incision_rate_array,
131 std::vector<double> &silt_fraction)
const;
136 void execute_fastscape(std::vector<double> &elevation,
137 std::vector<double> &extra_vtk_field,
138 std::vector<double> &velocity_x,
139 std::vector<double> &velocity_y,
140 std::vector<double> &velocity_z,
141 const double &fastscape_timestep_in_years,
142 const unsigned int &fastscape_iterations)
const;
148 void apply_orographic_controls(
const std::vector<double> &elevation,
149 std::vector<double> &bedrock_river_incision_rate_array,
150 std::vector<double> &bedrock_transport_coefficient_array)
const;
155 Table<dim,double> fill_data_table(std::vector<double> &values,
156 TableIndices<dim> &size_idx,
157 const unsigned int &fastscape_nx,
158 const unsigned int &fastscape_ny)
const;
163 void read_restart_files(std::vector<double> &elevation,
164 std::vector<double> &basement,
165 std::vector<double> &silt_fraction)
const;
170 void save_restart_files(
const std::vector<double> &elevation,
171 std::vector<double> &basement,
172 std::vector<double> &silt_fraction)
const;
179 unsigned int fastscape_steps_per_aspect_step;
185 double maximum_fastscape_timestep;
195 mutable bool restart;
210 double fastscape_x_extent;
215 double fastscape_y_extent;
220 double fastscape_y_extent_2d;
225 unsigned int fastscape_nx;
230 unsigned int fastscape_ny;
240 unsigned int additional_refinement_levels;
247 unsigned int maximum_surface_refinement_level;
260 unsigned int surface_refinement_difference;
267 bool average_out_of_plane_surface_topography;
277 std::array<std::pair<double,double>,dim> grid_extent;
282 std::array<unsigned int, dim> table_intervals;
287 bool use_ghost_nodes;
294 double noise_elevation;
300 std::vector<double> sediment_rain_rates;
307 std::vector<double> sediment_rain_times;
314 bool fastscape_advection_uplift;
323 double node_tolerance;
330 double output_interval;
336 mutable double last_output_time;
378 bool topbottom_ghost_nodes_periodic;
379 bool leftright_ghost_nodes_periodic;
384 unsigned int fastscape_boundary_conditions;
417 double drainage_area_exponent_m;
422 double slope_exponent_n;
428 double slope_exponent_p;
434 double bedrock_deposition_g;
441 double sediment_deposition_g;
447 double bedrock_river_incision_rate;
454 double sediment_river_incision_rate;
459 double bedrock_transport_coefficient;
466 double sediment_transport_coefficient;
489 bool use_fixed_erosional_base;
494 double h_erosional_base;
499 double sand_surface_porosity;
504 double silt_surface_porosity;
509 double sand_efold_depth;
514 double silt_efold_depth;
519 double sand_silt_ratio;
524 double sand_silt_averaging_depth;
529 double sand_transport_coefficient;
534 double silt_transport_coefficient;
539 bool use_marine_component;
560 int wind_barrier_elevation;
565 unsigned int wind_direction;
571 double flat_erosional_factor;
577 double wind_barrier_erosional_factor;
587 bool use_orographic_controls;
void declare_parameters(ParameterHandler &prm)