Stellar Ex

0 views
Skip to first unread message

Fatima Teem

unread,
Aug 5, 2024, 11:28:55 AM8/5/24
to seigearssacli
Stellarimproves tetrahedral meshes so that their worst tetrahedra have high quality, making them more suitable for finite element analysis. Stellar employs a broad selection of improvement operations, including vertex smoothing by nonsmooth optimization, stellar flips and other topological transformations, vertex insertion, and edge contraction. If the domain shape has no small angles, Stellar routinely improves meshes so that the smallest dihedral angle is larger than 30 degrees and the largest dihedral angle is smaller than 140 degrees.

Features include a choice of several quality measures (both as objective functions and for mesh statistics), control of tetrahedron sizes, and transformations that improve the boundary of the mesh. The last give you a choice between flat surfaces (in which vertices are constrained to lie, so the surface is improved without changing the domain shape) and curved surfaces (where we optionally permit small changes of the domain shape if they give big wins in mesh quality).


Stellar is written entirely in ANSI C, and relies only on standard C libraries. It should compile on any POSIX-compliant system, and is known to compile on Linux, Mac OS X, and Microsoft Windows. Stellar's internal mesh data structure is an implementation of Blandford, Blelloch, Cardoze, and Clemens' Compact Representations of Simplicial Meshes in Two and Three Dimensions. For geometric computations, it relies on Jonathan's fast robust predicates code. It is available under the terms of the Berkeley Source Distribution (BSD) license. It is accompanied by a (slightly unfinished) visualization program called Show Me, which runs only under X Windows.


Stellar comes with a makefile that should work out-of-the-box on Mac OS X and Linux. It links only to standard C libraries. To compile on Mac OS X, typemakefrom within the base directory of the uncompressed tarball. To compile on Linux, typemake linuxBy default, Stellar is built with optimization (-fast on Mac OS X, -O3 on Linux) and without debugging symbols. To disable optimization and add debugging symbols, typemake macdebugon Mac OS X ormake linuxdebugon Linux. Stellar has also been successfully compiled on Windows, but we provide no build environment for Windows. (If you want to contribute one, we will add it to the distribution.)


If you are running X Windows, you can compile the visualization program Show Me by typingmake macshowmeormake linuxshowmefrom the base directory. We do not have a visualization program for Microsoft Windows, but you can use the meshconvert.py script to convert meshes to NETGEN format, then use their visualizer.


You can change Stellar's default behavior by specifying a configuration file with the -s switch. The distribution includes a sample configuration file with an enumeration of all of Stellar's options. Read it for instructions on how to change it.Stellar -s EXAMPLE_CONFIG mymesh


Although most of Stellar's behavior can only be controlled through the configuration file, there are a few command line arguments provided for convenience. -s [configfilename] Specifies the configuration file. If this option is omitted, Stellar will use the same defaults described in the example configuration file. -L [verbosity] Specifies the verbosity configuration parameter, which can also be set in the configuration file. If the -L switch comes after the -s switch, this verbosity will override the setting in the configuration file. -F When this switch is specified, Stellar will output quality information of the input mesh and quit, without performing any mesh improvement. This switch corresponds to the outputandquit option in the configuration file. If the -F option is specified after the -s option, it will override the setting in the configuration file. This option is useful if you want to analyze the quality of an existing mesh without altering it.File FormatsStellar's tetrahedral mesh inputs and outputs come as two files: a .node file that stores the geometric positions of the vertices, and an .ele file that stores the tetrahedra, indexed by their vertex numbers.


Stellar optionally outputs files that list the quality of each tetrahedron in the mesh. .minsine files list the minimum sine among each tetrahedron's six dihedral angles. .minang and .maxang files list the minimum and maximum dihedral angle in degrees for each tetrahedron. .vlrms files list the volume-length ratio, which is the ratio of each tetrahedron's volume to the cube of its root-mean-squared edge length, normalized so that an equilateral tetrahedron has a ratio of 1.0. .nrr files list the radius ratio, the ratio of the radii of the inscribed and circumscribing spheres of each tetrahedron, normalized so that an equilateral tetrahedron has a ratio of 1.0. For more information about these quality measures, refer to Chapter 2 of Bryan's dissertation. Here's an example of a .minsine file:


When it terminates, Stellar writes out a .stats file that details the improvement process. The .stats file includes a listing of improvement options, final mesh quality, and running times and success rates for various improvement operations. You can view an example .stats file here.


The distribution includes an interactive program called Show Me for visualizing the input and output meshes, both on the screen and as PostScript output. Unlike Stellar, Show Me requires X Windows to compile and run. Show Me isn't completely finished yet, though it's still useful. An alternative (especially if you don't run X Windows) is the visualization program that comes with the mesh generator NETGEN. You can convert our mesh format to NETGEN's format with the meshconvert.py script below.


A typical invocation of Show Me isshowme mymesh.1where mymesh.1.node and mymesh.1.ele contain the mesh you'd like to view. If you want to view the mesh vertices only, you can append the suffix .node. For example, to view the vertices of the input mesh (iteration number zero), typeshowme mymesh.node


The distribution includes a mesh conversion script, meshconvert.py, that can read and write several tetrahedral and surface mesh formats. You can use it to import meshes produced by other meshing programs to Stellar's .node/.ele format, and to export the improved meshes to some of those formats. The script requires Python 2.4 or higher. Here is the script's usage information:


An orange glow radiates from the centre of NGC 1792, the heart of this stellar forge. Captured by the NASA/ESA Hubble Space Telescope, this intimate view of NGC 1792 gives us some insight into this galactic powerhouse. The vast swathes of tell-tale blue seen throughout the galaxy indicate areas that are full of young, hot stars, and it is in the shades of orange, seen nearer the centre, that the older, cooler stars reside.


Stellar is a heterogeneous cluster composed of Intel and AMD nodes. The cluster was built to support large-scale parallel jobs for researchers in astrophysical sciences, plasma physics, physics, chemical & biological engineering and atmospheric & oceanic sciences.


Since Stellar is a Linux system, knowing some basic Linux commands is highly recommended. For an introduction to navigating a Linux system, view the material associated with our Intro to Linux Command Line workshop.


Using Stellar also requires some knowledge on how to properly use the file systems, environment modules, and the Slurm job scheduler. For an introduction to navigating Princeton's High Performance Computing systems, view our Guide to Princeton's Research Computing Clusters. Additional information specific to Stellar's file system, priority for job scheduling, etc. can be found below.


The login nodes, stellar-intel and stellar-amd, should be used for interactive work only such as compiling programs and submitting jobs as described below. Please remember that these are shared resources for all users. No jobs should be run on the login nodes with the exception of brief tests that last no more than a few minutes and use only a few CPU-cores. Where practical, we ask that you entirely fill the nodes so that CPU core fragmentation is minimized. For this cluster, stellar, that means multiples of 96 cores.


Nodes on the Intel side will consist of PU-only and PPPL-only nodes. Think of a Venn diagram here with PU and PPPL circles. There will be an intersection of some number of nodes so that either side can expand. Those nodes will be weighted differently so they are the very last to be assigned.


Each GPU is an NVIDIA A100 and has 40 GB of memory. The nodes of stellar are connected with HDR 100 Infiniband. Run the "shownodes" command for additional information about the nodes. There is one large-memory node (4 TB) available to CIMES users that is not mentioned in the table above. These may only be used for jobs that utilize more than 460 GB of memory. Please write to [email protected] for more information. For more technical details about the Stellar cluster, see the full version of the hardware systems table.


Any job submitted to the PU or PPPL partition requesting 47 or fewer CPU-cores will be assigned to the serial queue. Jobs in this queue will have the lowest priority of all jobs since the cluster is intended for multinode jobs. If you need to run a large number of serial jobs (47 cores or less) then you should consider moving that work to another cluster such as Della.


The AMD nodes feature the EPYC processor with AVX2 as the highest instruction set. See the Quick Reference Guide by AMD for compiler flags for different compilers (AOCC, GCC, Intel) and the AOCC user guide. As a starting point, consider using these optimization flags when compiling a C++ code, for instance:


Load the aocl module to make available the BLIS and libFLAME linear algebra libraries by AMD as well as FFTW3 and ScaLAPACK. Excellent performance was found for the High-Performance LINPACK benchmark using GCC and these libraries.


The environment modules that you load define part of your software environment which plays a role in determining the results of your code. Run the "module avail" command to see the available modules. For numerous reasons including scientific reproducibility, when loading an environment module you must specify the full name of the module. This can be done using module load, for example:

3a8082e126
Reply all
Reply to author
Forward
0 new messages