[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Getfem-commits] r4938 - /trunk/getfem/src/getfem_generic_assembly.cc
From: |
logari81 |
Subject: |
[Getfem-commits] r4938 - /trunk/getfem/src/getfem_generic_assembly.cc |
Date: |
Sun, 05 Apr 2015 22:53:21 -0000 |
Author: logari81
Date: Mon Apr 6 00:53:20 2015
New Revision: 4938
URL: http://svn.gna.org/viewcvs/getfem?rev=4938&view=rev
Log:
fix bug from last commit and increase constness in getfem_generic_assembly.cc
Modified:
trunk/getfem/src/getfem_generic_assembly.cc
Modified: trunk/getfem/src/getfem_generic_assembly.cc
URL:
http://svn.gna.org/viewcvs/getfem/trunk/getfem/src/getfem_generic_assembly.cc?rev=4938&r1=4937&r2=4938&view=diff
==============================================================================
--- trunk/getfem/src/getfem_generic_assembly.cc (original)
+++ trunk/getfem/src/getfem_generic_assembly.cc Mon Apr 6 00:53:20 2015
@@ -782,10 +782,15 @@
return false;
break;
case 1:
+ if (mf1 != mf2 ||
+ workspace.qdim(pnode1->name) != workspace.qdim(pnode2->name) ||
+ pnode1->test_function_type != pnode2->test_function_type)
+ return false;
+ break;
case 2:
if (mf1 != mf2 ||
workspace.qdim(pnode1->name) != workspace.qdim(pnode2->name) ||
- pnode1->test_function_type != pnode2->test_function_type)
+ pnode1->test_function_type == pnode2->test_function_type)
return false;
break;
}
@@ -2502,10 +2507,10 @@
struct ga_instruction_val : public ga_instruction {
base_tensor &t;
- base_tensor &Z;
+ const base_tensor &Z;
const base_vector &coeff;
size_type qdim;
-
+ // Z(ndof,target_dim), coeff(Qmult,ndof) --> t(target_dim*Qmult)
virtual int exec(void) {
GA_DEBUG_INFO("Instruction: variable value");
size_type ndof = Z.sizes()[0];
@@ -2527,7 +2532,7 @@
return 0;
}
- ga_instruction_val(base_tensor &tt, base_tensor &Z_,
+ ga_instruction_val(base_tensor &tt, const base_tensor &Z_,
const base_vector &co, size_type q)
: t(tt), Z(Z_), coeff(co), qdim(q) {}
};
@@ -2557,7 +2562,7 @@
return 0;
}
- ga_instruction_grad(base_tensor &tt, base_tensor &Z_,
+ ga_instruction_grad(base_tensor &tt, const base_tensor &Z_,
const base_vector &co, size_type q)
: ga_instruction_val(tt, Z_, co, q)
{}
@@ -2590,7 +2595,7 @@
return 0;
}
- ga_instruction_hess(base_tensor &tt, base_tensor &Z_,
+ ga_instruction_hess(base_tensor &tt, const base_tensor &Z_,
const base_vector &co, size_type q)
: ga_instruction_val(tt, Z_, co, q)
{}
@@ -2598,7 +2603,7 @@
struct ga_instruction_copy_val_base : public ga_instruction {
base_tensor &t;
- base_tensor &Z;
+ const base_tensor &Z;
size_type qdim;
// Z(ndof,target_dim) --> t(Qmult*ndof,Qmult*target_dim)
virtual int exec(void) {
@@ -2612,7 +2617,7 @@
gmm::copy(Z.as_vector(), t.as_vector());
} else {
gmm::clear(t.as_vector());
- base_tensor::iterator itZ = Z.begin();
+ base_tensor::const_iterator itZ = Z.begin();
size_type s = t.sizes()[0], ss = s * Qmult, sss = s+1;
// Performs t(i*Qmult+j, k*Qmult + j) = Z(i,k);
@@ -2629,7 +2634,7 @@
return 0;
}
- ga_instruction_copy_val_base(base_tensor &tt, base_tensor &Z_, size_type q)
+ ga_instruction_copy_val_base(base_tensor &tt, const base_tensor &Z_,
size_type q)
: t(tt), Z(Z_), qdim(q) {}
};
@@ -2666,7 +2671,7 @@
return 0;
}
- ga_instruction_copy_grad_base(base_tensor &tt, base_tensor &Z_, size_type
q)
+ ga_instruction_copy_grad_base(base_tensor &tt, const base_tensor &Z_,
size_type q)
: ga_instruction_copy_val_base(tt,Z_,q)
{}
};
@@ -2705,7 +2710,7 @@
return 0;
}
- ga_instruction_copy_hess_base(base_tensor &tt, base_tensor &Z_, size_type
q)
+ ga_instruction_copy_hess_base(base_tensor &tt, const base_tensor &Z_,
size_type q)
: ga_instruction_copy_val_base(tt, Z_, q)
{}
};
@@ -2751,7 +2756,7 @@
}
ga_instruction_elementary_transformation_val
- (base_tensor &tt, base_tensor &Z_, const base_vector &co, size_type q,
+ (base_tensor &tt, const base_tensor &Z_, const base_vector &co, size_type
q,
pelementary_transformation e, const mesh_fem &mf_,
fem_interpolation_context &ctx_, base_matrix &M_,
const mesh_fem **mf_M_, size_type &icv_)
@@ -2770,7 +2775,7 @@
}
ga_instruction_elementary_transformation_grad
- (base_tensor &tt, base_tensor &Z_, const base_vector &co, size_type q,
+ (base_tensor &tt, const base_tensor &Z_, const base_vector &co, size_type
q,
pelementary_transformation e, const mesh_fem &mf_,
fem_interpolation_context &ctx_, base_matrix &M_,
const mesh_fem **mf_M_, size_type &icv_)
@@ -2789,7 +2794,7 @@
}
ga_instruction_elementary_transformation_hess
- (base_tensor &tt, base_tensor &Z_, const base_vector &co, size_type q,
+ (base_tensor &tt, const base_tensor &Z_, const base_vector &co, size_type
q,
pelementary_transformation e, const mesh_fem &mf_,
fem_interpolation_context &ctx_, base_matrix &M_,
const mesh_fem **mf_M_, size_type &icv_)
@@ -2974,7 +2979,7 @@
virtual int exec(void) {
GA_DEBUG_INFO("Instruction: interpolated base value");
ga_instruction_interpolate_base::exec();
- ctx.pf()->real_base_value(ctx, Z); // remember Z == ZZ
+ ctx.pf()->real_base_value(ctx, ZZ); // remember Z == ZZ
return ga_instruction_copy_val_base::exec();
}
@@ -2989,9 +2994,9 @@
: public ga_instruction_copy_grad_base, ga_instruction_interpolate_base {
// ctx --> Z(ndof,target_dim,N) --> t(Qmult*ndof,Qmult*target_dim,N)
virtual int exec(void) {
- GA_DEBUG_INFO("Instruction: interpolated base vgrad");
+ GA_DEBUG_INFO("Instruction: interpolated base grad");
ga_instruction_interpolate_base::exec();
- ctx.pf()->real_grad_base_value(ctx, Z); // remember Z == ZZ
+ ctx.pf()->real_grad_base_value(ctx, ZZ); // remember Z == ZZ
return ga_instruction_copy_grad_base::exec();
}
@@ -3008,7 +3013,7 @@
virtual int exec(void) {
GA_DEBUG_INFO("Instruction: interpolated base hessian");
ga_instruction_interpolate_base::exec();
- ctx.pf()->real_hess_base_value(ctx, Z); // remember Z == ZZ
+ ctx.pf()->real_hess_base_value(ctx, ZZ); // remember Z == ZZ
return ga_instruction_copy_hess_base::exec();
}
@@ -3063,7 +3068,7 @@
}
ga_instruction_elementary_transformation_val_base
- (base_tensor &t_, base_tensor &Z_, size_type q,
+ (base_tensor &t_, const base_tensor &Z_, size_type q,
pelementary_transformation e, const mesh_fem &mf_,
fem_interpolation_context &ctx_, base_matrix &M_,
const mesh_fem **mf_M_, size_type &icv_)
@@ -3088,7 +3093,7 @@
}
ga_instruction_elementary_transformation_grad_base
- (base_tensor &t_, base_tensor &Z_, size_type q,
+ (base_tensor &t_, const base_tensor &Z_, size_type q,
pelementary_transformation e, const mesh_fem &mf_,
fem_interpolation_context &ctx_, base_matrix &M_,
const mesh_fem **mf_M_, size_type &icv_)
@@ -3113,7 +3118,7 @@
}
ga_instruction_elementary_transformation_hess_base
- (base_tensor &t_, base_tensor &Z_, size_type q,
+ (base_tensor &t_, const base_tensor &Z_, size_type q,
pelementary_transformation e, const mesh_fem &mf_,
fem_interpolation_context &ctx_, base_matrix &M_,
const mesh_fem **mf_M_, size_type &icv_)
@@ -3238,18 +3243,19 @@
};
struct ga_instruction_trace : public ga_instruction {
- base_tensor &t, &tc1;
+ base_tensor &t;
+ const base_tensor &tc1;
size_type n;
// tc1(:,:,...,n,n) --> t(:,:,...)
virtual int exec(void) {
GA_DEBUG_INFO("Instruction: Trace");
GA_DEBUG_ASSERT(t.size()*n*n == tc1.size(), "Wrong sizes");
-
size_type s = t.size() * (n+1);
- for (base_tensor::iterator it = t.begin(), it1 = tc1.begin();
- it != t.end(); ++it, ++it1) {
+ base_tensor::iterator it = t.begin();
+ base_tensor::const_iterator it1 = tc1.begin();
+ for (; it != t.end(); ++it, ++it1) {
*it = scalar_type(0);
- base_tensor::iterator it2 = it1;
+ base_tensor::const_iterator it2 = it1;
*it += *it2;
for (size_type i = 1; i < n; ++i) { it2 += s; *it += *it2; }
}
@@ -3261,7 +3267,8 @@
};
struct ga_instruction_deviator : public ga_instruction {
- base_tensor &t, &tc1;
+ base_tensor &t;
+ const base_tensor &tc1;
size_type n;
// tc1(:,:,...,n,n) --> t(:,:,...,n,n)
virtual int exec(void) {
@@ -3272,10 +3279,11 @@
size_type nb = t.size()/(n*n);
size_type s = nb * (n+1), j = 0;
- for (base_tensor::iterator it = t.begin(), it1 = tc1.begin();
- j < nb; ++it, ++it1, ++j) {
+ base_tensor::iterator it = t.begin();
+ base_tensor::const_iterator it1 = tc1.begin();
+ for (; j < nb; ++it, ++it1, ++j) {
scalar_type tr(0);
- base_tensor::iterator it2 = it1;
+ base_tensor::const_iterator it2 = it1;
tr += *it2;
for (size_type i = 1; i < n; ++i) { it2 += s; tr += *it2; }
tr /= scalar_type(n);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Getfem-commits] r4938 - /trunk/getfem/src/getfem_generic_assembly.cc,
logari81 <=