CArl
Code Arlequin / C++ implementation
Intersection search

Before solving the coupled system we have to assemble the coupling matrices - and before doing this, we have to find the intersections between the meshes test_brick_A_1k.msh and test_brick_B_1k.msh, inside the coupling region defined by test_brick_C.msh. This can be done by either submiting the file scripts/PBS_FETI_test_inter_traction_test_1k.pbs, if using a PBS scheduler, or by launching the scripts/LOCAL_FETI_test_inter_traction_test_1k.sh script, if running locally.

In either case, the CArl_build_intersections will be executed using 4 processors, and using the file examples/coupled_traction_test/intersection/inter_traction_test_1k.txt for the input parameters.

mpirun -np 4 ./CArl_build_intersections -i examples/coupled_traction_test/intersection/inter_traction_test_1k.txt

This program also creates the restricted meshes of the two models. These meshes contain only the elements of the model meshes that intersect the coupling region, and are a by-product of the intersection search. They are used for two reasons: they can be used to better distribute the work during the assembly of the coupling matrices, and, in general, the restriction of the Macro / A model mesh is used as the mediator space between the models.

Input

File: examples/coupled_traction_test/intersection/inter_traction_test_1k.txt:

### Required parameters
# - Mesh files
MeshA examples/coupled_traction_test/meshes/test_brick_A_1k.msh
MeshB examples/coupled_traction_test/meshes/test_brick_B_1k.msh
MeshC examples/coupled_traction_test/meshes/test_brick_C.msh

### Optional parameters
# - Output filename base
OutputBase examples/coupled_traction_test/intersection/output/inter_1k/inter

# - Meshing algorithm choice
MeshingMethod CGAL

# - Boolean flags, uncomment to activate

# > Stitch together the intersection meshes? 
#   (done in a single processor, can be numerically expensive)
#StitchInterMeshes

# > Verbose output?
#   (prints coupling mesh partitioning before and after rebalancing)
#VerboseOutput

Input file parameters:

  • MeshA, MeshB and MeshC: paths to the two model meshes and to the coupling region mesh.
  • OutputBase: common output filename. All the intersection output files will be named [OutputBase]_***. The folders of the path must be created beforehand.
  • MeshingMethod: type of intersection meshing method, either based on CGAL or TETGEN. The usage of CGAL is highly recommended.
  • StitchInterMeshes: if this flag is set, the intersection meshes will be stitched together. This is only really useful for visualization of the intersection mesh. Since it's done in a single processor, this is potentially numerically expensive.
  • VerboseOutput: if this flag is set, some extra information (such as the coupling mesh repartitioning) will be printed.

Output

After building the intersections, the following files will be created at the examples/coupled_traction_test/intersection/output/inter_1k folder:

  • "Restricted" meshes. Meshes containing the elements of the system meshes that intersect the coupling region.
     inter_A_restriction.msh
     inter_B_restriction.msh 
    
  • Element mapping tables between the restricted and model meshes. [[[FORMAT]]]
     inter_A_restriction_restrict.dat
     inter_B_restriction_restrict.dat
    
  • Intersection meshes. Each processor generates its own (local) intersection mesh.
     inter_r_0_n_4.e
     inter_r_1_n_4.e
     inter_r_2_n_4.e
     inter_r_3_n_4.e
    
  • Tables containing information about the intersections (intersecting element pairs, and indexes of the intersection mesh elements used to build it) [[[FORMAT]]]. Each processor generates its own (local) intersection mesh.
     inter_r_0_n_4_inter_table.dat  
     inter_r_1_n_4_inter_table.dat 
     inter_r_2_n_4_inter_table.dat
     inter_r_3_n_4_inter_table.dat
    
  • Table containing a global list of the intersection pairs.
     inter_global_inter_pairs.dat