[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Getfem-commits] r4975 - /trunk/getfem/src/getfem_models.cc
From: |
Yves . Renard |
Subject: |
[Getfem-commits] r4975 - /trunk/getfem/src/getfem_models.cc |
Date: |
Tue, 28 Apr 2015 10:49:30 -0000 |
Author: renard
Date: Tue Apr 28 12:49:28 2015
New Revision: 4975
URL: http://svn.gna.org/viewcvs/getfem?rev=4975&view=rev
Log:
small fix
Modified:
trunk/getfem/src/getfem_models.cc
Modified: trunk/getfem/src/getfem_models.cc
URL:
http://svn.gna.org/viewcvs/getfem/trunk/getfem/src/getfem_models.cc?rev=4975&r1=4974&r2=4975&view=diff
==============================================================================
--- trunk/getfem/src/getfem_models.cc (original)
+++ trunk/getfem/src/getfem_models.cc Tue Apr 28 12:49:28 2015
@@ -3618,12 +3618,38 @@
std::string test_varname
= "Test_" + sup_previous_and_dot_to_varname(varname);
const mesh_fem &mf_u = md.mesh_fem_of_variable(varname);
- size_type qdim = mf_u.get_qdim();
+ size_type dim = mf_u.linked_mesh().dim(), qdim = mf_u.get_qdim(),
qdim_data = 1;
std::string expr;
- if (qdim == 1)
- expr = "(("+dataname+")*Grad_"+varname+").Grad_"+test_varname;
- else
- expr = "(("+dataname+")*Grad_"+varname+"):Grad_"+test_varname;
+
+ if (md.variable_exists(dataname)) {
+ const mesh_fem *mf = md.pmesh_fem_of_variable(dataname);
+ size_type n = gmm::vect_size(md.real_variable(dataname));
+ if (mf) qdim_data = mf->get_qdim() * (n / mf->nb_dof());
+ else qdim_data = n;
+ }
+
+ if (qdim == 1) {
+ if (qdim_data != 1) {
+ GMM_ASSERT1(qdim_data == gmm::sqr(dim),
+ "Wrong data size for generic elliptic brick");
+ expr =
"((Reshape("+dataname+",meshdim,meshdim))*Grad_"+varname+").Grad_"
+ + test_varname;
+ } else {
+ expr = "(("+dataname+")*Grad_"+varname+").Grad_"+test_varname;
+ }
+ } else {
+ if (qdim_data != 1) {
+ if (qdim_data == gmm::sqr(dim))
+ expr =
"((Reshape("+dataname+",meshdim,meshdim))*Grad_"+varname+"):Grad_"
+ +test_varname;
+ else if (qdim_data == gmm::sqr(gmm::sqr(dim)))
+ expr =
"((Reshape("+dataname+",meshdim,meshdim,meshdim,meshdim))*Grad_"
+ +varname+"):Grad_"+test_varname;
+ else GMM_ASSERT1(false, "Wrong data size for generic elliptic
brick");
+ } else {
+ expr = "(("+dataname+")*Grad_"+varname+"):Grad_"+test_varname;
+ }
+ }
size_type ib = add_linear_generic_assembly_brick
(md, mim, expr, region, true, true, "Generic elliptic", true);
if (ib == size_type(-1))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Getfem-commits] r4975 - /trunk/getfem/src/getfem_models.cc,
Yves . Renard <=