[deal.II] Re: Very basic question on setting boundary id

2016-11-13 Thread Jaekwang Kim
Problem Solved! Thank you!! 

2016년 11월 13일 일요일 오후 5시 25분 20초 UTC-6, Daniel Arndt 님의 말:
>
> Jaekwang,
>
> It seems that you are missing
> constraints.distribute(solution);
> after solving the linear system. The constrained dofs are set to zero 
> during assembly and 
> this call is necessary to get the correct values for these in the solution 
> as well. You might want to have a look at
> https://www.dealii.org/8.4.1/doxygen/deal.II/group__constraints.html or 
> step-6.
>
> Best,
> Daniel
>

-- 
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.
For more options, visit https://groups.google.com/d/optout.


[deal.II] Re: Very basic question on setting boundary id

2016-11-13 Thread Daniel Arndt
Jaekwang,

It seems that you are missing
constraints.distribute(solution);
after solving the linear system. The constrained dofs are set to zero 
during assembly and 
this call is necessary to get the correct values for these in the solution 
as well. You might want to have a look at
https://www.dealii.org/8.4.1/doxygen/deal.II/group__constraints.html or 
step-6.

Best,
Daniel

-- 
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.
For more options, visit https://groups.google.com/d/optout.


[deal.II] Re: Very basic question on setting boundary id

2016-11-13 Thread Jaekwang Kim
Thank you for being kindness! 

I followed your suggestions but I couldn't resolve the problem yet. 

Or did I make other mistake in another places?

>From a slight modification from STEP-4 tutorial , I have been trying solve 
Poisson Equation. 
Actually, I have manufactured solution to see my error behavior.
But I am testing whether I can really impose dirihlet boundary condition on 
the domain boundary. 

I would appreciate if you can read my code.cuz I couldn't resolve the 
problem, and having result like this...
although it is the boundary that I impose value of '5'...but it is set at 
center


 


2016년 11월 13일 일요일 오후 2시 43분 46초 UTC-6, Jean-Paul Pelteret 님의 말:
>
> Yes, well this is going to give strange results because you're setting the 
> boundary ID of internal faces (x=0.5 is the centreline of your geometry). 
> Before you set any boundary ID's, you should always first check to see that 
> you're actually on a boundary. The first few tutorials do go through this, 
> but I've provided you with a worked example to demonstrate the best 
> practise.
>
> Regards,
> J-P
>
>

-- 
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.
For more options, visit https://groups.google.com/d/optout.
/* -
 *
 * Copyright (C) 1999 - 2016 by the deal.II authors
 *
 * This file is part of the deal.II library.
 *
 * The deal.II library is free software; you can use it, redistribute
 * it, and/or modify it under the terms of the GNU Lesser General
 * Public License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 * The full text of the license can be found in the file LICENSE at
 * the top level of the deal.II distribution.
 *
 * -

 *
 * Author: Wolfgang Bangerth, University of Heidelberg, 1999
 */



#include 
#include 
#include 

#include 
#include 
#include 
#include 
#include 
#include 
#include 

#include 
#include 
#include 
#include 
#include 
#include 

#include 
#include 
#include 
#include 
#include 

#include 

#include 
#include 
#include 

#include 
#include 
#include 

#include 
#include 
#include 
#include 
#include 


#define Power(x,y)  ( std::pow(x,y))
#define Cos(x) ( std::cos(x) )
#define Sin(x) ( std::sin(x) )
#define Sqrt(x) ( std::sqrt(x) )
#define Pi 3.1415926535897932384626
#define E 2.71828182845904523


using namespace dealii;


template 
class Step4
{
public:
  Step4 (const unsigned int degree);
~Step4 ();
  void run ();

private:
  void make_grid ();
  void setup_system();
  void assemble_system ();
  void solve ();
  void refine_grid ();
  void error_evaluation();
  void output_results () const;

  const unsigned int degree;

  Triangulation   triangulation;
  FE_Qfe;
  DoFHandler  dof_handler;


  ConstraintMatrix constraints;

  SparsityPattern  sparsity_pattern;
  SparseMatrix system_matrix;

  double error = 99;

  Vector   solution;
  Vector   system_rhs;
};



/* -
 *
 * To test code with Manufactured solution 
 *  u=exp(-x^2-y^2);
 *
 * -*/

template 
class Solution : public Function
{
public:

Solution () : Function() {}

virtual double value (const Point   &p,
  const unsigned int component = 0) const;

};


template 
double //generating exact solution : u=exp(-x^2-y^2);
Solution::value (const Point  &p,
  const unsigned int component) const
{
Assert (component < this->n_components,
ExcIndexRange (component, 0, this->n_components));

double x=p[0];
double y=p[1];
double return_value;
double S=1; //Determine Strength of Singularity
double z=std::pow(x,2)+std::pow(y,2);
return_value=exp( (-1)*z/S );
return return_value;

}


/* -
 *
 * To test code with Manufactured solution
 * u=exp(-x^2-y^2);
 *
 * I am trying to impose value of '5' to see whether I can impose Dirihlet BC properly
 * -*/
template 
class BoundaryValues : public Function
{
public:
BoundaryValues () : Function() {}
virtual double value (const Point   &p,
  const 

[deal.II] Re: Very basic question on setting boundary id

2016-11-13 Thread Jean-Paul Pelteret
Yes, well this is going to give strange results because you're setting the 
boundary ID of internal faces (x=0.5 is the centreline of your geometry). 
Before you set any boundary ID's, you should always first check to see that 
you're actually on a boundary. The first few tutorials do go through this, 
but I've provided you with a worked example to demonstrate the best 
practise.

Regards,
J-P

On Sunday, November 13, 2016 at 8:53:01 PM UTC+1, Jaekwang Kim wrote:
>
> Thank you for quick reply!!! 
>
> I tried your suggestions but I couldn't resolve the problem.
>
> The more weird thing is if I commands as..
>
>
> GridGenerator::hyper_cube (triangulation, 0, 1);
>
> triangulation.refine_global ();
>
>
>  for (typename Triangulation::active_cell_iterator
>
>  cell=triangulation.begin_active();
>
>  cell!=triangulation.end(); ++cell)
>
> {
>
> for (unsigned int f=0; 
> f::faces_per_cell; ++f)
>
> {
>
> 
>
> 
>
> if ( std::abs(cell->face(f)->center()[0]-0.5)< 1e-12 )
>
>
> {
>
>
> cell->face(f)->set_all_boundary_ids(1);
>
> 
>
> }
>
> 
>
> 
>
> }
>
> }
>
>
>
> 
>
>
>
> 2016년 11월 13일 일요일 오후 1시 35분 3초 UTC-6, Jean-Paul Pelteret 님의 말:
>>
>> Hi Jaekwang,
>>
>> With what you've shown I'm going to guess that your problem might simply 
>> be related to numerical / round-off error associated with floating point 
>> calculations. 
>>
>> if ( cell->face(f)->center()[0]==1 ) // The LHS value is a computed 
>>> double, and the RHS value is an integer which will be cast to a double for 
>>> comparison
>>
>>
>> Take a look at the mesh-generation part in the introduction to step-2 
>> 
>>  for 
>> how one best implements these types of comparisons. They're particularly 
>> relevant when dealing with the geometry, especially in more complex 
>> scenarios. Admittedly the step-2 example is for a circular geometry but the 
>> same concept applies: 
>>
>> if ( std::abs(cell->face(f)->center()[0]) < 1e-10 ) ...
>>
>> if ( std::abs(cell->face(f)->center()[0] - 1.0) < 1e-10 ) ...
>>
>> You can almost never be certain that any calculated floating point value 
>> will be an exact match to an implicitly cast integer value right down to 
>> machine precision, which is what will be checked with the equality operator.
>>>
>>>
>> I hope that this fixes your issue.
>>
>> Regards,
>> J-P
>>
>

-- 
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.
For more options, visit https://groups.google.com/d/optout.

#include 
#include 
#include 

#include 

using namespace dealii;

int main()
{
  const int dim = 2;
  Triangulation triangulation;

  GridGenerator::hyper_cube (triangulation, 0.0, 1.0);
  triangulation.refine_global (1);

  std::cout << "Number of active cells: "<< triangulation.n_active_cells()<< std::endl;

 for (typename Triangulation::active_cell_iterator
  cell=triangulation.begin_active();
  cell!=triangulation.end(); ++cell)
  {
  for (unsigned int f=0; f::faces_per_cell; ++f)
  {
// You need this line to ensure that this doesn't affect anything other than bondary faces!
if (cell->face(f)->at_boundary() == true)
{
  // This is an internal faces! You never want to set this to anything other than its default value.
  // The about check should make sure that we never could execute this part of the code.
  if ( std::abs(cell->face(f)->center()[0]-0.5)< 1e-12 )
  {
cell->face(f)->set_boundary_id(10);
  }

  // Boundary faces
  static const double tol = 1e-12;
  if ( std::abs(cell->face(f)->center()[0]-0.0)< tol )
  {
cell->face(f)->set_boundary_id(1);
  }
  if ( std::abs(cell->face(f)->center()[0]-1.0)< tol )
  {
cell->face(f)->set_boundary_id(2);
  }
  if ( std::abs(cell->face(f)->center()[1]-0.0)< tol )
  {
cell->face(f)->set_boundary_id(3);
  }
  if ( std::abs(cell->face(f)->center()[1]-1.0)< tol )
  {
cell->face(f)->set_boundary_id(4);
  }
}
  }
  

[deal.II] Re: Very basic question on setting boundary id

2016-11-13 Thread Jaekwang Kim
Thank you for quick reply!!! 

I tried your suggestions but I couldn't resolve the problem.

The more weird thing is if I commands as..


GridGenerator::hyper_cube (triangulation, 0, 1);

triangulation.refine_global ();


 for (typename Triangulation::active_cell_iterator

 cell=triangulation.begin_active();

 cell!=triangulation.end(); ++cell)

{

for (unsigned int f=0; f::faces_per_cell; 
++f)

{





if ( std::abs(cell->face(f)->center()[0]-0.5)< 1e-12 )


{


cell->face(f)->set_all_boundary_ids(1);



}





}

}






2016년 11월 13일 일요일 오후 1시 35분 3초 UTC-6, Jean-Paul Pelteret 님의 말:
>
> Hi Jaekwang,
>
> With what you've shown I'm going to guess that your problem might simply 
> be related to numerical / round-off error associated with floating point 
> calculations. 
>
> if ( cell->face(f)->center()[0]==1 ) // The LHS value is a computed 
>> double, and the RHS value is an integer which will be cast to a double for 
>> comparison
>
>
> Take a look at the mesh-generation part in the introduction to step-2 
> 
>  for 
> how one best implements these types of comparisons. They're particularly 
> relevant when dealing with the geometry, especially in more complex 
> scenarios. Admittedly the step-2 example is for a circular geometry but the 
> same concept applies: 
>
> if ( std::abs(cell->face(f)->center()[0]) < 1e-10 ) ...
>
> if ( std::abs(cell->face(f)->center()[0] - 1.0) < 1e-10 ) ...
>
> You can almost never be certain that any calculated floating point value 
> will be an exact match to an implicitly cast integer value right down to 
> machine precision, which is what will be checked with the equality operator.
>>
>>
> I hope that this fixes your issue.
>
> Regards,
> J-P
>

-- 
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.
For more options, visit https://groups.google.com/d/optout.


[deal.II] Re: Very basic question on setting boundary id

2016-11-13 Thread Jean-Paul Pelteret
Hi Jaekwang,

With what you've shown I'm going to guess that your problem might simply be 
related to numerical / round-off error associated with floating point 
calculations. 

if ( cell->face(f)->center()[0]==1 ) // The LHS value is a computed double, 
> and the RHS value is an integer which will be cast to a double for 
> comparison


Take a look at the mesh-generation part in the introduction to step-2 

 for 
how one best implements these types of comparisons. They're particularly 
relevant when dealing with the geometry, especially in more complex 
scenarios. Admittedly the step-2 example is for a circular geometry but the 
same concept applies: 

if ( std::abs(cell->face(f)->center()[0]) < 1e-10 ) ...

if ( std::abs(cell->face(f)->center()[0] - 1.0) < 1e-10 ) ...

You can almost never be certain that any calculated floating point value 
will be an exact match to an implicitly cast integer value right down to 
machine precision, which is what will be checked with the equality operator.
>
>
I hope that this fixes your issue.

Regards,
J-P

-- 
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.
For more options, visit https://groups.google.com/d/optout.


Re: [deal.II] problem with user_index()

2016-11-13 Thread Jean-Paul Pelteret
The user_index is a placeholder for you, the user, to store some data. By 
default, all user_indices are set to zero until you set a value with 
cell->set_user_index() 

.

On Sunday, November 13, 2016 at 8:04:18 PM UTC+1, Sudarshan Kumar wrote:
>
> Thanks  a lot  Gupta,
>  
> It is right, working fine now.  However  I am wondering why  the 
> user_index()  is not giving the answer.
>
> On Sunday, November 13, 2016 at 3:16:05 PM UTC-3, Deepak Gupta wrote:
>>
>> Dear Sudharshan,
>>
>> Probably you are looking for cell->index(). Am I right?
>>
>> best
>> Deepak
>>
>> On Sun, Nov 13, 2016 at 7:03 PM, Sudarshan Kumar  
>> wrote:
>>
>>>
>>> typename DoFHandler::active_cell_
>>> iterator
>>>   cell = dof_handler.begin_active(),
>>>   endc = dof_handler.end();
>>>
>>>for (; cell!=endc; ++cell)
>>>{ std::cout>   }
>>>
>>> it just  print only  zero.  i.euser_index() actually not finding the 
>>> cell index.
>>>
>>> Help is appreciated.
>>>
>>> -- 
>>> 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+un...@googlegroups.com.
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>

-- 
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.
For more options, visit https://groups.google.com/d/optout.


Re: [deal.II] problem with user_index()

2016-11-13 Thread Sudarshan Kumar
Thanks  a lot  Gupta,
 
It is right, working fine now.  However  I am wondering why  the 
user_index()  is not giving the answer.

On Sunday, November 13, 2016 at 3:16:05 PM UTC-3, Deepak Gupta wrote:
>
> Dear Sudharshan,
>
> Probably you are looking for cell->index(). Am I right?
>
> best
> Deepak
>
> On Sun, Nov 13, 2016 at 7:03 PM, Sudarshan Kumar  > wrote:
>
>>
>> typename DoFHandler::active_cell_
>> iterator
>>   cell = dof_handler.begin_active(),
>>   endc = dof_handler.end();
>>
>>for (; cell!=endc; ++cell)
>>{ std::cout   }
>>
>> it just  print only  zero.  i.euser_index() actually not finding the 
>> cell index.
>>
>> Help is appreciated.
>>
>> -- 
>> 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+un...@googlegroups.com .
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
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.
For more options, visit https://groups.google.com/d/optout.


[deal.II] Very basic question on setting boundary id

2016-11-13 Thread Jaekwang Kim
Hi all, 

I am learning grid generator how to set boundary condition on given domain.
It is very basic, but I couldn't even set boundary id for squared mesh 

I want to generate squared computational domain and I want to give boundary 
id of 1 to all the outer boundary of the square. 

So I used following lines 




GridGenerator::hyper_cube (triangulation, 0, 1);

triangulation.refine_global ();



std::cout << "Number of active cells: "<< 
triangulation.n_active_cells()<< std::endl;







for (typename Triangulation::active_cell_iterator

 cell=triangulation.begin_active();

 cell!=triangulation.end(); ++cell)

{

for (unsigned int f=0; f::faces_per_cell; 
++f)

{





if ( cell->face(f)->center()[0]==0 )


{

cell->face(f)->set_all_boundary_ids(1);



}



if ( cell->face(f)->center()[0]==1 )



{

cell->face(f)->set_all_boundary_ids(1);



}



if ( cell->face(f)->center()[1]==0 )



{

cell->face(f)->set_all_boundary_ids(1);



}

if ( cell->face(f)->center()[1]==1 )



{

cell->face(f)->set_all_boundary_ids(1);



}





}


However, when I checked my boundary by giving arbitrary boundary value of 
 '5', the solution shape looks as follow which is obviously wrong..


Are my code lines wrong? I thought that the faces of cell is each edge of a 
cell, and examined whether their centers are x=0,1 or y=0,1. 

and If then, I set id on 1...







Always thank you all you for fast response!


Jaekwang Kim 

-- 
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.
For more options, visit https://groups.google.com/d/optout.


Re: [deal.II] problem with user_index()

2016-11-13 Thread Deepak Gupta
Dear Sudharshan,

Probably you are looking for cell->index(). Am I right?

best
Deepak

On Sun, Nov 13, 2016 at 7:03 PM, Sudarshan Kumar  wrote:

>
> typename DoFHandler::active_cell_
> iterator
>   cell = dof_handler.begin_active(),
>   endc = dof_handler.end();
>
>for (; cell!=endc; ++cell)
>{ std::cout
> it just  print only  zero.  i.euser_index() actually not finding the
> cell index.
>
> Help is appreciated.
>
> --
> 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.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
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.
For more options, visit https://groups.google.com/d/optout.


[deal.II] problem with user_index()

2016-11-13 Thread Sudarshan Kumar

typename DoFHandler::active_cell_
iterator
  cell = dof_handler.begin_active(),
  endc = dof_handler.end();

   for (; cell!=endc; ++cell)
   { std::cout

[deal.II] Problem with user_index()

2016-11-13 Thread Sudarshan Kumar

typename DoFHandler::active_cell_iterator
  cell = dof_handler.begin_active(),
  endc = dof_handler.end();

   for (; cell!=endc; ++cell)
   { std::cout

[deal.II] Re: storing sparse matrix in .txt and scan in Matlab

2016-11-13 Thread Daniel Arndt
Anup,

 
>
>> 1. if the way of writing the sparse matrix on a .txt file is appropriate 
>> for post-processing in matlab, if not, please suggest
>> a way;
>>
>
> There are three print functions in the deal.II SparseMatrix. As explained 
> in the documentation 
> ,
>  
> you've chosen one that dumps the entire matrix with all zero entries not in 
> the sparsity pattern printed as well. This function 
> 
>  
> is probably the one that you want.
>
In addition to what J-P is saying, you can use 
SparseMatrix::print_formatted providing the zero string "0." instead of "" 
for exporting to some file "matrix.txt" and then load "matrix.txt" in 
Matlab.
  

>  
>
>> 2.  how should I make matlab understand the size of the sparse matrix and 
>> arrangement of the elements.
>>
> Using SparseMatrix::print you get a list of entries starting at zero 
instead of one. You can use the "Import Data" feature with suitable 
delimiters "( " and ")"
to create a matrix in Matlab,
load "matrix.txt"
shift the first two columns by 1 via
matrix(:,1)=matrix(:,1)+1
matrix(:,2)=matrix(:,2)+1
and convert this to a sparse matrix via
spconvert(matrix)

Best,
Daniel

-- 
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.
For more options, visit https://groups.google.com/d/optout.


[deal.II] Re: storing sparse matrix in .txt and scan in Matlab

2016-11-13 Thread Jean-Paul Pelteret
Dear Anup,
 

> 1. if the way of writing the sparse matrix on a .txt file is appropriate 
> for post-processing in matlab, if not, please suggest
> a way;
>

There are three print functions in the deal.II SparseMatrix. As explained 
in the documentation 
,
 
you've chosen one that dumps the entire matrix with all zero entries not in 
the sparsity pattern printed as well. This function 

 
is probably the one that you want.
 

> 2.  how should I make matlab understand the size of the sparse matrix and 
> arrangement of the elements.
>
 
This is outside of the scope of this forum. However, I'm sure that with the 
correct printing format, how to deduce the sparsity pattern of the matrix 
will become more apparent to you.

Regards,
J-P

-- 
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.
For more options, visit https://groups.google.com/d/optout.