getfem-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Getfem-commits] [getfem-commits] branch master updated: Fix and simplif


From: Konstantinos Poulios
Subject: [Getfem-commits] [getfem-commits] branch master updated: Fix and simplify ga_local_projection for models with internal variables
Date: Sat, 18 Apr 2020 09:58:46 -0400

This is an automated email from the git hooks/post-receive script.

logari81 pushed a commit to branch master
in repository getfem.

The following commit(s) were added to refs/heads/master by this push:
     new 6ff98d3  Fix and simplify ga_local_projection for models with internal 
variables
6ff98d3 is described below

commit 6ff98d372828f5d48558f6610095e4d122edfa0f
Author: Konstantinos Poulios <address@hidden>
AuthorDate: Sat Apr 18 15:58:40 2020 +0200

    Fix and simplify ga_local_projection for models with internal variables
---
 src/getfem_generic_assembly_interpolation.cc | 17 ++++++++---------
 1 file changed, 8 insertions(+), 9 deletions(-)

diff --git a/src/getfem_generic_assembly_interpolation.cc 
b/src/getfem_generic_assembly_interpolation.cc
index d36f22e..2f45470 100644
--- a/src/getfem_generic_assembly_interpolation.cc
+++ b/src/getfem_generic_assembly_interpolation.cc
@@ -443,23 +443,22 @@ namespace getfem {
 
     // Could be improved by not performing the assembly of the global mass 
matrix
     // working locally. This means a specific assembly.
-    model_real_sparse_matrix M(mf.nb_dof(), mf.nb_dof());
+    size_type nbdof = mf.nb_dof();
+    model_real_sparse_matrix M(nbdof, nbdof);
     asm_mass_matrix(M, mim, mf, region);
+    // FIXME: M should be cached for performance
 
-    ga_workspace workspace(md);
-    size_type nbdof = md.nb_dof();
-    gmm::sub_interval I(nbdof, mf.nb_dof());
+    ga_workspace workspace(md, ga_workspace::inherit::NONE);
+    gmm::sub_interval I(0,nbdof);
     workspace.add_fem_variable("c__dummy_var_95_", mf, I, base_vector(nbdof));
     if (mf.get_qdims().size() > 1)
       
workspace.add_expression("("+expr+"):Test_c__dummy_var_95_",mim,region,2);
     else
       
workspace.add_expression("("+expr+").Test_c__dummy_var_95_",mim,region,2);
-    base_vector residual(nbdof+mf.nb_dof());
-    workspace.set_assembled_vector(residual);
+    getfem::base_vector F(nbdof);
+    workspace.set_assembled_vector(F);
     workspace.assembly(1);
-    getfem::base_vector F(mf.nb_dof());
-    gmm::resize(result, mf.nb_dof());
-    gmm::copy(gmm::sub_vector(residual, I), F);
+    gmm::resize(result, nbdof);
 
     getfem::base_matrix loc_M;
     getfem::base_vector loc_U;



reply via email to

[Prev in Thread] Current Thread [Next in Thread]