[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);
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Getfem-commits] r5174 - in /trunk/getfem/interface/src: getfemint.cc getfemint.h getfemint_precond.h,
Yves . Renard <=