/[escript]/branches/escript3047_with_pastix2995/finley/src/SConscript
ViewVC logotype

Contents of /branches/escript3047_with_pastix2995/finley/src/SConscript

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3049 - (show annotations)
Fri Jun 25 04:20:29 2010 UTC (8 years, 9 months ago) by lgao
File size: 5195 byte(s)
Add direct solver pastix 2995. Currently works for single MPI rank only. For jobs with more than 1 MPI rank, the structure "coupleBlock" in "SystemMatrix" is not ready yet. 


1
2
3 ########################################################
4 #
5 # Copyright (c) 2003-2010 by University of Queensland
6 # Earth Systems Science Computational Center (ESSCC)
7 # http://www.uq.edu.au/esscc
8 #
9 # Primary Business: Queensland, Australia
10 # Licensed under the Open Software License version 3.0
11 # http://www.opensource.org/licenses/osl-3.0.php
12 #
13 ########################################################
14
15
16 import os
17 Import('*')
18
19 local_env = clone_env(env_mpi)
20 py_wrapper_local_env = clone_env(env_mpi)
21
22 # Remove the sharedlibrary prefix on all platform - we don't want 'lib' mucking with our python modules
23 del py_wrapper_local_env['SHLIBPREFIX']
24
25 sources = """
26 Assemble_AverageElementData.c
27 Assemble_CopyElementData.c
28 Assemble_CopyNodalData.c
29 Assemble_LumpedSystem.c
30 Assemble_NodeCoordinates.c
31 Assemble_PDE.c
32 Assemble_PDE_Single2_1D.c
33 Assemble_PDE_Single2_2D.c
34 Assemble_PDE_Single2_3D.c
35 Assemble_PDE_Single2_C.c
36 Assemble_PDE_System2_1D.c
37 Assemble_PDE_System2_2D.c
38 Assemble_PDE_System2_3D.c
39 Assemble_PDE_System2_C.c
40 Assemble_addToSystemMatrix.c
41 Assemble_getAssembleParameters.c
42 Assemble_getSize.c
43 Assemble_gradient.c
44 Assemble_integrate.c
45 Assemble_interpolate.c
46 Assemble_jacobeans.c
47 Assemble_setNormal.c
48 ElementFile.c
49 ElementFile_allocTable.c
50 ElementFile_copyTable.c
51 ElementFile_createColoring.c
52 ElementFile_distributeByRankOfDOF.c
53 ElementFile_gather.c
54 ElementFile_jacobeans.c
55 ElementFile_markNodes.c
56 ElementFile_optimizeOrdering.c
57 ElementFile_relableNodes.c
58 ElementFile_scatter.c
59 ElementFile_setCoordinates.c
60 ElementFile_setNodeRange.c
61 ElementFile_setTags.c
62 Finley.c
63 IndexList.c
64 Mesh.c
65 Mesh_createNodeFileMappings.c
66 Mesh_distributeByRankOfDOF.c
67 Mesh_findMatchingFaces.c
68 Mesh_getPattern.c
69 Mesh_glueFaces.c
70 Mesh_hex20.c
71 Mesh_hex8.c
72 Mesh_joinFaces.c
73 Mesh_markNodes.c
74 Mesh_merge.c
75 Mesh_optimizeDOFDistribution.c
76 Mesh_optimizeDOFLabeling.c
77 Mesh_prepare.c
78 Mesh_print.c
79 Mesh_read.c
80 Mesh_readGmsh.c
81 Mesh_rec4.c
82 Mesh_rec8.c
83 Mesh_relableElementNodes.c
84 Mesh_resolveNodeIds.c
85 Mesh_saveDX.c
86 Mesh_saveVTK.c
87 Mesh_setCoordinates.c
88 Mesh_tagmaps.c
89 Mesh_write.c
90 NodeFile.c
91 NodeFile_allocTable.c
92 NodeFile_copyTable.c
93 NodeFile_createDenseLabelings.c
94 NodeFile_gather.c
95 NodeFile_scatter.c
96 NodeFile_setCoordinates.c
97 NodeFile_setIdRange.c
98 NodeFile_setTags.c
99 NodeMapping.c
100 Quadrature.c
101 ReferenceElements.c
102 ShapeFunctions.c
103 TagMap.c
104 Util.c
105 ReferenceElementSets.c
106 CPPAdapter/FinleyAdapterException.cpp
107 CPPAdapter/FinleyError.cpp
108 CPPAdapter/MeshAdapter.cpp
109 CPPAdapter/MeshAdapterFactory.cpp
110 CPPAdapter/SystemMatrixAdapter.cpp
111 CPPAdapter/TransportProblemAdapter.cpp
112 """.split()
113 headers = """
114 Assemble.h
115 ElementFile.h
116 Finley.h
117 FinleyVersion.h
118 IndexList.h
119 Mesh.h
120 NodeFile.h
121 NodeMapping.h
122 Quadrature.h
123 RectangularMesh.h
124 ReferenceElements.h
125 ShapeFunctions.h
126 TagMap.h
127 Util.h
128 ReferenceElementSets.h
129 vtkCellType.h
130 """.split()
131 cppadapter_headers = """
132 CPPAdapter/FinleyAdapterException.h
133 CPPAdapter/FinleyError.h
134 CPPAdapter/MeshAdapter.h
135 CPPAdapter/MeshAdapterFactory.h
136 CPPAdapter/SystemMatrixAdapter.h
137 CPPAdapter/TransportProblemAdapter.h
138 CPPAdapter/system_dep.h
139 """.split()
140
141 local_env.Append(LIBS = ['escript', 'esysUtils', 'paso'] + env['sys_libs'] )
142
143 if local_env['usepastix']:
144 local_env.AppendUnique(LIBS = ['pastix','ptscotch','ptscotcherr','ptscotcherrexit'])
145
146 if IS_WINDOWS_PLATFORM :
147 local_env.Append(CPPDEFINES = ['FINLEY_EXPORTS'])
148
149 py_wrapper_local_env.Append(LIBS = ['finley', 'escript', 'esysUtils', 'paso'] + env['sys_libs'] )
150
151 module_name = 'finley'
152 py_wrapper_name = module_name + 'cpp'
153
154 lib = local_env.SharedLibrary(module_name, sources)
155 env.Alias('target_finley_so', lib)
156
157 py_wrapper_lib = py_wrapper_local_env.SharedLibrary(py_wrapper_name, 'CPPAdapter/finleycpp.cpp')
158 env.Alias('target_finleycpp_so', py_wrapper_lib)
159
160 include_path = Dir('finley', local_env['incinstall'])
161 cppadapter_include_path = Dir('CppAdapter', include_path)
162
163 tmp1 = local_env.Install(include_path, headers )
164 tmp2 = local_env.Install(cppadapter_include_path, cppadapter_headers )
165 env.Alias('target_install_finley_headers', [tmp1, tmp2])
166
167 tmp3 = local_env.Install(local_env['libinstall'], lib)
168 env.Alias('target_install_finley_so', tmp3)
169
170 #windows specific mod
171 tmp_inst = os.path.join(local_env['pyinstall'],module_name)
172 if os.name == 'nt':
173 wrapper_postfix = '.pyd'
174 else:
175 wrapper_postfix = '.so'
176
177 share_name = os.path.join(tmp_inst,py_wrapper_name+wrapper_postfix)
178
179 tmp4 = py_wrapper_local_env.InstallAs(target=share_name,
180 source=py_wrapper_lib[0])
181
182 env.Alias('target_install_finleycpp_so', tmp4)
183
184 # export the lib target since tests will depend on it
185 # the lib target is a list of file nodes (why? win32 produces more than one output file: .lib, .dll, .pdb)
186 # FIXME: This list handling produces the desired result but can this be done directly with scons File nodes?
187 dep_lib = [local_env['libinstall']+'/'+str(x) for x in lib]
188 Export('dep_lib')
189
190 # Call the python sconscript
191 env.SConscript(dirs = ['#/finley/py_src'], build_dir='py', duplicate=0)
192
193 # Call the unit tests SConscript
194 local_env.SConscript(dirs = ['#/finley/test'], build_dir='#/build/$PLATFORM/finley/test', duplicate=0)
195

  ViewVC Help
Powered by ViewVC 1.1.26