[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Getfem-commits] r5415 - in /trunk/getfem/src: getfem/getfem_global_func
From: |
logari81 |
Subject: |
[Getfem-commits] r5415 - in /trunk/getfem/src: getfem/getfem_global_function.h getfem_global_function.cc |
Date: |
Wed, 12 Oct 2016 20:20:18 -0000 |
Author: logari81
Date: Wed Oct 12 22:20:16 2016
New Revision: 5415
URL: http://svn.gna.org/viewcvs/getfem?rev=5415&view=rev
Log:
implement function support info for global_function_sum and
global_function_product
Modified:
trunk/getfem/src/getfem/getfem_global_function.h
trunk/getfem/src/getfem_global_function.cc
Modified: trunk/getfem/src/getfem/getfem_global_function.h
URL:
http://svn.gna.org/viewcvs/getfem/trunk/getfem/src/getfem/getfem_global_function.h?rev=5415&r1=5414&r2=5415&view=diff
==============================================================================
--- trunk/getfem/src/getfem/getfem_global_function.h (original)
+++ trunk/getfem/src/getfem/getfem_global_function.h Wed Oct 12 22:20:16 2016
@@ -118,6 +118,8 @@
virtual scalar_type val(const fem_interpolation_context&) const;
virtual void grad(const fem_interpolation_context&, base_small_vector&)
const;
virtual void hess(const fem_interpolation_context&, base_matrix&) const;
+ virtual bool is_in_support(const base_node &p) const;
+ virtual void bounding_box(base_node &bmin_, base_node &bmax_) const;
global_function_sum(const std::vector<pglobal_function> &funcs);
global_function_sum(pglobal_function f1, pglobal_function f2);
global_function_sum(pglobal_function f1, pglobal_function f2,
@@ -134,6 +136,8 @@
virtual scalar_type val(const fem_interpolation_context&) const;
virtual void grad(const fem_interpolation_context&, base_small_vector&)
const;
virtual void hess(const fem_interpolation_context&, base_matrix&) const;
+ virtual bool is_in_support(const base_node &p) const;
+ virtual void bounding_box(base_node &bmin_, base_node &bmax_) const;
global_function_product(pglobal_function f1_, pglobal_function f2_);
virtual ~global_function_product()
{ DAL_STORED_OBJECT_DEBUG_DESTROYED(this, "Global function product"); }
Modified: trunk/getfem/src/getfem_global_function.cc
URL:
http://svn.gna.org/viewcvs/getfem/trunk/getfem/src/getfem_global_function.cc?rev=5415&r1=5414&r2=5415&view=diff
==============================================================================
--- trunk/getfem/src/getfem_global_function.cc (original)
+++ trunk/getfem/src/getfem_global_function.cc Wed Oct 12 22:20:16 2016
@@ -135,6 +135,26 @@
for (const auto &f : functions) {
f->hess(c, hh);
gmm::add(hh.as_vector(), h.as_vector());
+ }
+ }
+
+ bool global_function_sum::is_in_support(const base_node &p) const {
+ for (const auto &f : functions)
+ if (f->is_in_support(p)) return true;
+ return false;
+ }
+
+ void global_function_sum::bounding_box
+ (base_node &bmin_, base_node &bmax_) const {
+ if (functions.size() > 0)
+ functions[0]->bounding_box(bmin_, bmax_);
+ base_node bmin0(dim()), bmax0(dim());
+ for (const auto &f : functions) {
+ f->bounding_box(bmin0, bmax0);
+ for (size_type i=0; i < dim(); ++i) {
+ if (bmin0[i] < bmin_[i]) bmin_[i] = bmin0[i];
+ if (bmax0[i] > bmax_[i]) bmax_[i] = bmax0[i];
+ }
}
}
@@ -206,6 +226,23 @@
f2->grad(c, g2);
gmm::rank_one_update(h, g1, g2);
gmm::rank_one_update(h, g2, g1);
+ }
+
+ bool global_function_product::is_in_support(const base_node &p) const {
+ return f1->is_in_support(p) && f2->is_in_support(p);
+ }
+
+ void global_function_product::bounding_box
+ (base_node &bmin_, base_node &bmax_) const {
+ base_node bmin0(dim()), bmax0(dim());
+ f1->bounding_box(bmin0, bmax0);
+ f2->bounding_box(bmin_, bmax_);
+ for (size_type i=0; i < dim(); ++i) {
+ if (bmin0[i] > bmin_[i]) bmin_[i] = bmin0[i];
+ if (bmax0[i] < bmax_[i]) bmax_[i] = bmax0[i];
+ if (bmin_[i] > bmax_[i])
+ GMM_WARNING1("Global function product with vanishing basis function");
+ }
}
global_function_product::global_function_product(pglobal_function f1_,
pglobal_function f2_)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Getfem-commits] r5415 - in /trunk/getfem/src: getfem/getfem_global_function.h getfem_global_function.cc,
logari81 <=