#define __deal2__mapping_q_eulerian_h
#include <base/smartpointer.h>
+#include <base/thread_management.h>
#include <grid/tria_iterator.h>
#include <dofs/dof_handler.h>
#include <dofs/dof_accessor.h>
*/
mutable FEValues<dim> fe_values;
+ /**
+ * A variable to guard access to
+ * the fe_values variable.
+ */
+ mutable Threads::ThreadMutex fe_values_mutex;
+
/**
* Compute the positions of the
* support points in the current
std::vector<Vector<double> > shift_vector(n_support_pts,Vector<double>(n_components));
- // fill shift vector for each support
- // point using an fe_values object.
-
+ // fill shift vector for each
+ // support point using an fe_values
+ // object. make sure that the
+ // fe_values variable isn't used
+ // simulatenously from different
+ // threads
+ Threads::ThreadMutex::ScopedLock lock(fe_values_mutex);
fe_values.reinit(dof_cell);
fe_values.get_function_values(euler_vector,shift_vector);
<h3>deal.II</h3>
<ol>
+ <li>
+ <p>
+ New: The MappingQEulerian function was not thread-safe. This is now fixed.
+ <br>
+ (WB 2008/12/16)
+ </p>
+
<li>
<p>
New: The functions FETools::lexicographic_to_hierarchic_numbering and
In the beginning the Universe was created. This has made a lot of
people very angry and has been widely regarded as a bad move.
Douglas Adams