[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Getfem-commits] r5054 - in /trunk/getfem: interface/src/gf_asm.cc src/g
From: |
logari81 |
Subject: |
[Getfem-commits] r5054 - in /trunk/getfem: interface/src/gf_asm.cc src/getfem_generic_assembly.cc |
Date: |
Mon, 27 Jul 2015 08:01:45 -0000 |
Author: logari81
Date: Mon Jul 27 10:01:44 2015
New Revision: 5054
URL: http://svn.gna.org/viewcvs/getfem?rev=5054&view=rev
Log:
make the mesh argument optional in the analysis of generic assembly expressions
Modified:
trunk/getfem/interface/src/gf_asm.cc
trunk/getfem/src/getfem_generic_assembly.cc
Modified: trunk/getfem/interface/src/gf_asm.cc
URL:
http://svn.gna.org/viewcvs/getfem/trunk/getfem/interface/src/gf_asm.cc?rev=5054&r1=5053&r2=5054&view=diff
==============================================================================
--- trunk/getfem/interface/src/gf_asm.cc (original)
+++ trunk/getfem/interface/src/gf_asm.cc Mon Jul 27 10:01:44 2015
@@ -510,9 +510,18 @@
static void do_expression_analysis(mexargs_in& in) {
- getfem::mesh *mesh = in.pop().to_mesh();
std::string expr = in.pop().to_string();
- size_type der_order = in.pop().to_integer(0, 2);
+
+ bool with_mesh = in.remaining() && in.front().is_mesh();
+ bool with_mim = !with_mesh && in.remaining() && in.front().is_mesh_im();
+
+ getfem::mesh dummy_mesh;
+ const getfem::mesh_im dummy_mim(with_mesh ? *(in.pop().to_mesh()) :
dummy_mesh);
+ const getfem::mesh_im &mim = with_mim ? *(in.pop().to_const_mesh_im())
+ : dummy_mim;
+
+ size_type der_order = in.remaining() && in.front().is_integer()
+ ? in.pop().to_integer(0, 2) : 0;
getfem::ga_workspace workspace1;
getfem::model dummy_md;
bool with_model = in.remaining() && in.front().is_model();
@@ -528,12 +537,14 @@
while (in.remaining()) {
std::string varname = in.pop().to_string();
+ GMM_ASSERT1(in.remaining() && in.front().is_integer(),
+ "Expected variable or data flag after variable " << varname)
bool is_cte(in.pop().to_integer() == 0);
const getfem::mesh_fem *mf(0);
const getfem::im_data *mimd(0);
- if (in.front().is_mesh_fem())
+ if (in.remaining() && in.front().is_mesh_fem())
mf = in.pop().to_const_mesh_fem();
- else if (in.front().is_mesh_im_data())
+ else if (in.remaining() && in.front().is_mesh_im_data())
mimd = in.pop().to_const_mesh_im_data();
GMM_ASSERT1(varnames.count(varname) == 0,
"The same variable/constant name is repeated twice: "
@@ -558,11 +569,8 @@
}
}
- getfem::mesh_im dummy_mim(*mesh);
-
- workspace.add_expression(expr, dummy_mim,
- getfem::ga_workspace::dummy_region,
- der_order);
+ workspace.add_expression(expr, mim, getfem::ga_workspace::dummy_region,
+ der_order);
workspace.print(cout);
}
@@ -1179,11 +1187,11 @@
);
- /address@hidden ('expression analysis', @tm mesh, @str expression [,
der_order] [, @tmodel model] [, @str varname, @int is_variable[, address@hidden
mf, @tmimd mimd}], ...])
+ /address@hidden ('expression analysis', @str expression [, address@hidden
mesh | @tmim mim}] [, der_order] [, @tmodel model] [, @str varname, @int
is_variable[, address@hidden mf | @tmimd mimd}], ...])
Analyse a high-level generic assembly expression and print
information about the provided address@hidden/
sub_command
- ("expression analysis", 3, -1, 0, 0,
+ ("expression analysis", 1, -1, 0, 0,
do_expression_analysis(in);
);
Modified: trunk/getfem/src/getfem_generic_assembly.cc
URL:
http://svn.gna.org/viewcvs/getfem/trunk/getfem/src/getfem_generic_assembly.cc?rev=5054&r1=5053&r2=5054&view=diff
==============================================================================
--- trunk/getfem/src/getfem_generic_assembly.cc (original)
+++ trunk/getfem/src/getfem_generic_assembly.cc Mon Jul 27 10:01:44 2015
@@ -4629,8 +4629,10 @@
}
static size_type ref_elt_dim_of_mesh(const mesh &m) {
- GMM_ASSERT1(m.convex_index().card(), "Mesh with no elements");
- return m.trans_of_convex(m.convex_index().first())->dim();
+ if (m.convex_index().card())
+ return m.trans_of_convex(m.convex_index().first())->dim();
+ else
+ return size_type(0);
}
void ga_workspace::add_tree(ga_tree &tree, const mesh &m,
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Getfem-commits] r5054 - in /trunk/getfem: interface/src/gf_asm.cc src/getfem_generic_assembly.cc,
logari81 <=