On Fri, 13 Mar 2009, Tim Kroeger wrote:
Okay, good to know. Well, I will try to track all refinement steps in
order to make the problem faster reproducible.
I did this now, and it reproduces the crash.
Let me tell you briefly about the refinement/coarsening steps of my
application: They occur at five different places in the code, which
for some reason I would like to call SV1, SV2, PO1, PO2, and ES.
Some of them only refine, some only coarsen, some do both. Some of
them are performed several times. Here is a list:
SV1 6 times only refine
SV2 6 times only coarsen after the last: Mesh::contract()
PO1 7 times only refine after the last: Creation of
EquationSystems
PO2 1 time only refine
ES 3 times possibly both 3rd time triggers the crash
I attached a test program; it reads a file that you can download from
my homepage (www.mevis.de/~tim/ref-flags.gz; unzipping makes it become
~5MB). The program initializes the same base grid as my application
and then reads in all the refinement flags from the file. The points
at which the mesh is contracted and the EquationSystem object is
created are hardcoded.
Could you please check whether this enables you the reproduce the
crash? You need to run the program on 8 processors (with ghosted
enabled of course). I used METHOD=devel, but I guess it will crash in
the other modes as well.
By the way, I observed another very strange thing: If I change the
values of {x,y,z}{min,max} of the start grid (as in the comments of
the test program), it crashes already on the first refinement step and
at a completely different point, that is in elem.h, line 1744.
(That's the assert in Elem::compute_key() with four arguments.) That
does not make any sense at all to me.
Anyway, complete confusion is a good state to start vacations with,
isn't it? (-:
Best Regards,
Tim
--
Dr. Tim Kroeger
[email protected] Phone +49-421-218-7710
[email protected] Fax +49-421-218-4236
Fraunhofer MEVIS, Institute for Medical Image Computing
Universitaetsallee 29, 28359 Bremen, Germany
#include <iostream>
#include <math.h>
#include "libmesh.h"
#include "mesh.h"
#include "mesh_generation.h"
#include "mesh_refinement.h"
#include "elem.h"
#include "equation_systems.h"
#include "linear_implicit_system.h"
#include "transient_system.h"
static void refine_according_to_file(Mesh& mesh, std::istream& f)
{
std::string caption;
f >> caption;
std::cout << "Read refinement flags for " << caption << std::endl;
MeshBase::element_iterator elem_it = mesh.active_elements_begin();
const MeshBase::element_iterator elem_end = mesh.active_elements_end();
for (; elem_it != elem_end; ++elem_it)
{
unsigned int v = 0;
f >> v;
(*elem_it)->set_refinement_flag(static_cast<Elem::RefinementState>(v));
}
std::cout << "Process refinement for " << caption << std::endl;
MeshRefinement meshRefinement(mesh);
meshRefinement.refine_and_coarsen_elements();
std::cout << "Finished refinement for " << caption << std::endl;
}
int main (int argc, char** argv)
{
LibMeshInit init (argc, argv);
Mesh mesh (3);
MeshTools::Generation::build_cube(mesh,
7,6,4,
-32.0,-24.0,-32.0,
24.01,24.0,32.0,
HEX8);
/* Use this version instead to get a very strange behaviour:
MeshTools::Generation::build_cube(mesh,
7,6,4,
0.0,0.0,0.0,
1.0,1.0,1.0,
HEX8);
*/
std::ifstream f("ref-flags");
for(unsigned int i=0; i<12; i++)
{
refine_according_to_file(mesh,f);
}
std::cout << "Contract mesh" << std::endl;
mesh.contract();
for(unsigned int i=0; i<7; i++)
{
refine_according_to_file(mesh,f);
}
EquationSystems es(mesh);
es.add_system<TransientLinearImplicitSystem>("s");
es.get_system<TransientLinearImplicitSystem>("s").add_variable("v");
std::cout << "Init EquationSystems" << std::endl;
es.init();
for(unsigned int i=0; i<4; i++)
{
refine_according_to_file(mesh,f);
std::cout << "Reinit EquationSystems" << std::endl;
es.reinit();
}
return 0;
}
------------------------------------------------------------------------------
Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are
powering Web 2.0 with engaging, cross-platform capabilities. Quickly and
easily build your RIAs with Flex Builder, the Eclipse(TM)based development
software that enables intelligent coding and step-through debugging.
Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com
_______________________________________________
Libmesh-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libmesh-devel