[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Getfem-commits] r5028 - in /trunk/getfem/src: getfem_generic_assembly.c
From: |
andriy . andreykiv |
Subject: |
[Getfem-commits] r5028 - in /trunk/getfem/src: getfem_generic_assembly.cc getfem_models.cc |
Date: |
Wed, 03 Jun 2015 18:03:17 -0000 |
Author: andrico
Date: Wed Jun 3 20:03:17 2015
New Revision: 5028
URL: http://svn.gna.org/viewcvs/getfem?rev=5028&view=rev
Log:
- add_external_load is called in a serial post-assembly as it's not thread safe
- extraction of operators through singletons in generic assembly should be
from the
first (zero) thread, as they where added on the first thread. This access is
thread
safe in parallel, as it's only reading
Modified:
trunk/getfem/src/getfem_generic_assembly.cc
trunk/getfem/src/getfem_models.cc
Modified: trunk/getfem/src/getfem_generic_assembly.cc
URL:
http://svn.gna.org/viewcvs/getfem/trunk/getfem/src/getfem_generic_assembly.cc?rev=5028&r1=5027&r2=5028&view=diff
==============================================================================
--- trunk/getfem/src/getfem_generic_assembly.cc (original)
+++ trunk/getfem/src/getfem_generic_assembly.cc Wed Jun 3 20:03:17 2015
@@ -5238,7 +5238,7 @@
return 2;
ga_predef_operator_tab &PREDEF_OPERATORS
- = dal::singleton<ga_predef_operator_tab>::instance();
+ = dal::singleton<ga_predef_operator_tab>::instance(0);
ga_predef_function_tab::const_iterator it=PREDEF_FUNCTIONS.find(name);
if (it != PREDEF_FUNCTIONS.end())
return 1;
@@ -6316,7 +6316,7 @@
}
ga_predef_operator_tab &PREDEF_OPERATORS
- = dal::singleton<ga_predef_operator_tab>::instance();
+ = dal::singleton<ga_predef_operator_tab>::instance(0);
ga_predef_function_tab::const_iterator it=PREDEF_FUNCTIONS.find(name);
if (it != PREDEF_FUNCTIONS.end()) {
// Predefined function found
@@ -6725,7 +6725,7 @@
"operators should only be scalar, vector or matrices");
}
ga_predef_operator_tab &PREDEF_OPERATORS
- = dal::singleton<ga_predef_operator_tab>::instance();
+ = dal::singleton<ga_predef_operator_tab>::instance(0);
ga_predef_operator_tab::T::iterator it
= PREDEF_OPERATORS.tab.find(child0->name);
const ga_nonlinear_operator &OP = *(it->second);
@@ -9223,7 +9223,7 @@
} else if (child0->node_type == GA_NODE_OPERATOR) {
ga_predef_operator_tab &PREDEF_OPERATORS
- = dal::singleton<ga_predef_operator_tab>::instance();
+ = dal::singleton<ga_predef_operator_tab>::instance(0);
ga_predef_operator_tab::T::iterator it
= PREDEF_OPERATORS.tab.find(child0->name);
const ga_nonlinear_operator &OP = *(it->second);
Modified: trunk/getfem/src/getfem_models.cc
URL:
http://svn.gna.org/viewcvs/getfem/trunk/getfem/src/getfem_models.cc?rev=5028&r1=5027&r2=5028&view=diff
==============================================================================
--- trunk/getfem/src/getfem_models.cc (original)
+++ trunk/getfem/src/getfem_models.cc Wed Jun 3 20:03:17 2015
@@ -4003,9 +4003,21 @@
asm_homogeneous_source_term(vecl[0], mim, mf_u, A, rg);
if (dl.size() > 1) gmm::add(md.real_variable(dl[1]), vecl[0]);
-
+ }
+
+ void real_post_assembly_in_serial(const model &md, size_type ib,
+ const model::varnamelist &vl,
+ const model::varnamelist &dl,
+ const model::mimlist &/* mims */,
+ model::real_matlist &/*matl*/,
+ model::real_veclist &vecl,
+ model::real_veclist &,
+ size_type /*region*/,
+ build_version) const override
+ {
md.add_external_load(ib, gmm::vect_norm1(vecl[0]));
}
+
virtual void asm_complex_tangent_terms(const model &md, size_type ib,
const model::varnamelist &vl,
@@ -4042,9 +4054,21 @@
asm_homogeneous_source_term(vecl[0], mim, mf_u, A, rg);
if (dl.size() > 1) gmm::add(md.complex_variable(dl[1]), vecl[0]);
-
+ }
+
+ void complex_post_assembly_in_serial(const model &md,
+ size_type ib,
+ const model::varnamelist &,
+ const model::varnamelist &,
+ const model::mimlist &,
+ model::complex_matlist &,
+ model::complex_veclist &vecl,
+ model::complex_veclist &,
+ size_type, build_version) const
override
+ {
md.add_external_load(ib, gmm::vect_norm1(vecl[0]));
}
+
source_term_brick(void) {
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Getfem-commits] r5028 - in /trunk/getfem/src: getfem_generic_assembly.cc getfem_models.cc,
andriy . andreykiv <=