getfem-commits
[Top][All Lists]
Advanced

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

[Getfem-commits] r5174 - in /trunk/getfem/interface/src: getfemint.cc ge


From: Yves . Renard
Subject: [Getfem-commits] r5174 - in /trunk/getfem/interface/src: getfemint.cc getfemint.h getfemint_precond.h
Date: Wed, 09 Dec 2015 20:36:24 -0000

Author: renard
Date: Wed Dec  9 21:36:23 2015
New Revision: 5174

URL: http://svn.gna.org/viewcvs/getfem?rev=5174&view=rev
Log:
minor change

Modified:
    trunk/getfem/interface/src/getfemint.cc
    trunk/getfem/interface/src/getfemint.h
    trunk/getfem/interface/src/getfemint_precond.h

Modified: trunk/getfem/interface/src/getfemint.cc
URL: 
http://svn.gna.org/viewcvs/getfem/trunk/getfem/interface/src/getfemint.cc?rev=5174&r1=5173&r2=5174&view=diff
==============================================================================
--- trunk/getfem/interface/src/getfemint.cc     (original)
+++ trunk/getfem/interface/src/getfemint.cc     Wed Dec  9 21:36:23 2015
@@ -1384,6 +1384,9 @@
   // Functions for MODEL_CLASS_ID
   SIMPLE_RAW_POINTER_MANAGED_OBJECT(model, getfem::model, MODEL_CLASS_ID)
 
+  // Functions for PRECOND_CLASS_ID
+  SIMPLE_RAW_POINTER_MANAGED_OBJECT(precond, gprecond_base, PRECOND_CLASS_ID)
+
   // Functions for SPMAT_CLASS_ID
   SIMPLE_RAW_POINTER_MANAGED_OBJECT(spmat, gsparse, SPMAT_CLASS_ID)
 

Modified: trunk/getfem/interface/src/getfemint.h
URL: 
http://svn.gna.org/viewcvs/getfem/trunk/getfem/interface/src/getfemint.h?rev=5174&r1=5173&r2=5174&view=diff
==============================================================================
--- trunk/getfem/interface/src/getfemint.h      (original)
+++ trunk/getfem/interface/src/getfemint.h      Wed Dec  9 21:36:23 2015
@@ -838,9 +838,10 @@
   getfem::model *to_model_object(const mexarg_in &p);
 
   // Functions for PRECOND_CLASS_ID
-  // bool is_precond_object(const mexarg_in &p);
-  // id_type store_precond_object(const ?? &shp);
-  // ?? to_precond_object(const mexarg_in &p);
+  class gprecond_base;
+  bool is_precond_object(const mexarg_in &p);
+  id_type store_precond_object(const std::shared_ptr<gprecond_base> &shp);
+  gprecond_base *to_precond_object(const mexarg_in &p);
 
   // Functions for SLICE_CLASS_ID
   // bool is_slice_object(const mexarg_in &p);

Modified: trunk/getfem/interface/src/getfemint_precond.h
URL: 
http://svn.gna.org/viewcvs/getfem/trunk/getfem/interface/src/getfemint_precond.h?rev=5174&r1=5173&r2=5174&view=diff
==============================================================================
--- trunk/getfem/interface/src/getfemint_precond.h      (original)
+++ trunk/getfem/interface/src/getfemint_precond.h      Wed Dec  9 21:36:23 2015
@@ -54,7 +54,8 @@
     void set_dimensions(size_type m, size_type n) { nrows_ = m; ncols_ = n; }
     gprecond_base() : nrows_(0), ncols_(0), type(IDENTITY), gsp(0) {}
     const char *name() const { 
-      const char *p[] = { "IDENTITY", "DIAG", "ILDLT", "ILDLTT", "ILU", 
"ILUT", "SUPERLU", "GSPARSE" };
+      const char *p[] = { "IDENTITY", "DIAG", "ILDLT", "ILDLTT", "ILU", "ILUT",
+                         "SUPERLU", "GSPARSE" };
       return p[type];
     }
     virtual size_type memsize() const = 0;
@@ -62,7 +63,8 @@
   };
 
   template <typename T> struct gprecond : public gprecond_base {
-    typedef gmm::csc_matrix_ref<const T*, const unsigned int *, const unsigned 
int *> cscmat;
+    typedef gmm::csc_matrix_ref<const T*, const unsigned int *,
+                               const unsigned int *> cscmat;
     std::unique_ptr<gmm::diagonal_precond<cscmat> > diagonal;
     std::unique_ptr<gmm::ildlt_precond<cscmat> > ildlt;
     std::unique_ptr<gmm::ildltt_precond<cscmat> > ildltt;
@@ -82,12 +84,14 @@
     bool is_complex() { if (p.get() && p->gsp) return p->gsp->is_complex();
       else return v == gsparse::COMPLEX; }
     gprecond<scalar_type> &precond(scalar_type) {
-      GMM_ASSERT1(!is_complex(), "cannot use a COMPLEX preconditionner with 
REAL data");
+      GMM_ASSERT1(!is_complex(),
+                 "cannot use a COMPLEX preconditionner with REAL data");
       return *static_cast<gprecond<scalar_type>*>(p.get()); 
     }
 
     gprecond<complex_type> &precond(complex_type) { 
-      GMM_ASSERT1(is_complex(), "cannot use a REAL preconditionner with 
COMPLEX data");
+      GMM_ASSERT1(is_complex(),
+                 "cannot use a REAL preconditionner with COMPLEX data");
       return *static_cast<gprecond<complex_type>*>(p.get());
     }
 
@@ -145,10 +149,13 @@
   };
 
   template <typename T, typename V1, typename V2>
-  void mult_or_transposed_mult(const getfemint::gprecond<T>& precond, const V1 
&v, V2 &w, bool do_mult) {
+  void mult_or_transposed_mult(const getfemint::gprecond<T>& precond,
+                              const V1 &v, V2 &w, bool do_mult) {
     switch (precond.type) {
       case getfemint::gprecond_base::IDENTITY: gmm::copy(v,w); break;
-      case getfemint::gprecond_base::DIAG: gmm::mult(*precond.diagonal, v, w); 
break;
+      case getfemint::gprecond_base::DIAG:
+       gmm::mult(*precond.diagonal, v, w);
+       break;
       case getfemint::gprecond_base::ILDLT: 
         if (do_mult) gmm::mult(*precond.ildlt, v, w); 
         else gmm::transposed_mult(*precond.ildlt, v, w);
@@ -167,7 +174,7 @@
         break;
       case getfemint::gprecond_base::SUPERLU:
        if (do_mult) precond.superlu->solve(w,v);
-       else         
precond.superlu->solve(w,v,gmm::SuperLU_factor<T>::LU_TRANSP);
+       else precond.superlu->solve(w,v,gmm::SuperLU_factor<T>::LU_TRANSP);
        break;
       case getfemint::gprecond_base::SPMAT:
        precond.gsp->mult_or_transposed_mult(v, w, !do_mult);
@@ -179,7 +186,8 @@
     mult_or_transposed_mult(precond,v,w,true);
   }
   template <typename T, typename V1, typename V2>
-  void transposed_mult(const getfemint::gprecond<T>& precond, const V1 &v, V2 
&w) {
+  void transposed_mult(const getfemint::gprecond<T>& precond, const V1 &v,
+                      V2 &w) {
     mult_or_transposed_mult(precond,v,w,false);
   }
 




reply via email to

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