getfem-commits
[Top][All Lists]
Advanced

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

[Getfem-commits] r4643 - in /trunk/getfem/src: getfem/getfem_models.h ge


From: andriy . andreykiv
Subject: [Getfem-commits] r4643 - in /trunk/getfem/src: getfem/getfem_models.h getfem_models.cc
Date: Mon, 12 May 2014 14:07:13 -0000

Author: andrico
Date: Mon May 12 16:07:12 2014
New Revision: 4643

URL: http://svn.gna.org/viewcvs/getfem?rev=4643&view=rev
Log:
placing the definition of theta_method_dispatcher into the header so that it 
can be reused

Modified:
    trunk/getfem/src/getfem/getfem_models.h
    trunk/getfem/src/getfem_models.cc

Modified: trunk/getfem/src/getfem/getfem_models.h
URL: 
http://svn.gna.org/viewcvs/getfem/trunk/getfem/src/getfem/getfem_models.h?rev=4643&r1=4642&r2=4643&view=diff
==============================================================================
--- trunk/getfem/src/getfem/getfem_models.h     (original)
+++ trunk/getfem/src/getfem/getfem_models.h     Mon May 12 16:07:12 2014
@@ -951,6 +951,67 @@
 
   };
 
+  // ----------------------------------------------------------------------
+  //
+  // theta-method dispatcher
+  //
+  // ----------------------------------------------------------------------
+
+  class theta_method_dispatcher : public virtual_dispatcher {
+
+  public :
+
+    typedef model::build_version build_version;
+
+    void set_dispatch_coeff(const model &md, size_type ib) const;
+
+    template <typename MATLIST, typename VECTLIST>
+    inline void next_iter(const model &md, size_type ib,
+                          const model::varnamelist &/* vl */,
+                          const model::varnamelist &/* dl */,
+                          MATLIST &/* matl */,
+                          VECTLIST &vectl, VECTLIST &vectl_sym,
+                          bool first_iter) const {
+      if (first_iter) md.update_brick(ib, model::BUILD_RHS);
+
+      // shift the rhs
+      transfert(vectl[0], vectl[1]);
+      transfert(vectl_sym[0], vectl_sym[1]);
+
+      // add the component represented by the linear matrix terms to the
+      // supplementary rhs
+      md.linear_brick_add_to_rhs(ib, 1, 0);
+    }
+
+    void next_real_iter
+    (const model &md, size_type ib, const model::varnamelist &vl,
+     const model::varnamelist &dl, model::real_matlist &matl,
+     std::vector<model::real_veclist> &vectl,
+     std::vector<model::real_veclist> &vectl_sym, bool first_iter) const;
+
+    void next_complex_iter
+    (const model &md, size_type ib, const model::varnamelist &vl,
+     const model::varnamelist &dl,
+     model::complex_matlist &matl,
+     std::vector<model::complex_veclist> &vectl,
+     std::vector<model::complex_veclist> &vectl_sym,
+     bool first_iter) const;
+
+    void asm_real_tangent_terms
+    (const model &md, size_type ib, model::real_matlist &/* matl */,
+     std::vector<model::real_veclist> &/* vectl */,
+     std::vector<model::real_veclist> &/* vectl_sym */,
+     build_version version) const;
+
+    virtual void asm_complex_tangent_terms
+    (const model &md, size_type ib, model::complex_matlist &/* matl */,
+     std::vector<model::complex_veclist> &/* vectl */,
+     std::vector<model::complex_veclist> &/* vectl_sym */,
+     build_version version) const;
+
+    theta_method_dispatcher(const std::string &THETA);
+  };
+
   //=========================================================================
   //
   //  Functions adding standard time dispatchers.

Modified: trunk/getfem/src/getfem_models.cc
URL: 
http://svn.gna.org/viewcvs/getfem/trunk/getfem/src/getfem_models.cc?rev=4643&r1=4642&r2=4643&view=diff
==============================================================================
--- trunk/getfem/src/getfem_models.cc   (original)
+++ trunk/getfem/src/getfem_models.cc   Mon May 12 16:07:12 2014
@@ -6412,13 +6412,7 @@
   //
   // ----------------------------------------------------------------------
 
-  class theta_method_dispatcher : public virtual_dispatcher {
-
-  public :
-
-    typedef model::build_version build_version;
-
-    void set_dispatch_coeff(const model &md, size_type ib) const {
+    void theta_method_dispatcher::set_dispatch_coeff(const model &md, 
size_type ib) const {
       scalar_type theta;
       if (md.is_complex())
         theta = gmm::real(md.complex_variable(param_names[0])[0]);
@@ -6433,25 +6427,7 @@
     }
 
 
-    template <typename MATLIST, typename VECTLIST>
-    inline void next_iter(const model &md, size_type ib,
-                          const model::varnamelist &/* vl */,
-                          const model::varnamelist &/* dl */,
-                          MATLIST &/* matl */,
-                          VECTLIST &vectl, VECTLIST &vectl_sym,
-                          bool first_iter) const {
-      if (first_iter) md.update_brick(ib, model::BUILD_RHS);
-
-      // shift the rhs
-      transfert(vectl[0], vectl[1]);
-      transfert(vectl_sym[0], vectl_sym[1]);
-
-      // add the component represented by the linear matrix terms to the
-      // supplementary rhs
-      md.linear_brick_add_to_rhs(ib, 1, 0);
-    }
-
-    void next_real_iter
+    void theta_method_dispatcher::next_real_iter
     (const model &md, size_type ib, const model::varnamelist &vl,
      const model::varnamelist &dl, model::real_matlist &matl,
      std::vector<model::real_veclist> &vectl,
@@ -6459,7 +6435,7 @@
       next_iter(md, ib, vl, dl, matl, vectl, vectl_sym, first_iter);
     }
 
-    void next_complex_iter
+    void theta_method_dispatcher::next_complex_iter
     (const model &md, size_type ib, const model::varnamelist &vl,
      const model::varnamelist &dl,
      model::complex_matlist &matl,
@@ -6469,26 +6445,24 @@
       next_iter(md, ib, vl, dl, matl, vectl, vectl_sym, first_iter);
     }
 
-    void asm_real_tangent_terms
+    void theta_method_dispatcher::asm_real_tangent_terms
     (const model &md, size_type ib, model::real_matlist &/* matl */,
      std::vector<model::real_veclist> &/* vectl */,
      std::vector<model::real_veclist> &/* vectl_sym */,
      build_version version) const
     { md.brick_call(ib, version, 0); }
 
-    virtual void asm_complex_tangent_terms
+    void theta_method_dispatcher::asm_complex_tangent_terms
     (const model &md, size_type ib, model::complex_matlist &/* matl */,
      std::vector<model::complex_veclist> &/* vectl */,
      std::vector<model::complex_veclist> &/* vectl_sym */,
      build_version version) const
     { md.brick_call(ib, version, 0); }
 
-    theta_method_dispatcher(const std::string &THETA)
+    theta_method_dispatcher::theta_method_dispatcher(const std::string &THETA)
       : virtual_dispatcher(2) {
       param_names.push_back(THETA);
     }
-
-  };
 
   void add_theta_method_dispatcher
   (model &md, dal::bit_vector ibricks, const std::string &THETA) {




reply via email to

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