[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Getfem-commits] r4721 - in /trunk/getfem: interface/tests/matlab/ src/
From: |
Yves . Renard |
Subject: |
[Getfem-commits] r4721 - in /trunk/getfem: interface/tests/matlab/ src/ src/getfem/ |
Date: |
Thu, 17 Jul 2014 15:44:09 -0000 |
Author: renard
Date: Thu Jul 17 17:44:08 2014
New Revision: 4721
URL: http://svn.gna.org/viewcvs/getfem?rev=4721&view=rev
Log:
fix a bug in extract_variables
Modified:
trunk/getfem/interface/tests/matlab/demo_large_sliding_contact.m
trunk/getfem/src/getfem/getfem_generic_assembly.h
trunk/getfem/src/getfem_contact_and_friction_common.cc
trunk/getfem/src/getfem_generic_assembly.cc
trunk/getfem/src/getfem_models.cc
Modified: trunk/getfem/interface/tests/matlab/demo_large_sliding_contact.m
URL:
http://svn.gna.org/viewcvs/getfem/trunk/getfem/interface/tests/matlab/demo_large_sliding_contact.m?rev=4721&r1=4720&r2=4721&view=diff
==============================================================================
--- trunk/getfem/interface/tests/matlab/demo_large_sliding_contact.m
(original)
+++ trunk/getfem/interface/tests/matlab/demo_large_sliding_contact.m Thu Jul
17 17:44:08 2014
@@ -19,7 +19,7 @@
clear all;
gf_workspace('clear all');
-test_case = 0; % 0 = 2D punch on a rigid obstacle
+test_case = 1; % 0 = 2D punch on a rigid obstacle
% 1 = 2D punch on a deformable obstacle (one slave, one master)
% 2 = 2D with two different meshes
% 3 = 2D with multi-body and only one mesh
Modified: trunk/getfem/src/getfem/getfem_generic_assembly.h
URL:
http://svn.gna.org/viewcvs/getfem/trunk/getfem/src/getfem/getfem_generic_assembly.h?rev=4721&r1=4720&r2=4721&view=diff
==============================================================================
--- trunk/getfem/src/getfem/getfem_generic_assembly.h (original)
+++ trunk/getfem/src/getfem/getfem_generic_assembly.h Thu Jul 17 17:44:08 2014
@@ -373,8 +373,9 @@
bool is_constant(const std::string &name) const {
VAR_SET::const_iterator it = variables.find(name);
- if (it != variables.end()) return !(it->second.is_variable);
- if (variable_group_exists(name)) return false;
+ if (it != variables.end()) return !(it->second.is_variable);
+ if (variable_group_exists(name))
+ return is_constant(first_variable_of_group(name));
if (md && md->variable_exists(name)) return md->is_data(name);
if (parent_workspace && parent_workspace->variable_exists(name))
return parent_workspace->is_constant(name);
Modified: trunk/getfem/src/getfem_contact_and_friction_common.cc
URL:
http://svn.gna.org/viewcvs/getfem/trunk/getfem/src/getfem_contact_and_friction_common.cc?rev=4721&r1=4720&r2=4721&view=diff
==============================================================================
--- trunk/getfem/src/getfem_contact_and_friction_common.cc (original)
+++ trunk/getfem/src/getfem_contact_and_friction_common.cc Thu Jul 17
17:44:08 2014
@@ -1502,24 +1502,23 @@
const contact_boundary &cb = contact_boundaries[boundaries_ind[i]];
const std::string &dispname_x
= workspace.variable_in_group(cb.dispname, m_x);
- vars.insert(var_trans_pair(dispname_x, ""));
-
- // if (expand_groups && workspace.variable_group_exists(cb.dispname)) {
-// const std::vector<std::string>
&t=workspace.variable_group(cb.dispname);
-// for (size_type j = 0; j < t.size(); ++j)
-// vars.insert(var_trans_pair(t[j], ""));
-// } else vars.insert(var_trans_pair(cb.dispname, ""));
+ if (!ignore_data || !(workspace.is_constant(dispname_x)))
+ vars.insert(var_trans_pair(dispname_x, ""));
}
for (size_type i = 0; i < contact_boundaries.size(); ++i) {
const contact_boundary &cb = contact_boundaries[i];
if (!(cb.slave)) {
- if (expand_groups && workspace.variable_group_exists(cb.dispname)) {
+ if (expand_groups && workspace.variable_group_exists(cb.dispname)
+ && (!ignore_data || !(workspace.is_constant(cb.dispname)))) {
const std::vector<std::string> &t
= workspace.variable_group(cb.dispname);
for (size_type j = 0; j < t.size(); ++j)
vars.insert(var_trans_pair(t[j], interpolate_name));
- } else vars.insert(var_trans_pair(cb.dispname, interpolate_name));
+ } else {
+ if (!ignore_data || !(workspace.is_constant(cb.dispname)))
+ vars.insert(var_trans_pair(cb.dispname, interpolate_name));
+ }
}
}
}
Modified: trunk/getfem/src/getfem_generic_assembly.cc
URL:
http://svn.gna.org/viewcvs/getfem/trunk/getfem/src/getfem_generic_assembly.cc?rev=4721&r1=4720&r2=4721&view=diff
==============================================================================
--- trunk/getfem/src/getfem_generic_assembly.cc (original)
+++ trunk/getfem/src/getfem_generic_assembly.cc Thu Jul 17 17:44:08 2014
@@ -4238,7 +4238,14 @@
"variables cannot be the same as a variable name");
std::set<const mesh *> ms;
+ bool is_data_ = false;
for (size_type i = 0; i < nl.size(); ++i) {
+ if (i == 0)
+ is_data_ = is_constant(nl[i]);
+ else {
+ GMM_ASSERT1(is_data_ == is_constant(nl[i]),
+ "It is not possible to mix variables and data in a group");
+ }
GMM_ASSERT1(variable_exists(nl[i]),
"All variables in a group have to exist in the model");
const mesh_fem *mf = associated_mf(nl[i]);
@@ -6908,7 +6915,6 @@
(ga_workspace &workspace, ga_instruction_set &gis,
ga_instruction_set::region_mim_instructions &rmi,
const std::string &transname, const std::string &gname) {
-
if (rmi.interpolate_infos[transname].groups_info.find(gname)
== rmi.interpolate_infos[transname].groups_info.end()) {
pga_instruction pgai = new ga_instruction_update_group_info
@@ -6960,7 +6966,8 @@
pctx1 = &(gis.ctx);
const std::string &intn1 = pnode->interpolate_name_test1;
if (intn1.size()) pctx1 = &(rmi.interpolate_infos[intn1].ctx);
- if (intn1.size() &&
workspace.variable_group_exists(pnode->name_test1)) {
+ if (intn1.size()
+ && workspace.variable_group_exists(pnode->name_test1)) {
ensure_update_group_info_instruction(workspace, gis, rmi,
intn1, pnode->name_test1);
ga_instruction_set::variable_group_info &vgi =
@@ -6974,7 +6981,8 @@
pctx2 = &(gis.ctx);
const std::string &intn2 = pnode->interpolate_name_test2;
if (intn2.size()) pctx2 = &(rmi.interpolate_infos[intn2].ctx);
- if (intn2.size() &&
workspace.variable_group_exists(pnode->name_test2)) {
+ if (intn2.size()
+ && workspace.variable_group_exists(pnode->name_test2)) {
ensure_update_group_info_instruction(workspace, gis, rmi,
intn2, pnode->name_test2);
ga_instruction_set::variable_group_info &vgi =
@@ -7864,6 +7872,7 @@
std::set<std::string> interpolates_der;
std::set<std::string> transformations;
+ // std::map<std::string, std::set<std::string> > transformations;
ga_node_used_interpolates(pnode, transformations, interpolates_der);
for (std::set<std::string>::iterator it = transformations.begin();
Modified: trunk/getfem/src/getfem_models.cc
URL:
http://svn.gna.org/viewcvs/getfem/trunk/getfem/src/getfem_models.cc?rev=4721&r1=4720&r2=4721&view=diff
==============================================================================
--- trunk/getfem/src/getfem_models.cc (original)
+++ trunk/getfem/src/getfem_models.cc Thu Jul 17 17:44:08 2014
@@ -1058,7 +1058,14 @@
"variables cannot be the same as a variable name");
std::set<const mesh *> ms;
+ bool is_data_ = false;
for (size_type i = 0; i < nl.size(); ++i) {
+ if (i == 0)
+ is_data_ = is_data(nl[i]);
+ else {
+ GMM_ASSERT1(is_data_ == is_data(nl[i]),
+ "It is not possible to mix variables and data in a group");
+ }
GMM_ASSERT1(variable_exists(nl[i]),
"All variables in a group have to exist in the model");
const mesh_fem *mf = pmesh_fem_of_variable(nl[i]);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Getfem-commits] r4721 - in /trunk/getfem: interface/tests/matlab/ src/ src/getfem/,
Yves . Renard <=