diff --git a/doc/modules/to-1.5.0.h b/doc/modules/to-1.5.0.h
index 781690c877c..a91d99ee865 100644
--- a/doc/modules/to-1.5.0.h
+++ b/doc/modules/to-1.5.0.h
@@ -7,13 +7,6 @@
*
*
*
- * - New: Support for two particle interpolation schemes (bilinear, and
- * biquadratic) has been added. Using the least squares method, a bilinear
- * or biquadratic function is approximated and evaluated onto compositional
- * fields with a simple overshoot and undershoot correction.
- *
- * (Harsha Lokavarapu, Ying He, Gerry Puckett, 2017/02/27)
- *
* - New: Blankenbach benchmarks were added.
*
* (Timo Heister, 2017/02/16)
@@ -87,20 +80,8 @@
* Added tests and benchmarks for the new formulation, and updated
* the according particle property in the same way. Also updated
* and extended the cookbook description in the manual.
-<<<<<<< HEAD:doc/modules/to-1.5.0.h
*
* (Rene Gassmoeller, 2017/01/19)
-=======
- *
(Rene Gassmoeller, 2017/01/19)
-<<<<<<< HEAD:doc/modules/to-1.5.0.h
-=======
- * fields with a simple overshoot and undershoot correction. Support for
- * 2D models only, has been implemented.
- *
(Harsha Lokavarapu, Ying He, Gerry Puckett, 2016/12/28)
->>>>>>> Updated code in response to PR #1333 comments
->>>>>>> 7808038... Updated code in response to PR #1333 comments:doc/modules/changes.h
-=======
->>>>>>> 50e1602... Update particle_at_properties function call for bilinear and biquadratic particle interpolation schemes:doc/modules/changes.h
*
* - New: Added a "heat flux densities" postprocessor.
*
diff --git a/include/aspect/particle/interpolator/bilinear_least_squares.h b/include/aspect/particle/interpolator/bilinear_least_squares.h
index 791f32a6899..a8b15083abf 100644
--- a/include/aspect/particle/interpolator/bilinear_least_squares.h
+++ b/include/aspect/particle/interpolator/bilinear_least_squares.h
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2016 by the authors of the ASPECT code.
+ Copyright (C) 2017 by the authors of the ASPECT code.
This file is part of ASPECT.
@@ -31,7 +31,7 @@ namespace aspect
namespace Interpolator
{
/**
- * Return the interpolated properties of all tracers of the given cell using bilinear least squares method.
+ * Return the interpolated properties of all particles of the given cell using bilinear least squares method.
* Currently, only the two dimensional model is supported.
*
* @ingroup ParticleInterpolators
diff --git a/include/aspect/particle/interpolator/biquadratic_least_squares.h b/include/aspect/particle/interpolator/biquadratic_least_squares.h
deleted file mode 100644
index a55c42ddcca..00000000000
--- a/include/aspect/particle/interpolator/biquadratic_least_squares.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- Copyright (C) 2016 by the authors of the ASPECT code.
-
- This file is part of ASPECT.
-
- ASPECT is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- ASPECT is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with ASPECT; see the file doc/COPYING. If not see
- .
- */
-
-#ifndef _aspect_particle_interpolator_biquadratic_least_squares_h
-#define _aspect_particle_interpolator_biquadratic_least_squares_h
-
-#include
-#include
-
-namespace aspect
-{
- namespace Particle
- {
- namespace Interpolator
- {
- /**
- * Returns the interpolated properties of all tracers of the given cell using biquadratic least squares method.
- * Currently, only the two dimensional model is supported.
- *
- * @ingroup ParticleInterpolators
- */
- template
- class BiquadraticLeastSquares : public Interface, public aspect::SimulatorAccess
- {
- public:
- /**
- * Return the cell-wise evaluated properties of the biquadratic least squares function
- * at the positions.
- *
- * @copydoc aspect::Particle::Interpolator::Interface::properties_at_points()
- */
- virtual
- std::vector >
- properties_at_points(const std::multimap > &particles,
- const std::vector > &positions,
- const ComponentMask &selected_properties,
- const typename parallel::distributed::Triangulation::active_cell_iterator &cell) const;
-
- // avoid -Woverloaded-virtual:
- using Interface::properties_at_points;
- };
- }
- }
-}
-
-#endif
diff --git a/source/particle/interpolator/bilinear_least_squares.cc b/source/particle/interpolator/bilinear_least_squares.cc
index 0ea63d12b0a..26551255e0f 100644
--- a/source/particle/interpolator/bilinear_least_squares.cc
+++ b/source/particle/interpolator/bilinear_least_squares.cc
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2016 by the authors of the ASPECT code.
+ Copyright (C) 2017 by the authors of the ASPECT code.
This file is part of ASPECT.
@@ -24,8 +24,6 @@
#include
#include
-#include
-
namespace aspect
{
namespace Particle
@@ -73,8 +71,8 @@ namespace aspect
const unsigned int n_particles = std::distance(particle_range.first,particle_range.second);
const unsigned int n_particle_properties = particles.begin()->second.get_properties().size();
- std::vector > cell_properties(positions.size(), std::vector(n_particle_properties,
- numbers::signaling_nan()));
+ std::vector > cell_properties(positions.size(),
+ std::vector(n_particle_properties, numbers::signaling_nan()));
unsigned int property_index = 0;
for (unsigned int i=0; i < n_particle_properties; i++)
@@ -85,88 +83,50 @@ namespace aspect
ExcMessage("At least one cell contained no particles. The 'bilinear'"
"interpolation scheme does not support this case. "));
+
const unsigned int matrix_dimension = 4;
- dealii::FullMatrix A(n_particles, matrix_dimension);
+ dealii::LAPACKFullMatrix A(n_particles, matrix_dimension);
+ Vector r(n_particles);
A = 0;
+ r = 0;
unsigned int index = 0;
+ double cell_diameter = found_cell->diameter();
for (typename std::multimap >::const_iterator particle = particle_range.first;
particle != particle_range.second; ++particle, ++index)
- {
- const Point position = particle->second.get_location();
- A(index,0) = 1;
- A(index,1) = (position[0] - approximated_cell_midpoint[0])/found_cell->diameter();
- A(index,2) = (position[1] - approximated_cell_midpoint[1])/found_cell->diameter();
- A(index,3) = (position[0] - approximated_cell_midpoint[0]) * (position[1] - approximated_cell_midpoint[1])/std::pow(found_cell->diameter(),2);
- }
-
- dealii::FullMatrix B(matrix_dimension, matrix_dimension);
- A.Tmmult(B, A, false);
- dealii::FullMatrix B_inverse(B);
-
- std::ofstream debug;
- debug.open("singular_matrix.out", std::ofstream::app);
-
- debug << "===========Matrix A============" << std::endl;
- B.print_formatted(debug, 16, true, 0, "0", 1, 0);
-
-
-
- dealii::FullMatrix r(matrix_dimension,1);
- r = 0;
-
- double max_value_for_particle_property = (particle_range.first)->second.get_properties()[property_index];
- double min_value_for_particle_property = (particle_range.first)->second.get_properties()[property_index];
-
- for (typename std::multimap >::const_iterator particle = particle_range.first;
- particle != particle_range.second; ++particle)
{
const double particle_property_value = particle->second.get_properties()[property_index];
- const Point position = particle->second.get_location();
-
- r(0,0) += particle_property_value;
- r(1,0) += particle_property_value * (position[0] - approximated_cell_midpoint[0])/found_cell->diameter();
- r(2,0) += particle_property_value * (position[1] - approximated_cell_midpoint[1])/found_cell->diameter();
- r(3,0) += particle_property_value * (position[0] - approximated_cell_midpoint[0]) * (position[1] - approximated_cell_midpoint[1])/std::pow(found_cell->diameter(),2);
+ r[index] = particle_property_value;
- if (max_value_for_particle_property < particle_property_value)
- max_value_for_particle_property = particle_property_value;
- if (min_value_for_particle_property > particle_property_value)
- min_value_for_particle_property = particle_property_value;
+ const Point position = particle->second.get_location();
+ A(index,0) = 1;
+ A(index,1) = (position[0] - approximated_cell_midpoint[0])/cell_diameter;
+ A(index,2) = (position[1] - approximated_cell_midpoint[1])/cell_diameter;
+ A(index,3) = (position[0] - approximated_cell_midpoint[0]) * (position[1] - approximated_cell_midpoint[1])/std::pow(cell_diameter,2);
}
+ dealii::LAPACKFullMatrix B(matrix_dimension, matrix_dimension);
+ dealii::LAPACKFullMatrix B_inverse(B);
- debug << "===========Matrix f============" << std::endl;
- r.print_formatted(debug, 16, true, 0, "0", 1, 0);
+ Vector c_ATr(matrix_dimension);
+ Vector c(matrix_dimension);
- debug.close();
+ const double threshold = 1e-15;
+ unsigned int index_positions = 0;
- dealii::FullMatrix c(matrix_dimension,1);
- c = 0;
- try
- {
- B_inverse.gauss_jordan();
- }
- catch (...)
- {
- std::cout << "Level:" << found_cell->level() << "index:" << found_cell->index() << std::endl;
- }
- B_inverse.mmult(c, r);
+ A.Tmmult(B, A, false);
+ A.Tvmult(c_ATr,r);
+ B_inverse.compute_svd();
+ B_inverse.compute_inverse_svd(threshold);
+ B_inverse.vmult(c, c_ATr);
- unsigned int index_positions = 0;
for (typename std::vector >::const_iterator itr = positions.begin(); itr != positions.end(); ++itr, ++index_positions)
{
Point support_point = *itr;
- double interpolated_value = c(0,0) +
- c(1,0)*(support_point[0] - approximated_cell_midpoint[0])/found_cell->diameter() +
- c(2,0)*(support_point[1] - approximated_cell_midpoint[1])/found_cell->diameter() +
- c(3,0)*(support_point[0] - approximated_cell_midpoint[0])*(support_point[1] - approximated_cell_midpoint[1])/std::pow(found_cell->diameter(),2);
-
- if (interpolated_value > max_value_for_particle_property)
- interpolated_value = max_value_for_particle_property;
- else if (interpolated_value < min_value_for_particle_property)
- interpolated_value = min_value_for_particle_property;
-
+ double interpolated_value = c[0] +
+ c[1]*(support_point[0] - approximated_cell_midpoint[0])/cell_diameter +
+ c[2]*(support_point[1] - approximated_cell_midpoint[1])/cell_diameter +
+ c[3]*(support_point[0] - approximated_cell_midpoint[0])*(support_point[1] - approximated_cell_midpoint[1])/std::pow(cell_diameter,2);
cell_properties[index_positions][property_index] = interpolated_value;
}
return cell_properties;
@@ -187,7 +147,8 @@ namespace aspect
"bilinear",
"Interpolates particle properties onto a vector of points using a "
"bilinear least squares method. Currently only 2D models are "
- "supported. ")
+ "supported. Note that because no limiter is utilized this may "
+ "result in overshoot and/or undershoot of interpolated property. ")
}
}
}
diff --git a/source/particle/interpolator/biquadratic_least_squares.cc b/source/particle/interpolator/biquadratic_least_squares.cc
deleted file mode 100644
index eaa3cf10352..00000000000
--- a/source/particle/interpolator/biquadratic_least_squares.cc
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- Copyright (C) 2016 by the authors of the ASPECT code.
-
- This file is part of ASPECT.
-
- ASPECT is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- ASPECT is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with ASPECT; see the file doc/COPYING. If not see
- .
- */
-
-#include
-
-#include
-#include
-#include
-
-namespace aspect
-{
- namespace Particle
- {
- namespace Interpolator
- {
- template
- std::vector >
- BiquadraticLeastSquares::properties_at_points(const std::multimap > &particles,
- const std::vector > &positions,
- const ComponentMask &selected_properties,
- const typename parallel::distributed::Triangulation::active_cell_iterator &cell) const
- {
- AssertThrow(dim == 2,
- ExcMessage("Currently, the particle interpolator 'biquadratic' is only supported for 2D models."));
-
- typename parallel::distributed::Triangulation::active_cell_iterator found_cell;
-
- if (cell == typename parallel::distributed::Triangulation::active_cell_iterator())
- {
- // We can not simply use one of the points as input for find_active_cell_around_point
- // because for vertices of mesh cells we might end up getting ghost_cells as return value
- // instead of the local active cell. So make sure we are well in the inside of a cell.
- Assert(positions.size() > 0,
- ExcMessage("The particle property interpolator was not given any "
- "positions to evaluate the particle cell_properties at."));
-
- const Point approximated_cell_midpoint = std::accumulate (positions.begin(), positions.end(), Point())
- / static_cast (positions.size());
-
- found_cell =
- (GridTools::find_active_cell_around_point<> (this->get_mapping(),
- this->get_triangulation(),
- approximated_cell_midpoint)).first;
- }
- else
- found_cell = cell;
-
- const types::LevelInd cell_index = std::make_pair (found_cell->level(),found_cell->index());
- const std::pair >::const_iterator,
- typename std::multimap >::const_iterator> particle_range = particles.equal_range(cell_index);
-
- const unsigned int n_particles = std::distance(particle_range.first,particle_range.second);
- const unsigned int n_particle_properties = particles.begin()->second.get_properties().size();
-
- std::vector > cell_properties(positions.size(),
- std::vector(n_particle_properties, numbers::signaling_nan()));
-
- unsigned int property_index = 0;
- for (unsigned int i=0; i < n_particle_properties; i++)
- if (selected_properties[i])
- property_index = i;
-
- AssertThrow(n_particles != 0,
- ExcMessage("At least one cell contained no particles. The 'constant "
- "average' interpolation scheme does not support this case. "));
-
- const unsigned int matrix_dimension = 6;
- dealii::FullMatrix A(n_particles,matrix_dimension);
- A = 0;
-
- unsigned int index = 0;
- for (typename std::multimap >::const_iterator particle = particle_range.first;
- particle != particle_range.second; ++particle, ++index)
- {
- const Point location = particle->second.get_location();
- A(index,0) = 1;
- A(index,1) = location[0];
- A(index,2) = location[1];
- A(index,3) = location[0] * location[1];
- A(index,4) = location[0] * location[0];
- A(index,5) = location[1] * location[1];
- }
-
- dealii::FullMatrix B(matrix_dimension, matrix_dimension);
- A.Tmmult(B, A, false);
- dealii::FullMatrix B_inverse(B);
- B_inverse.gauss_jordan();
-
- dealii::FullMatrix r(6,1);
- r = 0;
-
- double max_value_for_particle_property = (particle_range.first)->second.get_properties()[property_index];
- double min_value_for_particle_property = (particle_range.first)->second.get_properties()[property_index];
-
- for (typename std::multimap >::const_iterator particle = particle_range.first;
- particle != particle_range.second; ++particle)
- {
- const double particle_property = particle->second.get_properties()[property_index];
- const Point position = particle->second.get_location();
-
- r(0,0) += particle_property;
- r(1,0) += particle_property * position[0];
- r(2,0) += particle_property * position[1];
- r(3,0) += particle_property * position[0] * position[1];
- r(4,0) += particle_property * position[0] * position[0];
- r(5,0) += particle_property * position[1] * position[1];
-
- if (max_value_for_particle_property < particle_property)
- max_value_for_particle_property = particle_property;
- if (min_value_for_particle_property > particle_property)
- min_value_for_particle_property = particle_property;
- }
-
- dealii::FullMatrix c(matrix_dimension,1);
- c = 0;
- B_inverse.mmult(c, r);
-
- unsigned int index_positions = 0;
- for (typename std::vector >::const_iterator itr = positions.begin(); itr != positions.end(); ++itr, ++index_positions)
- {
- Point support_point = *itr;
- double interpolated_value = c(0,0) + c(1,0)*(support_point[0]) + c(2,0)*(support_point[1]) + c(3,0)*(support_point[0] * support_point[1]) + c(4,0)*(support_point[0] * support_point[0]) + c(5,0)*(support_point[1] * support_point[1]);
- if (interpolated_value > max_value_for_particle_property)
- interpolated_value = max_value_for_particle_property;
- else if (interpolated_value < min_value_for_particle_property)
- interpolated_value = min_value_for_particle_property;
-
- cell_properties[index_positions][property_index] = interpolated_value;
- }
- return cell_properties;
- }
- }
- }
-}
-
-
-// explicit instantiations
-namespace aspect
-{
- namespace Particle
- {
- namespace Interpolator
- {
- ASPECT_REGISTER_PARTICLE_INTERPOLATOR(BiquadraticLeastSquares,
- "biquadratic",
- "Interpolates particle properties onto a vector of points using a "
- "biquadratic least squares method. Currently, only 2D models are "
- "supported. ")
- }
- }
-}
diff --git a/tests/particle_interpolator_bilinear.prm b/tests/particle_interpolator_bilinear.prm
index c1691a1b0b1..204e1d1b47e 100644
--- a/tests/particle_interpolator_bilinear.prm
+++ b/tests/particle_interpolator_bilinear.prm
@@ -46,7 +46,7 @@ subsection Boundary temperature model
set Model name = box
end
-subsection Initial conditions
+subsection Initial temperature model
set Model name = function
subsection Function
set Function expression = 0
@@ -65,7 +65,7 @@ subsection Compositional fields
set Mapped particle properties = advection_particle2:velocity [1], advection_particle:function
end
-subsection Compositional initial conditions
+subsection Initial composition model
set Model name = function
subsection Function
set Variable names = x,z
@@ -101,17 +101,17 @@ end
############### Parameters describing what to do with the solution
subsection Postprocess
- set List of postprocessors = velocity statistics, composition statistics, tracers
+ set List of postprocessors = velocity statistics, composition statistics, particles
subsection Visualization
set Time between graphical output = 70
end
- subsection Tracers
- set Number of tracers = 100000
+ subsection Particles
+ set Number of particles = 100000
set Time between data output = 70
set Data output format = none
- set List of tracer properties = velocity, function, initial composition
+ set List of particle properties = velocity, function, initial composition
set Interpolation scheme = bilinear
set Update ghost particles = true
@@ -120,12 +120,11 @@ subsection Postprocess
set Function expression = 0.5*(1+tanh((0.2+0.02*cos(pi*x/0.9142)-z)/0.02))
end
- set Particle generator name = random uniform
+ set Particle generator name = reference cell
subsection Generator
- subsection Probability density function
- set Variable names = x,z
- set Function expression = x*x*z
+ subsection Reference cell
+ set Number of particles per cell per direction = 4
end
end
end
diff --git a/tests/particle_interpolator_bilinear/screen-output b/tests/particle_interpolator_bilinear/screen-output
index 31d8f9de272..7b4031a3b85 100644
--- a/tests/particle_interpolator_bilinear/screen-output
+++ b/tests/particle_interpolator_bilinear/screen-output
@@ -6,22 +6,22 @@ Number of degrees of freedom: 10,468 (2,178+289+1,089+2,304+2,304+2,304)
Skipping temperature solve because RHS is zero.
Solving advection_field system ... 0 iterations.
Rebuilding Stokes preconditioner...
- Solving Stokes system... 30+2 iterations.
+ Solving Stokes system... 33+0 iterations.
Postprocessing:
RMS, max velocity: 0.000181 m/s, 0.000404 m/s
- Compositions min/max/mass: 0/1/0.1825 // 0/1/0.1832 // 0/0/0
- Number of advected particles: 100000
+ Compositions min/max/mass: 0/1/0.1825 // 0/0/0 // 0/0/0
+ Number of advected particles: 4096
*** Timestep 1: t=70 seconds
Skipping temperature solve because RHS is zero.
Solving advection_field system ... 5 iterations.
- Solving Stokes system... 30+2 iterations.
+ Solving Stokes system... 32+0 iterations.
Postprocessing:
RMS, max velocity: 0.000328 m/s, 0.000732 m/s
- Compositions min/max/mass: -0.007595/1.023/0.1825 // 0/1/0.1832 // -0.0002475/0.0003207/6.101e-09
- Number of advected particles: 100000
+ Compositions min/max/mass: -0.007595/1.023/0.1825 // 0/0/0 // 0/0/0
+ Number of advected particles: 4096
Termination requested by criterion: end time
diff --git a/tests/particle_interpolator_bilinear/statistics b/tests/particle_interpolator_bilinear/statistics
index f9f4f06a574..c3d9bcecd79 100644
--- a/tests/particle_interpolator_bilinear/statistics
+++ b/tests/particle_interpolator_bilinear/statistics
@@ -22,5 +22,5 @@
# 22: Maximal value for composition advection_particle2
# 23: Global mass for composition advection_particle2
# 24: Number of advected particles
-0 0.000000000000e+00 0.000000000000e+00 256 2467 1089 6912 0 0 32 18 9 1.81487742e-04 4.04466707e-04 0.00000000e+00 1.00000000e+00 1.82454287e-01 0.00000000e+00 1.00000000e+00 1.83201633e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 100000
-1 7.000000000000e+01 7.000000000000e+01 256 2467 1089 6912 0 5 32 18 9 3.27581257e-04 7.32023325e-04 -7.59476086e-03 1.02334847e+00 1.82464209e-01 0.00000000e+00 1.00000000e+00 1.83201633e-01 -2.47502209e-04 3.20734513e-04 6.10092353e-09 100000
+0 0.000000000000e+00 0.000000000000e+00 256 2467 1089 6912 0 0 34 35 34 1.81487741e-04 4.04466706e-04 0.00000000e+00 1.00000000e+00 1.82454287e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 4096
+1 7.000000000000e+01 7.000000000000e+01 256 2467 1089 6912 0 5 34 35 35 3.27581254e-04 7.32023320e-04 -7.59476083e-03 1.02334847e+00 1.82464209e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 4096
diff --git a/tests/particle_interpolator_biquadratic.prm b/tests/particle_interpolator_biquadratic.prm
deleted file mode 100644
index 610f62707c8..00000000000
--- a/tests/particle_interpolator_biquadratic.prm
+++ /dev/null
@@ -1,132 +0,0 @@
-# A test that performs biquadratic least square interpolation from
-# particle properties to compositional fields that are flagged
-# as 'particle' advected fields.
-
-# MPI: 2
-
-set Dimension = 2
-set End time = 70
-set Use years in output instead of seconds = false
-
-subsection Geometry model
- set Model name = box
- subsection Box
- set X extent = 0.9142
- set Y extent = 1.0000
- end
-end
-
-subsection Model settings
- set Tangential velocity boundary indicators = left, right
- set Zero velocity boundary indicators = bottom, top
-end
-
-
-subsection Material model
- set Model name = simple
- subsection Simple model
- set Reference density = 1010
- set Viscosity = 1e2
- set Thermal expansion coefficient = 0
- end
-end
-
-subsection Gravity model
- set Model name = vertical
- subsection Vertical
- set Magnitude = 10
- end
-end
-
-
-############### Parameters describing the temperature field
-# Note: The temperature plays no role in this model
-
-subsection Boundary temperature model
- set Model name = box
-end
-
-subsection Initial conditions
- set Model name = function
- subsection Function
- set Function expression = 0
- end
-end
-
-
-############### Parameters describing the compositional field
-# Note: The compositional field is what drives the flow
-# in this example
-
-subsection Compositional fields
- set Number of fields = 3
- set Names of fields = advection_field, advection_particle, advection_particle2
- set Compositional field methods = field, particles, particles
- set Mapped particle properties = advection_particle2:velocity [1], advection_particle:function
-end
-
-subsection Compositional initial conditions
- set Model name = function
- subsection Function
- set Variable names = x,z
- set Function constants = pi=3.1415926
- set Function expression = 0.5*(1+tanh((0.2+0.02*cos(pi*x/0.9142)-z)/0.02));0.0;0.0
- end
-end
-
-subsection Material model
- subsection Simple model
- set Density differential for compositional field 1 = -10
- end
-end
-
-subsection Discretization
- set Use discontinuous composition discretization = true
-end
-
-
-############### Parameters describing the discretization
-
-subsection Mesh refinement
- set Initial adaptive refinement = 0
- set Strategy = composition
- set Initial global refinement = 4
- set Time steps between mesh refinement = 0
- set Coarsening fraction = 0.05
- set Refinement fraction = 0.3
-end
-
-
-
-############### Parameters describing what to do with the solution
-
-subsection Postprocess
- set List of postprocessors = velocity statistics, composition statistics, tracers
-
- subsection Visualization
- set Time between graphical output = 70
- end
-
- subsection Tracers
- set Number of tracers = 100000
- set Time between data output = 70
- set Data output format = none
- set List of tracer properties = velocity, function, initial composition
- set Interpolation scheme = biquadratic
- set Update ghost particles = true
-
- subsection Function
- set Variable names = x,z
- set Function expression = 0.5*(1+tanh((0.2+0.02*cos(pi*x/0.9142)-z)/0.02))
- end
-
- set Particle generator name = random uniform
-
- subsection Generator
- subsection Probability density function
- set Variable names = x,z
- set Function expression = x*x*z
- end
- end
- end
-end
diff --git a/tests/particle_interpolator_biquadratic/screen-output b/tests/particle_interpolator_biquadratic/screen-output
deleted file mode 100644
index b64123dabef..00000000000
--- a/tests/particle_interpolator_biquadratic/screen-output
+++ /dev/null
@@ -1,32 +0,0 @@
-
-Number of active cells: 256 (on 5 levels)
-Number of degrees of freedom: 10,468 (2,178+289+1,089+2,304+2,304+2,304)
-
-*** Timestep 0: t=0 seconds
- Skipping temperature solve because RHS is zero.
- Solving advection_field system ... 0 iterations.
- Rebuilding Stokes preconditioner...
- Solving Stokes system... 30+2 iterations.
-
- Postprocessing:
- RMS, max velocity: 0.000181 m/s, 0.000404 m/s
- Compositions min/max/mass: 0/1/0.1825 // 0/1/0.1827 // 0/0/0
- Number of advected particles: 100000
-
-*** Timestep 1: t=70 seconds
- Skipping temperature solve because RHS is zero.
- Solving advection_field system ... 5 iterations.
- Solving Stokes system... 30+2 iterations.
-
- Postprocessing:
- RMS, max velocity: 0.000328 m/s, 0.000732 m/s
- Compositions min/max/mass: -0.007595/1.023/0.1825 // 0/1/0.1827 // -0.0002475/0.0003192/-6.961e-10
- Number of advected particles: 100000
-
-Termination requested by criterion: end time
-
-
-+---------------------------------------------+------------+------------+
-+---------------------------------+-----------+------------+------------+
-+---------------------------------+-----------+------------+------------+
-
diff --git a/tests/particle_interpolator_biquadratic/statistics b/tests/particle_interpolator_biquadratic/statistics
deleted file mode 100644
index 22026204815..00000000000
--- a/tests/particle_interpolator_biquadratic/statistics
+++ /dev/null
@@ -1,26 +0,0 @@
-# 1: Time step number
-# 2: Time (seconds)
-# 3: Time step size (seconds)
-# 4: Number of mesh cells
-# 5: Number of Stokes degrees of freedom
-# 6: Number of temperature degrees of freedom
-# 7: Number of degrees of freedom for all compositions
-# 8: Iterations for temperature solver
-# 9: Iterations for composition solver 1
-# 10: Iterations for Stokes solver
-# 11: Velocity iterations in Stokes preconditioner
-# 12: Schur complement iterations in Stokes preconditioner
-# 13: RMS velocity (m/s)
-# 14: Max. velocity (m/s)
-# 15: Minimal value for composition advection_field
-# 16: Maximal value for composition advection_field
-# 17: Global mass for composition advection_field
-# 18: Minimal value for composition advection_particle
-# 19: Maximal value for composition advection_particle
-# 20: Global mass for composition advection_particle
-# 21: Minimal value for composition advection_particle2
-# 22: Maximal value for composition advection_particle2
-# 23: Global mass for composition advection_particle2
-# 24: Number of advected particles
-0 0.000000000000e+00 0.000000000000e+00 256 2467 1089 6912 0 0 32 18 9 1.81487742e-04 4.04466707e-04 0.00000000e+00 1.00000000e+00 1.82454287e-01 0.00000000e+00 1.00000000e+00 1.82703837e-01 0.00000000e+00 0.00000000e+00 0.00000000e+00 100000
-1 7.000000000000e+01 7.000000000000e+01 256 2467 1089 6912 0 5 32 18 9 3.27581257e-04 7.32023325e-04 -7.59476086e-03 1.02334847e+00 1.82464209e-01 0.00000000e+00 1.00000000e+00 1.82703837e-01 -2.47491786e-04 3.19229365e-04 -6.96100069e-10 100000