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 @@ * *
    * - *
  1. 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) - * *
  2. 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 * *
  3. 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