Commit e3881163 authored by Nicolas CHEVAUGEON's avatar Nicolas CHEVAUGEON

Initial commit of the xCrackApp apllis.

parents
# ------------------------------------------------------------------------
# CMakeLists.txt for xCrackApp
# more documentation in http://www.cmake.org/cmake/help/cmake2.6docs.html
# ------------------------------------------------------------------------
cmake_minimum_required(VERSION 2.6)
project(DamageBand CXX C)
message(STATUS "=================== --")
message(STATUS "PROJECT: xCrackApp --")
message(STATUS "=================== --")
# here this CMakeLists.txt may be include in the main CMakeLists.txt with command
# add_subdirectory(<the-path-of-the-directory-of-this-file>) in order to set options
# (USE_SUPERLU, USE_TAUCS, USE_MUMPS, USE_PASTIX, ...) and variables (DEVROOT,
# LIBRARIES_INSTALL_PATH, EXECUTABLES_INSTALL_PATH, compiler,# MPI, ...)
# ---------------------------------------
# treatment of options
# ---------------------------------------
if ( PARALLEL OR PARSEQ OR PARDIST)
message(FATAL_ERROR "Selecting PARALLEL/PARSEQ/PARDIST with xCrackApp is incorect NOW. Things are moving slowly toward full parallel feature which make those old parameter obsolet ")
endif()
if ( USE_MUMPS OR USE_PASTIX )
# message(FATAL_ERROR "Selecting USE_MUMPS/USE_PASTIX with xCrackApp is incorect NOW. Things are moving slowly toward full parallel feature which make those old parameter obsolet ")
endif()
#=======================================================================================
# ADDITIONAL OPTIONS
#=======================================================================================
# documentation
option(ADDDOC "Set DOC" OFF)
# use of hash map or hash set for map, set, ...
option(USE_HASH_TABLE "use hash table (default is ON)" ON )
option(USE_VAMPIR_TRACE "use Vampir trace to generate automatic tracing" OFF)
option(USE_VAMPIR_TRACE_MACRO "use Vampir trace macro in the source for selective tracing"
OFF)
#=======================================================================================
# treatment of OPTIONS
#=======================================================================================
# force option USE_VAMPIR_TRACE if vampir trace macro asked as it imply it.
if (USE_VAMPIR_TRACE_MACRO)
set(USE_VAMPIR_TRACE ON CACHE BOOL "use Vampir trace do generate automatic tracing" FORCE)
endif(USE_VAMPIR_TRACE_MACRO)
if (USE_VAMPIR_TRACE)
find_package(VampirTrace REQUIRED)
set(CMAKE_CXX_COMPILER ${VAMPIR_TRACE_WRAPPER_CXX_BIN})
message (STATUS "CXX compiler is now ${CMAKE_CXX_COMPILER}" )
endif(USE_VAMPIR_TRACE)
if(TIMING_MONITORING)
add_definitions( -DTIMING_MONITORING_APPLI )
endif()
if(USE_TOTALVIEW)
find_and_set(Totalview TOTALVIEW DAMAGEBAND_EXTERNAL_INCLUDES EXTERNAL_LIBRARIES REQUIRED)
endif(USE_TOTALVIEW)
if(USE_CGAL)
find_and_set(CGAL CGAL XCRACKAPP_EXTERNAL_INCLUDES EXTERNAL_LIBRARIES REQUIRED)
endif()
if(USE_PARMETIS)
find_and_set(METIS PARMETIS XCRACKAPP_EXTERNAL_INCLUDES EXTERNAL_LIBRARIES REQUIRED)
endif()
if(USE_SUPERLU)
add_definitions( -DWITH_DSUPERLU)
find_package(xInterfaceSuperLu REQUIRED)
list(APPEND XCRACKAPP_EXTERNAL_INCLUDES ${xInterfaceSuperLu_INCLUDES})
else(USE_SUPERLU)
message(FATAL_ERROR "xCrackApp need SuperLu: set option USE_SUPERLU to ON.")
endif(USE_SUPERLU)
if(USE_TAUCS)
if ( PARSEQ OR PARDIST)
message(WARNING "Selecting Taucs with PARSEQ or PARDIST is useless => switching to false for PARXXX")
set(PARSEQ OFF CACHE BOOL "Parallel computing in sequencial frame " FORCE)
set(PARDIST OFF CACHE BOOL "Parallel computing in parallele frame" FORCE)
endif( PARSEQ OR PARDIST)
add_definitions( -DWITH_DTAUCS)
find_package(InterfaceTaucs REQUIRED)
list(APPEND XCRACKAPP_EXTERNAL_INCLUDES ${InterfaceTaucs_INCLUDES})
else(USE_TAUCS)
message(WARNING "xCrackApp may need Taucs: set option USE_TAUCS to ON.")
endif(USE_TAUCS)
if(USE_MUMPS)
#if ( NOT PARSEQ AND NOT PARDIST)
# message(FATAL_ERROR "Selecting MUMPS without PARSEQ or PARDIST is incorect ")
#endif()
find_package(xInterfaceMumps REQUIRED )
add_definitions( -DWITH_DMUMPS)
endif(USE_MUMPS)
if(USE_PASTIX)
if ( NOT PARSEQ )
message(FATAL_ERROR "Selecting PASTIX without PARSEQ is incorect ")
endif()
if ( PARDIST )
message(FATAL_ERROR "Selecting PASTIX with PARDIST is incorect ")
endif()
find_and_set(InterfacePastix InterfacePastix XCRACKAPP_EXTERNAL_INCLUDES NOTHING REQUIRED)
add_definitions( -DWITH_DPASTIX)
endif(USE_PASTIX)
if(USE_XCUT)
add_definitions( -DWITH_XCUT )
find_and_set(Xcut XCUT XCRACKAPP_EXTERNAL_INCLUDES EXTERNAL_LIBRARIES REQUIRED)
endif()
# to find sequential package
if ( PARSEQ OR PARDIST )
define_archos_base(ARCHOS_BASE)
set(LIB_SUFFIX ${ARCHOS_BASE}_${CMAKE_BUILD_TYPE} )
endif( PARSEQ OR PARDIST )
find_package(xTool REQUIRED)
find_package(xSolverBase REQUIRED)
find_package(xInterfaceLapack REQUIRED)
find_package(xInterfaceAOMDGeneral REQUIRED)
find_package(Trellis REQUIRED)
find_package(xFEM REQUIRED)
find_package(xCrack REQUIRED)
find_package(BLAS2 REQUIRED)
find_package(LAPACK2 REQUIRED)
find_package(METIS REQUIRED)
find_package(xDistMesh REQUIRED)
find_package(xInterfaceMumps REQUIRED)
find_package(MUMPS REQUIRED)
# to be removed at some point
if ( PARSEQ OR PARDIST )
set(LIB_SUFFIX "")
if(MPI_COMPILER )
message (STATUS "MPI FOUND")
else(MPI_COMPILER )
message (STATUS "No MPI FOUND !")
endif(MPI_COMPILER )
if (USE_VAMPIR_TRACE)
set(CMAKE_CXX_FLAGS "-vt:cxx ${MPI_COMPILER} ${CMAKE_CXX_FLAGS}")
else()
set(CMAKE_CXX_COMPILER ${MPI_COMPILER})
endif(USE_VAMPIR_TRACE)
message (STATUS "CXX compiler is now ${CMAKE_CXX_COMPILER}" )
endif( PARSEQ OR PARDIST )
# ---------------------------------------
# definition of the library
# ---------------------------------------
file(GLOB src_files src/*.cc src/*.h )
# librairy can be SHARED or STATIC
set(BUILD_SHARED_LIBS "SHARED")
define_archos_suffixe(ARCHOS)
if(USE_XLEGACYSIMPLECUT)
add_definitions( -DWITH_XLEGACYSIMPLECUT)
find_package(xLegacySimpleCut REQUIRED )
else()
message(FATAL_ERROR "xCrackApp needs xLegacySimpleCut. Turn USE_XLEGACYSIMPLECUT to ON or BUILD_XFEM_SEQ_TEST to OFF.")
endif()
#set(LIBRARIES_INSTALL_PATH ${DEVROOT}/lib/${ARCHOS} )
list(APPEND XCRACKAPP_EXTERNAL_INCLUDES
${xTool_INCLUDE_DIR}
${xFEM_INCLUDE_DIR}
${xLegacySimpleCut_INCLUDE_DIR}
${Trellis_INCLUDE_DIR}
${xCrack_INCLUDE_DIR}
${GEOM_INCLUDE_DIR}
${xInterfaceAOMDGeneral_INCLUDE_DIR}
${XoctreeInterface_INCLUDE_DIR}
${xInterfaceSuperLu_INCLUDE_DIR}
${xInterfaceMumps_INCLUDE_DIR}
${xInterfaceTaucs_INCLUDE_DIR}
${xInterfaceLapack_INCLUDE_DIR}
${xSolverBase_INCLUDE_DIR}
${xDistMesh_INCLUDE_DIR}
${Lapack_INCLUDE_DIR}
${MPI_CXX_INCLUDE_PATH}
)
list(APPEND XCRACKAPP_EXTERNAL_LIBRARIES
${xTool_LIBRARIES}
${xExport_LIBRARIES}
${xCrack_LIBRARIES}
${xFEM_LIBRARIES}
${xLegacySimpleCut_LIBRARIES}
${Trellis_LIBRARIES}
${GEOM_LIBRARIES}
${xInterfaceAOMDGeneral_LIBRARIES}
${XoctreeInterface_LIBRARIES}
${xInterfaceSuperLu_LIBRARIES}
${xInterfaceTaucs_LIBRARIES}
${xInterfaceLapack_LIBRARIES}
${xInterfaceMumps_LIBRARIES}
${xSolverBase_LIBRARIES}
${BLAS_LIBRARIES}
${xDistMesh_LIBRARIES}
${LAPACK_LIBRARIES}
${MUMPS_LIBRARIES}
${xTool_LIBRARIES}
)
if (PARSEQ OR PARDIST)
list(APPEND XCRACKAPP_EXTERNAL_INCLUDES
${DEVROOT}/Xinterfaces/ParaInterfaces/InitMPI/src
)
if (PARSEQ)
add_definitions( -DDAMAGE_BAND_PARA_MASTER_AND_SLAVE )
else()
add_definitions( -DDAMAGE_BAND_PARA_DIST )
endif()
endif(PARSEQ OR PARDIST)
include_directories( ${XCRACKAPP_EXTERNAL_INCLUDES} )
add_executable("xCrackApp" ${src_files} )
set_target_properties("xCrackApp" PROPERTIES COMPILE_FLAGS "-w -Wno-deprecated ${CXXFLAGS}" )
target_link_libraries("xCrackApp" ${XCRACKAPP_EXTERNAL_LIBRARIES} ${MPI_CXX_LIBRARIES} )
if("${EXECUTABLES_INSTALL_PATH}" STREQUAL "")
set(EXECUTABLES_INSTALL_PATH ${CMAKE_CURRENT_BINARY_DIR})
else()
set(OUT_OF_BUILD_INSTALL "TRUE")
endif()
add_custom_command(TARGET "xCrackApp"
COMMAND bash ${DEVROOT}/Xfiles/xUtil/cmakeUtil/do_link.sh ${CMAKE_CURRENT_SOURCE_DIR}/data ${EXECUTABLES_INSTALL_PATH}/data)
# ---------------------------------------
# adding devel/test
# ---------------------------------------
#add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/xCrackApp/test)
#add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/xCrackApp/devel)
# ---------------------------------------
# adding doc
# ---------------------------------------
if(ADDDOC)
# add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/xCrackApp/doc)
endif(ADDDOC)
debug = 0
thermocoupling = 0
compute_displacement = 1
compute_temperature = 0
degree = 1
export_zebulon = 0
compute_sifs = 1
compute_error = 0
solver = superlu
exportfield = { DISPLACEMENT }
export_coefs_enrichment = 0
export_enrichment_field = 0
#extractdisplacementatpoint = 1
#extractionpoint = {0., 0.01, 0.}
##########
# COMPUTER INFORMATION
MESH_FILE_TYPE = msh
MESH_FILE = data/rec.msh
PROCEDURE_PARAM_FILE = data/driverinfo.dat
CRACK_DEFINITION_FILE = data/planecrack2d.dat
###################################################
#for geo file
ZONE 121 ={ MAT_CLASS = elastic MAT_PARAM = data/material.mat}
ZONE 111 ={ MAT_CLASS = elastic MAT_PARAM = data/material.mat}
ZONE 113 ={ MAT_CLASS = elastic MAT_PARAM = data/material.mat}
#2D case*
BC_POINT 101 = ={
DISPLACEMENT_Y FIX = -0.5
}
BC_POINT 104 ={
DISPLACEMENT_Y FIX = 0.5
}
BC_LINE 112 ={ DISPLACEMENT_X FIX = 0.0
DISPLACEMENT_Y FIX = 0.0
DISPLACEMENT_Z FIX = 0.0 }
NAME = poissonzero
YOUNG_MODULUS = 1.
POISSON_RATIO = 0.
semiinfiniteplanecrack {
crackname = plane1
normaltotheplane ={0., 1., 0.}
normaltothelip = {1., 0., 0.}
pointonthelip = {15., 0., 0.}
enrichmenttype = vector_enrichment
enrichmentradius = 0.3
sifs_rho_geo = 0.5
sifs_nb_layers_cylinder = 1
sifs_nb_layers_core =1
sifs_verbosity = 1
}
nbele = 9;
nbpt = nbele+1;
ta = 2/nbele;
h=1.;
l=30.;
/* Point 1 */
Point(newp) = {0.,-h, 0.0, ta};
/* Point 2 */
Point(newp) = {l, -h, 0.0, ta};
/* Point 3 */
Point(newp) = {l, h, 0.0, ta};
/* Point 4 */
Point(newp) = {0., h, 0.0, ta};
Line(9) = {1,2};
Line(10) = {2,3};
Line(11) = {4,3};
Line(12) = {1,4};
Line Loop(18) = {-12,9,10,-11};
Ruled Surface(21) = {18};
/*Plane Surface(21) = {18};*/
Transfinite Line {9,11} = l*nbpt Using Power 1.0;
Transfinite Line {10,12} = 2*h*nbpt Using Power 1.0;
Transfinite Surface {21} = {1,2,3,4};
/*Recombine Surface {21} = 90;*/
Physical Point (101) = {1} ;
Physical Point (102) = {2} ;
Physical Point (103) = {3} ;
Physical Point (104) = {4} ;
Physical Line (111) = {9};
Physical Line (112) = {10};
Physical Line (113) = {11};
Physical Line (114) = {12};
Physical Surface (121) = {21} ;
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
nbele = 20;
nbpt = nbele+1;
ta = 2/nbele;
h=1.;
l=10.;
/* Point 1 */
Point(newp) = {0.,-h/2., 0.0, ta};
/* Point 2 */
Point(newp) = {l, -h/2., 0.0, ta};
/* Point 3 */
Point(newp) = {l, h/2., 0.0, ta};
/* Point 4 */
Point(newp) = {0., h/2., 0.0, ta};
Line(9) = {1,2};
Line(10) = {2,3};
Line(11) = {4,3};
Line(12) = {1,4};
Line Loop(18) = {-12,9,10,-11};
Ruled Surface(21) = {18};
/*Plane Surface(21) = {18};*/
Transfinite Line {9,11,10,12} = nbpt Using Power 1.0;
Transfinite Surface {21} = {1,2,3,4};
/*Recombine Surface {21} = 90;*/
Physical Point (101) = {1} ;
Physical Point (102) = {2} ;
Physical Point (103) = {3} ;
Physical Point (104) = {4} ;
Physical Line (111) = {9};
Physical Line (112) = {10};
Physical Line (113) = {11};
Physical Line (114) = {12};
Physical Surface (121) = {21} ;
$NOD
100
1 -0.5 -0.5 0
2 0.5 -0.5 0
13 -0.5 0.5 0
14 0.5 0.5 0
15 -0.3888888888888904 -0.5 0
16 -0.2777777777777808 -0.5 0
17 -0.1666666666666713 -0.5 0
18 -0.05555555555556169 -0.5 0
19 0.05555555555554781 -0.5 0
20 0.1666666666666574 -0.5 0
21 0.2777777777777685 -0.5 0
22 0.3888888888888843 -0.5 0
23 0.5 -0.3888888888888904 0
24 0.5 -0.2777777777777808 0
25 0.5 -0.1666666666666713 0
26 0.5 -0.05555555555556169 0
27 0.5 0.05555555555554781 0
28 0.5 0.1666666666666574 0
29 0.5 0.2777777777777685 0
30 0.5 0.3888888888888843 0
31 0.3888888888888904 0.5 0
32 0.2777777777777808 0.5 0
33 0.1666666666666713 0.5 0
34 0.05555555555556169 0.5 0
35 -0.05555555555554781 0.5 0
36 -0.1666666666666574 0.5 0
37 -0.2777777777777685 0.5 0
38 -0.3888888888888843 0.5 0
39 -0.5 0.3888888888888904 0
40 -0.5 0.2777777777777808 0
41 -0.5 0.1666666666666713 0
42 -0.5 0.05555555555556169 0
43 -0.5 -0.05555555555554781 0
44 -0.5 -0.1666666666666574 0
45 -0.5 -0.2777777777777685 0
46 -0.5 -0.3888888888888843 0
47 -0.3888888888888897 -0.388888888888885 0
48 -0.3888888888888891 -0.2777777777777699 0
49 -0.3888888888888884 -0.1666666666666589 0
50 -0.3888888888888877 -0.05555555555554934 0
51 -0.388888888888887 0.05555555555556014 0
52 -0.3888888888888863 0.1666666666666698 0
53 -0.3888888888888856 0.2777777777777795 0
54 -0.388888888888885 0.3888888888888897 0
55 -0.2777777777777795 -0.3888888888888857 0
56 -0.2777777777777781 -0.2777777777777712 0
57 -0.2777777777777767 -0.1666666666666605 0
58 -0.2777777777777753 -0.05555555555555089 0
59 -0.277777777777774 0.05555555555555858 0
60 -0.2777777777777726 0.1666666666666682 0
61 -0.2777777777777712 0.2777777777777781 0
62 -0.2777777777777698 0.388888888888889 0
63 -0.1666666666666697 -0.3888888888888863 0
64 -0.1666666666666682 -0.2777777777777726 0
65 -0.1666666666666667 -0.166666666666662 0
66 -0.1666666666666651 -0.05555555555555245 0
67 -0.1666666666666636 0.05555555555555704 0
68 -0.166666666666662 0.1666666666666667 0
69 -0.1666666666666605 0.2777777777777767 0
70 -0.1666666666666589 0.3888888888888883 0
71 -0.05555555555556013 -0.388888888888887 0
72 -0.05555555555555861 -0.277777777777774 0
73 -0.05555555555555708 -0.1666666666666636 0
74 -0.05555555555555552 -0.05555555555555398 0
75 -0.05555555555555398 0.05555555555555552 0
76 -0.05555555555555246 0.1666666666666651 0
77 -0.0555555555555509 0.2777777777777753 0
78 -0.05555555555554933 0.3888888888888877 0
79 0.05555555555554934 -0.3888888888888877 0
80 0.05555555555555088 -0.2777777777777753 0
81 0.05555555555555242 -0.1666666666666651 0
82 0.05555555555555397 -0.05555555555555552 0
83 0.05555555555555552 0.05555555555555398 0
84 0.05555555555555704 0.1666666666666636 0
85 0.05555555555555858 0.277777777777774 0
86 0.05555555555556017 0.388888888888887 0
87 0.166666666666659 -0.3888888888888884 0
88 0.1666666666666605 -0.2777777777777767 0
89 0.166666666666662 -0.1666666666666667 0
90 0.1666666666666636 -0.05555555555555709 0
91 0.1666666666666651 0.05555555555555242 0
92 0.1666666666666667 0.166666666666662 0
93 0.1666666666666682 0.2777777777777726 0
94 0.1666666666666697 0.3888888888888863 0
95 0.2777777777777698 -0.388888888888889 0
96 0.2777777777777712 -0.2777777777777781 0
97 0.2777777777777726 -0.1666666666666682 0
98 0.277777777777774 -0.05555555555555861 0
99 0.2777777777777753 0.05555555555555088 0
100 0.2777777777777767 0.1666666666666605 0
101 0.2777777777777781 0.2777777777777712 0
102 0.2777777777777795 0.3888888888888856 0
103 0.388888888888885 -0.3888888888888897 0
104 0.3888888888888856 -0.2777777777777795 0
105 0.3888888888888863 -0.1666666666666697 0
106 0.388888888888887 -0.05555555555556013 0
107 0.3888888888888877 0.05555555555554937 0
108 0.3888888888888883 0.1666666666666589 0
109 0.388888888888889 0.2777777777777698 0
110 0.3888888888888897 0.388888888888885 0
$ENDNOD
$ELM
200
1 15 101 1 1 1
2 15 102 2 1 2
3 1 111 1 2 1 15
4 1 111 1 2 15 16
5 1 111 1 2 16 17
6 1 111 1 2 17 18
7 1 111 1 2 18 19
8 1 111 1 2 19 20
9 1 111 1 2 20 21
10 1 111 1 2 21 22
11 1 111 1 2 22 2
12 1 112 2 2 2 23
13 1 112 2 2 23 24
14 1 112 2 2 24 25
15 1 112 2 2 25 26
16 1 112 2 2 26 27
17 1 112 2 2 27 28
18 1 112 2 2 28 29
19 1 112 2 2 29 30
20 1 112 2 2 30 14
21 1 113 3 2 14 31
22 1 113 3 2 31 32
23 1 113 3 2 32 33
24 1 113 3 2 33 34
25 1 113 3 2 34 35
26 1 113 3 2 35 36
27 1 113 3 2 36 37
28 1 113 3 2 37 38
29 1 113 3 2 38 13
30 1 114 4 2 13 39
31 1 114 4 2 39 40
32 1 114 4 2 40 41
33 1 114 4 2 41 42
34 1 114 4 2 42 43
35 1 114 4 2 43 44
36 1 114 4 2 44 45
37 1 114 4 2 45 46
38 1 114 4 2 46 1
39 2 121 6 3 1 15 47
40 2 121 6 3 46 1 47
41 2 121 6 3 46 47 45
42 2 121 6 3 48 45 47
43 2 121 6 3 45 48 49
44 2 121 6 3 44 45 49
45 2 121 6 3 44 49 43
46 2 121 6 3 50 43 49
47 2 121 6 3 43 50 51
48 2 121 6 3 42 43 51
49 2 121 6 3 42 51 41
50 2 121 6 3 52 41 51
51 2 121 6 3 41 52 53
52 2 121 6 3 40 41 53
53 2 121 6 3 40 53 39
54 2 121 6 3 54 39 53
55 2 121 6 3 39 54 38
56 2 121 6 3 13 39 38
57 2 121 6 3 15 16 47
58 2 121 6 3 55 47 16
59 2 121 6 3 47 55 56
60 2 121 6 3 48 47 56
61 2 121 6 3 48 56 49
62 2 121 6 3 57 49 56
63 2 121 6 3 49 57 58
64 2 121 6 3 50 49 58
65 2 121 6 3 50 58 51
66 2 121 6 3 59 51 58
67 2 121 6 3 51 59 60
68 2 121 6 3 52 51 60
69 2 121 6 3 52 60 53
70 2 121 6 3 61 53 60
71 2 121 6 3 53 61 62
72 2 121 6 3 54 53 62
73 2 121 6 3 54 62 38
74 2 121 6 3 37 38 62
75 2 121 6 3 16 17 63
76 2 121 6 3 55 16 63
77 2 121 6 3 55 63 56
78 2 121 6 3 64 56 63
79 2 121 6 3 56 64 65
80 2 121 6 3 57 56 65
81 2 121 6 3 57 65 58
82 2 121 6 3 66 58 65
83 2 121 6 3 58 66 67
84 2 121 6 3 59 58 67
85 2 121 6 3 59 67 60
86 2 121 6 3 68 60 67
87 2 121 6 3 60 68 69
88 2 121 6 3 61 60 69
89 2 121 6 3 61 69 62
90 2 121 6 3 70 62 69
91 2 121 6 3 62 70 36
92 2 121 6 3 37 62 36
93 2 121 6 3 17 18 63
94 2 121 6 3 71 63 18
95 2 121 6 3 63 71 72
96 2 121 6 3 64 63 72
97 2 121 6 3 64 72 65
98 2 121 6 3 73 65 72
99 2 121 6 3 65 73 74
100 2 121 6 3 66 65 74
101 2 121 6 3 66 74 67
102 2 121 6 3 75 67 74
103 2 121 6 3 67 75 76
104 2 121 6 3 68 67 76
105 2 121 6 3 68 76 69
106 2 121 6 3 77 69 76
107 2 121 6 3 69 77 78
108 2 121 6 3 70 69 78
109 2 121 6 3 70 78 36
110 2 121 6 3 35 36 78
111 2 121 6 3 18 19 79
112 2 121 6 3 71 18 79
113 2 121 6 3 71 79 72
114 2 121 6 3 80 72 79
115 2 121 6 3 72 80 81
116 2 121 6 3 73 72 81
117 2 121 6 3 73 81 74
118 2 121 6 3 82 74 81
119 2 121 6 3 74 82 83
120 2 121 6 3 75 74 83
121 2 121 6 3 75 83 76
122 2 121 6 3 84 76 83
123 2 121 6 3 76 84 85
124 2 121 6 3 77 76 85
125 2 121 6 3 77 85 78
126 2 121 6 3 86 78 85
127 2 121 6 3 78 86 34
128 2 121 6 3 35 78 34
129 2 121 6 3 19 20 79
130 2 121 6 3 87 79 20
131 2 121 6 3 79 87 88
132 2 121 6 3 80 79 88
133 2 121 6 3 80 88 81
134 2 121 6 3 89 81 88
135 2 121 6 3 81 89 90
136 2 121 6 3 82 81 90
137 2 121 6 3 82 90 83
138 2 121 6 3 91 83 90
139 2 121 6 3 83 91 92
140 2 121 6 3 84 83 92
141 2 121 6 3 84 92 85
142 2 121 6 3 93 85 92
143 2 121 6 3 85 93 94
144 2 121 6 3 86 85 94
145 2 121 6 3 86 94 34
146 2 121 6 3 33 34 94
147 2 121 6 3 20 21 95
148 2 121 6 3 87 20 95
149 2 121 6 3 87 95 88
150 2 121 6 3 96 88 95
151 2 121 6 3 88 96 97
152 2 121 6 3 89 88 97
153 2 121 6 3 89 97 90
154 2 121 6 3 98 90 97
155 2 121 6 3 90 98 99
156 2 121 6 3 91 90 99
157 2 121 6 3 91 99 92
158 2 121 6 3 100 92 99
159 2 121 6 3 92 100 101