getfem-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Getfem-commits] r5490 - in /trunk/getfem: interface/src/gf_model_set.cc


From: Yves . Renard
Subject: [Getfem-commits] r5490 - in /trunk/getfem: interface/src/gf_model_set.cc src/getfem/getfem_generic_assembly.h src/getfem_generic_assembly.cc
Date: Tue, 29 Nov 2016 20:15:26 -0000

Author: renard
Date: Tue Nov 29 21:15:25 2016
New Revision: 5490

URL: http://svn.gna.org/viewcvs/getfem?rev=5490&view=rev
Log:
interface for the element extrapolation transformation

Modified:
    trunk/getfem/interface/src/gf_model_set.cc
    trunk/getfem/src/getfem/getfem_generic_assembly.h
    trunk/getfem/src/getfem_generic_assembly.cc

Modified: trunk/getfem/interface/src/gf_model_set.cc
URL: 
http://svn.gna.org/viewcvs/getfem/trunk/getfem/interface/src/gf_model_set.cc?rev=5490&r1=5489&r2=5490&view=diff
==============================================================================
--- trunk/getfem/interface/src/gf_model_set.cc  (original)
+++ trunk/getfem/interface/src/gf_model_set.cc  Tue Nov 29 21:15:25 2016
@@ -53,6 +53,8 @@
 };
 
 typedef std::shared_ptr<sub_gf_md_set> psub_command;
+
+typedef std::map<size_type, size_type> elt_corr_cont;
 
 // Function to avoid warning in macro with unused arguments.
 template <typename T> static inline void dummy_func(T &) {}
@@ -423,6 +425,46 @@
                                                       *tm, expr);
        );
 
+    /address@hidden ('add element extrapolation transformation', @str 
transname, @tmesh source_mesh, @mat elt_corr)
+      Add a special interpolation transformation which represents the identity
+      transformation but allows to evaluate the expression on another element
+      than the current element by polynomial extrapolation. It is used for
+      stabilization term in fictitious domain applications. the array elt_cor
+      should be a two entry array whose first line contains the elements
+      concerned by the transformation and the second line the respective
+      elements on which the extrapolation has to be made. If an element
+      is not listed in elt_cor the evaluation is just made on the current
+      element. @*/
+    sub_command
+      ("add element extrapolation transformation", 3, 3, 0, 0,
+       std::string transname = in.pop().to_string();
+       getfem::mesh *sm = extract_mesh_object(in.pop());
+       iarray v = in.pop().to_iarray();
+       if (v.getm() != 2 || v.getp() != 1 || v.getq() != 1)
+                THROW_BADARG("Invalid format for the convex correspondance 
list");
+       elt_corr_cont elt_corr;
+       for (size_type j=0; j < v.getn(); j++)
+        elt_corr[v(0,j)-config::base_index()] = v(1,j)-config::base_index();
+       getfem::add_element_extrapolation_transformation(*md, transname, *sm,
+                                                       elt_corr);
+       );
+
+      /address@hidden ('set element extrapolation correspondance', @str 
transname, @mat elt_corr)
+      Change the correspondance map of an element extrapolation interpolate
+     transformation. @*/
+    sub_command
+      ("set element extrapolation correspondance", 2, 2, 0, 0,
+       std::string transname = in.pop().to_string();
+       iarray v = in.pop().to_iarray();
+       if (v.getm() != 2 || v.getp() != 1 || v.getq() != 1)
+                THROW_BADARG("Invalid format for the convex correspondance 
list");
+       elt_corr_cont elt_corr;
+       for (size_type j=0; j < v.getn(); j++)
+        elt_corr[v(0,j)-config::base_index()] = v(1,j)-config::base_index();
+       getfem::set_element_extrapolation_correspondance(*md, transname,
+                                                       elt_corr);
+       );
+    
     /address@hidden ('add raytracing transformation', @str transname, @scalar 
release_distance)
       Add a raytracing interpolate transformation called `transname` to a model
       to be used by the generic assembly bricks.

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=5490&r1=5489&r2=5490&view=diff
==============================================================================
--- trunk/getfem/src/getfem/getfem_generic_assembly.h   (original)
+++ trunk/getfem/src/getfem/getfem_generic_assembly.h   Tue Nov 29 21:15:25 2016
@@ -659,13 +659,14 @@
      stabilization term in fictitious domain applications. the map elt_cor
      list the element concerned by the transformation and associate them
      to the element on which the extrapolation has to be made. If an element
-     is not listed in elt_cor the evaluation i just made on the current 
element.
+     is not listed in elt_cor the evaluation is just made on the current
+     element.
   */
-  void add_interpolate_transformation_element_extrapolation
+  void add_element_extrapolation_transformation
   (model &md, const std::string &name, const mesh &sm,
    std::map<size_type, size_type> &elt_corr);
 
-  void add_interpolate_transformation_element_extrapolation
+  void add_element_extrapolation_transformation
   (ga_workspace &workspace, const std::string &name, const mesh &sm,
    std::map<size_type, size_type> &elt_corr);
   

Modified: trunk/getfem/src/getfem_generic_assembly.cc
URL: 
http://svn.gna.org/viewcvs/getfem/trunk/getfem/src/getfem_generic_assembly.cc?rev=5490&r1=5489&r2=5490&view=diff
==============================================================================
--- trunk/getfem/src/getfem_generic_assembly.cc (original)
+++ trunk/getfem/src/getfem_generic_assembly.cc Tue Nov 29 21:15:25 2016
@@ -14245,7 +14245,7 @@
   };
 
 
-  void add_interpolate_transformation_element_extrapolation
+  void add_element_extrapolation_transformation
   (model &md, const std::string &name, const mesh &sm,
    std::map<size_type, size_type> &elt_corr) {
     pinterpolate_transformation
@@ -14254,7 +14254,7 @@
     md.add_interpolate_transformation(name, p);
   }
 
-  void add_interpolate_transformation_element_extrapolation
+  void add_element_extrapolation_transformation
   (ga_workspace &workspace, const std::string &name, const mesh &sm,
    std::map<size_type, size_type> &elt_corr) {
     pinterpolate_transformation




reply via email to

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