getfem-commits
[Top][All Lists]
Advanced

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

[Getfem-commits] (no subject)


From: Konstantinos Poulios
Subject: [Getfem-commits] (no subject)
Date: Sat, 23 Mar 2019 02:39:18 -0400 (EDT)

branch: master
commit 1af40fc293dd133a9dfdec62fb84646c9976241b
Author: Konstantinos Poulios <address@hidden>
Date:   Sat Mar 23 07:39:01 2019 +0100

    Increase constness in model::var_description
---
 src/getfem/getfem_models.h | 40 ++++++++++++++--------------
 src/getfem_models.cc       | 65 +++++++++++++++++++++++-----------------------
 2 files changed, 51 insertions(+), 54 deletions(-)

diff --git a/src/getfem/getfem_models.h b/src/getfem/getfem_models.h
index 2d884ad..c77fca5 100644
--- a/src/getfem/getfem_models.h
+++ b/src/getfem/getfem_models.h
@@ -146,22 +146,22 @@ namespace getfem {
 
     struct var_description {
 
-      bool is_variable;  // This is a variable or a parameter.
-      bool is_disabled;  // For a variable, to be solved or not
-      bool is_complex;   // The variable is complex numbers
+      const bool is_variable;   // This is a variable or a parameter.
+      bool is_disabled;         // For a variable, to be solved or not
+      const bool is_complex;    // The variable is complex numbers
       bool is_affine_dependent; // The variable depends in an affine way
                                 // to another variable.
-      bool is_fem_dofs;  // The variable is the dofs of a fem
+      const bool is_fem_dofs;   // The variable is the dofs of a fem
       size_type n_iter;         // Number of versions of the variable stored.
       size_type n_temp_iter;    // Number of additional temporary versions
       size_type default_iter;   // default iteration number.
 
       ptime_scheme ptsc;        // For optional time integration scheme
 
-      var_description_filter filter;       // Version of an optional filter
+      const var_description_filter filter; // Version of an (optional) filter
                                            // on the dofs
-      size_type filter_region;       // Optional region for the filter
-      std::string filter_var;        // Optional variable name for the filter
+      const size_type filter_region; // Optional region for the filter
+      const std::string filter_var;  // Optional variable name for the filter
       const mesh_im *filter_mim;     // Optional integration method for the 
filter
 
       // fem or im_data description of the variable
@@ -190,26 +190,22 @@ namespace getfem {
       std::string org_name; // Name of the original variable for affine
                             // dependent variables
 
-      size_type qdim() const { return qdims.total_size(); }
-
-      var_description(bool is_var = false, bool is_com = false,
-                      bool is_fem = false, size_type n_it = 1,
+      var_description(bool is_var = false, bool is_compl = false,
+                      const mesh_fem *mf_ = 0, const im_data *imd_ = 0,
+                      size_type n_it = 1,
                       var_description_filter filter_ = VDESCRFILTER_NO,
-                      const mesh_fem *mf_ = 0,
                       size_type filter_reg = size_type(-1),
-                      bgeot::multi_index qdims_ = bgeot::multi_index(),
                       const std::string &filter_var_ = std::string(""),
-                      const mesh_im *filter_mim_ = 0, const im_data *imd_ = 0)
-        : is_variable(is_var), is_disabled(false), is_complex(is_com),
-          is_affine_dependent(false), is_fem_dofs(is_fem),
+                      const mesh_im *filter_mim_ = 0)
+        : is_variable(is_var), is_disabled(false), is_complex(is_compl),
+          is_affine_dependent(false),
+          is_fem_dofs(mf_ != 0),
           n_iter(std::max(size_type(1), n_it)), n_temp_iter(0),
           default_iter(0), ptsc(0),
           filter(filter_), filter_region(filter_reg), filter_var(filter_var_),
-          filter_mim(filter_mim_),
-          mf(mf_), imd(imd_), qdims(qdims_), v_num(0),
-          v_num_data(n_iter, act_counter()), I(0,0),
-          alpha(1) {
-        
+          filter_mim(filter_mim_), mf(mf_), imd(imd_), qdims(),
+          v_num(0), v_num_data(n_iter, act_counter()), I(0,0), alpha(1)
+      {
         if (filter != VDESCRFILTER_NO && mf != 0)
           partial_mf = std::make_shared<partial_mesh_fem>(*mf);
         // v_num_data = v_num;
@@ -217,6 +213,8 @@ namespace getfem {
         GMM_ASSERT1(qdim(), "Attempt to create a null size variable");
       }
 
+      size_type qdim() const { return qdims.total_size(); }
+
       // add a temporary version for time integration schemes. Automatically
       // set the default iter to it. id_num is an identifier. Do not add
       // the version if a temporary already exist with this identifier.
diff --git a/src/getfem_models.cc b/src/getfem_models.cc
index 8a75b86..0aaa403 100644
--- a/src/getfem_models.cc
+++ b/src/getfem_models.cc
@@ -667,23 +667,21 @@ namespace getfem {
 
   void model::add_fixed_size_variable(const std::string &name, size_type size,
                                       size_type niter) {
-    check_name_validity(name);
-    variables[name] = var_description(true, is_complex(), false, niter);
-    GMM_ASSERT1(size, "Variable of null size are not allowed");
-    variables[name].qdims[0] = size;
-    act_size_to_be_done = true;
-    variables[name].set_size();
+    bgeot::multi_index sizes(1);
+    sizes[0] = size;
+    add_fixed_size_variable(name, sizes, niter);
   }
 
   void model::add_fixed_size_variable(const std::string &name,
                                       const bgeot::multi_index &sizes,
                                       size_type niter) {
     check_name_validity(name);
-    variables[name] = var_description(true, is_complex(), false, niter,
-                                      VDESCRFILTER_NO, 0, size_type(-1),
-                                      sizes);
+    variables.emplace(name, var_description(true, is_complex(), 0, 0, niter));
+    variables[name].qdims = sizes;
     act_size_to_be_done = true;
     variables[name].set_size();
+    GMM_ASSERT1(variables[name].qdim(),
+                "Variables of null size are not allowed");
   }
 
   void model::resize_fixed_size_variable(const std::string &name,
@@ -719,7 +717,7 @@ namespace getfem {
                                   const bgeot::multi_index &sizes,
                                   size_type niter) {
     check_name_validity(name);
-    variables[name] = var_description(false, is_complex(), false, niter);
+    variables.emplace(name, var_description(false, is_complex(), 0, 0, niter));
     variables[name].qdims = sizes;
     GMM_ASSERT1(variables[name].qdim(), "Data of null size are not allowed");
     variables[name].set_size();
@@ -755,20 +753,20 @@ namespace getfem {
     gmm::copy(t.as_vector(), set_complex_variable(name));
   }
 
-  void model::add_im_data(const std::string &name, const im_data &im_data,
+  void model::add_im_data(const std::string &name, const im_data &imd,
                           size_type niter) {
     check_name_validity(name);
-    variables[name] = var_description(false, is_complex(), false, niter);
-    variables[name].imd = &im_data;
+    variables.emplace(name,
+                      var_description(false, is_complex(), 0, &imd, niter));
     variables[name].set_size();
-    add_dependency(im_data);
+    add_dependency(imd);
   }
 
   void model::add_fem_variable(const std::string &name, const mesh_fem &mf,
                                size_type niter) {
     check_name_validity(name);
-    variables[name] = var_description(true, is_complex(), true, niter,
-                                      VDESCRFILTER_NO, &mf);
+    variables.emplace(name, var_description(true, is_complex(), &mf, 0, niter,
+                                            VDESCRFILTER_NO));
     variables[name].set_size();
     add_dependency(mf);
     act_size_to_be_done = true;
@@ -779,8 +777,8 @@ namespace getfem {
                                         const mesh_fem &mf,
                                         size_type region, size_type niter) {
     check_name_validity(name);
-    variables[name] = var_description(true, is_complex(), true, niter,
-                                      VDESCRFILTER_REGION, &mf, region);
+    variables.emplace(name, var_description(true, is_complex(), &mf, 0, niter,
+                                            VDESCRFILTER_REGION, region));
     variables[name].set_size();
     act_size_to_be_done = true;
     add_dependency(mf);
@@ -793,7 +791,7 @@ namespace getfem {
     VAR_SET::const_iterator it = find_variable(org_name);
     GMM_ASSERT1(it->second.is_variable && !(it->second.is_affine_dependent),
                 "The original variable should be a variable");
-    variables[name] = variables[org_name];
+    variables.emplace(name, variables[org_name]);
     variables[name].is_affine_dependent = true;
     variables[name].org_name = org_name;
     variables[name].alpha = alpha;
@@ -803,8 +801,8 @@ namespace getfem {
   void model::add_fem_data(const std::string &name, const mesh_fem &mf,
                            dim_type qdim, size_type niter) {
     check_name_validity(name);
-    variables[name] = var_description(false, is_complex(), true, niter,
-                                      VDESCRFILTER_NO, &mf);
+    variables.emplace(name, var_description(false, is_complex(), &mf, 0, niter,
+                                            VDESCRFILTER_NO));
     variables[name].qdims[0] = qdim;
     GMM_ASSERT1(qdim, "Data of null size are not allowed");
     variables[name].set_size();
@@ -814,8 +812,8 @@ namespace getfem {
   void model::add_fem_data(const std::string &name, const mesh_fem &mf,
                            const bgeot::multi_index &sizes, size_type niter) {
     check_name_validity(name);
-    variables[name] = var_description(false, is_complex(), true, niter,
-                                      VDESCRFILTER_NO, &mf);
+    variables.emplace(name, var_description(false, is_complex(), &mf, 0, niter,
+                                            VDESCRFILTER_NO));
     variables[name].qdims = sizes;
     GMM_ASSERT1(variables[name].qdim(), "Data of null size are not allowed");
     variables[name].set_size();
@@ -826,9 +824,9 @@ namespace getfem {
                              const std::string &primal_name,
                              size_type niter) {
     check_name_validity(name);
-    variables[name] = var_description(true, is_complex(), true, niter,
-                                      VDESCRFILTER_CTERM, &mf, 0,
-                                      bgeot::multi_index(), primal_name);
+    variables.emplace(name, var_description(true, is_complex(), &mf, 0, niter,
+                                            VDESCRFILTER_CTERM, size_type(-1),
+                                            primal_name));
     variables[name].set_size();
     act_size_to_be_done = true;
     add_dependency(mf);
@@ -838,21 +836,22 @@ namespace getfem {
                              size_type region, const std::string &primal_name,
                              size_type niter) {
     check_name_validity(name);
-    variables[name] = var_description(true, is_complex(), true, niter,
-                                      VDESCRFILTER_REGION_CTERM, &mf, region,
-                                      bgeot::multi_index(), primal_name);
+    variables.emplace(name, var_description(true, is_complex(), &mf, 0, niter,
+                                            VDESCRFILTER_REGION_CTERM, region,
+                                            primal_name));
     variables[name].set_size();
     act_size_to_be_done = true;
     add_dependency(mf);
   }
 
   void model::add_multiplier(const std::string &name, const mesh_fem &mf,
-                             const std::string &primal_name,const mesh_im &mim,
+                             const std::string &primal_name,
+                             const mesh_im &mim,
                              size_type region, size_type niter) {
     check_name_validity(name);
-    variables[name] = var_description(true, is_complex(), true, niter,
-                                      VDESCRFILTER_INFSUP, &mf, region,
-                                      bgeot::multi_index(), primal_name, &mim);
+    variables.emplace(name, var_description(true, is_complex(), &mf, 0, niter,
+                                            VDESCRFILTER_INFSUP, region,
+                                            primal_name, &mim));
     variables[name].set_size();
     act_size_to_be_done = true;
     add_dependency(mf);



reply via email to

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