[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Getfem-commits] r5189 - in /trunk/getfem/interface: src/ tests/matlab/
From: |
Yves . Renard |
Subject: |
[Getfem-commits] r5189 - in /trunk/getfem/interface: src/ tests/matlab/ tests/python/ |
Date: |
Tue, 15 Dec 2015 10:24:08 -0000 |
Author: renard
Date: Tue Dec 15 11:24:07 2015
New Revision: 5189
URL: http://svn.gna.org/viewcvs/getfem?rev=5189&view=rev
Log:
small fix
Modified:
trunk/getfem/interface/src/getfemint.cc
trunk/getfem/interface/src/getfemint.h
trunk/getfem/interface/src/getfemint_workspace.cc
trunk/getfem/interface/src/getfemint_workspace.h
trunk/getfem/interface/tests/matlab/demo_plasticity.m
trunk/getfem/interface/tests/python/demo_plasticity.py
Modified: trunk/getfem/interface/src/getfemint.cc
URL:
http://svn.gna.org/viewcvs/getfem/trunk/getfem/interface/src/getfemint.cc?rev=5189&r1=5188&r2=5189&view=diff
==============================================================================
--- trunk/getfem/interface/src/getfemint.cc (original)
+++ trunk/getfem/interface/src/getfemint.cc Tue Dec 15 11:24:07 2015
@@ -1026,44 +1026,46 @@
// Gives the class id of an object.
// To be completed when an object class is added.
- id_type class_id_of_object(const dal::pstatic_stored_object &p) {
- if (dynamic_cast<const getfem::cont_struct_getfem_model *>(p.get()))
+ id_type class_id_of_object(const dal::pstatic_stored_object &p,
+ const void **q_) {
+ const void *qq; const void **q(&qq); if (q_) { q = q_; *q_ = 0; }
+ if (*q=dynamic_cast<const getfem::cont_struct_getfem_model *>(p.get()))
return CONT_STRUCT_CLASS_ID;
- if (dynamic_cast<const bgeot::convex_structure *>(p.get()))
+ if (*q=dynamic_cast<const bgeot::convex_structure *>(p.get()))
return CVSTRUCT_CLASS_ID;
- if (dynamic_cast<const getfem::mat_elem_type *>(p.get()))
+ if (*q=dynamic_cast<const getfem::mat_elem_type *>(p.get()))
return ELTM_CLASS_ID;
- if (dynamic_cast<const getfem::virtual_fem *>(p.get()))
+ if (*q=dynamic_cast<const getfem::virtual_fem *>(p.get()))
return FEM_CLASS_ID;
- if (dynamic_cast<const bgeot::geometric_trans *>(p.get()))
+ if (*q=dynamic_cast<const bgeot::geometric_trans *>(p.get()))
return GEOTRANS_CLASS_ID;
- if (dynamic_cast<const getfem::abstract_xy_function *>(p.get()))
+ if (*q=dynamic_cast<const getfem::abstract_xy_function *>(p.get()))
return GLOBAL_FUNCTION_CLASS_ID;
- if (dynamic_cast<const getfem::integration_method *>(p.get()))
+ if (*q=dynamic_cast<const getfem::integration_method *>(p.get()))
return INTEG_CLASS_ID;
- if (dynamic_cast<const getfem::level_set *>(p.get()))
+ if (*q=dynamic_cast<const getfem::level_set *>(p.get()))
return LEVELSET_CLASS_ID;
- if (dynamic_cast<const getfem::mesh *>(p.get()))
+ if (*q=dynamic_cast<const getfem::mesh *>(p.get()))
return MESH_CLASS_ID;
- if (dynamic_cast<const getfem::mesh_fem *>(p.get()))
+ if (*q=dynamic_cast<const getfem::mesh_fem *>(p.get()))
return MESHFEM_CLASS_ID;
- if (dynamic_cast<const getfem::mesh_im *>(p.get()))
+ if (*q=dynamic_cast<const getfem::mesh_im *>(p.get()))
return MESHIM_CLASS_ID;
- if (dynamic_cast<const getfem::im_data *>(p.get()))
+ if (*q=dynamic_cast<const getfem::im_data *>(p.get()))
return MESHIMDATA_CLASS_ID;
- if (dynamic_cast<const getfem::mesh_level_set *>(p.get()))
+ if (*q=dynamic_cast<const getfem::mesh_level_set *>(p.get()))
return MESH_LEVELSET_CLASS_ID;
- if (dynamic_cast<const getfem::mesher_signed_distance *>(p.get()))
+ if (*q=dynamic_cast<const getfem::mesher_signed_distance *>(p.get()))
return MESHER_OBJECT_CLASS_ID;
- if (dynamic_cast<const getfem::model *>(p.get()))
+ if (*q=dynamic_cast<const getfem::model *>(p.get()))
return MODEL_CLASS_ID;
- if (dynamic_cast<const gprecond_base *>(p.get()))
+ if (*q=dynamic_cast<const gprecond_base *>(p.get()))
return PRECOND_CLASS_ID;
- if (dynamic_cast<const getfem::stored_mesh_slice *>(p.get()))
+ if (*q=dynamic_cast<const getfem::stored_mesh_slice *>(p.get()))
return SLICE_CLASS_ID;
- if (dynamic_cast<const gsparse *>(p.get()))
+ if (*q=dynamic_cast<const gsparse *>(p.get()))
return SPMAT_CLASS_ID;
- if (dynamic_cast<const getfemint_poly *>(p.get()))
+ if (*q=dynamic_cast<const getfemint_poly *>(p.get()))
return POLY_CLASS_ID;
return id_type(-1);
}
Modified: trunk/getfem/interface/src/getfemint.h
URL:
http://svn.gna.org/viewcvs/getfem/trunk/getfem/interface/src/getfemint.h?rev=5189&r1=5188&r2=5189&view=diff
==============================================================================
--- trunk/getfem/interface/src/getfemint.h (original)
+++ trunk/getfem/interface/src/getfemint.h Tue Dec 15 11:24:07 2015
@@ -708,7 +708,8 @@
// Gives the class id of an object
// To be completed when an object class is added.
- id_type class_id_of_object(const dal::pstatic_stored_object &p);
+ id_type class_id_of_object(const dal::pstatic_stored_object &p,
+ const void **q = 0);
# define getfemint_declare_getfem_class(CLASS) \
} namespace getfem { class CLASS; } namespace getfemint {
Modified: trunk/getfem/interface/src/getfemint_workspace.cc
URL:
http://svn.gna.org/viewcvs/getfem/trunk/getfem/interface/src/getfemint_workspace.cc?rev=5189&r1=5188&r2=5189&view=diff
==============================================================================
--- trunk/getfem/interface/src/getfemint_workspace.cc (original)
+++ trunk/getfem/interface/src/getfemint_workspace.cc Tue Dec 15 11:24:07 2015
@@ -157,9 +157,11 @@
if (it != kmap.end()) return it->second; else return id_type(-1);
}
- void workspace_stack::commit_newly_created_objects() {
- newly_created_objects.resize(0);
- }
+ id_type workspace_stack::object(const dal::pstatic_stored_object &p) const
+ { const void *q; class_id_of_object(p, &q); return object(q); }
+
+ void workspace_stack::commit_newly_created_objects()
+ { newly_created_objects.resize(0); }
void workspace_stack::destroy_newly_created_objects() {
while (newly_created_objects.size()) {
@@ -189,14 +191,15 @@
<< name_of_getfemint_class_id(ob.class_id)
<< std::setw(10) << subclassname;
if (ob.dependent_on.size()) {
- o << " dependent on ";
+ o << " depends on ";
for (size_type i=0; i < ob.dependent_on.size(); ++i) {
- id_type id = object(ob.dependent_on[i].get());
+ id_type id = object(ob.dependent_on[i]);
if (id != id_type(-1))
o << " ID" << id;
else
- o << " object "
- <<
name_of_getfemint_class_id(class_id_of_object(ob.dependent_on[i]))
+ o << " object of type "
+ << name_of_getfemint_class_id
+ (class_id_of_object(ob.dependent_on[i]))
<< " waiting for deletion";
}
}
Modified: trunk/getfem/interface/src/getfemint_workspace.h
URL:
http://svn.gna.org/viewcvs/getfem/trunk/getfem/interface/src/getfemint_workspace.h?rev=5189&r1=5188&r2=5189&view=diff
==============================================================================
--- trunk/getfem/interface/src/getfemint_workspace.h (original)
+++ trunk/getfem/interface/src/getfemint_workspace.h Tue Dec 15 11:24:07 2015
@@ -131,6 +131,9 @@
/* Return id_type(-1) if not found */
id_type object(const void *raw_pointer) const;
+
+ /* Return id_type(-1) if not found */
+ id_type object(const dal::pstatic_stored_object &p) const;
workspace_stack() { push_workspace("main"); }
Modified: trunk/getfem/interface/tests/matlab/demo_plasticity.m
URL:
http://svn.gna.org/viewcvs/getfem/trunk/getfem/interface/tests/matlab/demo_plasticity.m?rev=5189&r1=5188&r2=5189&view=diff
==============================================================================
--- trunk/getfem/interface/tests/matlab/demo_plasticity.m (original)
+++ trunk/getfem/interface/tests/matlab/demo_plasticity.m Tue Dec 15
11:24:07 2015
@@ -27,7 +27,7 @@
% of the domain and an easy computed Neumann Condition on the right
-with_hardening = 1;
+with_hardening = 0;
bi_material = false;
test_tangent_matrix = false;
do_plot = true;
@@ -161,11 +161,11 @@
gf_model_set(md, 'add nonlinear generic assembly brick', mim,
strcat(expr_sigma, ':Grad_Test_u'));
% gf_model_set(md, 'add finite strain elasticity brick', mim, 'u',
'SaintVenant Kirchhoff', '[lambda; mu]');
else
- gf_model_set(md, 'add fem data', 'Previous_u', mf_u);
+ gf_model_set(md, 'add fem data', 'previous_u', mf_u);
% Declare that sigma is a data of the system on mf_sigma
set(md, 'add fem data', 'sigma', mf_sigma);
% Add plasticity brick on u
- set(md, 'add elastoplasticity brick', mim, 'VM', 'u', 'Previous_u',
'lambda', 'mu', 'von_mises_threshold', 'sigma');
+ set(md, 'add elastoplasticity brick', mim, 'VM', 'u', 'previous_u',
'lambda', 'mu', 'von_mises_threshold', 'sigma');
end
% Add homogeneous Dirichlet condition to u on the left hand side of the domain
@@ -226,8 +226,8 @@
gf_model_set(md, 'variable', 'sigma', sigma);
gf_model_set(md, 'variable', 'Previous_u', U);
else
- get(md, 'elastoplasticity next iter', mim, 'u', 'Previous_u', 'VM',
'lambda', 'mu', 'von_mises_threshold', 'sigma');
- plast = get(md, 'compute plastic part', mim, mf_vm, 'u', 'Previous_u',
'VM', 'lambda', 'mu', 'von_mises_threshold', 'sigma');
+ get(md, 'elastoplasticity next iter', mim, 'u', 'previous_u', 'VM',
'lambda', 'mu', 'von_mises_threshold', 'sigma');
+ plast = get(md, 'compute plastic part', mim, mf_vm, 'u', 'previous_u',
'VM', 'lambda', 'mu', 'von_mises_threshold', 'sigma');
% Compute Von Mises or Tresca stress
VM = get(md, 'compute elastoplasticity Von Mises or Tresca', 'sigma',
mf_vm, 'Von Mises');
end
Modified: trunk/getfem/interface/tests/python/demo_plasticity.py
URL:
http://svn.gna.org/viewcvs/getfem/trunk/getfem/interface/tests/python/demo_plasticity.py?rev=5189&r1=5188&r2=5189&view=diff
==============================================================================
--- trunk/getfem/interface/tests/python/demo_plasticity.py (original)
+++ trunk/getfem/interface/tests/python/demo_plasticity.py Tue Dec 15
11:24:07 2015
@@ -1,5 +1,5 @@
#!/usr/bin/env python
-# -*- coding: UTF8 -*-
+# -*- coding: utf-8 -*-
# Python GetFEM++ interface
#
# Copyright (C) 2004-2015 Yves Renard, Julien Pommier.
@@ -76,11 +76,12 @@
md = gf.Model('real')
md.add_fem_variable('u', mfu)
+md.add_fem_data('previous_u', mfu)
md.add_fem_data('sigma', mfsigma)
md.add_initialized_data('lambda', Lambda)
md.add_initialized_data('mu', Mu)
md.add_initialized_data('von_mises_threshold', von_mises_threshold)
-md.add_elastoplasticity_brick(mim, 'VM', 'u', 'lambda', 'mu',
'von_mises_threshold', 'sigma')
+md.add_elastoplasticity_brick(mim, 'VM', 'u', 'previous_u', 'lambda', 'mu',
'von_mises_threshold', 'sigma')
md.add_initialized_data('VolumicData', [0,0])
md.add_source_term_brick(mim, 'u', 'VolumicData')
md.add_Dirichlet_condition_with_multipliers(mim, 'u', mfu, 1)
@@ -97,7 +98,7 @@
md.set_variable('VolumicData', [F[step,0],F[step,1]])
md.solve('noisy', 'lsearch', 'simplest', 'alpha min', 0.8, 'max_iter',
100, 'max_res', 1e-6)
U = md.variable('u')
- md.elastoplasticity_next_iter(mim, 'u', 'VM', 'lambda', 'mu',
'von_mises_threshold', 'sigma');
+ md.elastoplasticity_next_iter(mim, 'u', 'previous_u', 'VM', 'lambda',
'mu', 'von_mises_threshold', 'sigma');
VM = md.compute_elastoplasticity_Von_Mises_or_Tresca('sigma', mfdu, 'Von
Mises')
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Getfem-commits] r5189 - in /trunk/getfem/interface: src/ tests/matlab/ tests/python/,
Yves . Renard <=