getfem-commits
[Top][All Lists]
Advanced

[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')
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]