Re: [deal.II] The periodic boundary condition for an RVE analysis

2021-04-29 Thread Daniel Arndt
Farzin,

std::vector::cell_iterator>>
periodicity_vector;

should be

std::vector::cell_iterator>>
periodicity_vector;

In general, I would recommend looking into step-45 (
https://www.dealii.org/current/doxygen/deal.II/step_45.html) for an example
using periodic boundary conditions.

Best,
Daniel

Am Do., 29. Apr. 2021 um 14:33 Uhr schrieb Farzin Mozafari <
mozafari.far...@gmail.com>:

> Dear Daniel,
>
> Thank you for your reply.
> I tried to follow your solution, but I am encountering an error. To what
> follows, I will post my code and error as well. I will be thankful if you
> give me a piece of advice to get rid of this error.
> As I mentioned, my domain is a linear elastic cube that I am going to
> impose PBCs on opposite facec.
>
> My code is:
>
>
> template 
> void CubeVector::meshing()
> {
> const Point LL(0, 0, 0);
> const Point RH(0.1, 0.1, 0.1);
> std::vector repetition(dim);
> repetition[0] = 1;
> repetition[1] = 1;
> repetition[2] = 1;
> GridGenerator::subdivided_hyper_rectangle(triangulation, repetition, LL,
> RH);
> std::string mesh_name = "Rectangle-mesh";
> std::ofstream outputmeshfile(mesh_name);
> GridOut gridout;
> gridout.write_eps(triangulation, outputmeshfile);
> std::cout << " Mesh file output to "
> << mesh_name
> << std::endl;
>
> // Boundary indicator // Assign name to every face. This indicators will
> be used for defining periodic faces.
> double Lenght_x = RH[0] - LL[0];
> double Lenght_y = RH[1] - LL[1];
> double Lenght_z = RH[2] - LL[2];
> for (auto& face : triangulation.active_face_iterators()){
> if (face->at_boundary())
> {
> if (face->center()[0] == 0) { face->set_boundary_id(10);}
> if (face->center()[0] == Lenght_x) { face->set_boundary_id(11);}
> if (face->center()[1] == 0) { face->set_boundary_id(20);}
> if (face->center()[1] == Lenght_y) { face->set_boundary_id(21);}
> if (face->center()[2] == 0) { face->set_boundary_id(30);}
> if (face->center()[2] == Lenght_z) { face->set_boundary_id(31);}
>
>
> }
> }
> std::vector GridGenerator::Triangulation::cell_iterator>>
> periodicity_vector;
>
> GridTools::collect_periodic_faces(triangulation,
> 10,
> 11,
> 0,
> periodicity_vector);
>
> }
>
>
> And the error is :
>
> /mnt/d/research/deal_ii_projects/3d_elasticity/step-1.cc: In member
> function ‘void CubeVector::meshing()’:
> /mnt/d/research/deal_ii_projects/3d_elasticity/step-1.cc:179:19: error:
> ‘Triangulation’ is not a member of ‘dealii::GridGenerator’
>   179 |GridGenerator::Triangulation::cell_iterator>>
>   |   ^
> /mnt/d/research/deal_ii_projects/3d_elasticity/step-1.cc:179:19: note:
> suggested alternatives:
> In file included from
> /usr/local/include/deal.II/grid/tria_description.h:23,
>  from /usr/local/include/deal.II/grid/tria.h:28,
>  from
> /mnt/d/research/deal_ii_projects/3d_elasticity/step-1.cc:2:
> /usr/local/include/deal.II/grid/cell_id.h:37:7: note:
>  ‘dealii::Triangulation’
>37 | class Triangulation;
>   |   ^
> In file included from /usr/local/include/deal.II/distributed/tria.h:27,
>  from /usr/local/include/deal.II/fe/fe_tools.h:30,
>  from /usr/local/include/deal.II/fe/fe_system.h:28,
>  from
> /mnt/d/research/deal_ii_projects/3d_elasticity/step-1.cc:11:
> /usr/local/include/deal.II/distributed/tria_base.h:302:9: note:
>  ‘dealii::parallel::Triangulation’
>   302 |   using Triangulation DEAL_II_DEPRECATED = TriangulationBase spacedim>;
>   | ^
> In file included from /usr/local/include/deal.II/fe/fe_tools.h:30,
>  from /usr/local/include/deal.II/fe/fe_system.h:28,
>  from
> /mnt/d/research/deal_ii_projects/3d_elasticity/step-1.cc:11:
> /usr/local/include/deal.II/distributed/tria.h:1403:11: note:
>  ‘dealii::parallel::distributed::Triangulation’
>  1403 | class Triangulation
>   |   ^
> /mnt/d/research/deal_ii_projects/3d_elasticity/step-1.cc:179:36: error:
> template argument 1 is invalid
>   179 |GridGenerator::Triangulation::cell_iterator>>
>   |^
> /mnt/d/research/deal_ii_projects/3d_elasticity/step-1.cc:179:39: error:
> template argument 1 is invalid
>   179 |GridGenerator::Triangulation::cell_iterator>>
>   |   ^
> /mnt/d/research/deal_ii_projects/3d_elasticity/step-1.cc:179:39: error:
> template argument 2 is invalid
> /mnt/d/research/deal_ii_projects/3d_elasticity/step-1.cc:179:52: error:
> expected unqualified-id before ‘>’ token
>   179 |GridGenerator::Triangulation::cell_iterator>>
>   |^~
> /mnt/d/research/deal_ii_projects/3d_elasticity/step-1.cc:182:14: error:
> ‘collect_periodic_faces’ is not a member of ‘dealii::GridTools’
>   182 |   GridTools::collect_periodic_faces(triangulation,
>   |  ^~
> 

Re: [deal.II] The periodic boundary condition for an RVE analysis

2021-04-29 Thread Farzin Mozafari
Dear Daniel,

Thank you for your reply.
I tried to follow your solution, but I am encountering an error. To what 
follows, I will post my code and error as well. I will be thankful if you 
give me a piece of advice to get rid of this error. 
As I mentioned, my domain is a linear elastic cube that I am going to 
impose PBCs on opposite facec.

My code is:


template 
void CubeVector::meshing()
{
const Point LL(0, 0, 0);
const Point RH(0.1, 0.1, 0.1);
std::vector repetition(dim); 
repetition[0] = 1;
repetition[1] = 1;
repetition[2] = 1;
GridGenerator::subdivided_hyper_rectangle(triangulation, repetition, LL, 
RH);
std::string mesh_name = "Rectangle-mesh";
std::ofstream outputmeshfile(mesh_name);
GridOut gridout;
gridout.write_eps(triangulation, outputmeshfile);
std::cout << " Mesh file output to "
<< mesh_name
<< std::endl;

// Boundary indicator // Assign name to every face. This indicators will be 
used for defining periodic faces.
double Lenght_x = RH[0] - LL[0];
double Lenght_y = RH[1] - LL[1];
double Lenght_z = RH[2] - LL[2];
for (auto& face : triangulation.active_face_iterators()){
if (face->at_boundary())
{
if (face->center()[0] == 0) { face->set_boundary_id(10);}
if (face->center()[0] == Lenght_x) { face->set_boundary_id(11);}
if (face->center()[1] == 0) { face->set_boundary_id(20);}
if (face->center()[1] == Lenght_y) { face->set_boundary_id(21);}
if (face->center()[2] == 0) { face->set_boundary_id(30);}
if (face->center()[2] == Lenght_z) { face->set_boundary_id(31);}


}
}
std::vector::cell_iterator>>
periodicity_vector;

GridTools::collect_periodic_faces(triangulation,
10,
11,
0,
periodicity_vector);

}


And the error is :

/mnt/d/research/deal_ii_projects/3d_elasticity/step-1.cc: In member 
function ‘void CubeVector::meshing()’:
/mnt/d/research/deal_ii_projects/3d_elasticity/step-1.cc:179:19: error: 
‘Triangulation’ is not a member of ‘dealii::GridGenerator’
  179 |GridGenerator::Triangulation::cell_iterator>>
  |   ^
/mnt/d/research/deal_ii_projects/3d_elasticity/step-1.cc:179:19: note: 
suggested alternatives:
In file included from /usr/local/include/deal.II/grid/tria_description.h:23,
 from /usr/local/include/deal.II/grid/tria.h:28,
 from 
/mnt/d/research/deal_ii_projects/3d_elasticity/step-1.cc:2:
/usr/local/include/deal.II/grid/cell_id.h:37:7: note:  
 ‘dealii::Triangulation’
   37 | class Triangulation;
  |   ^
In file included from /usr/local/include/deal.II/distributed/tria.h:27,
 from /usr/local/include/deal.II/fe/fe_tools.h:30,
 from /usr/local/include/deal.II/fe/fe_system.h:28,
 from 
/mnt/d/research/deal_ii_projects/3d_elasticity/step-1.cc:11:
/usr/local/include/deal.II/distributed/tria_base.h:302:9: note:  
 ‘dealii::parallel::Triangulation’
  302 |   using Triangulation DEAL_II_DEPRECATED = TriangulationBase;
  | ^
In file included from /usr/local/include/deal.II/fe/fe_tools.h:30,
 from /usr/local/include/deal.II/fe/fe_system.h:28,
 from 
/mnt/d/research/deal_ii_projects/3d_elasticity/step-1.cc:11:
/usr/local/include/deal.II/distributed/tria.h:1403:11: note:  
 ‘dealii::parallel::distributed::Triangulation’
 1403 | class Triangulation
  |   ^
/mnt/d/research/deal_ii_projects/3d_elasticity/step-1.cc:179:36: error: 
template argument 1 is invalid
  179 |GridGenerator::Triangulation::cell_iterator>>
  |^
/mnt/d/research/deal_ii_projects/3d_elasticity/step-1.cc:179:39: error: 
template argument 1 is invalid
  179 |GridGenerator::Triangulation::cell_iterator>>
  |   ^
/mnt/d/research/deal_ii_projects/3d_elasticity/step-1.cc:179:39: error: 
template argument 2 is invalid
/mnt/d/research/deal_ii_projects/3d_elasticity/step-1.cc:179:52: error: 
expected unqualified-id before ‘>’ token
  179 |GridGenerator::Triangulation::cell_iterator>>
  |^~
/mnt/d/research/deal_ii_projects/3d_elasticity/step-1.cc:182:14: error: 
‘collect_periodic_faces’ is not a member of ‘dealii::GridTools’
  182 |   GridTools::collect_periodic_faces(triangulation,
  |  ^~
/mnt/d/research/deal_ii_projects/3d_elasticity/step-1.cc:186:4: error: 
‘periodicity_vector’ was not declared in this scope
  186 |periodicity_vector);
  |^~
/mnt/d/research/deal_ii_projects/3d_elasticity/step-1.cc: At global scope:
/mnt/d/research/deal_ii_projects/3d_elasticity/step-1.cc:190:70: error: 
template argument 1 is invalid
  190 |  
std::vector> 
periodicity_vector;
  |
  ^~
/mnt/d/research/deal_ii_projects/3d_elasticity/step-1.cc:190:73: error: 
template argument 1 is invalid
  190 |  
std::vector> 
periodicity_vector;
  

[deal.II] deal.II Newsletter #164

2021-04-29 Thread 'Rene Gassmoeller' via deal.II User Group
Hello everyone!

This is deal.II newsletter #164.
It automatically reports recently merged features and discussions about the 
deal.II finite element library.


## Below you find a list of recently proposed or merged features:

#12113: DynamicSparsityPattern: Avoid bug with 64 bit integers (proposed by 
kronbichler) https://github.com/dealii/dealii/pull/12113

#12112: Do not redefine functions that we can import from the base class. 
(proposed by bangerth; merged) https://github.com/dealii/dealii/pull/12112

#12111: Provide TableBase::replicate_across_communicator(). (proposed by 
bangerth) https://github.com/dealii/dealii/pull/12111

#12110: Improve the documentation of the Table classes slightly. (proposed 
by bangerth; merged) https://github.com/dealii/dealii/pull/12110

#12109: Do not actually define the general Table class. (proposed by bangerth; 
merged) https://github.com/dealii/dealii/pull/12109

#12108: Fix typo from copy/paste (proposed by Rombur; merged) 
https://github.com/dealii/dealii/pull/12108

#12107: Replace some more occurrences of GeometryInfo. (proposed by bangerth; 
merged) https://github.com/dealii/dealii/pull/12107

#12106: Make Triangulation::get_boundary_ids() work for non-hypercube cells. 
(proposed by bangerth; merged) https://github.com/dealii/dealii/pull/12106

#12105: Fix a function for non-quads/hexes. (proposed by bangerth; merged) 
https://github.com/dealii/dealii/pull/12105

#12104: Provide links to tutorial programs. (proposed by bangerth; merged) 
https://github.com/dealii/dealii/pull/12104

#12103: Simplify use of a function in ReferenceCell. (proposed by bangerth; 
merged) https://github.com/dealii/dealii/pull/12103

#12101: Add class RefSpaceFEFieldFunction (proposed by simonsticko) 
https://github.com/dealii/dealii/pull/12101

#12100: Fix up tests for ICC 2018 (proposed by masterleinad; merged) 
https://github.com/dealii/dealii/pull/12100

#12099: Fix the number of entries in the FEValues view cache. (proposed by 
bangerth; merged) https://github.com/dealii/dealii/pull/12099

#12098: Fix parameter_handler/parameter_handler_25 for clang12 (proposed by 
masterleinad; merged) https://github.com/dealii/dealii/pull/12098

#12097: Fix lac/vector_memory for Clang12 (proposed by masterleinad; merged) 
https://github.com/dealii/dealii/pull/12097

#12096: Fix base/unsubscribe_subscriptor for clang (proposed by masterleinad; 
merged) https://github.com/dealii/dealii/pull/12096

#12095: Fix mpi/extract_boundary_dofs (proposed by masterleinad; merged) 
https://github.com/dealii/dealii/pull/12095

#12094: Provide a move constructor for Functions::InterpolatedUniformGridData. 
(proposed by bangerth; merged) https://github.com/dealii/dealii/pull/12094

#12093: Guard if code in MatrixFreeTools if doxygen is used (proposed by 
peterrum; merged) https://github.com/dealii/dealii/pull/12093

#12091: tests/sundials/* Use new variants already for version 5.2.0 onwards 
(proposed by tamiko; merged) https://github.com/dealii/dealii/pull/12091

#12090: fix all-headers/sundials/sundials_backport.h test (proposed by tamiko) 
https://github.com/dealii/dealii/pull/12090

#12089: add missing instantiations (proposed by tamiko; merged) 
https://github.com/dealii/dealii/pull/12089

#12088: Fix a static_assert to actually make sense. (proposed by bangerth; 
merged) https://github.com/dealii/dealii/pull/12088

#12087: Avoid warning about out-of-bound access in Tensor (proposed by 
masterleinad) https://github.com/dealii/dealii/pull/12087

#12086: Fix warning about unused function in PETScWrappers source file 
(proposed by masterleinad; merged) https://github.com/dealii/dealii/pull/12086

#12085: Fix compilation with gcc-5. (proposed by drwells; merged) 
https://github.com/dealii/dealii/pull/12085

#12084: Guard SUNDIALS variables more carefully (proposed by masterleinad; 
merged) https://github.com/dealii/dealii/pull/12084

#12083: Simplify some type computations in FEValuesViews. (proposed by 
bangerth; merged) https://github.com/dealii/dealii/pull/12083

#12082: Move GridReordering::reorder_cells(). (proposed by drwells; merged) 
https://github.com/dealii/dealii/pull/12082

#12079: Add level set functions for a plane and a sphere (proposed by 
simonsticko; merged) https://github.com/dealii/dealii/pull/12079

#12077: Remove `parallel::distributed::ErrorPredictor`. (proposed by 
marcfehling; merged) https://github.com/dealii/dealii/pull/12077

#12076: Correct 2-D FE_Nedelec Interpolation (proposed by harmonj; merged) 
https://github.com/dealii/dealii/pull/12076

#12062: Add function estimating Function bounds over a BoundingBox (proposed by 
simonsticko; merged) https://github.com/dealii/dealii/pull/12062

#12057: Provide a move constructor for InterpolatedTensorProductGridData. 
(proposed by bangerth; merged) https://github.com/dealii/dealii/pull/12057

#12022: Add AlignedVector::replicate_across_communicator() (proposed by 
bangerth; merged) https://github.com/dealii/dealii/pull/12022

#11122: 

[deal.II] Re:

2021-04-29 Thread Bruno Turcksin
Chenyi,

Unless you have measured that this is a bottleneck in you code, you should 
use what's the more readable. If there is a difference between these two 
codes, it would need to be in a hot loop to matter. My advice is to write 
easy to understand code and once you have made sure that the code works, 
then use a profiler to find the bottleneck and optimize the code.

Best,

Bruno

On Thursday, April 29, 2021 at 11:38:11 AM UTC-4 swa...@gmail.com wrote:

> Dear dealii group,
>
> I have a question regarding the computational efficiency of two styles of 
> codes. For example, when computing the residual of momentum balance, one 
> can realize d_epsilon \cdot sigma (the dot production between the test 
> function of strain and stress) by
>
> 1.  compute multiplications one by one and sum them up
> for (const unsigned int i : fe_values_u_p.dof_indices())
> {
> for (unsigned int m=0; m { 
> for (unsigned int n=0; n {
> cell_rhs(i) += 
> fe_values_u_p.shape_grad_component(i,q,index_u.first_vector_component+m)[n] 
>  * stress[m][n] * fe_values_u_p.JxW(q); //solid stress
> }
>
> }
>   }
> 2.  extract the tensor and compute the dot product directly
>
> const SymmetricTensor<2,dim> bfem_i = 
> ShapeTools::elastic_strain_shape(fe_values,i,q);
> for (const unsigned int i : fe_values_u_p.dof_indices())
> {
> cell_rhs(i) = contract2(bfem_i, stress) * fe_values_u_p.JxW(q);
> }
>
> Do both perform the same? or I should prevent the loop style in dealii to 
> speed up the computation?
>
> Best,
> Chenyi
>
>
>
>
>

-- 
The deal.II project is located at http://www.dealii.org/
For mailing list/forum options, see 
https://groups.google.com/d/forum/dealii?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"deal.II User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to dealii+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/dealii/a5d9e77e-63f9-40cb-b7b0-2cfdcc3457a9n%40googlegroups.com.


[deal.II]

2021-04-29 Thread Chenyi LUO
Dear dealii group,

I have a question regarding the computational efficiency of two styles of
codes. For example, when computing the residual of momentum balance, one
can realize d_epsilon \cdot sigma (the dot production between the test
function of strain and stress) by

1.  compute multiplications one by one and sum them up
for (const unsigned int i : fe_values_u_p.dof_indices())
{
for (unsigned int m=0; m bfem_i =
ShapeTools::elastic_strain_shape(fe_values,i,q);
for (const unsigned int i : fe_values_u_p.dof_indices())
{
cell_rhs(i) = contract2(bfem_i, stress) * fe_values_u_p.JxW(q);
}

Do both perform the same? or I should prevent the loop style in dealii to
speed up the computation?

Best,
Chenyi

-- 
The deal.II project is located at http://www.dealii.org/
For mailing list/forum options, see 
https://groups.google.com/d/forum/dealii?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"deal.II User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to dealii+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/dealii/CANmBX4QdwnBiJx8yA1XTo%3DOkSuoqa7JjO4Hsc7os%3D9s-wSw_iA%40mail.gmail.com.


Re: [deal.II] Accessing cell data from its ID

2021-04-29 Thread Daniel Arndt
Corbin,

if you only ever need the DoF mapping periodic
DoFTools::make_periodicity_constrainst (
https://www.dealii.org/current/doxygen/deal.II/namespaceDoFTools.html#a03324e6e060c6a55191b2c60ad871eab)
sound like the right tool for you to use.
Just create a separate AffineConstraints object to be filled and hand it to
that function. Then, you can loop through the filled object to either use
it as a map directly or you can create a separate data structure. Note that
the constraints might not be in the order (bottom -> top) you need them to
be. So you might need to adjust that yourself.

Best,
Daniel


Am Do., 29. Apr. 2021 um 04:48 Uhr schrieb Corbin Foucart <
corbin.fouc...@gmail.com>:

> Hi all,
>
> I'm looking to map DoF from the bottom of an extruded volumetric mesh to
> the corresponding DOF on the surface of the mesh. Right now, I'm saving the
> cell "number"/ID of each cell in the bottom layer of the volume mesh, and
> want to match it with a surface cell by comparing their centers
>
>- I could loop over all the volume cells until I find the one matching
>the surface cell center, but as I have the cell numbers, I would rather
>access the cell center from the cell id (which looks to me like an unsigned
>int)
>- something like get_cell(cell_id)->center  --- is this possible?
>- Alternatively, I was thinking that a periodic boundary condition
>linking the bottom of the volume mesh with the top might be able to achieve
>the same thing, but I wasn't sure how to go about setting it up
>
> Any pointers would be appreciated!
> Corbin
>
> --
> The deal.II project is located at http://www.dealii.org/
> For mailing list/forum options, see
> https://groups.google.com/d/forum/dealii?hl=en
> ---
> You received this message because you are subscribed to the Google Groups
> "deal.II User Group" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to dealii+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/dealii/122e1b62-e672-446b-8c25-ce6012c1fe3fn%40googlegroups.com
> 
> .
>

-- 
The deal.II project is located at http://www.dealii.org/
For mailing list/forum options, see 
https://groups.google.com/d/forum/dealii?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"deal.II User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to dealii+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/dealii/CAOYDWbJvkw_0yW2KtsMntKMt7eSEYBUq_jJOoP2EvSjWT5O%2B4w%40mail.gmail.com.


[deal.II] Re: Accessing cell data from its ID

2021-04-29 Thread simon...@gmail.com
Hi,
I'm not sure I understand exactly what you want to do, but if you know 
which cell you want in a triangulation by level and index you can get its 
center by creating the cell iterator. For example:

const int dim = 2;
Triangulation triangulation;
GridGenerator::hyper_cube(triangulation);

const unsigned int cell_level = 0, cell_index = 0;
const auto cell = Triangulation::active_cell_iterator(,

  
cell_level,

  
cell_index);
std::cout << cell->center() << std::endl;


Maybe this answer is useful too:
https://github.com/dealii/dealii/wiki/Frequently-Asked-Questions#can-i-convert-triangulation-cell-iterators-to-dofhandler-cell-iterators

Best,
Simon

On Thursday, April 29, 2021 at 10:48:30 AM UTC+2 corbin@gmail.com wrote:

> Hi all,
>
> I'm looking to map DoF from the bottom of an extruded volumetric mesh to 
> the corresponding DOF on the surface of the mesh. Right now, I'm saving the 
> cell "number"/ID of each cell in the bottom layer of the volume mesh, and 
> want to match it with a surface cell by comparing their centers
>
>- I could loop over all the volume cells until I find the one matching 
>the surface cell center, but as I have the cell numbers, I would rather 
>access the cell center from the cell id (which looks to me like an 
> unsigned 
>int)
>- something like get_cell(cell_id)->center  --- is this possible?
>- Alternatively, I was thinking that a periodic boundary condition 
>linking the bottom of the volume mesh with the top might be able to 
> achieve 
>the same thing, but I wasn't sure how to go about setting it up
>
> Any pointers would be appreciated!
> Corbin
>

-- 
The deal.II project is located at http://www.dealii.org/
For mailing list/forum options, see 
https://groups.google.com/d/forum/dealii?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"deal.II User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to dealii+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/dealii/3833b90d-1855-494f-953c-38fa2f4ce868n%40googlegroups.com.


[deal.II] Accessing cell data from its ID

2021-04-29 Thread Corbin Foucart
Hi all,

I'm looking to map DoF from the bottom of an extruded volumetric mesh to 
the corresponding DOF on the surface of the mesh. Right now, I'm saving the 
cell "number"/ID of each cell in the bottom layer of the volume mesh, and 
want to match it with a surface cell by comparing their centers

   - I could loop over all the volume cells until I find the one matching 
   the surface cell center, but as I have the cell numbers, I would rather 
   access the cell center from the cell id (which looks to me like an unsigned 
   int)
   - something like get_cell(cell_id)->center  --- is this possible?
   - Alternatively, I was thinking that a periodic boundary condition 
   linking the bottom of the volume mesh with the top might be able to achieve 
   the same thing, but I wasn't sure how to go about setting it up

Any pointers would be appreciated!
Corbin

-- 
The deal.II project is located at http://www.dealii.org/
For mailing list/forum options, see 
https://groups.google.com/d/forum/dealii?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"deal.II User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to dealii+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/dealii/122e1b62-e672-446b-8c25-ce6012c1fe3fn%40googlegroups.com.