initial upload
This commit is contained in:
85
documentation/COPYRIGHTS
Executable file
85
documentation/COPYRIGHTS
Executable file
@@ -0,0 +1,85 @@
|
||||
|
||||
============================================================
|
||||
CODE Title: LaGriT, Version 3.x (OSS)
|
||||
Primary Author: Carl Gable
|
||||
LACC #: LA-CC-15-069
|
||||
Copyright Number Assigned: C15097
|
||||
Funding source: DOE Program (other than Weapons Program)
|
||||
|
||||
Initial Program Header:
|
||||
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * *
|
||||
* * Program: LaGriT V3.107 Linux m64 *
|
||||
* * date_compile: 2015/06/24 Ubu gf.so *
|
||||
* * Run Time: 2016/Aug 24 10:46:29 *
|
||||
* * Manual: http://lagrit.lanl.gov *
|
||||
* * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
|
||||
-----oOo-----
|
||||
LaGriT V3 LA-CC-15-069
|
||||
LaGriT Copyright: This program was prepared by Los Alamos National Security, LLC
|
||||
at Los Alamos National Laboratory (LANL) under contract No. DE-AC52-06NA25396
|
||||
with the U.S. Department of Energy (DOE). All rights in the program are reserved
|
||||
by the DOE and Los Alamos National Security, LLC. Permission is granted to the
|
||||
public to copy and use this software without charge, provided that this Notice
|
||||
and any statement of authorship are reproduced on all copies. Neither the
|
||||
U.S. Government nor LANS makes any warranty, express or implied, or assumes
|
||||
any liability or responsibility for the use of this software.
|
||||
-----oOo-----
|
||||
|
||||
LaGriT can read and write exodus files by way of external libraries.
|
||||
The following copyrights are included for the purpose of binary distribution.
|
||||
LaGrit does not distribute these libraries or their source.
|
||||
|
||||
-----oOo-----
|
||||
|
||||
The EXODUS II library is licensed under the BSD open source license.
|
||||
|
||||
Copyright (c) 2005 Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000
|
||||
with Sandia Corporation, the U.S. Government retains certain rights in this software.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification, are permitted
|
||||
provided that the following conditions are met:
|
||||
- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
|
||||
- Redistributions in binary form must reproduce the above copyright notice, this list
|
||||
of conditions and the following disclaimer in the documentation and/or other
|
||||
materials provided with the distribution.
|
||||
-Neither the name of Sandia Corporation nor the names of its contributors may be
|
||||
used to endorse or promote products derived from this software without specific
|
||||
prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
The ExodusII library source code is available on Sourceforge at
|
||||
http://sourceforge.net/projects/exodusii
|
||||
|
||||
For bug reports, documentation errors, and enhancement suggestions, contact:
|
||||
- Gregory D. Sjaardema
|
||||
- PHONE: (505) 844-2701
|
||||
- EMAIL: gdsjaar@sandia.gov
|
||||
|
||||
-----oOo-----
|
||||
|
||||
NetCDF
|
||||
Copyright 1993-2004 University Corporation for Atmospheric Research/Unidata
|
||||
Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, University Corporation for Atmospheric Research/Unidata.
|
||||
|
||||
Portions of this software were developed by the Unidata Program at the University Corporation for Atmospheric Research.
|
||||
|
||||
Access and use of this software shall impose the following obligations and understandings on the user. The user is granted the right, without any fee or cost, to use, copy, modify, alter, enhance and distribute this software, and any derivative works thereof, and its supporting documentation for any purpose whatsoever, provided that this entire notice appears in all copies of the software, derivative works and supporting documentation. Further, UCAR requests that the user credit UCAR/Unidata in any publications that result from the use of this software or in any product that includes this software, although this is not an obligation. The names UCAR and/or Unidata, however, may not be used in any advertising or publicity to endorse or promote any products or commercial entity unless specific written permission is obtained from UCAR/Unidata. The user also understands that UCAR/Unidata is not obligated to provide the user with any support, consulting, training or assistance of any kind with regard to the use, operation and performance of this software nor to provide the user with any updates, revisions, new versions or "bug fixes."
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY UCAR/UNIDATA "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL UCAR/UNIDATA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE ACCESS, USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
|
||||
206
documentation/DEPENDENCIES.md
Executable file
206
documentation/DEPENDENCIES.md
Executable file
@@ -0,0 +1,206 @@
|
||||
# Installing LaGriT Dependencies
|
||||
|
||||
LaGriT requires a number of external dependencies to fully compile.
|
||||
|
||||
* [HDF5](https://github.com/live-clones/hdf5) -- required
|
||||
* [NetCDF](https://github.com/Unidata/netcdf-c) -- required with modifications
|
||||
* [zlib](https://github.com/madler/zlib) -- required
|
||||
* [ExodusII](https://github.com/gsjaardema/seacas) -- optional but recommended
|
||||
|
||||
ExodusII is used for file exportation. If you have no need of this format, you may skip the ExodusII installation after building netCDF and HDF5 and following the *Managing Exodus* instructions in [INSTALL.md](INSTALL.md).
|
||||
|
||||
LaGriT also requires the following compilers:
|
||||
|
||||
* gcc-core
|
||||
* gcc-fortran
|
||||
* gcc-g++
|
||||
|
||||
If you are on Windows, it will be necessary to install [Cygwin](https://cygwin.com/install.html).
|
||||
|
||||
**NOTE:** This configuration also depends on what you use as your fortran, c++, and gcc compilers. You can add these variables to the `./configure` commands without adding the word 'export', or you can set these as global variables in your `.bashrc` file (recommended).
|
||||
|
||||
export FC="/bin/gfortran"
|
||||
export CC="/bin/gcc"
|
||||
export CXX="/bin/c++"
|
||||
export FC90="/bin/gfortran"
|
||||
export RANLIB="/bin/gcc-ranlib"
|
||||
export AR="/bin/gcc-ar"
|
||||
|
||||
|
||||
## 1. Compiling zlib
|
||||
|
||||
1.1. Unpack zlib and navigate to the directory
|
||||
|
||||
1.2. Compile for Cygwin:
|
||||
|
||||
```sh
|
||||
./configure --static --prefix=$HOME --64
|
||||
```
|
||||
|
||||
1.3. Type in `make` and then make sure there is no errors with `make check`
|
||||
|
||||
1.4. Use `make install` to finish installing zlib
|
||||
|
||||
1.5. Use `make clean` to clean up the library directory of build files.
|
||||
|
||||
|
||||
## 2. Compiling HDF5
|
||||
|
||||
2.1. Unpack the tar source file, in it you should find a folder named release_docs, which contains installation instructions in file called `INSTALL_Cygwin.txt`. I will follow these, while giving the actual commands I used.
|
||||
|
||||
>***CYGWIN NOTE:** On Windows, when you run the configure script, it might complain about new line characters. If this happens stop the script with Ctrl+C, and run `dos2unix -f targetfile` on the file where it throws an error. Use `make clean` afterwards to clean up your build.*
|
||||
|
||||
2.2. In Hdf5 directory use the following command to configure the build script:
|
||||
|
||||
```sh
|
||||
CFLAGS="-m64 -g" FCFLAGS="-m64 -g" CXXFLAGS="-m64 -g" ./configure --disable-shared --with-zlib=/cygdrive/c/Users/304285/dev/cygwin/home/304285/include,/cygdrive/c/Users/304285/dev/cygwin/home/304285/lib --prefix=$HOME --enable-fortran --enable-cxx --enable-static-exec
|
||||
|
||||
CFLAGS="-m64 -g" FCFLAGS="-m64 -g" CXXFLAGS="-m64 -g" ./configure --disable-shared --with-zlib=/lib/libz.a --prefix=$HOME --enable-fortran --enable-cxx --enable-static-exec
|
||||
|
||||
--host=x86_64-w64-mingw32
|
||||
--build=x86_64-w64-mingw32
|
||||
--with-gnu-ld
|
||||
```
|
||||
|
||||
2.3. Once configuration is complete, type in `make` to build the library, and `make check` to test it.
|
||||
|
||||
2.4. Run `make install` and `make check-install` to test it.
|
||||
|
||||
2.5. Run `make clean` to clean up your library of build files.
|
||||
|
||||
|
||||
## 3. Compiling netCDF
|
||||
|
||||
**NOTE:** After version 4.1.3, NetCDF-fortran became a different distribution so the use of environment variables set for fortran is unnecessary.
|
||||
|
||||
3.1. Unpack NetCDF and navigate to the directory, the installation instructions can be traced here: http://www.unidata.ucar.edu/software/netcdf/docs/netcdf-install/
|
||||
|
||||
3.2. Configure the build script
|
||||
|
||||
```sh
|
||||
CPPFLAGS="-I$HOME/include -m64 -g" LDFLAGS="-L$HOME/lib -m64 -g" LIBS="-L$HOME/lib -lhdf5_hl -lhdf5 -lz" ./configure --disable-shared --disable-dap --enable-netcdf-4 --prefix=$HOME CFLAGS="-m64 -g"
|
||||
```
|
||||
|
||||
**NOTE:** Possibly helpful options: `--build`, `--host`
|
||||
|
||||
3.3. Build the library with `make`, and test it with `make check`
|
||||
|
||||
3.4. Finish the install with `make install` and `make clean`
|
||||
|
||||
|
||||
## 4. Compiling Exodus
|
||||
|
||||
*For Exodus II bug reports, documentation errors, and enhancement suggestions, contact:*
|
||||
|
||||
>**Gregory D. Sjaardema**
|
||||
>
|
||||
> (505) 844-2701
|
||||
>
|
||||
> gdsjaar@sandia.gov
|
||||
|
||||
|
||||
4.1. Now before we start installing ExodusII, we need to make some slight modifications to NetCDF in `$NETCDF_HOME/include/netcdf.h` by changing the following variables as stated in exodus `README` file:
|
||||
|
||||
#define NC_MAX_DIMS 65536
|
||||
#define NC_MAX_VARS 524288
|
||||
#define NC_MAX_VAR_DIMS 8
|
||||
|
||||
4.2. Unpack Exodus and navigate to the exodus directory
|
||||
|
||||
4.3. Here we have two options for compiling ExodusII as described in the `README`, 1st is with `Makefile.standalone`, and 2nd is with `cmake`
|
||||
|
||||
**4.3.1. Using Makefile.standalone (INCOMPLETE: Might need to add additional arguments):**
|
||||
|
||||
a) Use the following make command:
|
||||
|
||||
make -f Makefile.standalone NETCDF=$HOME ARFLAGS=-rcv CFLAGS="-m64" FCFLAGS="-m64" CXXFLAGS="-m64"
|
||||
|
||||
b) Copy the Exodus libararies to our local libraries
|
||||
|
||||
cp libexodus.a libexoIIv2for.a $HOME/lib
|
||||
|
||||
**4.3.2. Using cmake (Harder difficulty since requires manipulation of additional libs but completed):**
|
||||
|
||||
>***CYGWIN NOTE:** To be able to use cmake on my Cygwin installation I had to copy over my cmake executable from `/bin/cmake` to `/home/304285/bin/cmake`, and my cmake root files from `/usr/share/cmake-3.1.2` to `/home/304285/share/cmake-3.1.2`. My PATH variable was set up to read my `/home/304285/bin` directory last and it overwrote the cmake I had in `/bin/cmake`.
|
||||
(Otherwise it throws `could not find CMAKE_ROOT/Module directory not found/Error executing cmake::LoadCache()`)*
|
||||
|
||||
a) Run `sh cmake-script` once you make appropriate changes to your `cmake-script` file, this was mine:
|
||||
|
||||
EXTRA_ARGS=$@
|
||||
|
||||
# Fortran compiler
|
||||
FC="/bin/gfortran"
|
||||
|
||||
# Root to where netcdf and hdf5 libraries and includes
|
||||
# are installed. Libraries will be in LIB_ROOT/lib and
|
||||
# includes will be in LIB_ROOT/include
|
||||
LIB_ROOT=/usr/local/lib
|
||||
|
||||
# Root of where to install the exodus libraries and
|
||||
# include files. Library will be in INSTALL_ROOT/lib
|
||||
# and include file in INSTALL_ROOT/include
|
||||
INSTALL_ROOT=$HOME
|
||||
|
||||
# Complete path to where the exodus.py file should be installed
|
||||
PYTHON_INSTALL=${INSTALL_ROOT}/python
|
||||
|
||||
# Add the following for a static build, mine kept throwing me memory truncation error
|
||||
# -DCMAKE_EXE_LINKER_FLAGS:STRING="-static" \
|
||||
|
||||
rm -f CMakeCache.txt
|
||||
|
||||
cmake \
|
||||
-DBUILD_SHARED:BOOL=OFF \
|
||||
-DBUILD_SHARED_LIBS:BOOL=OFF \
|
||||
-DCMAKE_INSTALL_PREFIX:PATH=${INSTALL_ROOT} \
|
||||
-DCMAKE_Fortran_COMPILER:FILEPATH=${FC} \
|
||||
-DNETCDF_NCDUMP:PATH='which ncdump' \
|
||||
-DNETCDF_INCLUDE_DIR:PATH=/usr/include \
|
||||
-DNETCDF_LIBRARY:PATH=/lib/libnetcdf.dll.a \
|
||||
-DHDF5HL_LIBRARY:PATH=/lib/libhdf5_hl.dll.a \
|
||||
-DHDF5_LIBRARY:PATH=/lib/libhdf5.dll.a \
|
||||
-DZLIB_LIBRARY:PATH=/lib/libz.dll.a \
|
||||
-DCURL_LIBRARY:PATH=/lib/libcurl.dll.a \
|
||||
-DPYTHON_INSTALL:PATH=${PYTHON_INSTALL} \
|
||||
-DCMAKE_C_FLAGS:STRING="-g -m64 -Dwin64 -mwindows" \
|
||||
-DCMAKE_CXX_FLAGS:STRING="-g -m64" \
|
||||
-DCMAKE_Fortran_FLAGS:STRING="-g -m64 -fcray-pointer -fdefault-integer-8 -Dwin64 -w -mwindows -fno-exceptions" \
|
||||
-DCMAKE_RANLIB:FILEPATH=/bin/gcc-ranlib \
|
||||
-DCMAKE_AR:FILEPATH=/bin/gcc-ar \
|
||||
-DCYGWIN:BOOL=TRUE \
|
||||
-DCMAKE_LEGACY_CYGWIN_WIN32=1 \
|
||||
-DCMAKE_VERBOSE_MAKEFILE:BOOL=TRUE \
|
||||
$EXTRA_ARGS
|
||||
|
||||
|
||||
b) There is a bug when it makes tests with static libraries, the following 2 files need to be changed for 'make' to work:
|
||||
|
||||
>i) `../exodus-6.09/exodus/forbind/CMakeLists`: change line 56 and have `${HDF5HL_LIBRARY}` come before `${HDF5_LIBRARY}`
|
||||
>
|
||||
>ii) `../exodus-6.09/exodus/cbind/CMakeLists`: change line 284 with the same library ordering
|
||||
|
||||
|
||||
c) Now run `make`
|
||||
|
||||
**NOTE:** When compiling with static linker flags, make throws a truncating error, to fix this I have attempted many options in the cmake-script that are listed here, however in the end I just ended up not using `-static` as a linker flag:
|
||||
|
||||
# -DCMAKE_GENERATOR:STRING="Unix Makefiles" \
|
||||
# -DCMAKE_LEGACY_CYGWIN_WIN32=1 \
|
||||
# -DCMAKE_Fortran_FLAGS:STRING="-g -fcray-pointer -fno-exceptions -fdefault-integer-8 -m64" \
|
||||
# -DCMAKE_STATIC_LINKER_FLAGS:STRING="-ncmodel=medium" \
|
||||
# --large-address-aware --relax --high-entropy-va
|
||||
# -DCMAKE_EXE_LINKER_FLAGS:STRING="-static" \
|
||||
# -DCYGWIN:BOOL=TRUE \
|
||||
# -DCMAKE_LEGACY_CYGWIN_WIN32=1 \
|
||||
|
||||
d) To test your build use `make check`
|
||||
|
||||
>***CYGWIN NOTE:** After testing the build it throws a message about truncating to 32 bit. What causes this is probably the fact that floats on Windows 64 bit are 4 bit, while on Cygwin they are 8 bit since Cygwin emulated a Linux system.*
|
||||
|
||||
e) Run `make install`
|
||||
|
||||
---
|
||||
|
||||
|
||||
**If you run into errors building LaGriT or have suggestions on how to improve this documentation, please email Terry Miller (tamiller@lanl.gov), Dylan Harp (dharp@lanl.gov), or Daniel Livingston (livingston@lanl.gov).**
|
||||
|
||||
252
documentation/INSTALL.md
Executable file
252
documentation/INSTALL.md
Executable file
@@ -0,0 +1,252 @@
|
||||
# Building with make for LaGriT V3.32 and pre-2019 and older
|
||||
----------------------------------------------
|
||||
|
||||
|
||||
LaGriT installation is intended to be as straightforward as possible for Linux and macOS systems. If you encounter any problems with the build process, submit a ticket on the [Issues page](https://github.com/lanl/LaGriT/issues).
|
||||
The files in this directory used the make system to build on linux, mac, and WINDOWS.
|
||||
|
||||
## New build instructions apply to V3.33 with cmake
|
||||
|
||||
Newer codes use C++ to Fortran wrappers that are easier to build with cmake. Building with Exodus is also made easier with cmake. See https://github.com/lanl/LaGriT/README.md
|
||||
|
||||
# Old instructions for Building LaGriT V3.32 and pre-2019 codes.
|
||||
|
||||
If you are on Windows, see Section 4.0 on this page for more information.
|
||||
|
||||
## 1. Automatic Build (Linux, macOS)
|
||||
|
||||
### 1.1. Pre-requisites
|
||||
|
||||
* GCC / G++ / GFORTRAN 8.0.0+
|
||||
* CMake 3.10+
|
||||
* Git
|
||||
* Bash
|
||||
* wget
|
||||
* Python 3
|
||||
|
||||
Linux users will also require the following:
|
||||
|
||||
* [m4](https://www.gnu.org/software/m4/)
|
||||
* [bison](https://www.gnu.org/software/bison/)
|
||||
* libz-dev
|
||||
|
||||
On Ubuntu, run
|
||||
|
||||
sudo apt-get -y install gfortran libz-dev m4 bison
|
||||
|
||||
to install all non-stock pre-requisites.
|
||||
|
||||
On macOS, if you use [Homebrew](https://brew.sh), run
|
||||
|
||||
brew update && brew install gcc wget cmake python
|
||||
|
||||
or, if you use [MacPorts](https://www.macports.org),
|
||||
|
||||
sudo port selfupdate && sudo port install cmake gcc wget python
|
||||
|
||||
to install all non-stock pre-requisites.
|
||||
|
||||
### 1.2. Cloning LaGriT
|
||||
|
||||
Download the repo by running:
|
||||
|
||||
git clone https://github.com/lanl/LaGriT.git
|
||||
cd LaGriT
|
||||
|
||||
### 1.3. Building Exodus
|
||||
|
||||
If you don't already have [Exodus](http://gsjaardema.github.io/seacas/exodusII-new.pdf) built on your system, run
|
||||
|
||||
make exodus
|
||||
|
||||
Note that Exodus is optional, though recommended for full functionality.
|
||||
|
||||
### 1.4. Compiling LaGriT
|
||||
|
||||
Finally, to build and test a shared, optimized LaGriT binary, run
|
||||
|
||||
make release
|
||||
make test
|
||||
|
||||
To build LaGriT without Exodus,
|
||||
|
||||
make WITH_EXODUS=0 release
|
||||
|
||||
More options are available by running `make help`.
|
||||
|
||||
### 1.5. Testing LaGriT
|
||||
|
||||
Run the command
|
||||
|
||||
make test
|
||||
|
||||
to validate the LaGriT compilation. Note that if you compiled without Exodus, one test should fail (`write_exo`).
|
||||
|
||||
The test suite requires Python 3 or above.
|
||||
|
||||
### 1.6. Troubleshooting
|
||||
|
||||
dumpexodusII.f:130: Error: Can't open included file 'exodusII.inc'
|
||||
make[1]: *** [objects/dumpexodusII.o] Error 1
|
||||
make[1]: Leaving directory `/path/to/LaGriT/src'
|
||||
make: *** [before] Error 2
|
||||
The command "make release" exited with 2.
|
||||
|
||||
**Problem**:
|
||||
* GFORTRAN cannot find Exodus include files.
|
||||
|
||||
**Solution**:
|
||||
* This problem typically results from a failed Exodus compilation.
|
||||
* Follow the traceback from `make exodus` to see where in the process it failed.
|
||||
* Usually this is because one or more pre-requisites were not found on your system. See Section 1.1 for more information.
|
||||
* Alternately, run `make WITH_EXODUS=0 release` to circumvent the Exodus dependency.
|
||||
|
||||
## 2. Makefile Usage
|
||||
|
||||
### 2.1. Usage
|
||||
|
||||
make [options] [target]
|
||||
|
||||
### 2.2. Targets
|
||||
|
||||
* `make release`
|
||||
* Optimized build (with shared libraries)
|
||||
|
||||
* `make static`
|
||||
* Optimized build (with static libraries)
|
||||
|
||||
* `make DEBUG=1 release`
|
||||
* Debug build (with shared libraries)
|
||||
|
||||
* `make DEBUG=1 static`
|
||||
* Debug build (with static libraries)
|
||||
|
||||
* `make exodus`
|
||||
* Download and build the Sandia ExodusII Fortran library.
|
||||
By default, it will download to the current working directory.
|
||||
This can be changed by running
|
||||
|
||||
* `make EXO_BUILD_DIR=/exodus/path/out/ exodus`
|
||||
|
||||
* `make test`
|
||||
* Run the LaGriT test suite on the created binary.
|
||||
If you have changed or moved LaGriT from src/lagrit, use
|
||||
the option `EXE_NAME=/path/to/lagrit`
|
||||
|
||||
### 2.3. Options
|
||||
|
||||
* `CC` (default: gcc) : C source compiler
|
||||
* `FC` (default: gfortran) : Fortran source compiler
|
||||
* `FC90` (default: gfortran) : Fortran90 source compiler
|
||||
* `WITH_EXODUS` (default: 1) : Build with or without Exodus
|
||||
* `DEBUG` (default: 0) : Built in debug (1) or optimized (0) mode
|
||||
* `EXO_LIB_DIR` (default: LAGRIT_ROOT_DIR/seacas/lib) : ExodusII library location
|
||||
* `EXE_NAME` (default: src/lagrit) : binary filename for LaGriT
|
||||
|
||||
## 3. Manual Build
|
||||
|
||||
If you are experiencing issues with the standard compilation procedure, you may need to do a manual install.
|
||||
|
||||
### 3.1. Exodus Compilation
|
||||
|
||||
See Section 1.3 in this document to build Exodus automatically.
|
||||
|
||||
To manually build Exodus, read the [SEACAS Documentation](https://github.com/gsjaardema/seacas/blob/master/README.md) for the most up-to-date instructions.
|
||||
|
||||
For most architectures, this should be as simple as:
|
||||
|
||||
$ export CGNS=NO
|
||||
$ export MATIO=NO
|
||||
$ export SHARED=NO
|
||||
$ export NEEDS_ZLIB=YES
|
||||
$ git clone https://github.com/gsjaardema/seacas.git $(EXO_BUILD_DIR)/seacas
|
||||
$ cd $(EXO_BUILD_DIR)/seacas
|
||||
$ ./install-tpl.sh
|
||||
$ cd TPL
|
||||
$ ../cmake-config -DFORTRAN=YES
|
||||
$ make && make install
|
||||
|
||||
If the build was unsuccessful, a non-zero exit code will be thrown along with this error:
|
||||
|
||||
-- Configuring incomplete, errors occurred!
|
||||
|
||||
### 3.2. Building the LaGriT `lg_util` library
|
||||
|
||||
If this is your first time installing LaGriT, you will need to navigate to `LaGriT/lg_util/src` and build `lg_util`. To do this, you may either follow the directions in `README` for advanced operations, or simply run
|
||||
|
||||
$ make clean
|
||||
$ make lib
|
||||
|
||||
You may pass options to this Makefile, such as:
|
||||
|
||||
* `CC` (default: `gcc`)
|
||||
* `FC` (default: `gfortran`)
|
||||
* `BIT_SIZE` (default: output of `$(shell getconf LONG_BIT)`)
|
||||
* `DEBUG` (default: `0`)
|
||||
|
||||
Since this library is stable and generally not updated with most releases, it is usually not necessary to recompile with each pull.
|
||||
The `lib` target compiles every source file into an object file and combines them into a library using `ar rcu [targets]`.
|
||||
|
||||
### 3.3. Building the LaGriT `src/` library
|
||||
|
||||
Navigate to `src/` and run
|
||||
|
||||
$ make clean
|
||||
$ gfortran -O -fcray-pointer -fdefault-integer-8 -m64 -Dlinx64 -c -o lagrit_main.o lagrit_main.f
|
||||
$ gfortran -O -fcray-pointer -fdefault-integer-8 -m64 -Dlinx64 -c -o lagrit_fdate.o lagrit_fdate.f
|
||||
$ make lib
|
||||
|
||||
The `lib` target compiles every source file into an object file and combines them into a library using `ar rcu [targets]`.
|
||||
Note that `dumpexodusII.f` must be compiled with the `-cpp` flag, due to `#ifdef` statements. Further, `tempgable.f` must be compiled with the flag `-std=legacy`. These flags may be different on compilers other than GNU gfortran.
|
||||
|
||||
-----------------
|
||||
|
||||
To build without Exodus, in lieu of `make lib`, run
|
||||
|
||||
$ make WITH_EXODUS=0 lib
|
||||
|
||||
Critically, this flag set to `0` does two things:
|
||||
|
||||
1. Compiles `dumpexodusII.f` with flags: `-cpp -DNOEXODUS`
|
||||
2. Does **not** compile any source files matching the glob `exo_*.c`
|
||||
|
||||
### 3.4. Building LaGriT
|
||||
|
||||
Within the `src/` directory, link the generated libraries using the command:
|
||||
|
||||
$ gfortran -O -Dlinx64 -fcray-pointer -fdefault-integer-8 -fno-sign-zero -o lagrit lagrit_main.o lagrit_fdate.o lg_main_lib.a ../lg_util/src/lg_util_lib.a -L$ACCESS -lexodus_for -lexodus -lnetcdf -lhdf5_hl -lhdf5 -lz -lm -lstdc++ -ldl
|
||||
|
||||
Note that `ACCESS` is a shell variable pointing to `$(EXODUS_DIRECTORY)/lib`.
|
||||
|
||||
If Exodus has not been built, several flags become unneccessary:
|
||||
|
||||
$ gfortran -O -Dlinx64 -fcray-pointer -fdefault-integer-8 -fno-sign-zero -o lagrit lagrit_main.o lagrit_fdate.o lg_main_lib.a ../lg_util/src/lg_util_lib.a -lm -lstdc++
|
||||
|
||||
Note that some flags are architecture-dependant. For example, `-Dlinx64` is a Linux-unique command that translates to `-Dmacx64` on macOS systems.
|
||||
|
||||
### 3.5. Running LaGriT
|
||||
|
||||
From inside `LaGriT/src/`, run
|
||||
|
||||
$ ./lagrit
|
||||
|
||||
to start the program.
|
||||
|
||||
A comprehensive test suite can be found in `LaGriT/test`. Run the command
|
||||
|
||||
python suite.py -f -l 1 -exe=path/to/lagrit
|
||||
|
||||
to validate the build.
|
||||
|
||||
## 4. Windows Build
|
||||
|
||||
Currently, Windows support is limited and will require a manual install. See [here](build_win.md) for build instructions.
|
||||
Windows support is under active development. Read this [issue](#null) for current development status.
|
||||
|
||||
## What's next? ##
|
||||
|
||||
For documentation, tutorials, and commands, visit the [LaGriT homepage](http://lagrit.lanl.gov).
|
||||
|
||||
**If you run into errors building LaGriT or have suggestions on how to improve this documentation, please email Terry Miller (tamiller@lanl.gov)**
|
||||
|
||||
|
||||
12
documentation/README.md
Normal file
12
documentation/README.md
Normal file
@@ -0,0 +1,12 @@
|
||||
## LaGriT: Los Alamos Grid Toolbox old Documentation ##
|
||||
|
||||
The files in this directory were from LaGriT during the transition from Mercurial version control and the html web pages, moved to github version control and github pages for documentation.
|
||||
|
||||
Most these files and command descriptions were created before 2017, though there are some updates to the build process included in these pages that may be helpful for older machines.
|
||||
|
||||
|
||||
See current documentation located at the top directory and manual pages under docs.
|
||||
|
||||
**LANL Software: LA-CC-15-069 No. C15097**
|
||||
|
||||
|
||||
2075
documentation/Versions.txt
Executable file
2075
documentation/Versions.txt
Executable file
File diff suppressed because it is too large
Load Diff
204
documentation/build.md
Executable file
204
documentation/build.md
Executable file
@@ -0,0 +1,204 @@
|
||||
---
|
||||
Title: "Manual - Building an Executable"
|
||||
Tags: Manual Building an executable and running LaGriT
|
||||
---
|
||||
|
||||
|
||||
# Building an executable with LaGriT
|
||||
|
||||
------
|
||||
|
||||
The executable is built by linking a driver routine with the code and
|
||||
utility libraries. The driver routine must contain a call to initLaGriT
|
||||
and a call to control_command_lg and must contain a subroutine called
|
||||
user_sub.
|
||||
|
||||
The input arguments to initLaGriT are:
|
||||
|
||||
**mode** - set to 'noisy' for output to be echoed to the screen - set to
|
||||
'silent' for no echo
|
||||
|
||||
**log_file** - name of log file (if ' ' or '-def-' use default name which
|
||||
is logx3dgen) This file will contain a list of commands.
|
||||
|
||||
**batch_file** - name of batch file (if ' ' or '-def-' use default name
|
||||
which is outx3dgen). This file will contain a list of commands and the
|
||||
error, warning and informational messages generated by the command.
|
||||
User_sub is used to implement user commands, see [User Commands](writing.md).
|
||||
|
||||
A sample Fortran driver routine is listed below.
|
||||
|
||||
<pre>
|
||||
program adrivgen
|
||||
|
||||
C PURPOSE LaGriT driver
|
||||
|
||||
implicit none
|
||||
integer ierror_return
|
||||
|
||||
call initLaGriT('noisy',' ',' ')
|
||||
|
||||
call control_command_lg(ierror_return)
|
||||
|
||||
stop
|
||||
end
|
||||
|
||||
C Subroutine user_sub
|
||||
C
|
||||
C PURPOSE
|
||||
C Process user supplied commands
|
||||
C
|
||||
C INPUT ARGUMENTS
|
||||
C
|
||||
C imsgin - integer array of tokens returned by parser
|
||||
C xmsgin - real array of tokens returned by parser
|
||||
C cmsgin - character array of tokens returned by parser
|
||||
C msgtyp - int array of token types returned by parser
|
||||
C nwds - number of tokens returned by parser
|
||||
C
|
||||
C OUTPUT ARGUMENTS
|
||||
C
|
||||
C ierr1 - 0 for successful completion - -1 otherwise
|
||||
subroutine user_sub(imsgin,xmsgin,cmsgin,msgtyp,nwds,ierr1)
|
||||
|
||||
character*32 cmsgin(nwds)
|
||||
integer imsgin(nwds),msgtyp(nwds)
|
||||
integer nwds,ierr1,lenc
|
||||
real*8 xmsgin(nwds)
|
||||
|
||||
C set default error return to fail
|
||||
ierr1=-1
|
||||
|
||||
C Insert code here to handle user coded subroutines
|
||||
C For example
|
||||
|
||||
if(cmsgin(1).eq.'my_cmnd') then
|
||||
call my_rtn(imsgin,xmsgin,cmsgin,msgtyp,nwds,ierr1)
|
||||
else
|
||||
ierr1=-1
|
||||
endif
|
||||
|
||||
return
|
||||
end
|
||||
</pre>
|
||||
|
||||
### Sample build scripts
|
||||
|
||||
LaGriT can be compiled on most modern machines including Linux, and Mac. WINDOWS is still under development, but pre-cmake versions were successful under Cygwin. LaGriT now uses cmake to build with or without external libraries such as Seacas Exodus.
|
||||
|
||||
The most recent instructions can be found on the github pages.
|
||||
Simple install, build, and test: [LaGriT Github README](https://github.com/lanl/LaGriT/blob/master/README.md)
|
||||
|
||||
### Running LaGriT
|
||||
|
||||
To execute, use standard unix file redirection for standard input and
|
||||
output. LaGriT will produce two additional files, lagrit.out and
|
||||
lagrit.log. The user can change the names of these files by supplying new
|
||||
names as arguments in the call to initLaGriT before compiling. These files contain
|
||||
detailed output information and the list of commands respectively.
|
||||
LaGriT may also be run interactively in which case the user will be
|
||||
prompted to enter commands at the machine prompt.
|
||||
|
||||
lagrit < lagrit_command_file
|
||||
|
||||
|
||||
### The following are examples to build old releases (pre V3.2) but may be helpful on older machines.
|
||||
|
||||
**Sun OS and Sun Solaris forte version 7 compiler:**
|
||||
|
||||
f90 -O2 -lf77compat -o LaGriTgen adrivgen.f libLaGriT.a libutil.a
|
||||
|
||||
if the user wishes to link in user subroutines that contain CRAY type
|
||||
pointer statements, these routines must be compiled using the f77
|
||||
compiler and then the .o files linked in with f90:
|
||||
|
||||
|
||||
f77 -c -O2 user_routines.f
|
||||
f90 -O2 -lf77compat -o LaGriTgen adrivgen.f user_routines.o
|
||||
libLaGriT.a libutil.a
|
||||
|
||||
older sun compilers:
|
||||
|
||||
f90 -O2 -o LaGriTgen adrivgen.f libLaGriT.a libutil.a
|
||||
|
||||
**IBM RISC**
|
||||
|
||||
xlf -g -o LaGriTgen -qintlog -qcharlen=500 -brename:.fdate,.fdate_
|
||||
adrivgen.f
|
||||
libLaGriT.a libutil.a
|
||||
|
||||
**SGI**
|
||||
|
||||
f90 -O2 -n32 -r10000 -o LaGriTgen adrivgen.f libLaGriT.a libutil.a
|
||||
|
||||
Compile for 64 bit I8 SGI:
|
||||
|
||||
f90 -O2 -64 -i8 -o LaGriTgen adrivgen.f libLaGriT.a libutil.
|
||||
|
||||
**HP:**
|
||||
|
||||
f90 +U77 -R8 -lm -o LaGriTgen adrivgen.f libLaGriT.a libutil.a
|
||||
|
||||
**DEC COMPAQ compiler**
|
||||
|
||||
fort -i8 -O -fast -pipeline -transform_loops -o LaGriTgen
|
||||
adrivgen.f libLaGriT.a libutil.a
|
||||
|
||||
**ABSOFT compiler**:
|
||||
|
||||
f90 -YTEXT_NAMES=LCS -o LaGriTgen adrivgen.f fdate.f libLaGriT.a
|
||||
libutila. -lm -lu77
|
||||
|
||||
where fdate.f is
|
||||
<pre>
|
||||
subroutine fdate(string)
|
||||
character*(*) string
|
||||
call fdate_(string)
|
||||
return
|
||||
end
|
||||
</pre>
|
||||
|
||||
**LINUX**
|
||||
|
||||
if ($OSTYPE == 'Linux') then
|
||||
set OSTAG = _lin
|
||||
set F77FLAG = "-c -f -m32 -YEXT_NAMES=ASIS"
|
||||
set F90FLAG = "-m32 -YEXT_NAMES=ASIS"
|
||||
set LINKFLAG = "-lm -lU77"
|
||||
set F90DIR = /opt/absoft10.0/bin
|
||||
|
||||
else if ($OSTYPE == 'Darwin') then
|
||||
set OSTAG = _mac
|
||||
set F77FLAG = "-c -f -N113 -N90 -B19 -q"
|
||||
set F90FLAG = ""
|
||||
set LINKFLAG = " -lU77"
|
||||
set F90DIR = /Applications/Absoft/bin
|
||||
|
||||
else if ($OSTYPE == 'SunOS') then
|
||||
set OSTAG = _sun
|
||||
source /n/env/local.forte.7
|
||||
set F77FLAG = -c
|
||||
set F90FLAG = "-lf77compat "
|
||||
set LINKFLAG = " "
|
||||
set F90DIR = /n/local_SunOS/forte7/SUNWspro/bin
|
||||
|
||||
else
|
||||
echo 'OS $OSTYPE not recognized '
|
||||
exit 1
|
||||
endif
|
||||
|
||||
set FFILES = "lagrit_main.f lagrit_fdate.f"
|
||||
set OFILES = "lagrit_main.o lagrit_fdate.o"
|
||||
set binname = lagrit$OSTAG$COPT
|
||||
set binname_date = lagrit$OSTAG$COPT$DATETAG
|
||||
set liblagrit = lagrit$OSTAG$COPT.a
|
||||
set libutil = util$OSTAG$COPT.a
|
||||
'rm' -f *.o
|
||||
|
||||
$F90DIR/f77 $CFLAG $F77FLAG $FFILES
|
||||
$F90DIR/f90 $CFLAG $F90FLAG -o $binname $OFILES $LAGRIT_LIBS/$liblagrit $UTIL_LIBS/$libutil $LINKFLAG
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
150
documentation/build.txt
Executable file
150
documentation/build.txt
Executable file
@@ -0,0 +1,150 @@
|
||||
LaGriT uses Exodus II libraries, lg_util library and lagrit library.
|
||||
|
||||
####################################################################
|
||||
Platform WIN7 with cygwin
|
||||
####################################################################
|
||||
|
||||
See build_win.txt and cmake-script in this directory.
|
||||
May need development.
|
||||
|
||||
|
||||
####################################################################
|
||||
Platforms Linux RHEL, Linux Ubuntu, and Mac OSX
|
||||
####################################################################
|
||||
|
||||
These platforms have been compiled locally on Ubuntu.
|
||||
Other platforms have not been compiled on newer OS.
|
||||
May need development.
|
||||
|
||||
See Makefile for lg_util library in lg_util/src
|
||||
See Makefile for lagrit library in lagrit/src
|
||||
See build scripts and README in lagrit/src
|
||||
|
||||
---------------------------------------------
|
||||
BUILD the BINARY:
|
||||
|
||||
# GNU Fortran (Ubuntu 4.8.2-19ubuntu1) 4.8.2
|
||||
# using ExodusII 6.09 shared libraries
|
||||
|
||||
# load modules
|
||||
module load exodusii/6.09/gcc-4.8.2-serial
|
||||
module list
|
||||
rm *.o
|
||||
rm *.mod
|
||||
make COPT=-g lib
|
||||
|
||||
### link code and libraries to build executable
|
||||
# leave off -static option for the .so shared libraries:
|
||||
gfortran -g -Dlinx64 -fcray-pointer -fdefault-integer-8 -fno-sign-zero -o mylagrit lagrit_main.o lagrit_fdate.o lagrit_ulin64_g_gf4.8.a /n/swdev/LAGRIT/VERS_3.103_015_MAR/lg_util/src/util_ulin64_g_gf4.8.a -L/n/swdev/packages/Ubuntu-14.04-x86_64/exodusii/6.09/gcc-4.8.2-serial/lib -lexodus -lexoIIv2for -lnetcdf -lhdf5_hl -lhdf5 -lz -lm -lstdc++
|
||||
|
||||
-------------------------------------------------------------------------
|
||||
Exodus II Notes:
|
||||
|
||||
The ExodusII library source code is available on Sourceforge at
|
||||
http://sourceforge.net/projects/exodusii
|
||||
|
||||
For bug reports, documentation errors, and enhancement suggestions, contact:
|
||||
- Gregory D. Sjaardema
|
||||
- PHONE: (505) 844-2701
|
||||
- EMAIL: gdsjaar@sandia.gov
|
||||
|
||||
ExodusII 6.09
|
||||
1) zlib/1.2.5/gcc-4.8.2
|
||||
2) hdf5/1.8.6/gcc-4.8.2-serial
|
||||
3) netcdf/4.3.3.1/gcc-4.8.2-serial
|
||||
4) exodusii/6.09/gcc-4.8.2-serial
|
||||
|
||||
/n/swdev/packages/Ubuntu-14.04-x86_64/exodusii/6.09/gcc-4.8.2-serial/lib
|
||||
libexodus.so libexoIIv2for.so
|
||||
(static libs should be libexodus.a libexoIIv2for.a)
|
||||
copy include files to src (or add -I to the link command)
|
||||
exodusII.h (for C calls)
|
||||
exodusII.inc (for Fortran calls)
|
||||
exodusII_int.h exodusII_int.inc
|
||||
|
||||
The include file exodusII.inc is incomplete (Greg will fix for future)
|
||||
Add these lines if it does not exist:
|
||||
integer EX_ELEM_SET
|
||||
parameter (EX_ELEM_SET = 10)
|
||||
|
||||
Use fortran API as described in exodus.pdf for 6.09
|
||||
|
||||
Old property code added because new property code not found in include file.
|
||||
The exodus.pdf document describes EXNSET for nodes, but nothing for element sets.
|
||||
integer EX_ELEM_SET
|
||||
parameter (EX_ELEM_SET = 10) ! /**< element set property code */
|
||||
|
||||
code reference to EX_NODE_SET changed to EXNSET (defined in exodusII.inc)
|
||||
|
||||
####################################################################
|
||||
Running LaGriT
|
||||
|
||||
Run on command line in directory where files will be read and written.
|
||||
Run interactive or redirect with input command file.
|
||||
See manual in lagrit.lanl.gov
|
||||
|
||||
bsh% lagrit
|
||||
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* * *
|
||||
* * Program: LaGriT V3.107 Linux m64 *
|
||||
* * date_compile: 2015/06/24 Ubu gf.so *
|
||||
* * Run Time: 2016/Aug 24 12:05:49 *
|
||||
* * Manual: http://lagrit.lanl.gov *
|
||||
* * *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
|
||||
-----oOo-----
|
||||
LaGriT V3 LACC-2012-084
|
||||
LaGriT Copyright: This program was prepared by Los Alamos National Security, LLC
|
||||
at Los Alamos National Laboratory (LANL) under contract No. DE-AC52-06NA25396
|
||||
with the U.S. Department of Energy (DOE). All rights in the program are reserved
|
||||
by the DOE and Los Alamos National Security, LLC. Permission is granted to the
|
||||
public to copy and use this software without charge, provided that this Notice
|
||||
and any statement of authorship are reproduced on all copies. Neither the
|
||||
U.S. Government nor LANS makes any warranty, express or implied, or assumes
|
||||
any liability or responsibility for the use of this software.
|
||||
-----oOo-----
|
||||
|
||||
|
||||
Output log file: outx3dgen
|
||||
Command log file: logx3dgen
|
||||
|
||||
Enter a command
|
||||
memory print
|
||||
memory print
|
||||
--------
|
||||
|
||||
MEMORY SIZES :
|
||||
Sizeof char (type 3) = 1 bytes Sizeof long = 8 bytes
|
||||
Sizeof real*8 (type 2) = 8 bytes Sizeof pointer = 8 bytes
|
||||
Sizeof integer (type 1) = 4 bytes Sizeof INT_PTRSIZE = 8 bytes
|
||||
|
||||
|
||||
INDEX LENGTH TYPE ADDRESS NAME PARTITION
|
||||
2 10 1 428217712 global_type global_lg
|
||||
3 10 1 428217904 global_index global_lg
|
||||
1 10 3 428219696 global_name global_lg
|
||||
4 20 1 428280176 global_integer global_lg
|
||||
5 20 2 428280448 global_real global_lg
|
||||
6 20 3 428280720 global_character global_lg
|
||||
7 10 3 428281472 geom_names geom_lg
|
||||
8 80 1 428281904 geom_info geom_lg
|
||||
9 8 3 428282656 defcmo_attparam_names define_cmo_lg
|
||||
10 10 3 428283024 cmo_names define_cmo_lg
|
||||
11 10 1 428283456 cmo_natts define_cmo_lg
|
||||
12 455 3 428283648 cmo_attlist default_cmo_lg
|
||||
13 65 3 428298320 cmo_attparam_cdefault default_cmo_lg
|
||||
14 65 1 428300512 cmo_attparam_idefault default_cmo_lg
|
||||
15 65 2 428301136 cmo_attparam_rdefault default_cmo_lg
|
||||
16 2560 1 428301760 cmd_stack initlagrit
|
||||
17 1280 1 428322352 definition initlagrit
|
||||
|
||||
Total BYTES = 51456 Total MEGABYTES = 51.456E-03
|
||||
--------
|
||||
|
||||
Enter a command
|
||||
finish
|
||||
finish
|
||||
LaGriT successfully completed
|
||||
|
||||
281
documentation/build_win.md
Executable file
281
documentation/build_win.md
Executable file
@@ -0,0 +1,281 @@
|
||||
# Old build instructions for Windows with CYGWIN
|
||||
----------------------------------------------
|
||||
|
||||
LaGriT V3.3 uses C++ to Fortran wrappers that are easier to build with cmake. Building with Exodus is also made easier with cmake.
|
||||
Though build with cmake works for linux and mac, WINDOWS with new cmake method is still under development.
|
||||
|
||||
See https://github.com/lanl/LaGriT/README.md
|
||||
|
||||
# Building LaGriT on Windows (pre-V3.3)
|
||||
|
||||
## 1. Installing Cygwin
|
||||
|
||||
Get the latest version of Cygwin for your operating system: https://cygwin.com/install.html
|
||||
|
||||
This guide is for the x86_64 setup file since its for 64 bit OS. The installation procedure with the setup file is straightforward.
|
||||
|
||||
My installation and download path: `C:/Users/304285/dev/cygwin`
|
||||
|
||||
Find the best mirror here: https://cygwin.com/mirrors.html
|
||||
|
||||
Necessary libraries to install:
|
||||
|
||||
a) zlib-devel
|
||||
b) libhdf5-devel
|
||||
c) libnetcdf-devel
|
||||
d) libcurl-devel
|
||||
|
||||
Helpful libraries to install:
|
||||
|
||||
a) wget - helpful for downloading resources from url
|
||||
b) git - another plugin for obtaining external resources
|
||||
c) make - used by zlib, HDF5, NetCDF for building (make sure its GNU Make)
|
||||
d) cmake - used by ExodusII
|
||||
e) dos2unix - sometimes cygwin confuses Windows ecoding, use this binary on the file
|
||||
Every now and then this wouldn't fix the issue unless forced 'dos2unix -f filename'
|
||||
f) gzip - for unzipping .tar files with 'tar -zxvf'
|
||||
g) curl - Web requests service mainly used by PHP, but ExodusII wants it too for some reason
|
||||
|
||||
Compilers needed to install:
|
||||
|
||||
a) gcc-core
|
||||
b) gcc-fortran
|
||||
c) gcc-g++
|
||||
|
||||
|
||||
**NOTE:** Keep the setup file in your Cygwin directory as you can use it later to download additional packages and keep your cygwin directory updated.
|
||||
|
||||
Extra Resources:
|
||||
|
||||
GitHub
|
||||
|
||||
1) zlib-1.2.8 - https://github.com/madler/zlib
|
||||
2) HDF5-1.9.227 - https://github.com/live-clones/hdf5
|
||||
3) NetCDF - https://github.com/Unidata/netcdf-c
|
||||
|
||||
## 2. Getting the source
|
||||
|
||||
The following versions of libraries were used to compile LaGrit, if the devel versions of first three libraries were installed then these downloads might not be necessary:
|
||||
|
||||
a) zlib-1.2.8 - from http://www.zlib.net/
|
||||
b) HDF5-1.8.15-patch1 - from https://www.hdfgroup.org/downloads/index.html
|
||||
c) NetCDF-4.3.3.1.tar.gz - from http://www.unidata.ucar.edu/downloads/netcdf/index.jsp
|
||||
d) ExodusII-6.09 - from http://sourceforge.net/projects/exodusii/files/
|
||||
f) LaGrit-3.2
|
||||
|
||||
**NOTE:** Cygwin emulates a UNIX system, so all of the downloads can be normal .tar collections. This makes it easy to install the dependencies since we don't have to deal with Windows. Just make sure to get 64 bit downloads.
|
||||
|
||||
**NOTE:** This configuration also depends on what you use as your fortran, c++, and gcc compilers. You can add these variables to the ./configure commands without adding the word 'export', or you can set these as global variables in your .bashrc file(recommended).
|
||||
|
||||
a) export FC="/bin/gfortran"
|
||||
b) export CC="/bin/gcc"
|
||||
c) export CXX="/bin/c++"
|
||||
d) export FC90="/bin/gfortran"
|
||||
e) export RANLIB="/bin/gcc-ranlib"
|
||||
f) export AR="/bin/gcc-ar"
|
||||
|
||||
*************************
|
||||
### 2.1 Compiling zlib
|
||||
**Do not get if you downloaded zlib-devel from Cygwin package source, it comes with a static version of zlib**
|
||||
*************************
|
||||
|
||||
1. Unpack zlib and navigate to the directory
|
||||
|
||||
2. Compile for Cygwin:
|
||||
|
||||
`./configure --static --prefix=$HOME --64`
|
||||
|
||||
3. Type in `make` and then make sure there is no errors with 'make check'
|
||||
|
||||
4. Use `make install` to finish installing zlib
|
||||
|
||||
5. Use `make clean` to clean up the library directory of build files.
|
||||
|
||||
*************************
|
||||
### 2.2 Compiling HDF5
|
||||
**Use this to compile a static version of hdf5, otherwise libhdf5-devel is enough**
|
||||
*************************
|
||||
1. Unpack the tar source file, in it you should find a folder named release_docs, which contains installation instructions in file called INSTALL_Cygwin.txt I will follow these, while giving the actual commands I used.
|
||||
|
||||
**NOTE:** When you run the configure script, it might complain about new line characters. If this happens stop the script with Ctrl+C, and run `dos2unix -f targetfile` on the file where it throws an error. Use `make clean` afterwards to clean up your build.
|
||||
|
||||
2. In Hdf5 directory use the following command to configure the build script
|
||||
|
||||
CFLAGS="-m64 -g" FCFLAGS="-m64 -g" CXXFLAGS="-m64 -g" ./configure --disable-shared --with-zlib=/cygdrive/c/Users/304285/dev/cygwin/home/304285/include,/cygdrive/c/Users/304285/dev/cygwin/home/304285/lib --prefix=$HOME --enable-fortran --enable-cxx --enable-static-exec
|
||||
CFLAGS="-m64 -g" FCFLAGS="-m64 -g" CXXFLAGS="-m64 -g" ./configure --disable-shared --with-zlib=/lib/libz.a --prefix=$HOME --enable-fortran --enable-cxx --enable-static-exec
|
||||
--host=x86_64-w64-mingw32
|
||||
--build=x86_64-w64-mingw32
|
||||
--with-gnu-ld
|
||||
|
||||
3. Once configuration is complete, type in `make` to build the library, and `make check` to test it.
|
||||
|
||||
4. Run `make install` and `make check-install` to test it.
|
||||
|
||||
5. Run `make clean` to clean up your library of build files.
|
||||
|
||||
*************************
|
||||
### 2.3. Compiling NetCDF
|
||||
**Use this to compile a static version of NetCDF, otherwise libnetcdf-devel is enough**
|
||||
*************************
|
||||
**NOTE:** After version 4.1.3, NetCDF-fortran became a different distribution so the use of environment variables set for fortran is unnecessary.
|
||||
|
||||
1. Unpack NetCDF and navigate to the directory, the installation instructions can be traced here: http://www.unidata.ucar.edu/software/netcdf/docs/netcdf-install/
|
||||
|
||||
2. Configure the build script
|
||||
|
||||
CPPFLAGS="-I$HOME/include -m64 -g" LDFLAGS="-L$HOME/lib -m64 -g" LIBS="-L$HOME/lib -lhdf5_hl -lhdf5 -lz" ./configure --disable-shared --disable-dap --enable-netcdf-4 --prefix=$HOME CFLAGS="-m64 -g"
|
||||
|
||||
**NOTE:** Possibly helpful options: `--build`, `--host`
|
||||
|
||||
3. Build the library with `make`, and test it with `make check`
|
||||
|
||||
4. Finish the install with `make install` and `make clean`
|
||||
|
||||
## 3. Compiling Exodus
|
||||
|
||||
1. Now before we start installing ExodusII, we need to make some slight modifications to NetCDF in `$NETCDF_HOME/include/netcdf.h` by changing the following variables as stated in exodus README file:
|
||||
|
||||
#define NC_MAX_DIMS 65536
|
||||
#define NC_MAX_VARS 524288
|
||||
#define NC_MAX_VAR_DIMS 8
|
||||
|
||||
2. Unpack Exodus and navigate to the exodus directory
|
||||
|
||||
3. Here we have two options for compiling ExodusII as described in the README, 1st is with Makefile.standalone, and 2nd is with cmake
|
||||
|
||||
3.1. Using Makefile.standalone (INCOMPLETE: Might need to add additional arguments):
|
||||
|
||||
Use the following make command:
|
||||
|
||||
make -f Makefile.standalone NETCDF=$HOME ARFLAGS=-rcv CFLAGS="-m64" FCFLAGS="-m64" CXXFLAGS="-m64"
|
||||
|
||||
Copy the Exodus libararies to our local libraries
|
||||
|
||||
cp libexodus.a libexoIIv2for.a $HOME/lib
|
||||
|
||||
3.2 Using cmake (Harder difficulty since requires manipulation of additional libs but completed):
|
||||
|
||||
**NOTE:** To be able to use cmake on my Cygwin installation I had to copy over my cmake executable from `/bin/cmake` to `/home/304285/bin/cmake`, and my cmake root files from `/usr/share/cmake-3.1.2` to `/home/304285/share/cmake-3.1.2`. My PATH variable was set up to read my /home/304285/bin directory last and it overwrote the cmake I had in /bin/cmake. (Otherwise it throws `could not find CMAKE_ROOT/Module directory not found/Error executing cmake::LoadCache()`)
|
||||
|
||||
Run `sh cmake-script` once you make appropriate changes to you cmake-script file, this was mine:
|
||||
|
||||
EXTRA_ARGS=$@
|
||||
|
||||
# Fortran compiler
|
||||
FC="/bin/gfortran"
|
||||
|
||||
# Root to where netcdf and hdf5 libraries and includes
|
||||
# are installed. Libraries will be in LIB_ROOT/lib and
|
||||
# includes will be in LIB_ROOT/include
|
||||
LIB_ROOT=/usr/local/lib
|
||||
|
||||
# Root of where to install the exodus libraries and
|
||||
# include files. Library will be in INSTALL_ROOT/lib
|
||||
# and include file in INSTALL_ROOT/include
|
||||
INSTALL_ROOT=$HOME
|
||||
|
||||
# Complete path to where the exodus.py file should be installed
|
||||
PYTHON_INSTALL=${INSTALL_ROOT}/python
|
||||
|
||||
# Add the following for a static build, mine kept throwing me memory truncation error
|
||||
# -DCMAKE_EXE_LINKER_FLAGS:STRING="-static" \
|
||||
|
||||
rm -f CMakeCache.txt
|
||||
|
||||
cmake \
|
||||
-DBUILD_SHARED:BOOL=OFF \
|
||||
-DBUILD_SHARED_LIBS:BOOL=OFF \
|
||||
-DCMAKE_INSTALL_PREFIX:PATH=${INSTALL_ROOT} \
|
||||
-DCMAKE_Fortran_COMPILER:FILEPATH=${FC} \
|
||||
-DNETCDF_NCDUMP:PATH='which ncdump' \
|
||||
-DNETCDF_INCLUDE_DIR:PATH=/usr/include \
|
||||
-DNETCDF_LIBRARY:PATH=/lib/libnetcdf.dll.a \
|
||||
-DHDF5HL_LIBRARY:PATH=/lib/libhdf5_hl.dll.a \
|
||||
-DHDF5_LIBRARY:PATH=/lib/libhdf5.dll.a \
|
||||
-DZLIB_LIBRARY:PATH=/lib/libz.dll.a \
|
||||
-DCURL_LIBRARY:PATH=/lib/libcurl.dll.a \
|
||||
-DPYTHON_INSTALL:PATH=${PYTHON_INSTALL} \
|
||||
-DCMAKE_C_FLAGS:STRING="-g -m64 -Dwin64 -mwindows" \
|
||||
-DCMAKE_CXX_FLAGS:STRING="-g -m64" \
|
||||
-DCMAKE_Fortran_FLAGS:STRING="-g -m64 -fcray-pointer -fdefault-integer-8 -Dwin64 -w -mwindows -fno-exceptions" \
|
||||
-DCMAKE_RANLIB:FILEPATH=/bin/gcc-ranlib \
|
||||
-DCMAKE_AR:FILEPATH=/bin/gcc-ar \
|
||||
-DCYGWIN:BOOL=TRUE \
|
||||
-DCMAKE_LEGACY_CYGWIN_WIN32=1 \
|
||||
-DCMAKE_VERBOSE_MAKEFILE:BOOL=TRUE \
|
||||
$EXTRA_ARGS
|
||||
|
||||
There is a bug when it makes tests with static libraries, the following 2 files need to be changed for `make` to work:
|
||||
|
||||
1) ../exodus-6.09/exodus/forbind/CMakeLists change line 56 and have ${HDF5HL_LIBRARY} come before ${HDF5_LIBRARY}
|
||||
2) ../exodus-6.09/exodus/cbind/CMakeLists change line 284 with the same library ordering
|
||||
|
||||
Now run `make`
|
||||
|
||||
**NOTE:** When compiling with static linker flags, make throws a truncating error, to fix this I have attempted many options in the cmake-script that are listed here, however in the end I just ended up not using "-static" as a linker flag:
|
||||
|
||||
# -DCMAKE_GENERATOR:STRING="Unix Makefiles" \
|
||||
# -DCMAKE_LEGACY_CYGWIN_WIN32=1 \
|
||||
# -DCMAKE_Fortran_FLAGS:STRING="-g -fcray-pointer -fno-exceptions -fdefault-integer-8 -m64" \
|
||||
# -DCMAKE_STATIC_LINKER_FLAGS:STRING="-ncmodel=medium" \
|
||||
# --large-address-aware --relax --high-entropy-va
|
||||
# -DCMAKE_EXE_LINKER_FLAGS:STRING="-static" \
|
||||
# -DCYGWIN:BOOL=TRUE \
|
||||
# -DCMAKE_LEGACY_CYGWIN_WIN32=1 \
|
||||
|
||||
To test your build use `make check`
|
||||
|
||||
**NOTE:** After testing the build it throws a message about truncating to 32 bit. What causes this is probably the fact that floats on Windows 64 bit are 4 bit, while on Cygwin they are 8 bit since Cygwin emulated a Linux system.
|
||||
|
||||
Then, `make install`
|
||||
|
||||
## 4. Compiling lg_util
|
||||
|
||||
1. Unpack the `lg_util` source and navigate to the `src/` directory
|
||||
|
||||
2. Remove the previous header file and recreate it for your machine:
|
||||
|
||||
rm -f mm2000.h
|
||||
$CC -E -m64 -Dwin64 mm2000_header.f -o mm2000.h
|
||||
mkdir objects_cygwin64_g_cygwin
|
||||
cp -p mm2000.h objects_cygwin64_g_cygwin/
|
||||
|
||||
3. Build and install the library
|
||||
|
||||
make install MOPT=64 COPT=-g LIBDIR=$HOME/lib COMPILER=cygwin
|
||||
|
||||
**NOTE:** In the Makefile, there is an `ifeq(COMPILER=cygwin)`, in it CFLAGS are linked to my include folder in cygwin, readjust this as necessary.
|
||||
|
||||
4. Run ranlib on the lg_util libraries to fix archives (it appears to grab the wrong version from the path)
|
||||
|
||||
$RANLIB $HOME/lib/util_*
|
||||
|
||||
**NOTE:** Use the following clean command to when rebuilding:
|
||||
|
||||
make clean COMPILER=cygwin COPT=-g MOPT=64 LIBDIR=$HOME/lib
|
||||
|
||||
## 5. Compiling LaGriT
|
||||
|
||||
1. Unpack the lagrit source and navigate to the source dir
|
||||
|
||||
2. Clean the directory up first by running these two commands, `rm *.o` and `rm *.mod`
|
||||
|
||||
3. Build the lagrit library
|
||||
|
||||
make lib MOPT=64 COPT=-g COMPILER=cygwin CFLAGS="-I$HOME/include" LIBDIR=$HOME/lib
|
||||
|
||||
3. Build the lagrit executable with these commands:
|
||||
|
||||
cp -f lagrit_cygwin.h lagrit.h
|
||||
cp -f machine_m64.h machine.h
|
||||
$FC -g -fcray-pointer -fdefault-integer-8 -m64 -Dwin64 -c -o lagrit_main.o lagrit_main.f
|
||||
$FC -g -fcray-pointer -fdefault-integer-8 -m64 -Dwin64 -c -o lagrit_fdate.o lagrit_fdate.f
|
||||
$FC -g -Dwin64 -fcray-pointer -fdefault-integer-8 -fno-sign-zero -o mylagrit objects_cygwin_g_cygwin/lagrit_main.o objects_cygwin_g_cygwin/lagrit_fdate.o lagrit_cygwin_g_cygwin.a /cygdrive/c/Users/304285/dev/cygwin/home/304285/lib/util_cygwin64_g_cygwin.a -L${HOME}/lib -lexoIIv2for -lexodus -L/lib -lnetcdf -lhdf5_hl -lhdf5 -lz -lm -lstdc++
|
||||
|
||||
**NOTE:** In the future add `-static option` before the `-o` in order to make a statically compiled executable
|
||||
|
||||
4. Copy the .exe file and DLLs to a Windows system and run LaGrit!
|
||||
|
||||
**NOTE:** Use the following clean command to when rebuilding:
|
||||
|
||||
make clean COMPILER=cygwin COPT=-g MOPT=64 LIBDIR=$HOME/lib
|
||||
54
documentation/cmake-script
Executable file
54
documentation/cmake-script
Executable file
@@ -0,0 +1,54 @@
|
||||
EXTRA_ARGS=$@
|
||||
|
||||
# Fortran compiler
|
||||
# FC=/opt/local/bin/gfortran-mp-4.8
|
||||
|
||||
# Root to where netcdf and hdf5 libraries and includes
|
||||
# are installed. Libraries will be in LIB_ROOT/lib and
|
||||
# includes will be in LIB_ROOT/include
|
||||
LIB_ROOT=$HOME
|
||||
|
||||
# Root of where to install the exodus libraries and
|
||||
# include files. Library will be in INSTALL_ROOT/lib
|
||||
# and include file in INSTALL_ROOT/include
|
||||
INSTALL_ROOT=$HOME
|
||||
|
||||
# Complete path to where the exodus.py file should be installed
|
||||
PYTHON_INSTALL=${INSTALL_ROOT}/python
|
||||
|
||||
rm -f CMakeCache.txt
|
||||
# -DCMAKE_GENERATOR:STRING="Unix Makefiles" \
|
||||
# -DCURL_LIBRARY:PATH=/cygdrive/x/packages/Ubuntu-14.04-x86_64/anaconda-python/2.1.0/lib/libcurl.a \
|
||||
# -DCMAKE_LEGACY_CYGWIN_WIN32=1 \
|
||||
# -DCMAKE_Fortran_FLAGS:STRING="-g -fcray-pointer -fno-exceptions -fdefault-integer-8 -m64" \
|
||||
# -DCMAKE_STATIC_LINKER_FLAGS:STRING="-ncmodel=medium" \
|
||||
# --large-address-aware --relax --high-entropy-va
|
||||
# -DCMAKE_EXE_LINKER_FLAGS:STRING="-static" \
|
||||
# -DCYGWIN:BOOL=TRUE \
|
||||
# -DCMAKE_LEGACY_CYGWIN_WIN32=1 \
|
||||
|
||||
cmake \
|
||||
-DBUILD_SHARED:BOOL=OFF \
|
||||
-DBUILD_SHARED_LIBS:BOOL=OFF \
|
||||
-DCMAKE_EXE_LINKER_FLAGS:STRING="-static" \
|
||||
-DCMAKE_INSTALL_PREFIX:PATH=${INSTALL_ROOT} \
|
||||
-DCMAKE_Fortran_COMPILER:FILEPATH=${FC} \
|
||||
-DNETCDF_NCDUMP:PATH='which ncdump' \
|
||||
-DNETCDF_INCLUDE_DIR:PATH=${LIB_ROOT}/include \
|
||||
-DNETCDF_LIBRARY:PATH=${LIB_ROOT}/lib/libnetcdf.a \
|
||||
-DHDF5HL_LIBRARY:PATH=${LIB_ROOT}/lib/libhdf5_hl.a \
|
||||
-DHDF5_LIBRARY:PATH=${LIB_ROOT}/lib/libhdf5.a \
|
||||
-DZLIB_LIBRARY:PATH=${LIB_ROOT}/lib/libz.a \
|
||||
-DCURL_LIBRARY:PATH=/cygdrive/x/swdev/packages/Ubuntu-14.04-x86_64/anaconda-python/2.1.0/lib/libcurl.a \
|
||||
-DPYTHON_INSTALL:PATH=${PYTHON_INSTALL} \
|
||||
-DCMAKE_C_FLAGS:STRING="-g -m64" \
|
||||
-DCMAKE_CXX_FLAGS:STRING="-g -m64 -fcray-pointer" \
|
||||
-DCMAKE_Fortran_FLAGS:STRING="-g -m64 -fcray-pointer -fdefault-integer-4" \
|
||||
-DCMAKE_RANLIB:FILEPATH=/bin/gcc-ranlib \
|
||||
-DCMAKE_AR:FILEPATH=/bin/gcc-ar \
|
||||
-DCMAKE_VERBOSE_MAKEFILE:BOOL=TRUE \
|
||||
$EXTRA_ARGS
|
||||
|
||||
|
||||
|
||||
|
||||
3517
documentation/commit_logs.txt
Executable file
3517
documentation/commit_logs.txt
Executable file
File diff suppressed because it is too large
Load Diff
1
documentation/lagrit_manual/.idea/.name
generated
Executable file
1
documentation/lagrit_manual/.idea/.name
generated
Executable file
@@ -0,0 +1 @@
|
||||
lagrit_manual
|
||||
4
documentation/lagrit_manual/.idea/encodings.xml
generated
Executable file
4
documentation/lagrit_manual/.idea/encodings.xml
generated
Executable file
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Encoding" useUTFGuessing="true" native2AsciiForPropertiesFiles="false" />
|
||||
</project>
|
||||
8
documentation/lagrit_manual/.idea/lagrit_manual.iml
generated
Executable file
8
documentation/lagrit_manual/.idea/lagrit_manual.iml
generated
Executable file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="PYTHON_MODULE" version="4">
|
||||
<component name="NewModuleRootManager">
|
||||
<content url="file://$MODULE_DIR$" />
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
</module>
|
||||
4
documentation/lagrit_manual/.idea/misc.xml
generated
Executable file
4
documentation/lagrit_manual/.idea/misc.xml
generated
Executable file
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectRootManager" version="2" project-jdk-name="Python 2.7.6 (/usr/bin/python2.7)" project-jdk-type="Python SDK" />
|
||||
</project>
|
||||
8
documentation/lagrit_manual/.idea/modules.xml
generated
Executable file
8
documentation/lagrit_manual/.idea/modules.xml
generated
Executable file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/lagrit_manual.iml" filepath="$PROJECT_DIR$/.idea/lagrit_manual.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
||||
5
documentation/lagrit_manual/.idea/scopes/scope_settings.xml
generated
Executable file
5
documentation/lagrit_manual/.idea/scopes/scope_settings.xml
generated
Executable file
@@ -0,0 +1,5 @@
|
||||
<component name="DependencyValidationManager">
|
||||
<state>
|
||||
<option name="SKIP_IMPORT_STATEMENTS" value="false" />
|
||||
</state>
|
||||
</component>
|
||||
6
documentation/lagrit_manual/.idea/vcs.xml
generated
Executable file
6
documentation/lagrit_manual/.idea/vcs.xml
generated
Executable file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="" vcs="" />
|
||||
</component>
|
||||
</project>
|
||||
298
documentation/lagrit_manual/.idea/workspace.xml
generated
Executable file
298
documentation/lagrit_manual/.idea/workspace.xml
generated
Executable file
@@ -0,0 +1,298 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="c4e042f3-a4ff-43f7-8b20-be074caed9cc" name="Default" comment="" />
|
||||
<ignored path="lagrit_manual.iws" />
|
||||
<ignored path=".idea/workspace.xml" />
|
||||
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
|
||||
<option name="TRACKING_ENABLED" value="true" />
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
||||
<option name="LAST_RESOLUTION" value="IGNORE" />
|
||||
</component>
|
||||
<component name="ChangesViewManager" flattened_view="true" show_ignored="false" />
|
||||
<component name="CreatePatchCommitExecutor">
|
||||
<option name="PATCH_PATH" value="" />
|
||||
</component>
|
||||
<component name="DaemonCodeAnalyzer">
|
||||
<disable_hints />
|
||||
</component>
|
||||
<component name="ExecutionTargetManager" SELECTED_TARGET="default_target" />
|
||||
<component name="FavoritesManager">
|
||||
<favorites_list name="lagrit_manual" />
|
||||
</component>
|
||||
<component name="FileEditorManager">
|
||||
<leaf>
|
||||
<file leaf-file-name="read_commands.py" pinned="false" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/read_commands.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.78988326" vertical-offset="818" max-vertical-offset="1332">
|
||||
<caret line="68" column="0" selection-start-line="68" selection-start-column="0" selection-end-line="68" selection-end-column="0" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
</leaf>
|
||||
</component>
|
||||
<component name="IdeDocumentHistory">
|
||||
<option name="CHANGED_PATHS">
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/read_commands.py" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="ProjectFrameBounds">
|
||||
<option name="x" value="209" />
|
||||
<option name="width" value="1400" />
|
||||
<option name="height" value="912" />
|
||||
</component>
|
||||
<component name="ProjectLevelVcsManager" settingsEditedManually="false">
|
||||
<OptionsSetting value="true" id="Add" />
|
||||
<OptionsSetting value="true" id="Remove" />
|
||||
<OptionsSetting value="true" id="Checkout" />
|
||||
<OptionsSetting value="true" id="Update" />
|
||||
<OptionsSetting value="true" id="Status" />
|
||||
<OptionsSetting value="true" id="Edit" />
|
||||
<ConfirmationsSetting value="0" id="Add" />
|
||||
<ConfirmationsSetting value="0" id="Remove" />
|
||||
</component>
|
||||
<component name="ProjectView">
|
||||
<navigator currentView="ProjectPane" proportions="" version="1">
|
||||
<flattenPackages />
|
||||
<showMembers />
|
||||
<showModules />
|
||||
<showLibraryContents />
|
||||
<hideEmptyPackages />
|
||||
<abbreviatePackageNames />
|
||||
<autoscrollToSource />
|
||||
<autoscrollFromSource />
|
||||
<sortByType />
|
||||
</navigator>
|
||||
<panes>
|
||||
<pane id="ProjectPane">
|
||||
<subPane>
|
||||
<PATH>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="lagrit_manual" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
|
||||
</PATH_ELEMENT>
|
||||
</PATH>
|
||||
<PATH>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="lagrit_manual" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="lagrit_manual" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
</PATH>
|
||||
</subPane>
|
||||
</pane>
|
||||
<pane id="Scope" />
|
||||
</panes>
|
||||
</component>
|
||||
<component name="PropertiesComponent">
|
||||
<property name="FullScreen" value="false" />
|
||||
</component>
|
||||
<component name="PyConsoleOptionsProvider">
|
||||
<option name="myPythonConsoleState">
|
||||
<console-settings />
|
||||
</option>
|
||||
</component>
|
||||
<component name="RunManager">
|
||||
<configuration default="true" type="tests" factoryName="py.test">
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
<option name="PARENT_ENVS" value="true" />
|
||||
<envs />
|
||||
<option name="SDK_HOME" value="" />
|
||||
<option name="WORKING_DIRECTORY" value="" />
|
||||
<option name="IS_MODULE_SDK" value="false" />
|
||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||
<module name="lagrit_manual" />
|
||||
<option name="SCRIPT_NAME" value="" />
|
||||
<option name="CLASS_NAME" value="" />
|
||||
<option name="METHOD_NAME" value="" />
|
||||
<option name="FOLDER_NAME" value="" />
|
||||
<option name="TEST_TYPE" value="TEST_SCRIPT" />
|
||||
<option name="PATTERN" value="" />
|
||||
<option name="USE_PATTERN" value="false" />
|
||||
<option name="testToRun" value="" />
|
||||
<option name="keywords" value="" />
|
||||
<option name="params" value="" />
|
||||
<option name="USE_PARAM" value="false" />
|
||||
<option name="USE_KEYWORD" value="false" />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="true" type="tests" factoryName="Nosetests">
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
<option name="PARENT_ENVS" value="true" />
|
||||
<envs />
|
||||
<option name="SDK_HOME" value="" />
|
||||
<option name="WORKING_DIRECTORY" value="" />
|
||||
<option name="IS_MODULE_SDK" value="false" />
|
||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||
<module name="lagrit_manual" />
|
||||
<option name="SCRIPT_NAME" value="" />
|
||||
<option name="CLASS_NAME" value="" />
|
||||
<option name="METHOD_NAME" value="" />
|
||||
<option name="FOLDER_NAME" value="" />
|
||||
<option name="TEST_TYPE" value="TEST_SCRIPT" />
|
||||
<option name="PATTERN" value="" />
|
||||
<option name="USE_PATTERN" value="false" />
|
||||
<option name="PARAMS" value="" />
|
||||
<option name="USE_PARAM" value="false" />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="true" type="PythonConfigurationType" factoryName="Python">
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
<option name="PARENT_ENVS" value="true" />
|
||||
<envs>
|
||||
<env name="PYTHONUNBUFFERED" value="1" />
|
||||
</envs>
|
||||
<option name="SDK_HOME" value="" />
|
||||
<option name="WORKING_DIRECTORY" value="" />
|
||||
<option name="IS_MODULE_SDK" value="false" />
|
||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||
<module name="lagrit_manual" />
|
||||
<option name="SCRIPT_NAME" value="" />
|
||||
<option name="PARAMETERS" value="" />
|
||||
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="true" type="tests" factoryName="Unittests">
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
<option name="PARENT_ENVS" value="true" />
|
||||
<envs />
|
||||
<option name="SDK_HOME" value="" />
|
||||
<option name="WORKING_DIRECTORY" value="" />
|
||||
<option name="IS_MODULE_SDK" value="false" />
|
||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||
<module name="lagrit_manual" />
|
||||
<option name="SCRIPT_NAME" value="" />
|
||||
<option name="CLASS_NAME" value="" />
|
||||
<option name="METHOD_NAME" value="" />
|
||||
<option name="FOLDER_NAME" value="" />
|
||||
<option name="TEST_TYPE" value="TEST_SCRIPT" />
|
||||
<option name="PATTERN" value="" />
|
||||
<option name="USE_PATTERN" value="false" />
|
||||
<option name="PUREUNITTEST" value="true" />
|
||||
<option name="PARAMS" value="" />
|
||||
<option name="USE_PARAM" value="false" />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="true" type="tests" factoryName="Doctests">
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
<option name="PARENT_ENVS" value="true" />
|
||||
<envs />
|
||||
<option name="SDK_HOME" value="" />
|
||||
<option name="WORKING_DIRECTORY" value="" />
|
||||
<option name="IS_MODULE_SDK" value="false" />
|
||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||
<module name="lagrit_manual" />
|
||||
<option name="SCRIPT_NAME" value="" />
|
||||
<option name="CLASS_NAME" value="" />
|
||||
<option name="METHOD_NAME" value="" />
|
||||
<option name="FOLDER_NAME" value="" />
|
||||
<option name="TEST_TYPE" value="TEST_SCRIPT" />
|
||||
<option name="PATTERN" value="" />
|
||||
<option name="USE_PATTERN" value="false" />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="true" type="tests" factoryName="Attests">
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
<option name="PARENT_ENVS" value="true" />
|
||||
<envs />
|
||||
<option name="SDK_HOME" value="" />
|
||||
<option name="WORKING_DIRECTORY" value="" />
|
||||
<option name="IS_MODULE_SDK" value="false" />
|
||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||
<module name="lagrit_manual" />
|
||||
<option name="SCRIPT_NAME" value="" />
|
||||
<option name="CLASS_NAME" value="" />
|
||||
<option name="METHOD_NAME" value="" />
|
||||
<option name="FOLDER_NAME" value="" />
|
||||
<option name="TEST_TYPE" value="TEST_SCRIPT" />
|
||||
<option name="PATTERN" value="" />
|
||||
<option name="USE_PATTERN" value="false" />
|
||||
<method />
|
||||
</configuration>
|
||||
<list size="0" />
|
||||
</component>
|
||||
<component name="ShelveChangesManager" show_recycled="false" />
|
||||
<component name="SvnConfiguration">
|
||||
<configuration />
|
||||
</component>
|
||||
<component name="TaskManager">
|
||||
<task active="true" id="Default" summary="Default task">
|
||||
<changelist id="c4e042f3-a4ff-43f7-8b20-be074caed9cc" name="Default" comment="" />
|
||||
<created>1419363299923</created>
|
||||
<option name="number" value="Default" />
|
||||
<updated>1419363299923</updated>
|
||||
</task>
|
||||
<servers />
|
||||
</component>
|
||||
<component name="ToolWindowManager">
|
||||
<frame x="209" y="0" width="1400" height="912" extended-state="0" />
|
||||
<editor active="false" />
|
||||
<layout>
|
||||
<window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Terminal" active="true" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.31863979" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Application Servers" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.25345957" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
|
||||
<window_info id="Python Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3299748" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="-1" side_tool="true" content_ui="tabs" />
|
||||
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="-1" side_tool="true" content_ui="tabs" />
|
||||
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="SLIDING" type="SLIDING" visible="false" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
|
||||
</layout>
|
||||
</component>
|
||||
<component name="Vcs.Log.UiProperties">
|
||||
<option name="RECENTLY_FILTERED_USER_GROUPS">
|
||||
<collection />
|
||||
</option>
|
||||
<option name="RECENTLY_FILTERED_BRANCH_GROUPS">
|
||||
<collection />
|
||||
</option>
|
||||
</component>
|
||||
<component name="VcsContentAnnotationSettings">
|
||||
<option name="myLimit" value="2678400000" />
|
||||
</component>
|
||||
<component name="VcsManagerConfiguration">
|
||||
<option name="myTodoPanelSettings">
|
||||
<TodoPanelSettings />
|
||||
</option>
|
||||
</component>
|
||||
<component name="XDebuggerManager">
|
||||
<breakpoint-manager />
|
||||
<watches-manager />
|
||||
</component>
|
||||
<component name="editorHistoryManager">
|
||||
<entry file="file://$PROJECT_DIR$/read_commands.py">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.78988326" vertical-offset="818" max-vertical-offset="1332">
|
||||
<caret line="68" column="0" selection-start-line="68" selection-start-column="0" selection-end-line="68" selection-end-column="0" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</component>
|
||||
</project>
|
||||
96
documentation/lagrit_manual/command_list.txt
Executable file
96
documentation/lagrit_manual/command_list.txt
Executable file
@@ -0,0 +1,96 @@
|
||||
ADDMESH
|
||||
ASSIGN
|
||||
BOUNDARY
|
||||
BOUNDARY_COMPONENTS
|
||||
BUBBLE
|
||||
CALC_RDIST
|
||||
CMO
|
||||
COLORMAP
|
||||
COMPUTE
|
||||
CONNECT
|
||||
COORDSYS
|
||||
COPYPTS
|
||||
CREATEPTS
|
||||
CREATE_GRAPH
|
||||
DEFINE
|
||||
DEREFINE
|
||||
DOPING
|
||||
DUMP
|
||||
DUMP_RECOLOR
|
||||
EDIT
|
||||
ELMTEST
|
||||
ELTSET
|
||||
EXTRACT
|
||||
EXTRUDE
|
||||
FIELD
|
||||
FILTER
|
||||
FINISH
|
||||
FSET
|
||||
GENIEE
|
||||
GEOMETRY
|
||||
GRID2GRID
|
||||
HELP
|
||||
HEXTOTET
|
||||
INFILE
|
||||
INPUT
|
||||
INTERSECT
|
||||
INTERSECT_ELEMENTS
|
||||
INTERPOLATE
|
||||
KDTREE
|
||||
LOG
|
||||
LOOP
|
||||
LOWER_D
|
||||
MASSAGE
|
||||
MASSAGE2
|
||||
MATH
|
||||
MEMORY
|
||||
MERGE
|
||||
METIS
|
||||
MODE
|
||||
MREGION
|
||||
NEGATIVE_AIJ
|
||||
OFFSETSURF
|
||||
PERTURB
|
||||
PSET
|
||||
PSTATUS
|
||||
QUADXY
|
||||
QUADXYZ
|
||||
QUALITY
|
||||
RADAPT
|
||||
RANKVOLUME
|
||||
READ
|
||||
RECON
|
||||
REFINE
|
||||
REFINE2D
|
||||
REGION
|
||||
REGNPTS
|
||||
REORDER
|
||||
RESETPTS
|
||||
RM
|
||||
RMMAT
|
||||
RMPOINT
|
||||
RMREGION
|
||||
RMSPHERE
|
||||
RMSURF
|
||||
ROTATELN
|
||||
ROTATEPT
|
||||
RZ
|
||||
RZAMR
|
||||
RZBRICK
|
||||
RZRAN
|
||||
RZS
|
||||
RZV
|
||||
SCALE
|
||||
SETPTS
|
||||
SETSIZE
|
||||
SETTETS
|
||||
SMOOTH
|
||||
SORT
|
||||
STACK
|
||||
SURFACE
|
||||
SURFPTS
|
||||
TRANS
|
||||
TRIANGULATE
|
||||
UNG2AVS
|
||||
UPSCALE
|
||||
ZQ
|
||||
127
documentation/lagrit_manual/commands/addmesh.txt
Executable file
127
documentation/lagrit_manual/commands/addmesh.txt
Executable file
@@ -0,0 +1,127 @@
|
||||
.. _addmesh:
|
||||
|
||||
 _place_holder;
|
||||
|
||||
> **_ADDMESH_**
|
||||
|
||||
>
|
||||
|
||||
>> This routine joins two meshes together at their common interface to produce
|
||||
a third mesh.
|
||||
|
||||
>
|
||||
|
||||
> FORMAT:
|
||||
|
||||
>
|
||||
|
||||
>> **addmesh / add /**mesh3 / mesh1 / mesh2
|
||||
/[refine_factor]/[**tet**|**edge**]
|
||||
|
||||
**addmesh **/** amr **/ mesh3 / mesh1 / mesh2 /
|
||||
**addmesh / append **/ mesh3 / mesh1 / mesh2 /
|
||||
**addmesh / delete **/ mesh3 / mesh1 / mesh2 /
|
||||
**addmesh / glue **/ mesh3 / mesh1 / mesh2 /
|
||||
**addmesh / intersect **/ pset_name / mesh1 / mesh2 /
|
||||
**addmesh / match **/ mesh3 / mesh1 / mesh2 / i1 12 i3 i4 i5 i6/
|
||||
**addmesh / match **/ mesh3 / mesh1 / mesh2 /rx1 ry1 rz1/rx2 ry2 rz2/rx3 ry3 rz3/rx4 ry4 rz4/rx5 ry5 rz5/rx6/ry6/rz6/
|
||||
**addmesh / merge**/ mesh3 / mesh1 / mesh2 /
|
||||
**addmesh / pyramid **/ mesh3 / mesh1 / mesh2 /
|
||||
**addmesh / excavate **/ mesh3 / mesh1 / mesh2 / [bfs] / [connect] /
|
||||
|
||||
> **add** - Find the intersection of mesh1 and mesh2. Refine mesh1 where it
|
||||
overlaps mesh2 using the following criteria. refine_factor specifies the
|
||||
number of times that the background mesh will be refined. If this number is
|
||||
negative, or if it does not appear, then the it will use the default. The
|
||||
default method determines the number of refinement iterations based on the
|
||||
volumes of the tets. It continues to refine until the elements on the
|
||||
interface boundary of the background mesh object are within a given factor
|
||||
(5.0) of the volume of the elements on the border of the incoming mesh object.
|
||||
This factor is a parameter constant called size_difference in the code
|
||||
continue_refinement.f. For example, if size_difference is set to 5.0, then the
|
||||
background mesh will be refined until the maximum volume element on the
|
||||
boundary with the incoming mesh object is no bigger than 5 times the volume of
|
||||
the maximum volume element on the border of the incoming mesh. refine_type is
|
||||
the type of refinement that is executed. If the string **tet** appears, then
|
||||
tetrahedral refinement is performed. Otherwise, **edge** based refinement is
|
||||
performed. After the above refine steps have been done, the intersection of
|
||||
mesh1 and mesh2 is found, elements that overlap are deleted from mesh1 and
|
||||
mesh2 is appended to mesh1 to create mesh3.
|
||||
|
||||
>
|
||||
|
||||
> **merge** - Append mesh2 to to mesh1 and create mesh3. Essentially this just
|
||||
concatenates two mesh objects.
|
||||
|
||||
>
|
||||
|
||||
> **glue** - Synonym for **merge**.
|
||||
|
||||
>
|
||||
|
||||
> **append** - Append mesh2 to mesh1 and create mesh3. Similar to **merge**
|
||||
except imt, icr, itetclr of mesh2 have the value max(imt(mesh1)) added to
|
||||
mesh2.
|
||||
|
||||
>
|
||||
|
||||
> **delete** - Create mesh3 which is mesh1 with elements that intersect mesh2
|
||||
deleted.
|
||||
|
||||
>
|
||||
|
||||
> **intersect** - Create a pset called pset_name that contains all nodes in
|
||||
mesh1 which intersect elements of mesh2.
|
||||
|
||||
>
|
||||
|
||||
> **amr** - Use Adaptive mesh refinement to connect background mesh1 with
|
||||
submesh mesh2 and create mesh3.
|
||||
|
||||
>
|
||||
|
||||
> **match** - Same as **merge** except the second mesh can be moved, rotated
|
||||
and translated. The first mesh does not move scale or rotate. If the interface
|
||||
needs to be scaled, translated and rotated that is accomplished by specifing 3
|
||||
node numbers in each mesh or 3 node coordinates from each mesh that are to
|
||||
become coincident. If nodes are given match i1-i4, i2-i5, i3-i6. If
|
||||
coordinates are given match (x1,y1,z1)-(x4,y4,z4), etc.
|
||||
|
||||
>
|
||||
|
||||
> **pyramid** - join a hex mesh to a tet mesh. The common surface must have
|
||||
matching nodes (i.e. there must be exactly two triangle faces on the tet grid
|
||||
that fit into one quad face of the hex grid). Pyramid elements will be
|
||||
constructed in the region where the two meshes join.
|
||||
|
||||
>
|
||||
|
||||
> **excavate** - mesh1 must be a 3D mesh (of any geometry) and mesh2 must be a
|
||||
2D triangular mesh. This then excavates an area in mesh1 around mesh2, such
|
||||
that the surface could then be inserted into the 3D mesh (such as to insert a
|
||||
fault into a background terrain mesh). The background mesh, minus the
|
||||
excavated/removed nodes, is put into mesh3. If the optional [bfs] argument is
|
||||
given, the routine will use a breadth-first search algorithm to find nodes to
|
||||
remove, as opposed to the default KD-tree algorithm. If the optional [connect]
|
||||
argument is given, the program will, after excavation, execute an
|
||||
addmesh/append, and then a connect, to produce a fully connected mesh with the
|
||||
surface (mesh2) inserted into the background (mesh1).
|
||||
|
||||
> NOTE: Care must be taken when using these commands because nothing is done
|
||||
to clean up the point type (itp) array after the **addmesh** operation. The
|
||||
user must often execute a series of [**resetpts**/**itp**](RESETPT.html) and
|
||||
**[filter](FILTER.html)** commands to get the final desired result.
|
||||
|
||||
>
|
||||
|
||||
> NOTE: _place_holder; Some operations may only work with tet meshes.
|
||||
|
||||
 _place_holder;
|
||||
|
||||
>
|
||||
|
||||
> [Click here for demos](http://lagrit.lanl.gov/docs/demos/)
|
||||
|
||||
|
||||
 _place_holder;
|
||||
|
||||
33
documentation/lagrit_manual/commands/assign.txt
Executable file
33
documentation/lagrit_manual/commands/assign.txt
Executable file
@@ -0,0 +1,33 @@
|
||||
.. _assign:
|
||||
|
||||
 _place_holder;
|
||||
|
||||
> **_ASSIGN_**
|
||||
|
||||
>
|
||||
|
||||
>> Assign a value to a global variable. _place_holder; The set of global
|
||||
variables includes; incycle, time, monitor, hextotet_remove_volume,
|
||||
hextotet_check_imt, hextotet_radavg,
|
||||
hextotet_remove_duplicates. _place_holder; The default values of these
|
||||
variables are; 0, _place_holder; 0, no, yes, no, no. use **cmo/setatt **to
|
||||
assign values to mesh object **attributes****.**
|
||||
|
||||
>
|
||||
|
||||
> FORMAT:
|
||||
|
||||
>
|
||||
|
||||
>> **assign**/category_name/column/variable_name/value.
|
||||
|
||||
>
|
||||
|
||||
> EXAMPLES:
|
||||
|
||||
>
|
||||
|
||||
>> **assign**/**time**/3.2
|
||||
|
||||
**assign/hextotet_remove_duplicates/**yes
|
||||
|
||||
100
documentation/lagrit_manual/commands/boundary.txt
Executable file
100
documentation/lagrit_manual/commands/boundary.txt
Executable file
@@ -0,0 +1,100 @@
|
||||
.. _boundary:
|
||||
|
||||
 _place_holder;
|
||||
|
||||
> **_BOUNDARY_**
|
||||
|
||||
>
|
||||
|
||||
>> The boundary routine operates on the current mesh object. For the nodes
|
||||
lying on the specified surface(s), it sets the specified node based attribute
|
||||
to the specified value. Optionally boundary will call the user supplied
|
||||
subroutine set_user_bounds [(see IV. e.8)](../miscell.html)
|
||||
|
||||
>
|
||||
|
||||
> FORMAT:
|
||||
|
||||
>
|
||||
|
||||
>> **boundary/dirichlet**/attr_name/[value|identifier]/surface_list
|
||||
|
||||
where:
|
||||
|
||||
>
|
||||
|
||||
> **dirichlet**
|
||||
|
||||
> is currently unused but must be specified _place_holder;
|
||||
|
||||
>
|
||||
|
||||
> attr_name
|
||||
|
||||
> is the name of the attribute to be set _place_holder;
|
||||
|
||||
>
|
||||
|
||||
> value _place_holder;
|
||||
|
||||
> is a constant, and is the value to which the attribute is set
|
||||
|
||||
>
|
||||
|
||||
> identifier _place_holder;
|
||||
|
||||
> is a character string that will be passed to
|
||||
|
||||
>
|
||||
|
||||
> subroutine set_user_bounds _place_holder;
|
||||
|
||||
>
|
||||
|
||||
>> > surface_list is one of:
|
||||
|
||||
>>>
|
||||
|
||||
>>>> > > > **-all-** (all boundary nodes)
|
||||
|
||||
surface_name/**inclusive** (all bndry nodes on surface)
|
||||
|
||||
surface_name/**exclusive** (all bndry nodes ONLY on surface)
|
||||
|
||||
surface_name/ (same as exclusive)
|
||||
|
||||
surface_name1/surface_name2/**inclusive**
|
||||
|
||||
(all bndry nodes on the union of the surfaces)
|
||||
|
||||
surface_name1/surface_name2/**exclusive** (default)
|
||||
|
||||
(all bndry nodes ONLY on the intersection of the surfaces)
|
||||
|
||||
surface_name1/surface_name2/ surface_name3/.... (same as exclusive)
|
||||
|
||||
>
|
||||
|
||||
>
|
||||
|
||||
EXAMPLES:
|
||||
|
||||
>
|
||||
|
||||
>> **boundary**/**dirichlet**/vd_v/7.0/**-all-**/
|
||||
|
||||
sets the attribute vd_v for all boundary nodes to be 7.0
|
||||
|
||||
**boundary**/**dirichlet**/vi_s/8.0/pbot/
|
||||
**boundary**/**dirichlet**/vd_v/9.0/pbot/**inclusive**/
|
||||
sets the attribute vd_v for the nodes that are on the surface pbot to be 9.0
|
||||
|
||||
**boundary**/**dirichlet**/vd_s/13.0/pfrt
|
||||
sets the attribute vd_s for the nodes that are on the union of the surfaces
|
||||
pfrt and prgt to 13.0
|
||||
|
||||
**boundary**/**dirichlet**/vi_t/12.0/prgt/
|
||||
**boundary**/**dirichlet**/bconds/top_plane/s1,s2,s3/
|
||||
will pass the set of nodes on the intersection of surfaces s1,s2 and s3 along
|
||||
with the string top-plane to subroutine set_user_bounds.
|
||||
|
||||
107
documentation/lagrit_manual/commands/boundary_components.txt
Executable file
107
documentation/lagrit_manual/commands/boundary_components.txt
Executable file
@@ -0,0 +1,107 @@
|
||||
.. _boundary_components:
|
||||
|
||||
 _place_holder;
|
||||
|
||||
> **_BOUNDARY_COMPONENTS_**
|
||||
|
||||
>
|
||||
|
||||
>> Calculate the number of connected components of a mesh. This is useful for
|
||||
looking for holes in a mesh or as a diagnostic when looking at a single
|
||||
material (itetclr, imt) and determining if the material is contiguous or
|
||||
broken into multiple pieces.
|
||||
|
||||
>>
|
||||
|
||||
>> When the **node** option is invoked, the
|
||||
boundary_components _place_holder; module adds the node attribute
|
||||
**numbnd** and **id_numb** to the current mesh object to which is written the
|
||||
node number of a representative node of each outside boundary component. In
|
||||
this mode 'connected' means that a set of nodes of type 'outside' (itp = 10 or
|
||||
12) can be traversed via element edges that have both vertices of type
|
||||
'outside'. This method is not really fool proof in detecting holes in a mesh
|
||||
since one can traverse from the exterior of a mesh to an interior hole in the
|
||||
mesh via an edge that is not really a boundary edge. More coding could deal
|
||||
with this situation. In addition, the number of connected boundary components
|
||||
and a representative node number from each boundary component is assigned to
|
||||
the **numbnd** array. The number of nodes in each boundary set is
|
||||
printed. _place_holder;Non-boundary nodes are assigned **numbnd** = 0. If
|
||||
the itp array is not current, it must be updated first, with the command
|
||||
**resetpts/itp.** By default resetpts/itp is called when the node option is
|
||||
invoked so the reset/noreset is optional. The node array **id_numb** is
|
||||
similar to **numbnd** in that nodes associate with the same boundary component
|
||||
have the same integer value, however **id_numb** is assigned values starting
|
||||
with 1 and going up to the number of boundary components in sequential order.
|
||||
|
||||
>>
|
||||
|
||||
>> When the **node / material_id_number** option is invoked, the distinction
|
||||
of boundary nodes as defined by itp array value is ignored. Instead, all nodes
|
||||
with imt = material_id_number are examined and the number of edge connected
|
||||
components is determined for just that material. Nodes with imt ¹
|
||||
material_id_number are assigned numbnd = 0.
|
||||
|
||||
>>
|
||||
|
||||
>> When the **element** option is invoked, the element attribute **numbnd_e**
|
||||
is added to the current mesh object. The number of connected components of the
|
||||
mesh is computed where 'connected' means sets of elements can be traversed via
|
||||
the element faces. The attribute numbnd_e is filled with the element number of
|
||||
a representitive element of a connected set. In addition, the number of
|
||||
connected components and a representative element number from each connected
|
||||
component and the number of elements in each connected component set is
|
||||
printed. _place_holder;When the material_id_number option is invoked, only
|
||||
elements with itetclr = material_id_number are examined. Elements with itetclr
|
||||
¹ material_id_number are assigned **numbnd_e** = 0.
|
||||
|
||||
>
|
||||
|
||||
> FORMAT:
|
||||
|
||||
>
|
||||
|
||||
>> **boundary_components**- (this syntax is the same as boundary_components /
|
||||
node)
|
||||
|
||||
>
|
||||
|
||||
>> **boundary_components** / node / [_reset_|noreset]
|
||||
|
||||
>>
|
||||
|
||||
>> **boundary_components** / node / material_id_number / [_reset_|noreset]
|
||||
|
||||
>
|
||||
|
||||
>> **boundary_components** / element / [reset|_noreset_]
|
||||
|
||||
>
|
||||
|
||||
>> **boundary_components** / element / material_id_number / [reset|_noreset_]
|
||||
|
||||
>
|
||||
|
||||
> EXAMPLE:
|
||||
|
||||
>
|
||||
|
||||
>> **boundary_components**
|
||||
|
||||
>>
|
||||
|
||||
>> **boundary_components** / element / 3
|
||||
|
||||
>>
|
||||
|
||||
>>  _place_holder;
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
**boundary_components / node** - note that the interior nodes have numbnd=0 and the nodes of the upper hole have the same value as the outside boundary since the upper hole can be reached by traversing an edge that is connected to the exterior.
|
||||
**boundary_components / element** - note that the two pieces are have different values for numbnd_e even though element 15 is touching element 6. This is because one cannot traverse from the blue mesh (numbnd_e = 15) to the red mesh (numbnd_e = 24) through faces of the mesh.
|
||||
|
||||
|
||||
86
documentation/lagrit_manual/commands/bubble.txt
Executable file
86
documentation/lagrit_manual/commands/bubble.txt
Executable file
@@ -0,0 +1,86 @@
|
||||
.. _bubble:
|
||||
|
||||
**_BUBBLE_**
|
||||
|
||||
> This command takes a topologically 2d mesh (a planar or non-planar surface),
|
||||
extrudes it into three dimensions along either the normal to the surface
|
||||
(default) or along a user defined vector, and then takes the external surface
|
||||
of the volume created and returns that to the user.
|
||||
|
||||
>
|
||||
|
||||
> This operation will result in a closed surface.
|
||||
|
||||
FORMAT:
|
||||
|
||||
> **bubble**/mesh1/mesh2/**const|min**/offset/[**norm**|x1,y1,z1]
|
||||
|
||||
mesh1 is the name of the resulting mesh.
|
||||
|
||||
mesh2 is the name of the initial mesh. This mesh must be either made up of
|
||||
**tris, quads, or hybrids**.
|
||||
|
||||
**const** is a keyword that indicates that the distance from each of the points in the initial mesh along the extruding vector will be equal to offset.Therefore, if you wanted the closed surface mesh to have the same surface characteristics as the original mesh on both the initial and newly formed surface or edge, you would use **const**.
|
||||
|
||||
**min** is a keyword that indicates that the minimum distance along the extruding vector to a reference plane that is perpendicular to the extruding vector will be equal to offset. This means that if you want a closed surface mesh with at least one flat side, you would use **min**. This also means that if you use **min**, bubble computes the "bottom point" on the initial mesh, or the point closest to the reference plane, and then extrudes that point by min, all the other points will be extruded by a larger distance. This avoids the problem of having the initial surface intersect the reference plane that forms the other side of the closed surface mesh.
|
||||
|
||||
offsetis the length of extrusion. It can either be an integer or a real.
|
||||
|
||||
The final argument is optional. It must either be the keyword **norm**, or a
|
||||
three valued vector (in cartesian space) specifying a direction. The default,
|
||||
if no argument is provided, is **norm**. If **norm** is chosen, the element
|
||||
weighted average normal to the surface or curve is computed, and the initial
|
||||
mesh is extruded in that direction. Otherwise, if a vector value is specified,
|
||||
the vector is normalized, and its direction used to extrude the initial mesh.
|
||||
|
||||
NOTES:
|
||||
|
||||
> This code works on meshes containing quads, triangles, or hybrid polygons.
|
||||
|
||||
>
|
||||
|
||||
> It is very possible to create an invalid mesh object with this command,
|
||||
especially if the initial mesh is a multivalued surface, or if the extruding
|
||||
vector is in a direction parallel to the plane that contains the initial
|
||||
surface is in. You have been warned.
|
||||
|
||||
>
|
||||
|
||||
> There is an analog to this code that creates the volume enclosed by the
|
||||
surface as opposed to the surface itself. It is called
|
||||
**[extrude.](extrude.html)**
|
||||
|
||||
>
|
||||
|
||||
> This code is a wrapper for **extrude**. There are plans to integrate
|
||||
**bubble**'s functionality with **extrude** and to eliminate **bubble** from
|
||||
the commands recognized by LaGriT.
|
||||
|
||||
EXAMPLES:
|
||||
|
||||
> **bubble**/cmo_bigbox/cmo_quad/**const**/5.0/
|
||||
|
||||
>
|
||||
|
||||
> This would result in a surface surrounding an amalgamation of
|
||||
parallelopipeds created from the initial quad sheet. First, since **const** is
|
||||
used the quads will be extruded a constant amount from each point in the quad
|
||||
sheet. Second, since the extruding vector and **norm** are omitted, the
|
||||
extrusion will occur on the average normal to the plane. Therefore, this
|
||||
command will result in a mesh of tris that form the surface of a group of
|
||||
parallelopipeds extruded 5.0 units in an orthogonal direction.
|
||||
|
||||
>
|
||||
|
||||
> **bubble**/cmo_arbshape/cmo_tri/**min**/7.5/3,-2.5,-6
|
||||
|
||||
>
|
||||
|
||||
> This command would result in a mesh of tris that form a surface enclosing a
|
||||
volume of prisms being created out of the initial tri sheet. First, since
|
||||
**min** is used, the "bottom" of the surface would be a plane. Second, because
|
||||
the vector 3, -2.5, -6 is specified, the extrusion will be in that direction
|
||||
(again the magnitude is not important, the vector is normalized to a unit
|
||||
vector), not in the direction of the average normal of the initial tri
|
||||
surface.
|
||||
|
||||
82
documentation/lagrit_manual/commands/calc_rdist.txt
Executable file
82
documentation/lagrit_manual/commands/calc_rdist.txt
Executable file
@@ -0,0 +1,82 @@
|
||||
.. _calc_rdist:
|
||||
|
||||
>  _place_holder;
|
||||
|
||||
>
|
||||
|
||||
> **_CALC_RDIST_**
|
||||
|
||||
>
|
||||
|
||||
>> This command is a macro command that calculates the radial distance from a
|
||||
specified point to a set of points. That set of points can be defined using
|
||||
the standard LaGriT syntax of psets and range. If the specification for a set
|
||||
of points is omitted, the whole grid is used. The command operates on the
|
||||
current mesh object.
|
||||
|
||||
>>
|
||||
|
||||
>> This operation will (often) result in two attributes being added to the
|
||||
current mesh object. The first, a real named rdist, contains the radial
|
||||
distance from the point of interest. The second, an integer named ictrpt,
|
||||
contains an index that specifies the center point that was used for this
|
||||
calculation.
|
||||
|
||||
>
|
||||
|
||||
> FORMAT:
|
||||
|
||||
>
|
||||
|
||||
>> **calc_rdist**/x0,y0,z0/[radius_index]/[**pset,get,**pset_name|ifirst,ilast
|
||||
,istride]
|
||||
|
||||
>>
|
||||
|
||||
>> x0,y0,z0 are the coordinates of the center point used in the calculation.
|
||||
|
||||
radius_index is an optional integer. It serves as an index for a specific
|
||||
center point. _place_holder; Its value is placed in the attribute
|
||||
|
||||
ictrpt throughout the range affected by the command. If it is not specified,
|
||||
no changes are made to the attribute ictrpt. The non-value for this attribute
|
||||
is 0 (i.e., if there is no radius index, the value of ictrpt will be 0).
|
||||
|
||||
>>
|
||||
|
||||
>> The last argument that **calc_rdist** takes specifies the range over which
|
||||
the command will be executed. If it is omitted, the whole grid is assumed.
|
||||
|
||||
>
|
||||
|
||||
> NOTES:
|
||||
|
||||
>
|
||||
|
||||
>> This command is a macro command. It does not add any new functionality.
|
||||
|
||||
>
|
||||
|
||||
> EXAMPLES:
|
||||
|
||||
>
|
||||
|
||||
>> **calc_rdist/**0,0,0
|
||||
|
||||
>>
|
||||
|
||||
>>> This command would calculate the distance from the origin to all points in
|
||||
the mesh, and place the values in rdist. It would not modify ictrpt in any
|
||||
way.
|
||||
|
||||
>>
|
||||
|
||||
>> **calc_rdist**/1,0.25,1/10/pset,get,big_sphere
|
||||
|
||||
>>
|
||||
|
||||
>>> This command would calculate the distance from the point 1,0.25,1 to all
|
||||
the points within the pset big_sphere. It would place those distances into
|
||||
rdist within that pset, and would replace the value of ictrpt with 10 within
|
||||
that pset as well.
|
||||
|
||||
236
documentation/lagrit_manual/commands/cmo.txt
Executable file
236
documentation/lagrit_manual/commands/cmo.txt
Executable file
@@ -0,0 +1,236 @@
|
||||
.. _cmo:
|
||||
|
||||
 _place_holder;
|
||||
|
||||
> **_CMO_**
|
||||
|
||||
>
|
||||
|
||||
>> The **cmo** command operates on the Mesh Object(MO). There can be many Mesh
|
||||
Objects in the code for a given problem. Only one of these Mesh Objects may by
|
||||
the Current Mesh Object. There is also one Default Mesh Object which is used
|
||||
as the template for generating new Mesh Objects.
|
||||
|
||||
> FORMAT:
|
||||
|
||||
Add a user defined attribute to a Mesh Object
|
||||
|
||||
[**cmo**/**addatt**](cmo/cmo_addatt.html) /mo_name/att_name/type/rank/
|
||||
length/interpolate/persistence/ioflag/value
|
||||
|
||||
[**cmo**/**addatt**](cmo/cmo_addatt.html) /mo_name /keyword /
|
||||
keyword_parameters
|
||||
|
||||
Give the sink mesh the same set of attributes as the source mesh (with
|
||||
unitialized values)
|
||||
|
||||
**[cmo/attribute_derive](cmo/cmo_att_derive.html)**/sink_mo/[src_mo]
|
||||
|
||||
Change two meshes so they both share the same set of attributes (taking the
|
||||
union of their sets of attributes)
|
||||
|
||||
**[cmo/attribute_union](cmo/cmo_att_derive.html)**/mo_name_1/mo_name_2
|
||||
|
||||
Shorten all memory managed arrays associated with mo_name to their actual
|
||||
lengths
|
||||
|
||||
**[cmo/compress](cmo/cmo_compress.html)**/mo_name/
|
||||
|
||||
Associate the surface constraint information of the mesh object cmo_src with
|
||||
cmo_sink:
|
||||
|
||||
[**cmo/constraint**/](cmo/cmo_constraint.html)cmo_sink/cmo_src
|
||||
|
||||
Copy master_mo to mo_name:
|
||||
|
||||
**[cmo/copy](cmo/cmo_copy.html)**/mo_name/master_mo/
|
||||
|
||||
Copy a mesh object attribute:
|
||||
|
||||
**[cmo/copyatt](cmo/cmo_copyatt.html)**/cmosink/cmo_src/att_nam_sink/att_nam_src
|
||||
|
||||
Create a new mesh object:
|
||||
|
||||
**[cmo/create](cmo/cmo_create.html)/**mo_name/[npoints/nelements/mesh-type]
|
||||
|
||||
Delete an existing mesh object:
|
||||
|
||||
**[cmo/delatt](cmo/cmo_delatt.html)/**mo_name/att_name/
|
||||
|
||||
Delete an existing mesh object even it has 'permanent' persistance:
|
||||
|
||||
**[cmo/DELATT](cmo/cmo_delatt.html)/**mo_name/att_name/
|
||||
|
||||
Copy the structure of master_mo to mo_name, but copy no data:
|
||||
|
||||
**[cmo/derive](cmo/cmo_derive.html)**/mo_name/master_mo/
|
||||
|
||||
Associate the geometry named geometry_name with the mesh object mo_name:
|
||||
|
||||
**[cmo/geometry](cmo/cmo_geom.html)/**mo_name/geometry_name
|
||||
|
||||
Print the memory length of attribute att_name for Mesh Object, mo_name:
|
||||
|
||||
**[cmo/length](cmo/cmo_length.html)**/mo_name/att_name/
|
||||
|
||||
List all mesh objects:
|
||||
|
||||
**[cmo/list](cmo/cmo_list.html)**
|
||||
|
||||
Adjust the memory manages arrays associated with mo_name to the
|
||||
|
||||
lengths required by number_nodes and number_elements:
|
||||
|
||||
[**cmo/memory**/ ](cmo/cmo_memory.html)mo_name/number_nodes/number_elements /
|
||||
|
||||
Modify an attribute parameter value:
|
||||
|
||||
[**cmo**/**modatt**/](cmo/cmo_modatt.html)mo_name/att_name/field_name/new_fiel
|
||||
d/
|
||||
|
||||
Change the name of a mesh object:
|
||||
|
||||
**[cmo/move](cmo/cmo_move.html)**/mo_name /master_mo /
|
||||
|
||||
Adjust the memory length of mo_name based on the values of nnodes and
|
||||
|
||||
nelements:
|
||||
|
||||
**[cmo/newlen](cmo/cmo_newlen.html)**/mo_name/
|
||||
|
||||
Print the value of an attribute:
|
||||
|
||||
**[cmo/printatt](cmo/cmo_printatt.html)**/mo_name/att_name|-**all-**|**-xyz-**|**nod **/ [**minmax**|**list**|**value**]** **/[ifirst,ilast,istride]
|
||||
|
||||
Read values for an attribute from a file:
|
||||
|
||||
**[cmo/readatt](cmo/cmo_readatt.html)**/mo_name/att_name/[...]/operation/file_name
|
||||
|
||||
Release a mesh object (same as delete):
|
||||
|
||||
**[cmo/release](cmo/cmo_release.html)**/mo_name/
|
||||
|
||||
Make mo_name the active mesh object:
|
||||
|
||||
**[cmo/select](cmo/cmo_select.html)**/mo_name/
|
||||
|
||||
Set the value of an attribute:
|
||||
|
||||
**[cmo/setatt](cmo/cmo_setatt.html)**/mo_name/att_name/ifirst,ilast,istride/value
|
||||
|
||||
Create an integer attribute that contains the node or element number:
|
||||
|
||||
**[cmo/set_id/](cmo/cmo_setid.html)**mo_name/**node** |**element** |**both**/[att_nam1]/[att_nam2]
|
||||
|
||||
Print the mesh object status (all attributes and values of scalars)
|
||||
|
||||
[**cmo/status**/](cmo/cmo_status.html)mo_name/[**brief**]
|
||||
|
||||
Verifie that memory allocation of Mesh Object mo_name is consistent:
|
||||
|
||||
**[cmo/verify](cmo/cmo_verify.html)**/mo_name/
|
||||
 _place_holder;
|
||||
|
||||
CONVENTION: As a result of any command that generates a new mesh object, the
|
||||
newly generated mesh object becomes active. As a result of any command the
|
||||
changes a mesh
|
||||
|
||||
object (e.g. copyatt) the changed mesh object becomes
|
||||
active. _place_holder; Use cmo/select to explicitly
|
||||
|
||||
specify the active mesh object.
|
||||
|
||||
RESERVED NAMES: The following names are reserved and may not be used for Mesh
|
||||
Objectnames:
|
||||
|
||||
**-cmo- _place_holder; _place_holder; _place_holder; _place_holder; _place_holder; _place_holder; **the Current Mesh Object
|
||||
**-default- _place_holder; _place_holder; _place_holder; _place_holder; **the Default Mesh Object
|
||||
**-all- _place_holder; _place_holder; _place_holder; _place_holder; _place_holder; _place_holder; **all Mesh Objects or Attributes TYPES, DEFAULTS and POSSIBLE VALUES:
|
||||
|
||||
mo_name _place_holder;
|
||||
|
||||
is type character
|
||||
|
||||
att_name
|
||||
|
||||
is type character
|
||||
|
||||
mesh_type
|
||||
|
||||
is type character
|
||||
|
||||
|
||||
|
||||
 _place_holder;(**tet,hex,pri,pyr,tri,qua,hyb,line,point**)
|
||||
|
||||
type
|
||||
|
||||
 _place_holder;is type character, default is **VDOUBLE**
|
||||
|
||||
|
||||
|
||||
 _place_holder;(**VDOUBLE, VINT, VCHAR, INT, REAL, CHARACTER)**
|
||||
|
||||
|
||||
|
||||
**VDOUBLE **real array
|
||||
|
||||
|
||||
|
||||
**VINT **integer array
|
||||
**VCHAR **array of character*32
|
||||
|
||||
|
||||
|
||||
**INT** a single integer variable (length =1 rank =1 by definition)
|
||||
**REAL** a single real variable (length =1 rank =1 by definition)
|
||||
**CHARACTER **a single character*32 variable (length =1 rank =1 by definition)
|
||||
|
||||
rank
|
||||
|
||||
is type character, default is **scalar**
|
||||
|
||||
|
||||
|
||||
(**scalar,vector,tensor**)
|
||||
|
||||
|
||||
|
||||
**scalar **one entry per array element
|
||||
|
||||
|
||||
|
||||
**vector **3 entries per array element
|
||||
|
||||
|
||||
|
||||
**tensor **9 entries per array element
|
||||
|
||||
|
||||
|
||||
any previously defined **INT** attribute including user defined attributes may
|
||||
be used as rank
|
||||
|
||||
length
|
||||
|
||||
is type character, default is **nnodes**
|
||||
|
||||
(**nnodes, nelements**)
|
||||
|
||||
any previously defined **INT** attribute including user defined attributes may
|
||||
be used as length _place_holder;
|
||||
|
||||
interpolate
|
||||
|
||||
is type character, default is **linear**
|
||||
|
||||
|
||||
|
||||
(**copy, sequence, linear, log, asinh, max,**
|
||||
|
||||
**min, user,and,or,incmax**)
|
||||
|
||||
ioflag
|
||||
|
||||
(**a, g, f, l, no **-- for avs,gmv,fehms,LaGriT)
|
||||
|
||||
39
documentation/lagrit_manual/commands/colormap.txt
Executable file
39
documentation/lagrit_manual/commands/colormap.txt
Executable file
@@ -0,0 +1,39 @@
|
||||
.. _colormap:
|
||||
|
||||
> **_COLORMAP_**
|
||||
|
||||
> > This command builds the colormap. _place_holder; In reality it only
|
||||
builds the material adjacency graph, from with the colormap can be quickly
|
||||
generated when needed. _place_holder; Three actions are possible:
|
||||
|
||||
>
|
||||
|
||||
> FORMAT:
|
||||
|
||||
>
|
||||
|
||||
>> **colormap**/**[add]|create|delete]**/[cmo_name]
|
||||
|
||||
>>
|
||||
|
||||
>> **add** -- The material adjacency characteristics of the specified mesh
|
||||
object is added to the existing material adjacency graph, which is created if
|
||||
it didn't exist. _place_holder; This is the default action.
|
||||
|
||||
**create** -- The existing material adjacency graph is deleted and a new one created from the specified mesh object.
|
||||
**delete** -- The material adjacency graph is deleted if it exists. _place_holder; Any specified mesh object is ignored.
|
||||
 _place_holder;
|
||||
|
||||
>
|
||||
|
||||
> EXAMPLES:
|
||||
|
||||
>
|
||||
|
||||
>> **colormap/create/**mesh1
|
||||
|
||||
**colormap**//mesh2
|
||||
**colormap**/**delete**
|
||||
|
||||
>  _place_holder;
|
||||
|
||||
348
documentation/lagrit_manual/commands/compute.txt
Executable file
348
documentation/lagrit_manual/commands/compute.txt
Executable file
@@ -0,0 +1,348 @@
|
||||
.. _compute:
|
||||
|
||||
|
||||
|
||||
> **_COMPUTE_**
|
||||
|
||||
>
|
||||
|
||||
>> This command contains modules that compute various attributes and functions
|
||||
based on one or more
|
||||
|
||||
mesh objects. This operation will (often) result in new attributes being added
|
||||
to the mesh objects. The
|
||||
|
||||
action of the command will be controled by the keyword in the second argument
|
||||
position.
|
||||
|
||||
>>
|
||||
|
||||
>> distance_field - keyword for distance field calculation. Determine the
|
||||
minimum distance from any node in
|
||||
|
||||
mo_source to every node in mo_sink and place the result in the node based
|
||||
floating point attribute,
|
||||
|
||||
distance_field_attribute in mo_sink. The computation is accelerated by using
|
||||
the [kdtree](kdtree.html) search
|
||||
|
||||
algorithm.
|
||||
|
||||
|
||||
signed_distance_field - keyword for signed distance field calculation.
|
||||
Determine the minimum distance
|
||||
 _place_holder; _place_holder; _place_holder;
|
||||
|
||||
from any node in mo_source to every node in mo_sink and place the result in
|
||||
the node based floating
|
||||
 _place_holder; _place_holder; _place_holder;
|
||||
 _place_holder; _place_holder; _place_holder;
|
||||
|
||||
point attribute, distance_field_attribute in mo_sink. The computation is
|
||||
accelerated by using the _place_holder; _place_holder;
|
||||
 _place_holder; _place_holder; _place_holder;
|
||||
|
||||
[kdtree](kdtree.html) search algorithm. Using this option the mo_source MUST
|
||||
be either a triangle or quad surface
|
||||
 _place_holder; _place_holder; _place_holder;
|
||||
 _place_holder; _place_holder; _place_holder;
|
||||
|
||||
mesh object. If the surfaces form a topologically closed volume then positive,
|
||||
'above' distance is in the
|
||||
 _place_holder; _place_holder; _place_holder;
|
||||
|
||||
direction of the surface normal vector. Negative is 'below' the surface. If
|
||||
the surface is not a closed
|
||||
 _place_holder; _place_holder; _place_holder;
|
||||
 _place_holder; _place_holder; _place_holder;
|
||||
|
||||
volume, then the assumptions described in the [surface](SURFACE.html) command
|
||||
are used to determine what is above
|
||||
 _place_holder; _place_holder; _place_holder;
|
||||
|
||||
and what is below the surface.
|
||||
|
||||
>>
|
||||
|
||||
>> linear_transform - keyword for an extrapolation from an attribute value in
|
||||
a surface onto every node of
|
||||
|
||||
a 3D mesh. Given a 3D mesh and a 2D surface, this command will extrapolate a
|
||||
scalar value from that surface
|
||||
|
||||
onto every point of the mesh. This can be used to (for example):
|
||||
|
||||
>>
|
||||
|
||||
>> * Propogate head values from a surface onto all nodes of a mesh.
|
||||
|
||||
>> * Expand a mesh to fit a surface, by propogating the appropriate spatial
|
||||
coordinate.
|
||||
|
||||
>> * Compute the depth relative to a topographic surface to each node of a
|
||||
mesh.
|
||||
|
||||
>>
|
||||
|
||||
>> This is highly dependant on the spatial relation between the mesh and the
|
||||
surface - values from the
|
||||
|
||||
surface are extrapolated "downward" into the mesh in the direction specified
|
||||
in the command. The
|
||||
|
||||
direction specified in the command must be one of
|
||||
[zpos|zneg|ypos|yneg|xpos|xneg]. For example,
|
||||
|
||||
specifing zpos will result in the upper (positive
|
||||
|
||||
z-axis) side of the mesh having attribute values conforming exactly to those
|
||||
on the surface, while the
|
||||
|
||||
lower side of the mesh will have whatever attribute values it had previous,
|
||||
with all nodes in between
|
||||
|
||||
having attribute values distributed linearly between the two extremes. If a
|
||||
direction is not specified,
|
||||
|
||||
it will default to zpos. If an attribute is not specified, it will default to
|
||||
the spatial attribute appropriate
|
||||
|
||||
to the chosen direction (i.e. if the direction is yneg, the attribute will
|
||||
default to yic, the y-coordinate of
|
||||
|
||||
each node.) The attribute chosen must already exist in both the surface and
|
||||
main meshes.
|
||||
|
||||
>>
|
||||
|
||||
>> Other places to look for modules that compute some standard mesh attributes
|
||||
include, [quality](QUALITY.html), which will
|
||||
|
||||
compute aspect ratio and volume, [cmo/addatt](cmo/cmo_addatt.html), which will
|
||||
compute normal vectors, dihedral angles, solid
|
||||
|
||||
angles, meadian points, Voronoi points and more. User functions can be
|
||||
computed with the [math](MATH.html) module.
|
||||
|
||||
>
|
||||
|
||||
> **FORMAT**:
|
||||
|
||||
 _place_holder; _place_holder; _place_holder;
|
||||
compute/distance_field/mo_sink/mo_source/distance_field_attribute
|
||||
|
||||
>
|
||||
|
||||
>> compute/signed_distance_field/mo_sink/mo_source/distance_field_attribute
|
||||
|
||||
|
||||
compute/linear_transform/mo_main/mo_surface/[direction/att_name]
|
||||
|
||||
>
|
||||
|
||||
> **EXAMPLES**:
|
||||
|
||||
>
|
||||
|
||||
>> compute / distance_field / mo_sink / mo_src / dfield
|
||||
|
||||
|
||||
compute / signed_distance_field / mo_sink / mo_src / dfield
|
||||
|
||||
>>
|
||||
|
||||
>> compute / linear_transform / mo_sink / mo_surf
|
||||
 _place_holder; _place_holder; _place_holder;
|
||||
 _place_holder; _place_holder; _place_holder;
|
||||
|
||||
 _place_holder; _place_holder; _place_holder;
|
||||
 _place_holder; _place_holder; _place_holder; (will expand top of
|
||||
mesh to look like the surface)
|
||||
|
||||
>>
|
||||
|
||||
>> compute / linear_transform / mo_sink / mo_surf / zpos / water_head_value
|
||||
|
||||
>>
|
||||
|
||||
>>  _place_holder;
|
||||
|
||||
>
|
||||
|
||||
> ** Example: distance_field **
|
||||
|
||||
>
|
||||
|
||||
> 
|
||||
|
||||
>
|
||||
|
||||
> cmo / create / cmo_src
|
||||
|
||||
> createpts/rtz/1,91,1/3.,0.,0./3.,270.,0./1,1,1/
|
||||
|
||||
> cmo / create / cmo_snk
|
||||
|
||||
> createpts / xyz / 30 30 1 / -5. -5. -5. / 5. 5. 5. / 1 1 1
|
||||
|
||||
> compute / distance_field / cmo_snk / cmo_src / dfield
|
||||
|
||||
> finish
|
||||
|
||||
>
|
||||
|
||||
>
|
||||
|
||||
>
|
||||
|
||||
> ****
|
||||
|
||||
>
|
||||
|
||||
> ** Example: signed_distance_field **
|
||||
|
||||
>
|
||||
|
||||
> 
|
||||
|
||||
>
|
||||
|
||||
> *
|
||||
|
||||
> * Create some of the necessary parts
|
||||
|
||||
> *
|
||||
|
||||
> cmo / create / mo_tet
|
||||
|
||||
> createpts/random/rtp/.1/1,0,0/1,180,360////.02
|
||||
|
||||
> connect
|
||||
|
||||
> resetpts / itp
|
||||
|
||||
> *
|
||||
|
||||
> * Extract the external surface
|
||||
|
||||
> *
|
||||
|
||||
> extract / surfmesh / 1 0 0 / mo_tri / mo_tet / external
|
||||
|
||||
> dump / gmv / tri_surf.gmv / mo_tri
|
||||
|
||||
> cmo / delete / mo_tet
|
||||
|
||||
> cmo / printatt / mo_tri / -xyz- / minmax
|
||||
|
||||
> cmo / create / mo_pts
|
||||
|
||||
> *
|
||||
|
||||
> * Create an xyz node distribution and connect the nodes.
|
||||
|
||||
> *
|
||||
|
||||
> createpts / xyz / 31 31 31 / -1 -1 -1 / 1 1 1 / 1 1 1
|
||||
|
||||
> connect
|
||||
|
||||
> resetpts / itp
|
||||
|
||||
> *
|
||||
|
||||
> * Compute the signed distance field
|
||||
|
||||
> *
|
||||
|
||||
> compute / signed_distance_field / mo_pts / mo_tri / dfield1
|
||||
|
||||
> addmesh / append / mo_all / mo_pts / mo_tri
|
||||
|
||||
> dump / gmv / signed_dfield1.gmv / mo_all
|
||||
|
||||
> *
|
||||
|
||||
> * Do the same thing but use a surface of quads that make
|
||||
|
||||
> * two nested spheres.
|
||||
|
||||
> *
|
||||
|
||||
> cmo / create / mo_hex / / / hex
|
||||
|
||||
> createpts/sphere/8/5/5000/1.0,0.5/0.,0.,0./1,0,0.0/
|
||||
|
||||
> filter / 1 0 0
|
||||
|
||||
> resetpts / itp
|
||||
|
||||
> extract / surfmesh / 1 0 0 / mo_quad / mo_hex / external
|
||||
|
||||
> dump / gmv / quad_surf.gmv / mo_quad
|
||||
|
||||
> *
|
||||
|
||||
> * Compute the signed distance field
|
||||
|
||||
> *
|
||||
|
||||
> compute / signed_distance_field / mo_pts / mo_quad / dfield2
|
||||
|
||||
> addmesh / append / mo_all2 / mo_pts / mo_quad
|
||||
|
||||
> dump / gmv / signed_dfield2.gmv / mo_all2
|
||||
|
||||
> cmo / status
|
||||
|
||||
> quality
|
||||
|
||||
> cmo / printatt / mo_pts / -all- / minmax
|
||||
|
||||
> finish
|
||||
|
||||
>
|
||||
|
||||
>
|
||||
|
||||
>
|
||||
|
||||
> **
|
||||
|
||||
Example: linear_transform **
|
||||
|
||||
>
|
||||
|
||||
> 
|
||||
|
||||
>
|
||||
|
||||
> infile [buildsurf.lgi](../buildsurf.lgi)
|
||||
|
||||
>
|
||||
|
||||
> * Expand the cubical mesh such that its top (positive z-axis) looks like
|
||||
the sinusoidal
|
||||
|
||||
> * surface denoted by zhigh
|
||||
|
||||
> compute / linear_transform / cube / zhigh
|
||||
|
||||
>
|
||||
|
||||
> finish
|
||||
|
||||
>
|
||||
|
||||
>
|
||||
|
||||
>
|
||||
|
||||
> 
|
||||
|
||||
>
|
||||
|
||||
>  _place_holder;
|
||||
|
||||
|
||||
|
||||
125
documentation/lagrit_manual/commands/connect.txt
Executable file
125
documentation/lagrit_manual/commands/connect.txt
Executable file
@@ -0,0 +1,125 @@
|
||||
.. _connect :
|
||||
|
||||
 _place_holder;
|
||||
|
||||
 _place_holder;
|
||||
|
||||
> **_CONNECT_**
|
||||
|
||||
 _place_holder;
|
||||
|
||||
>
|
||||
|
||||
>> Connect the nodes into a Delaunay tetrahedral or triangle grid. The
|
||||
Delaunay criterion requires that the circumsphere (circumcircle) defined by
|
||||
each tetrahedron (triangle) contains no mesh nodes in its interior. At present
|
||||
only the **delaunay** option is implemented; this option will be the default.
|
||||
The delaunay algorithm used requires that a "big tet" be constructed that
|
||||
contains all nodes in its interior. The user has the option of providing the
|
||||
coordinates of this "big tet". The user also has the option of selecting a
|
||||
subset of nodes to connect. _place_holder; _place_holder; Connect will
|
||||
by default detect material interfaces and will look for edges that intersect
|
||||
the interfaces. _place_holder; Nodes will be added to the mesh at these
|
||||
intersections to create a conforming mesh. _place_holder; This activity
|
||||
may be turned off by using the **noadd** option.
|
||||
|
||||
|
||||
The **check_interface** option is more expensive but does a more exhaustive
|
||||
job of making sure there are no edges of the mesh that cross a material
|
||||
boundary.
|
||||
|
||||
|
||||
**Connect** may refuse to add nodes that will result in near zero-volume tetahedra. The volume tests are based on the mesh object epsilons. To ensure that these epsilons are based on the geometry, issue a **[setsize ](http://lagrit.lanl.gov/new_html/SETSIZE.html)**command before **[setpts](http://lagrit.lanl.gov/new_html/SETPTS.html)**. _place_holder; Expert users may adjust the epsilons with the _place_holder; [cmo/setatt](http://lagrit.lanl.gov/new_html/cmo_setatt.html) _place_holder; command. _place_holder; **Connect** will generate a 2D triangular mesh if both [**ndimensions_geom** and **ndimenions_topo**](http://lagrit.lanl.gov/new_html/meshobject.html) are 2. _place_holder; In this case all nodes must lie in a plane.
|
||||
[Click here for more details on the connect
|
||||
algorithm](http://lagrit.lanl.gov/new_html/connect_notes.html).
|
||||
|
||||
>>
|
||||
|
||||
>> The following instructions are for connecting points on a planar
|
||||
surface. _place_holder; The mesh must have **ndimensions_topo**=2 and
|
||||
**ndimensions_geom**=2.
|
||||
|
||||
>>
|
||||
|
||||
>> **cmo**/**create/**trimesh///**tri**
|
||||
|
||||
**cmo**/**modatt**//**ndimensions_geom**/**default**/2
|
||||
...
|
||||
|
||||
**connect**
|
||||
>>
|
||||
|
||||
>> an alternate way to achieve this is:
|
||||
|
||||
**cmo**/**create**/trimesh///**triplane**
|
||||
 _place_holder; _place_holder; _place_holder; ...
|
||||
|
||||
**connect**
|
||||
 _place_holder;
|
||||
|
||||
>
|
||||
|
||||
> FORMAT:
|
||||
|
||||
>
|
||||
|
||||
>> **connect**/[**delaunay**]/ifirst,ilast,istride/big_tet_coordinates
|
||||
|
||||
**connect**/**noadd****
|
||||
connect**/**check_interface**
|
||||
|
||||
>
|
||||
|
||||
> EXAMPLES:
|
||||
|
||||
>
|
||||
|
||||
>> **connect**
|
||||
|
||||
Create the Delaunay tetrahedral connectivity of all nodes in the mesh. Add
|
||||
nodes to break multi-material connections.
|
||||
|
||||
**
|
||||
connect**/**delaunay**/
|
||||
|
||||
Create the Delaunay tetrahedral connectivity of all nodes in the mesh. Add
|
||||
nodes to break multi-material connections.
|
||||
|
||||
**
|
||||
connect/delaunay**/1,0,0/ 0.,0.,0./1000.,0.,0./500.,1000.,0./500.,500.,10./
|
||||
|
||||
**connect/**1,0,0/ 0.,0.,0./1000.,0.,0./500.,1000.,0./500.,500.,10./noadd
|
||||
**connect/delaunay**/1,0,0/ 0.,0.,0./1000.,0.,0./500.,1000.,0./500.,500.,10./noadd
|
||||
**connect/delaunay**/1,0,0/ 0.,0.,0./1000.,0.,0./500.,1000.,0./500.,500.,10./check_interface
|
||||
Create the Delaunay tetrahedral connectivity of all nodes in the mesh and
|
||||
specify explicitly the coordinates of the enclosing tetrahedron
|
||||
|
||||
**
|
||||
**connect/pset get points
|
||||
****Create the Delaunay tetrahedral connectivity of a subset of nodes.****
|
||||
|
||||
******connect/noadd**
|
||||
Create the Delaunay tetrahedral connectivity of _place_holder; all nodes
|
||||
in the mesh and disregard material interfaces.
|
||||
|
||||
**
|
||||
connect/**check_interface****
|
||||
|
||||
Create the Delaunay tetrahedral connectivity of _place_holder; all nodes
|
||||
in the mesh with added checking of edges that have both nodes tagged as
|
||||
itp='intrface' to be sure that the edge does not cross a material interface.
|
||||
This option is more expensive but may fix situations where multi-material
|
||||
edges do not get refined because they connect an 'intrface' node to an
|
||||
'intrface' node.
|
||||
|
||||
>
|
||||
|
||||
> [Click here for 2D
|
||||
demos](../../new_html/demos/2d_connect/test/html/main_2d_connect.html)
|
||||
|
||||
[Click here for 3D
|
||||
demos](../../new_html/demos/connect/test/html/main_connect.html)
|
||||
|
||||
|
||||
 _place_holder;
|
||||
|
||||
35
documentation/lagrit_manual/commands/coordsys.txt
Executable file
35
documentation/lagrit_manual/commands/coordsys.txt
Executable file
@@ -0,0 +1,35 @@
|
||||
.. _coordsys :
|
||||
|
||||
 _place_holder;
|
||||
|
||||
 _place_holder;
|
||||
|
||||
> **_COORDSYS_**
|
||||
|
||||
>
|
||||
|
||||
>> This routine defines a local coordinate system to be in effect until
|
||||
another coordinate system is defined or the normal coordinate system is reset.
|
||||
The new coordinate system is defined by specifying an origin, a point on the
|
||||
new x-z plane and a point on the new z-axis. These points are specified in the
|
||||
normal coordinate system. The options available in iopt are:
|
||||
|
||||
>>
|
||||
|
||||
>>> **define** define a new local coordinate system
|
||||
|
||||
**normal** return to the normal coordinate system
|
||||
**save** save the current coordinate system for recall
|
||||
**restore** recall the last saved coordinate system
|
||||
|
||||
> FORMAT:
|
||||
|
||||
>
|
||||
|
||||
>> **coordsys**/iopt/x0,y0,z0/xx,xy,xz/zx,zy,zz
|
||||
|
||||
where x0,y0,z0 is the location of the new origin, xx,xy,xz is a point on the
|
||||
new x-z plane and zx,zy,zz is a point on the new z-axis. These points are
|
||||
defined with the normal coordinate system, and used only with the **define**
|
||||
option.
|
||||
|
||||
76
documentation/lagrit_manual/commands/copypts.txt
Executable file
76
documentation/lagrit_manual/commands/copypts.txt
Executable file
@@ -0,0 +1,76 @@
|
||||
.. _copypts :
|
||||
|
||||
 _place_holder;
|
||||
|
||||
> **_COPYPTS_**
|
||||
|
||||
 _place_holder;
|
||||
|
||||
>
|
||||
|
||||
>> Copy a point distribution. There are two distinct forms of this command.
|
||||
The first format is designed to copy points from one mesh object into another.
|
||||
In this form if the names of the source and sink mesh objects are omitted, the
|
||||
current mesh object will be used. The copy may be restricted to a subset of
|
||||
points by including the source point information. Points in the sink mesh
|
||||
object will be overwritten if sink_stride is not zero. Attribute fields may be
|
||||
specified for both the source and sink mesh object. For example the
|
||||
x-coordinate field in the source mesh object (xic) may be placed in the
|
||||
y-coordinate field of the sink mesh object. Attribute values will be copied
|
||||
from the source mesh object to the sink mesh object. The user is warned that
|
||||
these values might not make sense in their new context.
|
||||
|
||||
>>
|
||||
|
||||
>> The second form of this command is included for historic reasons: it
|
||||
duplicates points within a mesh object including all the attributes of the
|
||||
points. Also note that if no sink points or sink stride are specified, then
|
||||
the copied points are placed at the end of the data arrays (see third FORMAT)
|
||||
otherwise the copied points are written over the existing points starting at
|
||||
the 1st sink point. Note also that the first form of the command gives the
|
||||
arguments sink first then source whereas the second form gives the source then
|
||||
the sink.
|
||||
|
||||
>
|
||||
|
||||
> FORMAT:
|
||||
|
||||
 _place_holder;
|
||||
|
||||
>
|
||||
|
||||
>> **copypts**/sink_cmo/source_cmo/1st_sink_point/sink_stride/1st_source_point
|
||||
/last_source_point/
|
||||
|
||||
source_stride/sink_attribute_name/source_attribute_name
|
||||
|
||||
**copypts**/1st_source_point/last_source_point/source_stride/1st_sink_point/sink_stride
|
||||
**copypts** /1st_point/last_point/stride
|
||||
>
|
||||
|
||||
> EXAMPLES:
|
||||
|
||||
>
|
||||
|
||||
>> **copypts/**3dmesh/2dmesh /
|
||||
|
||||
 _place_holder; _place_holder; _place_holder; Copy all points in
|
||||
2dmesh to the end of the 3dmesh point list.
|
||||
|
||||
**copypts/**3dmesh/2dmesh/0,0/**pset,get,**mypoints/
|
||||
 _place_holder; _place_holder; _place_holder; Copy the point set
|
||||
named mypoints from 2dmesh to the end of 3dmesh point list.
|
||||
|
||||
**copypts/3dmesh/2dmesh/100,4/pset,get,mypoints/boron/arsenic/**
|
||||
** _place_holder; _place_holder; _place_holder;** Copy the arsenic field from the point set named mypoints from 2dmesh replacing the boron field at every fourth point beginning at point 100 in 3dmesh**.**
|
||||
**copypts/pset,get,mypoints/0,0/**
|
||||
** _place_holder; _place_holder;** _place_holder; Duplicate the point set named mypoints from the current mesh object and place the duplicated points at the end of the point list.
|
||||
**copypts//**/0,0**/pset,get,mypoints/**
|
||||
Duplicate the point set named mypoints from the current mesh object and place
|
||||
the duplicated points at the end of the point list. Same effect as the example
|
||||
directly above. The current mesh object is used since the fields are blank on
|
||||
the command line
|
||||
|
||||
|
||||
 _place_holder;
|
||||
|
||||
75
documentation/lagrit_manual/commands/create_graph.txt
Executable file
75
documentation/lagrit_manual/commands/create_graph.txt
Executable file
@@ -0,0 +1,75 @@
|
||||
.. _create_graph :
|
||||
|
||||
CREATE_GRAPH
|
||||
|
||||
> Create a node or dual (element) adjacency graph. If node option is selected,
|
||||
the graph of node adjacency is created, if dual option is selected, the graph
|
||||
of element adjacency (dual graph) is created.
|
||||
|
||||
For details of METIS algorithms and descriptions of the third command line
|
||||
argument see:
|
||||
|
||||
[http://glaros.dtc.umn.edu/gkhome/views/metis](http://glaros.dtc.umn.edu/gkhom
|
||||
e/views/metis)
|
||||
|
||||
See [METIS ](metis.html)documentation for description of graph format.
|
||||
|
||||
The default name of the attributes that are created are different depending on
|
||||
which option (metis or lagrit) is used.
|
||||
|
||||
>
|
||||
|
||||
> `create_graph / metis / [node | dual] / [nxadj] / [nadjncy]
|
||||
|
||||
create_graph/ lagrit / dual / jtetoff / jtet
|
||||
|
||||
`
|
||||
|
||||
>
|
||||
|
||||
> See the [dump](DUMP2.html) command for options to output the adjacency graph
|
||||
to a file.`
|
||||
|
||||
`
|
||||
|
||||
|
||||
LIMITATIONS
|
||||
|
||||
> The metis option will not work on a hybrid mesh. Supported element types are
|
||||
tri, tet, quad, hex.
|
||||
|
||||
>
|
||||
|
||||
> The /lagrit/ option will only produce the dual adjacency graph. The only
|
||||
option for the name of the graph arrays are jtetoff and jtet. The present
|
||||
implementation is just a wrapper on the [geniee](GENIEE.html) command.
|
||||
|
||||
>
|
||||
|
||||
> See instructions in documentation of the [metis](metis.html) command.
|
||||
|
||||
METIS Interface to LaGriT
|
||||
|
||||
> METIS can be freely distributed provided that:
|
||||
|
||||
* A reference to the following paper is included: _ "A Fast and Highly Quality Multilevel Scheme for Partitioning Irregular Graphs". George Karypis and Vipin Kumar. SIAM Journal on Scientific Computing, Vol. 20, No. 1, pp. 359--392, 1999._
|
||||
* The original documentation ([PDF file of the manual](http://glaros.dtc.umn.edu/gkhome/fetch/sw/metis/manual.pdf)) and copyright notice is include
|
||||
* METIS 4.0 Copyright 2001-06, Regents of the University of Minnesota
|
||||
FORMAT:
|
||||
|
||||
> `create_graph / metis / [node | dual] / [nxadj] / [nadjncy]`
|
||||
|
||||
EXAMPLES:
|
||||
|
||||
> `create_graph / metis / dual / -def- / -def-
|
||||
|
||||
create_graph / metis / node / -def- / -def-
|
||||
|
||||
create_graph / metis / dual / ie1 / ieadj1
|
||||
|
||||
create_graph / metis / node / in1 / inadj1
|
||||
|
||||
create_graph / lagrit / dual / jtetoff / jtet`
|
||||
|
||||
|
||||
|
||||
39
documentation/lagrit_manual/commands/createpts.txt
Executable file
39
documentation/lagrit_manual/commands/createpts.txt
Executable file
@@ -0,0 +1,39 @@
|
||||
.. _createpts :
|
||||
|
||||
>  _place_holder;
|
||||
|
||||
>
|
||||
|
||||
> **_CREATEPTS_**
|
||||
|
||||
>
|
||||
|
||||
>> This command adds points to the mesh. For some special cases, it will also
|
||||
produce element connectivity.
|
||||
|
||||
|
||||
Createpts is a wrapper for all the 'rz' type commands found elsewhere in the
|
||||
documentation.
|
||||
|
||||
|
||||
** [ createpts/](createpts/CRTPTSRZ.html)xyz|rtz|rtp|line**
|
||||
** [ createpts/brick](createpts/CRTPTBRICK.html)**
|
||||
**[createpts/interp](createpts/createpts_interp.html)**
|
||||
** [ createpts/sphere](createpts/cresphere.html)**
|
||||
** [ createpts/random](createpts/CRTPTRZRAN.html)**
|
||||
** [ createpts/vector](createpts/CRTPTRZV_LG.html)**
|
||||
**_ [ createpts/voronoi](createpts/createpts_voronoi.html)_**
|
||||
**_ [ createpts/median](createpts/createpts_median.html)_**
|
||||
** [ createpts/amr](createpts/CREATEPTSAMR.html)**
|
||||
>
|
||||
|
||||
>
|
||||
|
||||
 _place_holder;
|
||||
|
||||
>
|
||||
|
||||
> [Click here for demos](../demos/createpts/test/html/main_createpts.html)
|
||||
|
||||
|
||||
|
||||
60
documentation/lagrit_manual/commands/define.txt
Executable file
60
documentation/lagrit_manual/commands/define.txt
Executable file
@@ -0,0 +1,60 @@
|
||||
.. _define:
|
||||
|
||||
>  _place_holder;
|
||||
|
||||
>
|
||||
|
||||
> **_DEFINE_**
|
||||
|
||||
>
|
||||
|
||||
>> Allows a number to be associated with a character string, such that the
|
||||
character string can be used in input decks in place of the _place_holder;
|
||||
number. The keyword _remove _in the third argument will remove a defined
|
||||
variable from the stack of defined variables.
|
||||
|
||||
>
|
||||
|
||||
>  _place_holder;FORMAT:
|
||||
|
||||
>
|
||||
|
||||
>> `**define /** name / value_real
|
||||
|
||||
``**define /** name / value_integer`
|
||||
|
||||
`**define /** name / value_character`
|
||||
|
||||
`**define /** name / remove`
|
||||
|
||||
>
|
||||
|
||||
> EXAMPLE:
|
||||
|
||||
>
|
||||
|
||||
>> `**define **/ nx / 3
|
||||
|
||||
**define **/ ny / 4
|
||||
**define** / nz / 5
|
||||
**define **/ bottom / 0.1
|
||||
**define **/ top / 4.0
|
||||
**define** / left / 9.8
|
||||
**define** / type / reflect
|
||||
|
||||
**surface**/s1/reflect/box/0.0,left,bottom/1.0,right,top
|
||||
**rz**/xyz/nx/nz/0.0,left,bottom/1.0,right,top/1,1,1
|
||||
|
||||
``**define **/ top / 5.0 `
|
||||
|
||||
`**surface**/s1/reflect/box/0.0,left,bottom/1.0,right,top
|
||||
|
||||
**rz**/xyz/nx/nz/0.0,left,bottom/1.0,right,top/1,1,1`
|
||||
|
||||
`**define** / nx / remove
|
||||
|
||||
**define** / ny / remove
|
||||
**define** / nz / remove`
|
||||
|
||||
|
||||
|
||||
54
documentation/lagrit_manual/commands/derefine.txt
Executable file
54
documentation/lagrit_manual/commands/derefine.txt
Executable file
@@ -0,0 +1,54 @@
|
||||
.. _derefine :
|
||||
|
||||
>  _place_holder;
|
||||
|
||||
>
|
||||
|
||||
> **_DEREFINE_**
|
||||
|
||||
> > This routine derefines a mesh by deleting points using the merge routine
|
||||
based on one of the following refine_types. **edge** will refine if element
|
||||
edge length is less then value. **volume** will merge if element volume is
|
||||
less than value. The merge routine will first attempt the smallest element
|
||||
edge then the next smallest, etc. **aspect** will derefine where aspect ratio
|
||||
is less than value. **pinchedge** will allow merging of adjacent points across
|
||||
a thin layer to eliminate the layer where it is too thin. **pinchedge** should
|
||||
be used only with pointtype1 and pointtype2 both equal to 2.
|
||||
|
||||
Two criteria are currently enabled; **minsize** and **merge**. **minsize**
|
||||
allows merges if the calculation implied by refine_type is less than value.
|
||||
**merge** will merge the following first_point and second_point. The field
|
||||
option is not enabled and should be left default. The user specifies which
|
||||
merges are acceptable by designating the allowable pointtypes. Nodes with
|
||||
pointtype1 are merged to nodes of pointtype2. If pointtype1 and pointtype2 are
|
||||
both equal to 2, the code only merges if the nodes are both on the same
|
||||
material interface (use **pinchedge** if deleted nodes should be on different
|
||||
interfaces of the same material). **derefine** will not merge if an
|
||||
unacceptable element is created. **derefine** will work on material interfaces
|
||||
if all the children are set with the **settets** command. Various combinations
|
||||
of **derefine** may be used to improve the mesh. **recon** may be used to
|
||||
return to a delaunay mesh after using the **derefine** command.
|
||||
|
||||
>
|
||||
|
||||
> FORMAT:
|
||||
|
||||
>
|
||||
|
||||
>> **derefine/minsize**/field/pointtype1
|
||||
pointtype2/refine_type/first_point/last_point/stride/value
|
||||
|
||||
**derefine**/**merge**/first_point/second_point
|
||||
>
|
||||
|
||||
> EXAMPLE:
|
||||
|
||||
>
|
||||
|
||||
>> **derefine/minsize**//0 0/**aspect**/ 1 0 0/1.e-3
|
||||
|
||||
**derefine/minsize**//0 2/**volume**/**pset,get**,apset/5.
|
||||
**derefine/minsize**//10 _place_holder; 10**/edge**/1 0 0/5.
|
||||
**derefine/minsize**//2 2/**pinchedge**/1 0 0/1
|
||||
**derefine/merge**/21/22
|
||||
|
||||
167
documentation/lagrit_manual/commands/doping.txt
Executable file
167
documentation/lagrit_manual/commands/doping.txt
Executable file
@@ -0,0 +1,167 @@
|
||||
.. _doping :
|
||||
|
||||
 _place_holder;
|
||||
|
||||
> **_DOPING_**
|
||||
|
||||
> > Interpolates between mesh object attributes or assigns values to a mesh
|
||||
object attribute.
|
||||
|
||||
Options **constant **and **gaussian** assign values to a mesh object
|
||||
attribute. _place_holder; Options **table**, **integer1**, and **integer2
|
||||
**interpolate from a reference mesh object.
|
||||
|
||||
The **constant **option assigns a constant value to all specified nodes.
|
||||
|
||||
The **gaussian **option creates a very special gaussian distribution around a
|
||||
line or point. _place_holder; The bounding box (x1,y1,z1) to (x2,y2,z2)
|
||||
specifies where the peak concentration will be, Note: y2 is ignored; if z1=z2
|
||||
then the distribution will be around a point. _place_holder; All
|
||||
coordinates are assumed to be given as Cartesian, **xyz** is
|
||||
required. _place_holder; The value assigned to the attribute is determined
|
||||
by the Gaussian distribution:
|
||||
|
||||
>>
|
||||
|
||||
>>> value = concentration * exp(-(L/std_dev)**2)
|
||||
|
||||
>>
|
||||
|
||||
>> where L is the effective distance and can be represented as:
|
||||
|
||||
>>
|
||||
|
||||
>>> L = sqrt( dy**2 + (1/lateral_diffusion)*(dx**2 + dz**2) )
|
||||
|
||||
>>
|
||||
|
||||
>> and where
|
||||
|
||||
>>
|
||||
|
||||
>>> dy = y-y1 (y2 ignored)
|
||||
|
||||
dx = x-x1 if x < x1 < x2
|
||||
|
||||
= 0 if x1 < x < x2
|
||||
|
||||
= x-x2 if x1 < x2 < x
|
||||
|
||||
dz similar to dx.
|
||||
|
||||
>>
|
||||
|
||||
>> The **table** option interpolates an attribute from a reference mesh object
|
||||
and reference attribute onto the current mesh object using** linear**, **log**
|
||||
or **asinh** interpolation (the default is linear). _place_holder; In the
|
||||
case of 2D tabular interpolation, additional arguments specify the planar
|
||||
correspondence for the interpolation: geom_out and geom_ref refer to the
|
||||
output and reference orientation of a 2D axial distribution and may take the
|
||||
values, **xy, yz, xz**, _place_holder; .
|
||||
|
||||
>>
|
||||
|
||||
>> In all cases, field_out specifies the name of the attribute, ifirst, ilast,
|
||||
istride specify a point set restriction, and **set add or subtract** indicate
|
||||
if the calculated or input-value is added to, subtracted from or used to set
|
||||
the existing node attribute value.
|
||||
|
||||
>>
|
||||
|
||||
>> If the values to be doped (interpolated) are integers (options **integer1
|
||||
**and **integer2**), doping works in two ways. _place_holder; For integer
|
||||
doping, only the **set** option is implemented.
|
||||
|
||||
If the second field is **integer1**, the new nodal attributes are based on
|
||||
element material types. Set field_out and attr_ref to **imt1** in this case.
|
||||
The **integer1** option is implemented only for setting node material
|
||||
(**imt1**). The **imt1** values of the active mesh object nodes will be set by
|
||||
determining which element in the reference mesh object the node falls in. This
|
||||
element's material (**itetclr**) value is then assigned to the node **imt1**.
|
||||
|
||||
>>
|
||||
|
||||
>> The **integer2** option sets node based attributes in the active mesh
|
||||
object by determining which voronoi cell in the reference mesh object the node
|
||||
falls in. Then the value for the node corresponding to this voronoi cell is
|
||||
copied to the active node.
|
||||
|
||||
If the second field is **integer2**, the new nodal attributes are based on the
|
||||
table attribute types using the Voronoi cells around the table nodes.
|
||||
|
||||
For integer doping, function can be** min** or **max** to choose what happens
|
||||
if a cmo_out node falls on a boundary between two elements or Voronoi cells.
|
||||
For 3d, Voronoi cell based doping, function can also be **minp** or **maxp**
|
||||
which makes any cmo_out nodes that fall outside the cmo_table geometry set to
|
||||
the maximum number of materials plus one. Mapset can be set to **create**,
|
||||
**use**, or left blank. If **create** is used then an idop attribute is formed
|
||||
that maps the cmo_table nodes to the cmo_out nodes. If **use** is used, doping
|
||||
will read and use this previously formed and saved mapping. Note that doping
|
||||
of integers should be done without child/parent relationships. If parents
|
||||
exist, the doping results are unpredictable at interface boundaries because
|
||||
the value of parent nodes are unpredictable there.
|
||||
|
||||
>>
|
||||
|
||||
>> FORMAT:
|
||||
|
||||
>>
|
||||
|
||||
>>> **doping**/**constant**/field_out/**set|add|sub/
|
||||
**ifirst,ilast,istride/value
|
||||
|
||||
**doping/gaussian/**field_out/**set|add|sub**/ ifirst,ilast,istride/
|
||||
**xyz**/x1,y1,z1/x2,y2,z2/lateral_diffusion/ concentration/standard_deviation/
|
||||
**doping/table/**field_out/**set|add|sub**/cmo_ref/attr_ref/[**linear|log**|**asinh**]
|
||||
**doping/table/**field_out/**set|add|sub**/cmo_ref/attr_ref/[**linear|log**|**asinh**]/ [geom_out/geom_ref]
|
||||
**doping/integer1**/**imt1**/**set**/ifirst,ilast,istride/cmo_ref /**imt1**/**min**|**max**
|
||||
**doping/integer2/**field_out2**/set**/ifirst,ilast,istride/cmo_ref/attr_ref/
|
||||
**min**|**max**|**minp**|**maxp**/[**create**|**use**]
|
||||
>>
|
||||
|
||||
>> EXAMPLE:
|
||||
|
||||
>>
|
||||
|
||||
>>> **doping**/**constant**/density/**set**/**pset,get**,mypset/9.73
|
||||
|
||||
For the current mesh object, the value of the attribute density will be set to
|
||||
9.73
|
||||
|
||||
for all nodes in the point set mypset.
|
||||
|
||||
**doping/gaussian**/density/**add**/**pset**,mypset/**xyz**/
|
||||
0.0,0.5,0.1/0.5,0.5,0.4/0.5/5.0e+18/0.225
|
||||
|
||||
For the current mesh object, for nodes in mypset, the value of the
|
||||
|
||||
attribute density will be augmented by
|
||||
|
||||
the value of the distribution as defined above.
|
||||
|
||||
**doping**/**table**/my_field/**set**/1,0,0/cmo_ref/attr_ref/**log**
|
||||
For the current mesh object, the value of the attribute my_field will be set
|
||||
by
|
||||
|
||||
interpolating from the reference mesh object and attribute.
|
||||
|
||||
**doping**/**table**/Saturation /**set**/1,0,0/cmo_course/saturation_course/**linear**/**zx**/**yx**/
|
||||
In this case the yx plane from the reference cmo is interpolated onto the zx
|
||||
plane of the
|
||||
|
||||
current mesh object
|
||||
|
||||
**doping/integer1**/imt1/**set**/1,0,0/cmo_old/imt1/**min**
|
||||
See which element of cmo_old each node of the current mesh object falls in,
|
||||
and set the imt1 attribute value to the itetclr of the element in
|
||||
cmo_old. _place_holder; If the node falls in more than one element use the
|
||||
smallest itetclr.
|
||||
|
||||
**doping/integer2/**rad2**/set**/1,0,0/cmo_old/rad1/**min/create**
|
||||
Create the voronoi cells around the nodes in cmo_old. _place_holder; See
|
||||
which voronoi cell the nodes in the current mesh object fall in and set the
|
||||
value of the attribute rad2 from the value of the attribute rad1 in the
|
||||
reference mesh object. _place_holder; If there is a conflict use the
|
||||
smallest value. _place_holder; Create a new attribute called idop as
|
||||
explained above.
|
||||
|
||||
442
documentation/lagrit_manual/commands/dump.txt
Executable file
442
documentation/lagrit_manual/commands/dump.txt
Executable file
@@ -0,0 +1,442 @@
|
||||
.. _dump :
|
||||
|
||||
|
||||
|
||||
> **_DUMP_**
|
||||
|
||||
This command produces an output file from a Mesh Object. Some of the standard
|
||||
graphics packages are supported including AVS, GMV and TECPLOT. See below for
|
||||
full list of file types that can be written. The list is in alphabetic order
|
||||
and describes each valid file_type with syntax and usage.
|
||||
|
||||
|
||||
GENERAL SYNTAX:
|
||||
|
||||
**dump**/file_type/file_name/[cmo_name]/ The dump command is followed by a word indicating file type. Valid file type kewords are: ** gmv, avs, avs2, chad, coord, datex, elem_adj_node, elem_adj_elem, fehm, geofest, geom, gmv, gocad, lagrit, recolor, stl, stor, tecplot, zone, zone_imt, **and** zone_outside** .
|
||||
The file_type is followed by a string to be used as whole or part of file name
|
||||
as described below.
|
||||
|
||||
SHORT SYNTAX:
|
||||
|
||||
**dump**/ file_name.[**inp | avs | gmv | lg | lagrit | ts | exo** ] / [cmo_name]
|
||||
|
||||
For common file types, a short form syntax can be used which skips the file
|
||||
type designation. The file_type is asssumed from the file_name suffix. The
|
||||
following are recognized; AVS (.inp or .avs), Exodus (.exo), GMV (.gmv),
|
||||
LaGriT (.lagrit or .lg), and .ts (gocad).
|
||||
|
||||
|
||||
|
||||
|
||||
FILE TYPES:
|
||||
|
||||
|
||||
**dump** /** avs** /file_name/[cmo_name] /[iopt_points,iopt_elements,iopt_node_attributes,iopt_element_attributes]
|
||||
|
||||
Output in AVS UCD (Unstructured Cell Data) format. One can turn on or off the
|
||||
output of node coordinates (iopt_points), element connectivity
|
||||
(iopt_elements), node attributes (iopt_node_attributes) and element attributes
|
||||
(iopt_element_attributes). 1 (default) is on, 2 is on but the first column
|
||||
will not include the node number or element number, 0 turns off output of that
|
||||
part of the file. For instance, dump/avs/file.inp/cmo_name/1,1,0,0 will
|
||||
write the node coordinates and element connectivity, but will not write node
|
||||
attributes or element attributes.
|
||||
|
||||
**Use the =2 option with caution** since the output will really not be AVS format files. This is fine as long as you do not expect read/avs or the AVS graphics program to read the file.
|
||||
For file format specification see [http://help.avs.com/Express/doc/help/refere
|
||||
nce/dvmac/UCD_Form.htm](http://help.avs.com/Express/doc/help/reference/dvmac/U
|
||||
CD_Form.htm)
|
||||
|
||||
|
||||
**dump / avs2 / **file_name/[cmo_name]/[iopt_points,iopt_elements,iopt_node_attributes,iopt_element_attributes]
|
||||
|
||||
This option will output integers as integers instead of floating point. The
|
||||
other avs option converts integers to reals on output. The /avs/ option above
|
||||
outputs all attributes as real numbers. This option is slower but the files
|
||||
are smaller if there are integers in the node or element attributes.
|
||||
|
||||
|
||||
**dump**** **/** chad **** **/file_name/[cmo_name]/
|
||||
|
||||
Will output a file nodes, faces, and connectivity for tet, hex, pyr, or pri in
|
||||
CHAD format. Writes attributes imt and itp.
|
||||
|
||||
**dump**** **/** coord**** **/file_name/[cmo_name]/ (See also **dump/fehm** )
|
||||
|
||||
Will output a single file with node list x,y,z values and element connectivity
|
||||
list in FEHM format. Files are written in FEHM format and are described [by
|
||||
clicking here for details.](dump/DUMP3.html)
|
||||
|
||||
The ** coord ** file is one of a set of files written when the **fehm** file
|
||||
type is called.
|
||||
|
||||
|
||||
**dump**** **/** datex | simul**** **/file_name/[cmo_name]/
|
||||
|
||||
Will output a file with Geometry, Element, Region, Location, and Dataset in
|
||||
DATEX format.
|
||||
|
||||
**dump / elem_adj_elem **/ file_name/mo_name [_delatt_ | keepatt | attonly]
|
||||
|
||||
Option: **delatt** - Write adjacency information to an ascii file. Write list
|
||||
of all elements adjacent to each element.
|
||||
|
||||
File format: elem_number ean_num e1 e2 ... en
|
||||
|
||||
Option: **keepatt** - write file and add node attribute **ean_num** (number of
|
||||
elements adjacent to each node)
|
||||
|
||||
Option: **attonly** - do not write file, add node attribute ean_num, a dummy
|
||||
argument is still required in the file_name field
|
||||
|
||||
|
||||
**dump / elem_adj_node **/file_name/mo_name
|
||||
|
||||
Write adjacency information to an ascii file. Write list of all elements
|
||||
adjacent to each node.
|
||||
|
||||
File format:
|
||||
|
||||
node_number number_of_adjacent_elem e1 e2 ... en  _place_holder;
|
||||
|
||||
|
||||
** dump / exo** / file_name/ mo_name
|
||||
** dump / exo** / file_name/ mo_name / psets / eltsets / facesets
|
||||
** dump / exo** / file_name/ mo_name / psets / eltsets / facesets file1 file2 ... filen
|
||||
** dump / exodusii ** / file_name/ mo_name
|
||||
** dump / exodusII ** / file_name/ mo_name
|
||||
|
||||
Write a mesh object to a file in the Exodus II format.
|
||||
|
||||
|
||||
**dump / fehm** / file_name_root / cmo_name / [**_delatt_ | keepatt**] _place_holder; _place_holder; [**keepatt_voronoi | keepatt_median**]  _place_holder; _place_holder;
|
||||
 _place_holder; _place_holder; _place_holder; _place_holder;&n
|
||||
bsp_place_holder;  _place_holder; _place_holder;/ [ **_ascii_ |
|
||||
binary** ] / [**_scalar_ | vector | both | area_scalar | area_vector |
|
||||
area_both**]
|
||||
|
||||
 _place_holder; _place_holder; _place_holder; _place_holder;&n
|
||||
bsp_place_holder;  _place_holder; _place_holder;/ [**_all_ | graph |
|
||||
coefs | none**] / [**hybrid | _nohybrid_ **]
|
||||
|
||||
|
||||
Write out a series of files for the FEHM flow and transport code. The tokens
|
||||
after the cmo name are all optional. The default options will
|
||||
|
||||
delete the outside node attributes and will not add attributes for the outside
|
||||
voronoi or median areas.
|
||||
|
||||
The stor file will be written in ASCII format with scalar coefficient values
|
||||
with compression of area coefficient list and indices.
|
||||
|
||||
[Click here for more details on the files and
|
||||
options.](dump/DUMP3.html) _place_holder;
|
||||
|
||||
|
||||
The file_name is used to form the names of the following 7 files:
|
||||
|
||||
file_name.fehm - coordinates and geometry ( see dump/coord/... command)
|
||||
|
||||
file_name_material.zone - node imt (material) zone lists ( see
|
||||
dump/zone_imt/... command)
|
||||
|
||||
file_name_outside.zone - node external boundary zone lists (see
|
||||
dump/zone_outside/... command)
|
||||
|
||||
file_name_outside_vor.area - node external boundary area lists (see
|
||||
dump/zone_outside/... command)
|
||||
|
||||
file_name_interface.zone - zone lists for nodes along material interfaces
|
||||
|
||||
file_name_multi_mat.zone - lists of node pairs connected across material
|
||||
interfaces
|
||||
|
||||
file_name.stor - FEHM format file giving the voronoi (control volume)
|
||||
associated with each node and the sparce matrix structure
|
||||
|
||||
**dump / geofest**/file_name
|
||||
|
||||
Write a file to be read by the [GeoFEST, Geophysical Finite Element Simulation
|
||||
Tool](http://www.openchannelfoundation.org/projects/GeoFEST/)
|
||||
. _place_holder; The output file is ascii.
|
||||
|
||||
|
||||
**dump / geom**/file_name
|
||||
|
||||
will write an ascii file containing the geometry information for the current
|
||||
run. This information includes the region and mregion definitions and surface,
|
||||
names, types and definitions.
|
||||
|
||||
|
||||
**dump/gmv**/file-name/[mesh-object]/[**_ascii _**| **binary**]
|
||||
|
||||
Write a file to be read by the graphics program
|
||||
[GMV](http://laws.lanl.gov/XCM/gmv/GMVHome.html). _place_holder; The
|
||||
defaults are binary and current mesh object.
|
||||
 _place_holder;NOTE: _place_holder; For LaGriT versions dated after
|
||||
October 1999, use  _place_holder; _place_holder;
|
||||
**cmo**/**setatt**//**ipolydat**/**no** _place_holder; _place_holder;
|
||||
to reduce file size. This command will keep the polygon data from being
|
||||
written to GMV files.
|
||||
|
||||
|
||||
**dump / gocad **/file_name
|
||||
|
||||
Write a gocad TSURF file. See [ GOCAD TSURF](http://www.connectflow.com/geovis
|
||||
age/User/Formats/GocadTsurf.html). _place_holder;
|
||||
|
||||
**dump / lagrit **/file_name/[cmo_name]/ [**ascii **| **binary**]
|
||||
|
||||
Write a LaGriT restart file that contains geometry and mesh object
|
||||
information. _place_holder; cmo_name can be '**-all-**' in which case all
|
||||
mesh objects are written to the file or it can specify a list of mesh objects
|
||||
to be written. A subsequent **read/lagrit** command will restart the code at
|
||||
the state at which the dump command was issued. The default file type is
|
||||
binary.
|
||||
|
||||
 _place_holder; **dump / recolor**/file_name
|
||||
|
||||
|
||||
This command writes the existing **colormap** to the specified
|
||||
file. _place_holder; (See **[colormap](COLORMAP.html)** command)
|
||||
|
||||
|
||||
**dump / stl **/file_name
|
||||
|
||||
Output in STL, stereo lithography format. This is only supported for triangle
|
||||
mesh objects.
|
||||
|
||||
|
||||
**dump / stor** / file_name_root / cmo_name / [ **_ascii_ | binary** ] /
|
||||
 _place_holder; _place_holder; _place_holder; _place_holder;&n
|
||||
bsp_place_holder;  _place_holder; _place_holder;/ [**_scalar_ | vector
|
||||
| both | area_scalar | area_vector | area_both**]
|
||||
|
||||
 _place_holder; _place_holder; _place_holder; _place_holder;&n
|
||||
bsp_place_holder;  _place_holder; _place_holder;/ [**_all_ | graph |
|
||||
coefs | none**] / [**hybrid | _nohybrid_ **]
|
||||
|
||||
|
||||
Same syntax as **dump/fehm** except the only output is the FEHM sparse matrix
|
||||
coefficient STOR file file_name.stor.
|
||||
|
||||
File can be written in ascii or binary (fortran unformatted platform
|
||||
dependent). The area coefficient values can be written as scalar or vector.
|
||||
|
||||
The compression default is all which will compress both the list of area
|
||||
coefficients and the indices. The coefs compression, or none compression both
|
||||
use and older algorithm and will result in larger files and may take longer to
|
||||
run.
|
||||
|
||||
The ** stor ** file is one of a set of files written when the **fehm** file
|
||||
type is called.
|
||||
|
||||
|
||||
[Click here for further explanation of options.](dump/DUMP3.html)
|
||||
|
||||
[Click here for the STOR file format.](../STOR_Form.html)
|
||||
|
||||
|
||||
|
||||
**dump / tecplot **/file_name
|
||||
|
||||
Write a file to be read by the Tecplot graphics package. _place_holder;
|
||||
The output file is ascii. Only node attributes are output, element attributes
|
||||
are ignored and not output. Tecplot does not support prism or pyramid element
|
||||
types so they are written as eight node, degenerate hex elements. The ioflag
|
||||
parameter is used to control if the node attributes are output or not is the
|
||||
AVS ioflag. The expected suffix for the file name is '.plt'. If a name is
|
||||
given without the .plt suffix, a suffix, .plt is added. Output is ascii. This
|
||||
output format does not support output of a mesh with nodes but zero elements.
|
||||
If there are zero elements, a header is written but node coordinate
|
||||
information is not output.
|
||||
|
||||
|
||||
**dump** / **zone** /file_name/[cmo_name] / [**_delatt_ | keepatt**] _place_holder; _place_holder; [**_keepatt_voronoi_ | keepatt_median**]
|
||||
|
||||
Write out a set of fehm format zone files for the mesh object nodes. These
|
||||
include zones for mesh materials and the external faces of the mesh as
|
||||
described below. The **keepatt** option will keep node attributes that tag
|
||||
nodes on external mesh boundaries (see zone_outside). The **delatt** option
|
||||
will delete the outside attributes if they exist (the are removed by default).
|
||||
The area attributes for outside nodes can be created with the
|
||||
**keepatt_voronoi** or **keepatt_median** options (see zone_outside).
|
||||
|
||||
|
||||
Files are written in FEHM format and are described in the dump/fehm command
|
||||
[by clicking here for details.](dump/DUMP3.html)
|
||||
|
||||
|
||||
The file_name is used to create names for the following 5 files:
|
||||
|
||||
file_name_material.zone - node imt (material) zone lists ( see
|
||||
dump/zone_imt/... command)
|
||||
|
||||
file_name_outside.zone - node external boundary zone lists (see
|
||||
dump/zone_outside/... command)
|
||||
|
||||
file_name_outside_vor.area or file_name_outside_med.area - node external
|
||||
boundary area lists (see dump/zone_outside/... command)
|
||||
|
||||
file_name_interface.zone - zone lists for nodes along material interfaces, 0
|
||||
length file if mesh is single material
|
||||
|
||||
file_name_multi_mat.zone - lists of node pairs connected across material
|
||||
interfaces, 0 length file if mesh is single material
|
||||
|
||||
|
||||
|
||||
**dump** / **zone_imt** /file_name/[cmo_name] / [ imt_value ] _place_holder; _place_holder;
|
||||
|
||||
Will output only one file with name file_name_material.zone. It is written in
|
||||
FEHM zone format and are described [by clicking here for
|
||||
details.](dump/DUMP3.html)
|
||||
|
||||
file_name_**material**.**zone** is node list for each integer material (imt)
|
||||
value. If the optional fifth argument is specified as an integer, then a node
|
||||
list file is written only listing the nodes with the value specified by
|
||||
imt_value.
|
||||
|
||||
([For options to output PSET's as ZONE/ZONN files see: pset/zone](PSET.html))
|
||||
|
||||
The ** zone_imt ** file is one of a set of files written when the **fehm**
|
||||
file type is called.
|
||||
|
||||
|
||||
**dump** / **zone_outside** | **zone_outside_minmax** /file_name/[cmo_name] /
|
||||
 _place_holder; _place_holder; _place_holder; _place_holder;
|
||||
[**_delatt_ | keepatt**] _place_holder; [**_keepatt_voronoi_ |
|
||||
keepatt_median**]
|
||||
|
||||
|
||||
Write fehm zone format files that list the outside node list and the
|
||||
associated outside area list.
|
||||
|
||||
|
||||
There are two files written:
|
||||
|
||||
|
||||
1. file_name_outside.zone is a node list for each of 6 possible external
|
||||
boundaries.
|
||||
|
||||
If keepatt is specified, then 6 node based attributes are added to the mesh
|
||||
object with the names top, bottom, left_w, right_e, back_n, and front_s. A
|
||||
node can occur in multiple zones. For instance, a node located on a top corner
|
||||
of the mesh can be found in zones for top, front_s, and left_w.
|
||||
|
||||
1 = top = top = positive z direction (0,0,1)
|
||||
|
||||
2 = bottom = bottom = negative z direction (0,0,-1)
|
||||
|
||||
3 = left_w = left or west = negative x direction (-1,0,0)
|
||||
|
||||
4 = front_s = front or south = negative y direction (0,-1,0)
|
||||
|
||||
5 = right_e = right or east = positive x direction (1,0,0)
|
||||
|
||||
6 = back_n = back or north = positive y direction (0,1,0)
|
||||
|
||||
|
||||
2. file_name_outside_vor.area is a list of Voronoi area vectors
|
||||
(Ax_i,Ay_i,Az_i) associated with each external node. It is written to match
|
||||
the node lists as written in the outside.zone file. Along with each outside
|
||||
zone tag (such as top), there is a sum of each vector for that zone. For
|
||||
applications such as infiltration, the z component (each 3rd value) would be
|
||||
used from the top zone list.
|
||||
|
||||
|
||||
00001 top Sum VORONOI vectors: 0.5000000E+00 0.5000000E+00 0.5000000E+00
|
||||
nnum
|
||||
3
|
||||
-2.500000000000E-01 -2.500000000000E-01 2.500000000000E-01 2.500000000000E-01 0.000000000000E+00 1.250000000000E-01
|
||||
0.000000000000E+00 2.500000000000E-01 1.250000000000E-01
|
||||
|
||||
|
||||
|
||||
|
||||
If the keyword keepatt_voronoi is specified, three node attributes (xn_varea,
|
||||
yn_varea, zn_varea) representing the voronoi area are added.
|
||||
|
||||
If the keyword keepatt_median is specified, three node attributes (xn_marea,
|
||||
yn_marea, zn_marea) representing the median area are added and the file name
|
||||
will be file_name_outside_med.area. Note that the old version file name
|
||||
file_name_outside.area has area vectors computed with the median strategy.
|
||||
|
||||
|
||||
The option **zone_outside_minmax** is used to find the min and max external
|
||||
node along each row and column of the regular grid. [Click here for image
|
||||
](../../images/zone_outside.png) showing difference between the default and
|
||||
the minmax options for outside nodes.
|
||||
|
||||
|
||||
These **zone_outside** files are part of a set of files written when the
|
||||
**zone** or **fehm** file type is called. The fehm zone format and
|
||||
descriptions are _place_holder; [in the **dump/fehm** command
|
||||
details.](dump/DUMP3.html)
|
||||
|
||||
|
||||
|
||||
EXAMPLES:
|
||||
|
||||
**dump **/ gmv /file_name.gmv/cmo_name/
|
||||
**dump **/ gmv /file_name.gmv/cmo_name/ascii
|
||||
|
||||
**dump **/ file_name.gmv / cmo_name
|
||||
|
||||
**dump **/ tecplot /file_name.plt/cmo_name
|
||||
|
||||
**dump **/ lagrit /file_name.lg/-all-/binary
|
||||
|
||||
**dump**/file_name.inp/cmo_name
|
||||
**dump** / avs /file_name.inp/cmo_name
|
||||
**dump **/ avs /file_name.inp/cmo_name/1 0 0 0 (output only node coordinates)
|
||||
**dump **/ avs /file_name.inp/cmo_name/1 1 0 0 (output node coordinates and element connectivity)
|
||||
**dump **/ avs /file_name.inp/cmo_name/0 0 0 1 (output element attributes)
|
||||
**dump** / avs /file_name.inp/cmo_name/0 0 2 2 (output node and element attributes without node numbers as first column of output)
|
||||
**dump** / avs2 /file_name.inp/cmo_name/1 1 1 0 (output node coordinates, element connectivity and node attributes)
|
||||
|
||||
**dump** / fehm /file_root/cmo_name/ (write ascii compressed STOR file and full set of fehm input files)
|
||||
**dump** / stor /file_root/cmo_name/ (write ascii compressed STOR file)
|
||||
**dump** / stor /file_root/cmo_name/ binary (write unformatted compressed STOR file - platform dependent)
|
||||
**dump **/ stor /file_name/cmo_name/ascii/area_scalar
|
||||
|
||||
**dump** / zone_outside /file_root/cmo_name/keepatt (write outside node zones and voronoi areas, keep outside attributes)
|
||||
**dump** / zone_outside /file_root/cmo_name/keepatt_voronoi (write outside node zones and keep Voronoi area attributes)
|
||||
**dump** / zone_outside_minmax /file_root/cmo_name (write outside nodes at minmax extent of each column)
|
||||
|
||||
**dump** / zone /file_root/cmo_name/ delatt keepatt_voronoi (write all FEHM zone and area files, delete the outside attributes and keep the voronoi area attributes)
|
||||
|
||||
**dump**/ exo / file_name / cmo_name
|
||||
Write generic exodus output without any sets.
|
||||
|
||||
**dump**/ exo / file_name / cmo_name / psets
|
||||
Write exodus output with point sets only.
|
||||
|
||||
**dump**/ exo / file_name / cmo_name / / eltsets
|
||||
Write exodus output with element sets only.
|
||||
|
||||
**dump**/ exo / file_name / cmo_name / / / facesets
|
||||
Write exodus output with face sets only. The facesets are internally
|
||||
calculated and defined. Note that the algorithm is computationally expensive
|
||||
and can take a long time to finish.
|
||||
|
||||
**dump**/ exo / file_name / cmo_name / / / facesets file1,file2,...,filen
|
||||
Write exodus output with face sets only. The face sets are imported from
|
||||
file1, file2, ..., filen.
|
||||
|
||||
**dump**/ exo / file_name / cmo_name / psets / eltsets / facesets file1,file2,...,filen
|
||||
Write exodus output with all psets, element sets, and face sets. The face sets
|
||||
are imported from file1, file2, ..., filen.
|
||||
|
||||
|
||||
|
||||
|
||||
[Click here for demos](../main_dump.html)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
25
documentation/lagrit_manual/commands/dump_recolor.txt
Executable file
25
documentation/lagrit_manual/commands/dump_recolor.txt
Executable file
@@ -0,0 +1,25 @@
|
||||
.. _dump_recolor :
|
||||
|
||||
**_DUMP_RECOLOR_** This command is similar to the regular [dump](DUMP2.html) command except that the mesh object is recolored before being dumped. _place_holder; There are two options specific to this version. _place_holder; If** restore** is specified _place_holder; (the default), the original itetclr and imt1 values are restored, leaving the mesh object unaltered. _place_holder; If **norestore **is specified the mesh object is left recolored (and the original values of itetclr and imt1 lost). _place_holder; If **create** is specified (the default) then a new colormap is created and used to recolor. _place_holder; Otherwise if **existing **is specified, the existing colormap is used to recolor the mesh object. _place_holder; Three dump types are available: _place_holder; "**gmv**", "**LaGriT**" and "**avs**". iomode can be **ascii **or** binary**;**_ binary_** is the default. FORMAT:
|
||||
|
||||
> **dump_recolor/**type/file/mo/[**restore| norestore**]/[**create|existing**]
|
||||
/imode
|
||||
|
||||
EXAMPLE:
|
||||
|
||||
> **dump_recolor/gmv**/mesh.gmv////**ascii**
|
||||
|
||||
Writes an ascii gmv dump to the fine mesh.gmv. _place_holder; The mesh
|
||||
object that is dumped is the current mesh object recolored according to its
|
||||
own material adjacency.
|
||||
|
||||
>
|
||||
|
||||
> **dump_recolor/gmv**/mesh.gmv//**norestore/existing**
|
||||
|
||||
Recolors the current mesh object using the existing colormap and then writes a
|
||||
binary gmv dump to the fine mesh.gmv.
|
||||
|
||||
|
||||
 _place_holder;
|
||||
|
||||
47
documentation/lagrit_manual/commands/edit.txt
Executable file
47
documentation/lagrit_manual/commands/edit.txt
Executable file
@@ -0,0 +1,47 @@
|
||||
.. _edit:
|
||||
|
||||
**** _place_holder;
|
||||
|
||||
> **_EDIT_**
|
||||
|
||||
>
|
||||
|
||||
>> Prints an edit of various quantities based on the value of the option
|
||||
argument, the point limits, and/or a material specification. iopt specifies
|
||||
what to print as follows:
|
||||
|
||||
>>
|
||||
|
||||
>>> no value for iopt --edit of sums, averages, and extrema of position
|
||||
coordinates (x,y,z), and of mesh object attribute fields
|
||||
|
||||
**two**--gives same information as the default, but only for the two points specified.
|
||||
**parts**--gives a list of materials types, their names, count and sequence.
|
||||
**points**--lists up to 4 cell-center array values for a set of points. Possible array values are: xic,yic,zic,or mesh object attribute name
|
||||
|
||||
> FORMAT:
|
||||
|
||||
>
|
||||
|
||||
>> **edit** / iopt / ifirst,ilast,istride / material_#_or_name/
|
||||
|
||||
**edit**/ **angular**/ifirst,ilast,istride /material_#_or_name/xcen,**edit**/ **radial** /ifirst,ilast,istride /material_#_or_name/xcen,**edit****/ points /**ifirst,ilast,istride /material_#_or_name/array1,array3,array4/
|
||||
 _place_holder;
|
||||
|
||||
>
|
||||
|
||||
> EXAMPLES:
|
||||
|
||||
 _place_holder;
|
||||
|
||||
>
|
||||
|
||||
>> **edit**/ **parts**/
|
||||
|
||||
**edit**/
|
||||
>>
|
||||
|
||||
>> **edit**/**points**/**pset**,**get**,some+points/
|
||||
|
||||
 _place_holder;
|
||||
|
||||
38
documentation/lagrit_manual/commands/elmtest.txt
Executable file
38
documentation/lagrit_manual/commands/elmtest.txt
Executable file
@@ -0,0 +1,38 @@
|
||||
.. _elmtest :
|
||||
|
||||
 _place_holder;
|
||||
|
||||
> **_ELMTEST_**
|
||||
|
||||
>
|
||||
|
||||
>> This command test a mesh for valid jtet connectivity. _place_holder; If
|
||||
the mesh is a network it allows for jtet loops; in this case the jtet
|
||||
relationship is not reflexive but, for example if the loop has length 3.
|
||||
|
||||
>>
|
||||
|
||||
>> Normally degenerate faces may not have neighbors with a different number of
|
||||
nodes; however, if _place_holder; a scalar mesh attribute
|
||||
'jtet_reduce_nnd' is defined and has the value 1, faces will match if the node
|
||||
numbers are the same even if a node number appears more that once.
|
||||
|
||||
>
|
||||
|
||||
> FORMAT:
|
||||
|
||||
>
|
||||
|
||||
>> **elmtest** /[/nwrite] where nwrite is the number of warning messages to
|
||||
print. _place_holder; The default for nwrite is 20.
|
||||
|
||||
>
|
||||
|
||||
> EXAMPLES:
|
||||
|
||||
>
|
||||
|
||||
>> **elmtest**
|
||||
|
||||
**elmtest**//100
|
||||
|
||||
75
documentation/lagrit_manual/commands/eltset.txt
Executable file
75
documentation/lagrit_manual/commands/eltset.txt
Executable file
@@ -0,0 +1,75 @@
|
||||
.. _eltset :
|
||||
|
||||
 _place_holder;
|
||||
|
||||
> **_ELTSET_**
|
||||
|
||||
>
|
||||
|
||||
>> This command creates eltsets or element sets with membership criteria:
|
||||
|
||||
>>
|
||||
|
||||
>> 1. **eq**:equal to, gt:greater than, **lt**:less than, **ge**: greater
|
||||
than or equal, **le**: less than or equal to, **ne**: no equal to value of an
|
||||
element attribute
|
||||
|
||||
>> 2. **inclusive** pset membership - all elements any of whose nodes is in
|
||||
pset
|
||||
|
||||
>> 3. **exclusive** pset membership - all elements all of whose nodes are in
|
||||
pset
|
||||
|
||||
>> 4. **face** pset membership - elements if all nodes of a face are in pset
|
||||
|
||||
>> 5. **union, inter, not**, boolian comparison with other eltsets
|
||||
|
||||
>> 6. **region** or **mregion** membership
|
||||
|
||||
>> 7. quality criteria (**volume** or **aspect** ratio)
|
||||
|
||||
>> 8. **list** - list element set members to screen, or list the names of
|
||||
element sets if no 'eltset_name' is specified.
|
||||
|
||||
>> 9. **write** - write element set members to a file
|
||||
|
||||
>> 10. **delete** - remove element set from mesh object
|
||||
|
||||
>> The **mregion **and **region** form of this command calculate the center of
|
||||
mass of the element and determine which mregion or region the center lies in.
|
||||
It is possible if the interface surfaces are curved that the center will not
|
||||
lie in the same mregion or region as the vertices. Using itetclr will give the
|
||||
better result.
|
||||
|
||||
>
|
||||
|
||||
> FORMAT:
|
||||
|
||||
>
|
||||
|
||||
>> **eltset**/eset_name/element_attribute_name/**eq**|**ne**|**lt**|**gt**|**l
|
||||
e**|**ge**/value/
|
||||
|
||||
**eltset/**eset_nam**e****/union|inter|not|delete/**eset_list/
|
||||
**eltset/**eset_name**/****inclusive|exclusive|face/pset/get/**pset_name/
|
||||
**eltset/**eset_name**/region|mregion/**region_name**|**mregion_name**/**
|
||||
**eltset**/eset_name /**volume/ eq|ne|lt|gt|le|ge** /value
|
||||
**eltset**/eset_name /**aspect/ eq|ne|lt|gt|le|ge** /value
|
||||
**eltset**/eset_name /**list**
|
||||
**eltset**/eset_name /**write**/file_name[.cellset]/[**ascii**|**binary**]
|
||||
**eltset**/-all- /**write**/file_name[.cellset]/[**ascii**|**binary**]
|
||||
>
|
||||
|
||||
> EXAMPLES:
|
||||
|
||||
>
|
||||
|
||||
>> **eltset/**element_set1/**itetclr**/**eq**/4
|
||||
|
||||
**eltset/**element_set2/**face**/**pset**/**get**/mypset
|
||||
**eltset/**element_set3/**inclusive**/**pset**/**get**/mypset
|
||||
**eltset**/element_set4/**region**/upper
|
||||
**eltset**/element_set5/**volume**/**lt**/3.0
|
||||
**eltset**/element_set5/**delete**
|
||||
**eltset** / /**list **(list the names of element sets which have been defined)
|
||||
|
||||
158
documentation/lagrit_manual/commands/extract.txt
Executable file
158
documentation/lagrit_manual/commands/extract.txt
Executable file
@@ -0,0 +1,158 @@
|
||||
.. _extract:
|
||||
|
||||
 _place_holder;
|
||||
|
||||
> **_EXTRACT_**
|
||||
|
||||
>
|
||||
|
||||
>> This command produces a 2D mesh object from a 3D mesh object. A material
|
||||
interface, a plane , an isosurface or a network may be extracted. A plane may
|
||||
be defined by three points in the plane, by a vector normal to the plane, by
|
||||
three points on the axes of the space, or by the coefficients of the plane
|
||||
equation ax+by+cz=d. An isosurface is defined by the value of the surface and
|
||||
the mesh object attribute to test for this value. An interface is defined by
|
||||
the material(s) bounding the interface. region1, [region2]are the material
|
||||
numbers or the material region (mregion) names whose interface is to be
|
||||
extracted. Use **-all-** to extract from all interfaces. The
|
||||
**[pset](../conventions.html)** syntax can be used to limit the action of the
|
||||
extract with the interface and network options only. The other options ignore
|
||||
pset. _place_holder; The output 2D mesh object is cmoout; the input 3D
|
||||
mesh object is cmoin.
|
||||
|
||||
>>
|
||||
|
||||
>> A network is defined as the material interface network from the mesh
|
||||
object. Unlike the other extract forms, this extracts the "parent" interface
|
||||
and not the "child" interface, and ignores boundaries. The output cmo also
|
||||
contains a new attribute "map" which maps nodes in the output cmo to (parent)
|
||||
nodes in the input cmo. This is supposed to work for 2D meshes (tri, quad, or
|
||||
hybrid) in 2D or 3D and 3D meshes (tet, pyr, pri, hex or hybrid).
|
||||
|
||||
>>
|
||||
|
||||
>> The surfmesh option is described by following the link:
|
||||
**[extract/surfmesh.](dump/EXTRACT_SURFMESH.html)**
|
||||
|
||||
>>
|
||||
|
||||
>> The output MO will be oriented such that the outward normal of the plane
|
||||
that defines the surface will point in the same direction as the normals for
|
||||
the triangles in the output MO. If the command extracts on an isosurface, the
|
||||
output MO will be oriented such that the normals for the triangles point in
|
||||
the direction of increasing field. If the command extracts on an interface,
|
||||
the output MO triangles will be oriented the same as the triangles extracted
|
||||
from region1 of the input MO. In the case of a plane extracted along all or a
|
||||
portion of a material interface, only those points that lie inside the
|
||||
material (i.e.: away from the direction of the normal) will be picked up. If
|
||||
the extraction is on a boundary, the normal to the extraction plane must point
|
||||
out of the material in order for points to be picked up.
|
||||
|
||||
>
|
||||
|
||||
> FORMAT:
|
||||
|
||||
 _place_holder; **extract**/**plane**/**threepts**/x1,y1,z1/x2,y2,z2/x3,y3
|
||||
,z3/ifirst,ilast,istride/cmoout/cmoin
|
||||
|
||||
**extract**/**plane**/**ptnorm**/x1,y1,z1/xn,yn,zn/ ifirst,ilast,istride/cmoout/cmoin
|
||||
**extract**/**plane**/**axes**/xv,yv,zv/ifirst,ilast,istride/cmoout/
|
||||
**extract**/**plane**/**abcd**/a,b,c,d/ ifirst,ilast,istride/cmoout/cmoin
|
||||
**extract**/**isosurf**/attribute/value/ ifirst,ilast,istride/cmoout/cmoin
|
||||
**extract**/**intrface**/region1/ifirst,ilast,istride/cmoout/`cmoin`
|
||||
**extract**/**intrfac2**/region1/region2/ifirst,ilast,istride/cmoout/`cmoin`
|
||||
**extract/network**/ifirst,ilast,istride/cmoout/cmoin
|
||||
**extract/surfmesh**/1,0,0/cmoout/[cmoin] EXAMPLE: cmo/create/3dmesh/
|
||||
* add an attribute to contain a field for refinement and extraction
|
||||
cmo/addatt/3dmesh/boron
|
||||
|
||||
cmo/modatt/3dmesh/boron/ioflag/gx/
|
||||
|
||||
cmo/modatt/3dmesh/boron/interp/linear/
|
||||
|
||||
* _place_holder; simple unit cube divided into 2 region by a horizontal plane
|
||||
surface/cube/reflect/box/.0,.0,.0/1.,1.,1./
|
||||
|
||||
surface/mid/intrface/plane/0.,0.,.5/1.,0.,.5/1.,1.,.5/
|
||||
|
||||
region/r1/ le cube and le mid /
|
||||
|
||||
mregion/m1/ le cube and lt mid /
|
||||
|
||||
region/r2/ le cube and gt mid /
|
||||
|
||||
mregion/m2/ le cube and gt mid /
|
||||
|
||||
* start out with just a few nodes
|
||||
createpts/xyz/3,3,3/0.,0.,0./1.,1.,1./1,1,1/
|
||||
|
||||
setpts
|
||||
|
||||
search
|
||||
|
||||
settets
|
||||
|
||||
* put some values on the field
|
||||
doping/gaussian/boron/set/1,0,0/xyz/0.0,0.0,0.0/1.,0.,0./0.5/ &
|
||||
|
||||
 _place_holder;3.23e+20/0.063/
|
||||
|
||||
* use refine to add more detail - note only linear interpolation
|
||||
* between the few original nodes - one would never really do this without
|
||||
* recalculating the field on the finer mesh
|
||||
refine/maxsize///edge/1,0,0/0.01,0.0,0.0/
|
||||
|
||||
recon
|
||||
|
||||
refine/constant/boron/linear/edge/1,0,0/1.3+20/
|
||||
|
||||
recon
|
||||
|
||||
* extract a plane
|
||||
extract/plane/threepts/0.,0.,0./1.,0.,0./1.,0.,1./1,0,0/2dmesh/3dmesh
|
||||
|
||||
pset/p1/geom/xyz/0.,0.,0./.5,.5,.5/
|
||||
|
||||
* extract a plane - note pset is ignored!
|
||||
extract/plane/threepts/0.,0.,0./1.,0.,0./1.,0.,1./pset,get,p1/2dm1/3dmesh
|
||||
|
||||
dump/gmv/gmv.3dm/3dmesh/
|
||||
|
||||
dump/gmv/gmv.2dm/2dmesh/
|
||||
|
||||
dump/gmv/gmv.2d1m/2dm1/
|
||||
|
||||
cmo/select/3dmesh
|
||||
|
||||
* refine some more
|
||||
refine/constant/boron/linear/edge/1,0,0/1.3+20/
|
||||
|
||||
recon
|
||||
|
||||
* now get an isosurface
|
||||
extract/isosurf/boron/1.0e+20/1,0,0/2dm2/3dmesh
|
||||
|
||||
dump/gmv/gmv.2dm2/2dm2
|
||||
|
||||
* get the boundary of one region
|
||||
extract/intrface/m1/1,0,0/2dm3/3dmesh
|
||||
|
||||
dump/gmv/gmv.2dm3/2dm3
|
||||
|
||||
* get the interface between two regions
|
||||
extract/intrfac2/m1/m2/1,0,0/2dm4/3dmesh
|
||||
|
||||
dump/gmv/gmv.2dm4/2dm4
|
||||
|
||||
* try the network option
|
||||
extract/network/1,0,0/2dm5/3dmesh
|
||||
|
||||
dump/gmv/gmv.2dm5/2dm5
|
||||
|
||||
* get the surface mesh - note interface plane is included
|
||||
extract/surfmesh/1,0,0/2dm6/3dmesh
|
||||
|
||||
dump/gmv/gmv.2dm6/2dm6
|
||||
|
||||
finish
|
||||
|
||||
178
documentation/lagrit_manual/commands/extrude.txt
Executable file
178
documentation/lagrit_manual/commands/extrude.txt
Executable file
@@ -0,0 +1,178 @@
|
||||
.. _extrude:
|
||||
|
||||
>  _place_holder;
|
||||
|
||||
>
|
||||
|
||||
> **_EXTRUDE_**
|
||||
|
||||
> > This command takes a topologically 1d or 2d mesh (a line, a set of line
|
||||
segments, or a planar or non-planar surface) and extrudes it into three
|
||||
dimensions along either the normal to the curve or surface (default), along a
|
||||
user defined vector, or to a set of points that the user has specified.
|
||||
|
||||
> > If the extrusion was along the normal of the surface or along a user
|
||||
defined vector, the command can optionally find the external surface of the
|
||||
volume created and return that to the user.
|
||||
|
||||
>
|
||||
|
||||
> FORMAT:
|
||||
|
||||
>
|
||||
|
||||
>> **extrude**/mesh1/mesh2/**const|min**/offset/**volume|bubble**/[**norm**|x1
|
||||
,y1,z1]
|
||||
|
||||
> > OR
|
||||
|
||||
> > **extrude**/mesh1/mesh2/**interp**/layers/**range1/range2**
|
||||
|
||||
> > where** range1 **and** range2 **are defined as
|
||||
**[pset,get,**`pset_name`**|**`ifirst,ilast,istride`**]**
|
||||
|
||||
>
|
||||
|
||||
> mesh1 is the name of the resulting mesh.
|
||||
|
||||
>
|
||||
|
||||
> mesh2 is the name of the initial mesh. This mesh must be made up of **lines,
|
||||
tris, quads, or hybrids**.
|
||||
|
||||
>
|
||||
|
||||
> **const** is a keyword that indicates that the distance from each of the
|
||||
points in the initial mesh along the extruding vector will be equal to
|
||||
offset.Therefore, if you wanted the extruded mesh to have the same surface or
|
||||
edge characteristics as the original mesh on both the initial and newly formed
|
||||
surface or edge, you would use **const**.
|
||||
|
||||
>
|
||||
|
||||
> **min** is a keyword and indicates that the minimum distance along the
|
||||
extruding vector to a reference plane that is perpendicular to the extruding
|
||||
vector will be equal to offset. This means that if you want an extruded mesh
|
||||
with at least one flat side, you would use **min**. This also means that if
|
||||
you use **min**, extrude computes the "bottom point" on the initial mesh, or
|
||||
the point closest to the reference plane, and then extrudes that point by min,
|
||||
all the other points will therefore be extruded by a larger distance. This
|
||||
avoids the problem of having the initial mesh intersect the reference plane
|
||||
that forms the "bottom" of the created mesh.
|
||||
|
||||
>
|
||||
|
||||
> **interp** is a keyword and indicates a different kind of extrusion. Instead
|
||||
of giving the initial mesh a direction in which to be extruded, this keyword
|
||||
specifies that the initial mesh is made up of two sets of points to be
|
||||
connected. These point sets are defined by **range1** and **range2**. The
|
||||
ranges can be defined using the standard LaGriT techniques of **pset**,
|
||||
**get**, <pset name> or ifirst, ilast, istride.
|
||||
|
||||
>
|
||||
|
||||
> layers is the number of layers of elements that will be placed between the
|
||||
original two surfaces. This is a good point distribution technique. The final
|
||||
number of layers of points will be equal to layers+1. It must be an integer.
|
||||
|
||||
>
|
||||
|
||||
> offset is the length of extrusion. It can either be an integer or a real.
|
||||
|
||||
>
|
||||
|
||||
> **volume** is a keyword and indicates that the volume that was extruded is
|
||||
to be returned to the user (i.e., the operation will result in either a
|
||||
topologically 2d (quad) mesh if the initial mesh was topologically 1d, or a
|
||||
topologically 3d (prism or hex) mesh if the initial mesh was topologically
|
||||
2d). **bubble** is a keyword and indicates that the external surface of the
|
||||
volume created will be returned. If bubble is used, hextotet will be called on
|
||||
the final surface, as well as extract.
|
||||
|
||||
>
|
||||
|
||||
> The final argument is optional. It must either be the keyword **norm**, or a
|
||||
three valued vector (in cartesian space) specifying a direction. The default,
|
||||
if no argument is provided, is **norm**. If **norm** is chosen, the element
|
||||
area weighted normal to the surface or curve is computed, and the initial mesh
|
||||
is extruded in that direction. Otherwise, if a vector value is specified, the
|
||||
vector is normalized, and its direction used to extrude the initial mesh.
|
||||
|
||||
>
|
||||
|
||||
> NOTES:
|
||||
|
||||
>
|
||||
|
||||
>> This code works on meshes containing lines, quads, triangles, or hybrid
|
||||
polygons. If there are lines in the initial mesh, they become quads; tris
|
||||
become prisms; and quads become hexes. If bubble is used, however, lines are
|
||||
not permitted because they do not result in a mesh that extract and hextotet
|
||||
agree with. The code will error out in this situation.
|
||||
|
||||
> > It is very possible to create an invalid mesh object with this command,
|
||||
especially if the initial mesh is a multivalued surface, or if the extruding
|
||||
vector is in a direction parallel to the plane the initial surface is in. You
|
||||
have been warned.
|
||||
|
||||
> > If the **interp** keyword is used, the code expects the number of points
|
||||
in **range1** and **range2** to be equal, and to correspond such that the
|
||||
first point in **range1** will connect to the first point in **range2 **in the
|
||||
final mesh object, etc. Other setups will result in a twisted, perhaps invalid
|
||||
mesh object.
|
||||
|
||||
>
|
||||
|
||||
> EXAMPLES:
|
||||
|
||||
>
|
||||
|
||||
>> **extrude**/cmo_hex/cmo_quad/**const**/5.0/**volume**
|
||||
|
||||
> > This would result in hexes being created out of the initial quad sheet.
|
||||
First, since **const** and **volume** are used, the quad sheet will be
|
||||
extruded a constant amount from each point. Second, since the extruding vector
|
||||
and **norm** are omitted, the extrusion will occur on the average normal to
|
||||
the plane. Therefore, this command will result in a mesh of hexahedrons
|
||||
extruded 5.0 units in an orthogonal direction. (Or, more succinctly, a mesh of
|
||||
parallelopipeds of height 5.)
|
||||
|
||||
> > **extrude**/cmo_prism/cmo_tri/**min**/10/**volume**/1,2,-1
|
||||
|
||||
> > This command would result in prisms being created out of the initial tri
|
||||
sheet. First, since **min** is used, the "bottom" of the extruded volume would
|
||||
be a plane. Second, because the vector 1, 2, -1 is specified, the extrusion
|
||||
will be in that direction (again the magnitude is not important, the vector is
|
||||
normalized to a unit vector), not in the direction of the average normal.
|
||||
|
||||
> > **extrude**/cmo_bigbox/cmo_quad/**const**/5.0/**bubble/**
|
||||
|
||||
> > This would result in a surface surrounding an amalgamation of
|
||||
parallelopipeds created from the initial quad sheet. First, since **const** is
|
||||
used the quads will be extruded a constant amount from each point in the quad
|
||||
sheet. Second, since the extruding vector and **norm** are omitted, the
|
||||
extrusion will occur on the average normal to the plane. Therefore, this
|
||||
command will result in a mesh of tris that form the surface of a group of
|
||||
parallelopipeds extruded 5.0 units in an orthogonal direction.
|
||||
|
||||
> > **extrude**/cmo_arbshape/cmo_tri/**min**/7.5/**bubble**/3,-2.5,-6
|
||||
|
||||
> > This command would result in a mesh of tris that form a surface enclosing
|
||||
a volume of prisms being created out of the initial tri sheet. First, since
|
||||
**min** is used, the "bottom" of the surface would be a plane. Second, because
|
||||
the vector 3, -2.5, -6 is specified, the extrusion will be in that direction
|
||||
(again the magnitude is not important, the vector is normalized to a unit
|
||||
vector), not in the direction of the average normal of the initial tri
|
||||
surface.
|
||||
|
||||
> > **extrude**/cmo_prism/cmo_tris/**interp**/14/**pset, get, **bottom**/pset,
|
||||
get, **top
|
||||
|
||||
> > This command would result in a mesh of prisms being created out of the two
|
||||
sets of tri sheets in cmo_tris as well as 14-1 layers of additional tris that
|
||||
would be interpolated. First, since interp is used, the pset defined by bottom
|
||||
would end up connected to the pset defined by top. Second, there would be 14
|
||||
layers of elements that would be placed between the psets top and bottom, so
|
||||
that the resulting grid would have 15 layers of points that would be connected
|
||||
to one another to form prisms.
|
||||
|
||||
97
documentation/lagrit_manual/commands/field.txt
Executable file
97
documentation/lagrit_manual/commands/field.txt
Executable file
@@ -0,0 +1,97 @@
|
||||
.. _field :
|
||||
|
||||
 _place_holder;
|
||||
|
||||
> **_FIELD_**
|
||||
|
||||
>
|
||||
|
||||
>> The FIELD Command option manipulates one or more specified fields in the
|
||||
Current Mesh Object
|
||||
|
||||
>>
|
||||
|
||||
>> *For all points in the specified point set, we compose the field value with
|
||||
the specified composition function. The composition functions allowed are
|
||||
currently **asinh** and **log**. So, for example, if 'i' is in the point set
|
||||
and **asinh** is the composition function, we have the assignment:
|
||||
|
||||
>>
|
||||
|
||||
>>> field(i) = asinh(field(i)).
|
||||
|
||||
>>
|
||||
|
||||
>> *The **field**/**mfedraw **command causes a binary dump of the specified
|
||||
fields to two files in the **mfedraw** input format. **mfedraw** is a graphics
|
||||
package for visualizing moving piecewise linear functions of two variables,
|
||||
such as those originally encountered in Moving Finite Elements. The files are
|
||||
named 'root1.bin' and 'root2.bin', where 'root' is the root file name
|
||||
argument. Because the graphics data are a function of two variables, you must
|
||||
supply two orthonormal vectors (x1,y1,z1) and (x2,y2,z2) which specify the
|
||||
graphics coordinate axes. More precisely, given 3D coordinates (x,y,z), the 2D
|
||||
graphic coordinates will then be (x*x1+y*y1+z*z1 , x*x2+y*y2+z*z2). So, for
|
||||
example, the choice:
|
||||
|
||||
>>
|
||||
|
||||
>>> /x1,y1,z1/x2,y2,z2/ = /1.,0.,0./0.,1.,0./
|
||||
|
||||
>>
|
||||
|
||||
>> causes the 'z' coordinate to be discarded while the 'x' and 'y' coordinates
|
||||
are unchanged.
|
||||
|
||||
>>
|
||||
|
||||
>> *The **field**/**scale** option scales the field values of the specified
|
||||
points. scale option can take on the values **normalize**, **multiply**, and
|
||||
**divide**. If **normalize **is specified, we multiply all the field values by
|
||||
**factor**/(fieldmax-fieldmin), where 'fieldmax' and 'fieldmin' are the
|
||||
maximum and minimum values taken over the point set. This has the effect of
|
||||
normalizing the field so that the new difference between the maximum and
|
||||
minimum values is equal to **factor**. If **multiply** is specified, we
|
||||
multiply all the field values in the point set by **factor**. If **divide **is
|
||||
specified, we divide all the field values in the point set by **factor.**
|
||||
|
||||
>>
|
||||
|
||||
>> *The **field**/**volavg** option, for all the members of the point set and
|
||||
for all specified fields, replaces the point field values with values that
|
||||
represent the average of the field(s) over the control volumes associated with
|
||||
the points. The averaging option specifies what kind of control volume is to
|
||||
be used; the choices are **voronoi** and** median**. iterations is an integer
|
||||
that specifies a repeat count for how many times this procedure is to be
|
||||
performed on the field(s). The affect of this process is to broaden and smooth
|
||||
the features of the field(s), similar to the effect of a diffusion process.
|
||||
The **voronoi **choice, unlike the **median**. choice, produces a diffusive
|
||||
effect independent of mesh connectivity. However, again unlike the **median**.
|
||||
choice, it _requires_ that the mesh be Delaunay, or incorrect results will
|
||||
occur.
|
||||
|
||||
>
|
||||
|
||||
> FORMAT:
|
||||
|
||||
>
|
||||
|
||||
>> **field**/**compose**/composition function/ifirst,ilast,istride/field list/
|
||||
|
||||
**field**/**mfedraw**/root file name/x1,y1,z1/x2,y2,z2/field list/
|
||||
**field/scale /**scale option/factor/ifirst,ilast,istride/ field list /
|
||||
**field**/**volavg**/averaging option/iterations/ifirst,ilast,istride/filed list/
|
||||
>
|
||||
|
||||
> EXAMPLES:
|
||||
|
||||
>
|
||||
|
||||
>> **field**/**compose**/**asinh**/1,0,0/**field**/**scale**/**normalize**/4.*
|
||||
*field**/**volavg**/**voronoi**/4/1,
|
||||
|
||||
>
|
||||
|
||||
>  _place_holder;
|
||||
|
||||
 _place_holder;
|
||||
|
||||
606
documentation/lagrit_manual/commands/filter.txt
Executable file
606
documentation/lagrit_manual/commands/filter.txt
Executable file
@@ -0,0 +1,606 @@
|
||||
.. _filter:
|
||||
|
||||
 _place_holder;
|
||||
|
||||
> **_FILTER_**
|
||||
|
||||
>
|
||||
|
||||
>> **FORMAT**:
|
||||
|
||||
>>
|
||||
|
||||
>>> **filter**/ifirst,ilast,istride/[tolerance/min|max/attribute]
|
||||
|
||||
|
||||
**filter**/element/[search_range]/[**nodelete** | delete]
|
||||
|
||||
>>
|
||||
|
||||
>>> **Filter **is used in either node or element mode. _place_holder; In
|
||||
'node' mode it is used to mark for deletion nodes that lie within a distance,
|
||||
epsilon, of one another. _place_holder; In 'element' mode it either marks
|
||||
or deletes elements which have the exact same set of nodes. The test is on
|
||||
node numbers, not the geometric position of nodes so for this to work one
|
||||
should filter the nodes first.
|
||||
|
||||
**
|
||||
Node Mode:**
|
||||
|
||||
Used to filter (mark for deletion) points that are geometricly close, (mesh
|
||||
object epsilon value), or if the tolerance parameter is given, closer than the
|
||||
tolerance specified by the user. This command changes the node type of the
|
||||
deleted points to type 'dudded' (itp=21) but does not remove them from the
|
||||
point list. Note that at least one point must be specified in the point range
|
||||
(ifirst,ilast,istride) in order for this command to work properly. Dudded
|
||||
points (itp=21) can be removed from the mesh object by calling
|
||||
[rmpoint/compress](RMPOINT.html).
|
||||
|
||||
>>>
|
||||
|
||||
>>> When the min|max / attribute option is used, nodes for deletion are
|
||||
detected based on the standard geometric criteria however, the choice about
|
||||
which node is retained is determined based on comparison of the attribute
|
||||
values and the node with either the min or max value is retained.
|
||||
|
||||
>>>
|
||||
|
||||
>>>
|
||||
|
||||
**Element Mode:**
|
||||
Search a mesh object for duplicate elements. A duplicate element is defined as
|
||||
having the exact same set of nodes in the element connectivity list (itet).
|
||||
The order of the nodes in the connectivity does not matter. The element with
|
||||
the larger itetclr value (master) will be kept. The duplicate element will
|
||||
have its material color (itetclr) changed to max(itetclr) + 1. Two new element
|
||||
attributes (iclr1, iclr2) are added to the mesh object to keep track of the
|
||||
correspondence of master(retained)/duplicate(removed) elements and their
|
||||
original material id (itetclr). _place_holder;
|
||||
|
||||
>
|
||||
|
||||
> For all elements the values of iclr1 are set their original itetclr values.
|
||||
|
||||
For any element that is neither master nor duplicate, the value of icr2 is set
|
||||
to its itetclr value.
|
||||
|
||||
For an element that is a master, icrl2 is set to the original itetclr value of
|
||||
its duplicate.
|
||||
|
||||
For an element that is a duplicate, icrl2 is set to the original itetclr value
|
||||
of its master.
|
||||
|
||||
>
|
||||
|
||||
>> > For example, consider the 4 element mesh, where element 2 and 3 are
|
||||
duplicates and:
|
||||
|
||||
>>>
|
||||
|
||||
>>> Element 1,2 itetclr = 1
|
||||
|
||||
Element 3,4 itetclr = 2
|
||||
|
||||
then after:
|
||||
|
||||
filter/element/10/nodelete _place_holder; _place_holder; _place_ho
|
||||
lder; _place_holder; _place_holder; _place_holder; _place_hold
|
||||
er; _place_holder; _place_holder; _place_holder; _place_holder
|
||||
; _place_holder; _place_holder; _place_holder; _place_holder;&
|
||||
nbsp_place_holder; _place_holder; _place_holder; _place_holder;&nb
|
||||
sp_place_holder; _place_holder; _place_holder; _place_holder; 
|
||||
_place_holder; _place_holder; _place_holder; _place_holder; _p
|
||||
lace_holder; _place_holder; _place_holder; _place_holder; _pla
|
||||
ce_holder; _place_holder; _place_holder; _place_holder; _place
|
||||
_holder; _place_holder; _place_holder; _place_holder; _place_h
|
||||
older; _place_holder; _place_holder; _place_holder; _place_hol
|
||||
der; _place_holder; _place_holder; _place_holder; _place_holde
|
||||
r; _place_holder; _place_holder; _place_holder; _place_holder;
|
||||
 _place_holder;
|
||||
|
||||
|
||||
Maximum material id max(itetclr) _place_holder; _place_holder; _pl
|
||||
ace_holder; _place_holder; _place_holder; _place_holder; _plac
|
||||
e_holder; _place_holder; _place_holder; = _place_holder; _plac
|
||||
e_holder; _place_holder; _place_holder; _place_holder; _place_
|
||||
holder; _place_holder; _place_holder; _place_holder; 2 _place_
|
||||
holder; _place_holder; _place_holder; _place_holder; _place_ho
|
||||
lder; _place_holder; _place_holder; _place_holder; _place_hold
|
||||
er; _place_holder; _place_holder; _place_holder; _place_holder
|
||||
; _place_holder; _place_holder; _place_holder; _place_holder;&
|
||||
nbsp_place_holder; _place_holder; _place_holder; _place_holder;&nb
|
||||
sp_place_holder; _place_holder; _place_holder; _place_holder;
|
||||
|
||||
Duplicate Elements will be set to itetclr = _place_holder; _place_hold
|
||||
er; _place_holder; _place_holder; _place_holder; _place_holder
|
||||
; _place_holder; _place_holder; _place_holder; 3 _place_holder
|
||||
; _place_holder; _place_holder; _place_holder; _place_holder;&
|
||||
nbsp_place_holder; _place_holder; _place_holder; _place_holder;&nb
|
||||
sp_place_holder; _place_holder; _place_holder; _place_holder; 
|
||||
_place_holder; _place_holder; _place_holder; _place_holder; _p
|
||||
lace_holder; _place_holder; _place_holder; _place_holder; _pla
|
||||
ce_holder; _place_holder; _place_holder; _place_holder;
|
||||
|
||||
search_range _place_holder; _place_holder; _place_holder; _pla
|
||||
ce_holder; _place_holder; _place_holder; _place_holder; _place
|
||||
_holder; _place_holder; _place_holder; _place_holder; _place_h
|
||||
older; _place_holder; _place_holder; _place_holder; _place_hol
|
||||
der; _place_holder; _place_holder; _place_holder; _place_holde
|
||||
r; _place_holder; _place_holder; _place_holder; _place_holder;
|
||||
 _place_holder; _place_holder; _place_holder; _place_holder;&n
|
||||
bsp_place_holder; = _place_holder; _place_holder; _place_holder;&n
|
||||
bsp_place_holder; _place_holder; _place_holder; _place_holder;&nbs
|
||||
p_place_holder; 10 _place_holder; _place_holder; _place_holder;&nb
|
||||
sp_place_holder; _place_holder; _place_holder; _place_holder; 
|
||||
_place_holder; _place_holder; _place_holder; _place_holder; _p
|
||||
lace_holder; _place_holder; _place_holder; _place_holder; _pla
|
||||
ce_holder; _place_holder; _place_holder; _place_holder; _place
|
||||
_holder; _place_holder; _place_holder; _place_holder; _place_h
|
||||
older; _place_holder;
|
||||
|
||||
nelements searched _place_holder; _place_holder; _place_holder;&nb
|
||||
sp_place_holder; _place_holder; _place_holder; _place_holder; 
|
||||
_place_holder; _place_holder; _place_holder; _place_holder; _p
|
||||
lace_holder; _place_holder; _place_holder; _place_holder; _pla
|
||||
ce_holder; _place_holder; _place_holder; _place_holder; _place
|
||||
_holder; _place_holder; _place_holder; _place_holder; = _place
|
||||
_holder; _place_holder; _place_holder; _place_holder; _place_h
|
||||
older; _place_holder; _place_holder; _place_holder; _place_hol
|
||||
der; 4 _place_holder; _place_holder; _place_holder; _place_hol
|
||||
der; _place_holder; _place_holder; _place_holder; _place_holde
|
||||
r; _place_holder; _place_holder; _place_holder; _place_holder;
|
||||
 _place_holder; _place_holder; _place_holder; _place_holder;&n
|
||||
bsp_place_holder; _place_holder; _place_holder; _place_holder;&nbs
|
||||
p_place_holder; _place_holder; _place_holder; _place_holder; _
|
||||
place_holder;
|
||||
|
||||
Number of duplicate element found _place_holder; _place_holder; _p
|
||||
lace_holder; _place_holder; _place_holder; _place_holder; _pla
|
||||
ce_holder; _place_holder; = _place_holder; _place_holder; _pla
|
||||
ce_holder; _place_holder; _place_holder; _place_holder; _place
|
||||
_holder; _place_holder; _place_holder; 1 _place_holder; _place
|
||||
_holder; _place_holder; _place_holder; _place_holder; _place_h
|
||||
older; _place_holder; _place_holder; _place_holder; _place_hol
|
||||
der; _place_holder; _place_holder; _place_holder; _place_holde
|
||||
r; _place_holder; _place_holder; _place_holder; _place_holder;
|
||||
 _place_holder; _place_holder; _place_holder; _place_holder;&n
|
||||
bsp_place_holder; _place_holder; _place_holder;
|
||||
|
||||
|
||||
cmo/printatt/cmohex1/itetclr/1 0 0 _place_holder; _place_holder; _
|
||||
place_holder; _place_holder; _place_holder; _place_holder; _pl
|
||||
ace_holder; _place_holder; _place_holder; _place_holder; _plac
|
||||
e_holder; _place_holder; _place_holder; _place_holder; _place_
|
||||
holder; _place_holder; _place_holder; _place_holder; _place_ho
|
||||
lder; _place_holder; _place_holder; _place_holder; _place_hold
|
||||
er; _place_holder; _place_holder; _place_holder; _place_holder
|
||||
; _place_holder; _place_holder; _place_holder; _place_holder;&
|
||||
nbsp_place_holder; _place_holder; _place_holder; _place_holder;&nb
|
||||
sp_place_holder; _place_holder; _place_holder; _place_holder; 
|
||||
_place_holder; _place_holder; _place_holder; _place_holder; _p
|
||||
lace_holder; _place_holder;
|
||||
|
||||
Attribute: itetclr _place_holder; _place_holder; _place_holder;&nb
|
||||
sp_place_holder; _place_holder; _place_holder; _place_holder; 
|
||||
_place_holder; _place_holder; _place_holder; _place_holder; _p
|
||||
lace_holder; _place_holder; _place_holder; _place_holder; _pla
|
||||
ce_holder; _place_holder; _place_holder; _place_holder; _place
|
||||
_holder; _place_holder; _place_holder; _place_holder; _place_h
|
||||
older; _place_holder; _place_holder; _place_holder; _place_hol
|
||||
der; _place_holder; _place_holder; _place_holder; _place_holde
|
||||
r; _place_holder; _place_holder; _place_holder; _place_holder;
|
||||
 _place_holder; _place_holder; _place_holder; _place_holder;&n
|
||||
bsp_place_holder; _place_holder; _place_holder; _place_holder;&nbs
|
||||
p_place_holder; _place_holder; _place_holder; _place_holder; _
|
||||
place_holder; _place_holder; _place_holder; _place_holder; _pl
|
||||
ace_holder; _place_holder; _place_holder; _place_holder; _plac
|
||||
e_holder; _place_holder; _place_holder; _place_holder; _place_
|
||||
holder;
|
||||
|
||||
 _place_holder; _place_holder; _place_holder; _place_holder;&n
|
||||
bsp_place_holder; _place_holder; _place_holder; _place_holder; 1&n
|
||||
bsp_place_holder; _place_holder; _place_holder; _place_holder;&nbs
|
||||
p_place_holder; _place_holder; _place_holder; _place_holder; _
|
||||
place_holder; 1 _place_holder; _place_holder; _place_holder; _
|
||||
place_holder; _place_holder; _place_holder; _place_holder; _pl
|
||||
ace_holder; _place_holder; _place_holder; _place_holder; _plac
|
||||
e_holder; _place_holder; _place_holder; _place_holder; _place_
|
||||
holder; _place_holder; _place_holder; _place_holder; _place_ho
|
||||
lder; _place_holder; _place_holder; _place_holder; _place_hold
|
||||
er; _place_holder; _place_holder; _place_holder; _place_holder
|
||||
; _place_holder; _place_holder; _place_holder; _place_holder;&
|
||||
nbsp_place_holder; _place_holder; _place_holder; _place_holder;&nb
|
||||
sp_place_holder; _place_holder; _place_holder; _place_holder; 
|
||||
_place_holder; _place_holder; _place_holder; _place_holder; _p
|
||||
lace_holder; _place_holder; _place_holder; _place_holder; _pla
|
||||
ce_holder; _place_holder; _place_holder; _place_holder; _place
|
||||
_holder; _place_holder; _place_holder; _place_holder; _place_h
|
||||
older; _place_holder;
|
||||
|
||||
 _place_holder; _place_holder; _place_holder; _place_holder;&n
|
||||
bsp_place_holder; _place_holder; _place_holder; _place_holder; 2&n
|
||||
bsp_place_holder; _place_holder; _place_holder; _place_holder;&nbs
|
||||
p_place_holder; _place_holder; _place_holder; _place_holder; _
|
||||
place_holder; 3 _place_holder; _place_holder; _place_holder; _
|
||||
place_holder; _place_holder; _place_holder; _place_holder; _pl
|
||||
ace_holder; _place_holder; _place_holder; _place_holder; _plac
|
||||
e_holder; _place_holder; _place_holder; _place_holder; _place_
|
||||
holder; _place_holder; _place_holder; _place_holder; _place_ho
|
||||
lder; _place_holder; _place_holder; _place_holder; _place_hold
|
||||
er; _place_holder; _place_holder; _place_holder; _place_holder
|
||||
; _place_holder; _place_holder; _place_holder; _place_holder;&
|
||||
nbsp_place_holder; _place_holder; _place_holder; _place_holder;&nb
|
||||
sp_place_holder; _place_holder; _place_holder; _place_holder; 
|
||||
_place_holder; _place_holder; _place_holder; _place_holder; _p
|
||||
lace_holder; _place_holder; _place_holder; _place_holder; _pla
|
||||
ce_holder; _place_holder; _place_holder; _place_holder; _place
|
||||
_holder; _place_holder; _place_holder; _place_holder; _place_h
|
||||
older; _place_holder;
|
||||
|
||||
 _place_holder; _place_holder; _place_holder; _place_holder;&n
|
||||
bsp_place_holder; _place_holder; _place_holder; _place_holder; 3&n
|
||||
bsp_place_holder; _place_holder; _place_holder; _place_holder;&nbs
|
||||
p_place_holder; _place_holder; _place_holder; _place_holder; _
|
||||
place_holder; 2 _place_holder; _place_holder; _place_holder; _
|
||||
place_holder; _place_holder; _place_holder; _place_holder; _pl
|
||||
ace_holder; _place_holder; _place_holder; _place_holder; _plac
|
||||
e_holder; _place_holder; _place_holder; _place_holder; _place_
|
||||
holder; _place_holder; _place_holder; _place_holder; _place_ho
|
||||
lder; _place_holder; _place_holder; _place_holder; _place_hold
|
||||
er; _place_holder; _place_holder; _place_holder; _place_holder
|
||||
; _place_holder; _place_holder; _place_holder; _place_holder;&
|
||||
nbsp_place_holder; _place_holder; _place_holder; _place_holder;&nb
|
||||
sp_place_holder; _place_holder; _place_holder; _place_holder; 
|
||||
_place_holder; _place_holder; _place_holder; _place_holder; _p
|
||||
lace_holder; _place_holder; _place_holder; _place_holder; _pla
|
||||
ce_holder; _place_holder; _place_holder; _place_holder; _place
|
||||
_holder; _place_holder; _place_holder; _place_holder; _place_h
|
||||
older; _place_holder;
|
||||
|
||||
 _place_holder; _place_holder; _place_holder; _place_holder;&n
|
||||
bsp_place_holder; _place_holder; _place_holder; _place_holder; 4&n
|
||||
bsp_place_holder; _place_holder; _place_holder; _place_holder;&nbs
|
||||
p_place_holder; _place_holder; _place_holder; _place_holder; _
|
||||
place_holder; 2 _place_holder; _place_holder; _place_holder; _
|
||||
place_holder; _place_holder; _place_holder; _place_holder; _pl
|
||||
ace_holder; _place_holder; _place_holder; _place_holder; _plac
|
||||
e_holder; _place_holder; _place_holder; _place_holder; _place_
|
||||
holder; _place_holder; _place_holder; _place_holder; _place_ho
|
||||
lder; _place_holder; _place_holder; _place_holder; _place_hold
|
||||
er; _place_holder; _place_holder; _place_holder; _place_holder
|
||||
; _place_holder; _place_holder; _place_holder; _place_holder;&
|
||||
nbsp_place_holder; _place_holder; _place_holder; _place_holder;&nb
|
||||
sp_place_holder; _place_holder; _place_holder; _place_holder; 
|
||||
_place_holder; _place_holder; _place_holder; _place_holder; _p
|
||||
lace_holder; _place_holder; _place_holder; _place_holder; _pla
|
||||
ce_holder; _place_holder; _place_holder; _place_holder; _place
|
||||
_holder; _place_holder; _place_holder; _place_holder; _place_h
|
||||
older; _place_holder;
|
||||
|
||||
|
||||
cmo/printatt/cmohex1/iclr1/1 0 0 _place_holder; _place_holder; _pl
|
||||
ace_holder; _place_holder; _place_holder; _place_holder; _plac
|
||||
e_holder; _place_holder; _place_holder; _place_holder; _place_
|
||||
holder; _place_holder; _place_holder; _place_holder; _place_ho
|
||||
lder; _place_holder; _place_holder; _place_holder; _place_hold
|
||||
er; _place_holder; _place_holder; _place_holder; _place_holder
|
||||
; _place_holder; _place_holder; _place_holder; _place_holder;&
|
||||
nbsp_place_holder; _place_holder; _place_holder; _place_holder;&nb
|
||||
sp_place_holder; _place_holder; _place_holder; _place_holder; 
|
||||
_place_holder; _place_holder; _place_holder; _place_holder; _p
|
||||
lace_holder; _place_holder; _place_holder; _place_holder; _pla
|
||||
ce_holder; _place_holder; _place_holder; _place_holder;
|
||||
|
||||
Attribute: iclr1 _place_holder; _place_holder; _place_holder; 
|
||||
_place_holder; _place_holder; _place_holder; _place_holder; _p
|
||||
lace_holder; _place_holder; _place_holder; _place_holder; _pla
|
||||
ce_holder; _place_holder; _place_holder; _place_holder; _place
|
||||
_holder; _place_holder; _place_holder; _place_holder; _place_h
|
||||
older; _place_holder; _place_holder; _place_holder; _place_hol
|
||||
der; _place_holder; _place_holder; _place_holder; _place_holde
|
||||
r; _place_holder; _place_holder; _place_holder; _place_holder;
|
||||
 _place_holder; _place_holder; _place_holder; _place_holder;&n
|
||||
bsp_place_holder; _place_holder; _place_holder; _place_holder;&nbs
|
||||
p_place_holder; _place_holder; _place_holder; _place_holder; _
|
||||
place_holder; _place_holder; _place_holder; _place_holder; _pl
|
||||
ace_holder; _place_holder; _place_holder; _place_holder; _plac
|
||||
e_holder; _place_holder; _place_holder; _place_holder; _place_
|
||||
holder; _place_holder; _place_holder; _place_holder; _place_ho
|
||||
lder; _place_holder; _place_holder;
|
||||
|
||||
 _place_holder; _place_holder; _place_holder; _place_holder;&n
|
||||
bsp_place_holder; _place_holder; _place_holder; _place_holder; 1&n
|
||||
bsp_place_holder; _place_holder; _place_holder; _place_holder;&nbs
|
||||
p_place_holder; _place_holder; _place_holder; _place_holder; _
|
||||
place_holder; 1 _place_holder; _place_holder; _place_holder; _
|
||||
place_holder; _place_holder; _place_holder; _place_holder; _pl
|
||||
ace_holder; _place_holder; _place_holder; _place_holder; _plac
|
||||
e_holder; _place_holder; _place_holder; _place_holder; _place_
|
||||
holder; _place_holder; _place_holder; _place_holder; _place_ho
|
||||
lder; _place_holder; _place_holder; _place_holder; _place_hold
|
||||
er; _place_holder; _place_holder; _place_holder; _place_holder
|
||||
; _place_holder; _place_holder; _place_holder; _place_holder;&
|
||||
nbsp_place_holder; _place_holder; _place_holder; _place_holder;&nb
|
||||
sp_place_holder; _place_holder; _place_holder; _place_holder; 
|
||||
_place_holder; _place_holder; _place_holder; _place_holder; _p
|
||||
lace_holder; _place_holder; _place_holder; _place_holder; _pla
|
||||
ce_holder; _place_holder; _place_holder; _place_holder; _place
|
||||
_holder; _place_holder; _place_holder; _place_holder; _place_h
|
||||
older; _place_holder;
|
||||
|
||||
 _place_holder; _place_holder; _place_holder; _place_holder;&n
|
||||
bsp_place_holder; _place_holder; _place_holder; _place_holder; 2&n
|
||||
bsp_place_holder; _place_holder; _place_holder; _place_holder;&nbs
|
||||
p_place_holder; _place_holder; _place_holder; _place_holder; _
|
||||
place_holder; 1 _place_holder; _place_holder; _place_holder; _
|
||||
place_holder; _place_holder; _place_holder; _place_holder; _pl
|
||||
ace_holder; _place_holder; _place_holder; _place_holder; _plac
|
||||
e_holder; _place_holder; _place_holder; _place_holder; _place_
|
||||
holder; _place_holder; _place_holder; _place_holder; _place_ho
|
||||
lder; _place_holder; _place_holder; _place_holder; _place_hold
|
||||
er; _place_holder; _place_holder; _place_holder; _place_holder
|
||||
; _place_holder; _place_holder; _place_holder; _place_holder;&
|
||||
nbsp_place_holder; _place_holder; _place_holder; _place_holder;&nb
|
||||
sp_place_holder; _place_holder; _place_holder; _place_holder; 
|
||||
_place_holder; _place_holder; _place_holder; _place_holder; _p
|
||||
lace_holder; _place_holder; _place_holder; _place_holder; _pla
|
||||
ce_holder; _place_holder; _place_holder; _place_holder; _place
|
||||
_holder; _place_holder; _place_holder; _place_holder; _place_h
|
||||
older; _place_holder;
|
||||
|
||||
 _place_holder; _place_holder; _place_holder; _place_holder;&n
|
||||
bsp_place_holder; _place_holder; _place_holder; _place_holder; 3&n
|
||||
bsp_place_holder; _place_holder; _place_holder; _place_holder;&nbs
|
||||
p_place_holder; _place_holder; _place_holder; _place_holder; _
|
||||
place_holder; 2 _place_holder; _place_holder; _place_holder; _
|
||||
place_holder; _place_holder; _place_holder; _place_holder; _pl
|
||||
ace_holder; _place_holder; _place_holder; _place_holder; _plac
|
||||
e_holder; _place_holder; _place_holder; _place_holder; _place_
|
||||
holder; _place_holder; _place_holder; _place_holder; _place_ho
|
||||
lder; _place_holder; _place_holder; _place_holder; _place_hold
|
||||
er; _place_holder; _place_holder; _place_holder; _place_holder
|
||||
; _place_holder; _place_holder; _place_holder; _place_holder;&
|
||||
nbsp_place_holder; _place_holder; _place_holder; _place_holder;&nb
|
||||
sp_place_holder; _place_holder; _place_holder; _place_holder; 
|
||||
_place_holder; _place_holder; _place_holder; _place_holder; _p
|
||||
lace_holder; _place_holder; _place_holder; _place_holder; _pla
|
||||
ce_holder; _place_holder; _place_holder; _place_holder; _place
|
||||
_holder; _place_holder; _place_holder; _place_holder; _place_h
|
||||
older; _place_holder;
|
||||
|
||||
 _place_holder; _place_holder; _place_holder; _place_holder;&n
|
||||
bsp_place_holder; _place_holder; _place_holder; _place_holder; 4&n
|
||||
bsp_place_holder; _place_holder; _place_holder; _place_holder;&nbs
|
||||
p_place_holder; _place_holder; _place_holder; _place_holder; _
|
||||
place_holder; 2 _place_holder; _place_holder; _place_holder; _
|
||||
place_holder; _place_holder; _place_holder; _place_holder; _pl
|
||||
ace_holder; _place_holder; _place_holder; _place_holder; _plac
|
||||
e_holder; _place_holder; _place_holder; _place_holder; _place_
|
||||
holder; _place_holder; _place_holder; _place_holder; _place_ho
|
||||
lder; _place_holder; _place_holder; _place_holder; _place_hold
|
||||
er; _place_holder; _place_holder; _place_holder; _place_holder
|
||||
; _place_holder; _place_holder; _place_holder; _place_holder;&
|
||||
nbsp_place_holder; _place_holder; _place_holder; _place_holder;&nb
|
||||
sp_place_holder; _place_holder; _place_holder; _place_holder; 
|
||||
_place_holder; _place_holder; _place_holder; _place_holder; _p
|
||||
lace_holder; _place_holder; _place_holder; _place_holder; _pla
|
||||
ce_holder; _place_holder; _place_holder; _place_holder; _place
|
||||
_holder; _place_holder; _place_holder; _place_holder; _place_h
|
||||
older; _place_holder;
|
||||
|
||||
|
||||
cmo/printatt/cmohex1/iclr2/1 0 0 _place_holder; _place_holder; _pl
|
||||
ace_holder; _place_holder; _place_holder; _place_holder; _plac
|
||||
e_holder; _place_holder; _place_holder; _place_holder; _place_
|
||||
holder; _place_holder; _place_holder; _place_holder; _place_ho
|
||||
lder; _place_holder; _place_holder; _place_holder; _place_hold
|
||||
er; _place_holder; _place_holder; _place_holder; _place_holder
|
||||
; _place_holder; _place_holder; _place_holder; _place_holder;&
|
||||
nbsp_place_holder; _place_holder; _place_holder; _place_holder;&nb
|
||||
sp_place_holder; _place_holder; _place_holder; _place_holder; 
|
||||
_place_holder; _place_holder; _place_holder; _place_holder; _p
|
||||
lace_holder; _place_holder; _place_holder; _place_holder; _pla
|
||||
ce_holder; _place_holder; _place_holder; _place_holder;
|
||||
|
||||
Attribute: iclr2 _place_holder; _place_holder; _place_holder; 
|
||||
_place_holder; _place_holder; _place_holder; _place_holder; _p
|
||||
lace_holder; _place_holder; _place_holder; _place_holder; _pla
|
||||
ce_holder; _place_holder; _place_holder; _place_holder; _place
|
||||
_holder; _place_holder; _place_holder; _place_holder; _place_h
|
||||
older; _place_holder; _place_holder; _place_holder; _place_hol
|
||||
der; _place_holder; _place_holder; _place_holder; _place_holde
|
||||
r; _place_holder; _place_holder; _place_holder; _place_holder;
|
||||
 _place_holder; _place_holder; _place_holder; _place_holder;&n
|
||||
bsp_place_holder; _place_holder; _place_holder; _place_holder;&nbs
|
||||
p_place_holder; _place_holder; _place_holder; _place_holder; _
|
||||
place_holder; _place_holder; _place_holder; _place_holder; _pl
|
||||
ace_holder; _place_holder; _place_holder; _place_holder; _plac
|
||||
e_holder; _place_holder; _place_holder; _place_holder; _place_
|
||||
holder; _place_holder; _place_holder; _place_holder; _place_ho
|
||||
lder; _place_holder; _place_holder;
|
||||
|
||||
 _place_holder; _place_holder; _place_holder; _place_holder;&n
|
||||
bsp_place_holder; _place_holder; _place_holder; _place_holder; 1&n
|
||||
bsp_place_holder; _place_holder; _place_holder; _place_holder;&nbs
|
||||
p_place_holder; _place_holder; _place_holder; _place_holder; _
|
||||
place_holder; 1 _place_holder; _place_holder; _place_holder; _
|
||||
place_holder; _place_holder; _place_holder; _place_holder; _pl
|
||||
ace_holder; _place_holder; _place_holder; _place_holder; _plac
|
||||
e_holder; _place_holder; _place_holder; _place_holder; _place_
|
||||
holder; _place_holder; _place_holder; _place_holder; _place_ho
|
||||
lder; _place_holder; _place_holder; _place_holder; _place_hold
|
||||
er; _place_holder; _place_holder; _place_holder; _place_holder
|
||||
; _place_holder; _place_holder; _place_holder; _place_holder;&
|
||||
nbsp_place_holder; _place_holder; _place_holder; _place_holder;&nb
|
||||
sp_place_holder; _place_holder; _place_holder; _place_holder; 
|
||||
_place_holder; _place_holder; _place_holder; _place_holder; _p
|
||||
lace_holder; _place_holder; _place_holder; _place_holder; _pla
|
||||
ce_holder; _place_holder; _place_holder; _place_holder; _place
|
||||
_holder; _place_holder; _place_holder; _place_holder; _place_h
|
||||
older; _place_holder;
|
||||
|
||||
 _place_holder; _place_holder; _place_holder; _place_holder;&n
|
||||
bsp_place_holder; _place_holder; _place_holder; _place_holder; 2&n
|
||||
bsp_place_holder; _place_holder; _place_holder; _place_holder;&nbs
|
||||
p_place_holder; _place_holder; _place_holder; _place_holder; _
|
||||
place_holder; 2 _place_holder; _place_holder; _place_holder; _
|
||||
place_holder; _place_holder; _place_holder; _place_holder; _pl
|
||||
ace_holder; _place_holder; _place_holder; _place_holder; _plac
|
||||
e_holder; _place_holder; _place_holder; _place_holder; _place_
|
||||
holder; _place_holder; _place_holder; _place_holder; _place_ho
|
||||
lder; _place_holder; _place_holder; _place_holder; _place_hold
|
||||
er; _place_holder; _place_holder; _place_holder; _place_holder
|
||||
; _place_holder; _place_holder; _place_holder; _place_holder;&
|
||||
nbsp_place_holder; _place_holder; _place_holder; _place_holder;&nb
|
||||
sp_place_holder; _place_holder; _place_holder; _place_holder; 
|
||||
_place_holder; _place_holder; _place_holder; _place_holder; _p
|
||||
lace_holder; _place_holder; _place_holder; _place_holder; _pla
|
||||
ce_holder; _place_holder; _place_holder; _place_holder; _place
|
||||
_holder; _place_holder; _place_holder; _place_holder; _place_h
|
||||
older; _place_holder;
|
||||
|
||||
 _place_holder; _place_holder; _place_holder; _place_holder;&n
|
||||
bsp_place_holder; _place_holder; _place_holder; _place_holder; 3&n
|
||||
bsp_place_holder; _place_holder; _place_holder; _place_holder;&nbs
|
||||
p_place_holder; _place_holder; _place_holder; _place_holder; _
|
||||
place_holder; 1 _place_holder; _place_holder; _place_holder; _
|
||||
place_holder; _place_holder; _place_holder; _place_holder; _pl
|
||||
ace_holder; _place_holder; _place_holder; _place_holder; _plac
|
||||
e_holder; _place_holder; _place_holder; _place_holder; _place_
|
||||
holder; _place_holder; _place_holder; _place_holder; _place_ho
|
||||
lder; _place_holder; _place_holder; _place_holder; _place_hold
|
||||
er; _place_holder; _place_holder; _place_holder; _place_holder
|
||||
; _place_holder; _place_holder; _place_holder; _place_holder;&
|
||||
nbsp_place_holder; _place_holder; _place_holder; _place_holder;&nb
|
||||
sp_place_holder; _place_holder; _place_holder; _place_holder; 
|
||||
_place_holder; _place_holder; _place_holder; _place_holder; _p
|
||||
lace_holder; _place_holder; _place_holder; _place_holder; _pla
|
||||
ce_holder; _place_holder; _place_holder; _place_holder; _place
|
||||
_holder; _place_holder; _place_holder; _place_holder; _place_h
|
||||
older; _place_holder;
|
||||
|
||||
 _place_holder; _place_holder; _place_holder; _place_holder;&n
|
||||
bsp_place_holder; _place_holder; _place_holder; _place_holder; 4&n
|
||||
bsp_place_holder; _place_holder; _place_holder; _place_holder;&nbs
|
||||
p_place_holder; _place_holder; _place_holder; _place_holder; _
|
||||
place_holder; 2 _place_holder; _place_holder; _place_holder; _
|
||||
place_holder; _place_holder; _place_holder; _place_holder; _pl
|
||||
ace_holder; _place_holder; _place_holder; _place_holder; _plac
|
||||
e_holder; _place_holder; _place_holder; _place_holder; _place_
|
||||
holder; _place_holder; _place_holder; _place_holder; _place_ho
|
||||
lder; _place_holder; _place_holder; _place_holder; _place_hold
|
||||
er; _place_holder; _place_holder; _place_holder; _place_holder
|
||||
; _place_holder; _place_holder; _place_holder; _place_holder;&
|
||||
nbsp_place_holder; _place_holder; _place_holder; _place_holder;&nb
|
||||
sp_place_holder; _place_holder; _place_holder; _place_holder; 
|
||||
_place_holder; _place_holder; _place_holder; _place_holder; _p
|
||||
lace_holder; _place_holder; _place_holder; _place_holder; _pla
|
||||
ce_holder; _place_holder; _place_holder; _place_holder; _place
|
||||
_holder; _place_holder; _place_holder; _place_holder; _place_h
|
||||
older; _place_holder;
|
||||
|
||||
>>>
|
||||
|
||||
>>>
|
||||
|
||||
All elements are tested. The search for each element's duplicate does not
|
||||
occur over the entire element list. The default for search_range is 10 and
|
||||
results in looking at the 10 elements in the element list sequentially above
|
||||
and 10 elements sequentially below the test element. _place_holder; In the
|
||||
example given below the elements are sorted so that elements that are
|
||||
physically close to each other will be close to each other in the element
|
||||
list.
|
||||
|
||||
|
||||
The _place_holder;search_range can be set by the user. Setting
|
||||
search_range to a number larger than the number of elements will cause all
|
||||
elements to be searched.
|
||||
|
||||
|
||||
The algorithm will only detect one duplicate element per element. If there are
|
||||
more than two elements with the same connectivity, they can be found by
|
||||
calling **filter/element** multiple times.
|
||||
|
||||
|
||||
The default behavior is to not delete the duplicate
|
||||
elements. _place_holder; However the duplicate elements will be deleted
|
||||
from the mesh if the parameter delete is specified.
|
||||
|
||||
|
||||
In general if you are merging together two meshes and then want to delete
|
||||
duplicate elements the commands might be:
|
||||
|
||||
|
||||
* Merge two mesh objects
|
||||
** addmesh / ** merge / cmohex / cmohex1 / cmohex2
|
||||
* Create an attribute with the median x,y,z coordinate of each element
|
||||
createpts / median
|
||||
|
||||
* Sort and reorder the elements based on the median points. This will insure that elements that occupy the
|
||||
* same location will have element numbers near one another.
|
||||
sort / -def- / index / ascending / ikey / xmed ymed zmed
|
||||
|
||||
reorder/ -def- /ikey
|
||||
|
||||
* Filter and remove duplicate nodes.
|
||||
filter / 1 0 0
|
||||
|
||||
rmpoint / compress
|
||||
|
||||
* Filter and remove duplicate elements.
|
||||
filter / element / / delete
|
||||
|
||||
|
||||
|
||||
>
|
||||
|
||||
>  _place_holder;EXAMPLES:
|
||||
|
||||
>
|
||||
|
||||
>> **filter**
|
||||
|
||||
Filter all nodes and delete duplicates with epsilon tolerance is set
|
||||
automaticly.
|
||||
|
||||
|
||||
**filter** / 1 0 0 / 1.e-3
|
||||
Filter all nodes and delete duplicates where epsilon tolerance is set by user
|
||||
to 1.e-3.
|
||||
|
||||
|
||||
**filter** / pset get point_set
|
||||
Filter a subset of the nodes and delete duplicates with epsilon tolerance set
|
||||
automaticly.
|
||||
|
||||
|
||||
**filter** / 1 0 0 / / min / imt
|
||||
Filter all nodes and delete duplicates with epsilon tolerance set automaticly.
|
||||
When duplicate nodes are detected the imt attribute is examined and the node
|
||||
with minimum imt value is retained.
|
||||
|
||||
|
||||
**filter** / element
|
||||
Filter all elements and set itetclr of duplicates to max(itetclr) + 1. Assign
|
||||
values to iclr1 and iclr2 arrays.
|
||||
|
||||
|
||||
**filter** / element / / nodelete
|
||||
Filter elements and set itetclr of duplicates to max(itetclr) + 1. Assign
|
||||
values to iclr1 and iclr2 arrays.
|
||||
|
||||
|
||||
**filter** / element / / delete
|
||||
Filter elements and delete duplicate elements. Assign values to iclr1 and
|
||||
iclr2 arrays.
|
||||
|
||||
|
||||
**filter** / element / 1e20 / delete
|
||||
Filter all elements (assuming there are less than 1e20) _place_holder;
|
||||
with an exhaustive search and delete duplicate elements. Assign values to
|
||||
iclr1 and iclr2 arrays.
|
||||
|
||||
 _place_holder;
|
||||
|
||||
|
||||
|
||||
20
documentation/lagrit_manual/commands/finish.txt
Executable file
20
documentation/lagrit_manual/commands/finish.txt
Executable file
@@ -0,0 +1,20 @@
|
||||
.. _finish :
|
||||
|
||||
**** _place_holder;
|
||||
|
||||
> **_FINISH_**
|
||||
|
||||
>
|
||||
|
||||
>> Terminate processing this command stream and return to the driver routine.
|
||||
|
||||
> FORMAT:
|
||||
|
||||
>
|
||||
|
||||
>> finish
|
||||
|
||||
 _place_holder;
|
||||
|
||||
 _place_holder;
|
||||
|
||||
45
documentation/lagrit_manual/commands/fset.txt
Executable file
45
documentation/lagrit_manual/commands/fset.txt
Executable file
@@ -0,0 +1,45 @@
|
||||
.. _fset:
|
||||
|
||||
 _place_holder;
|
||||
|
||||
FSET
|
||||
|
||||
> This command _place_holder; is used to _place_holder; define
|
||||
a _place_holder; set _place_holder; of element faces. Defining face
|
||||
sets can be useful for either defining boundary conditions, material
|
||||
interfaces, or surface subsets for further mesh processing.
|
||||
|
||||
> FORMAT:
|
||||
|
||||
>
|
||||
|
||||
>> fset / name / pset, get, pointsetname /
|
||||
|
||||
|
||||
The fset name must be an integer or character string. Currently, only 32 named
|
||||
face sets may exist. However, any number of integer-numbered face sets (up to
|
||||
the total number of faces in the problem) may be defined. Face sets may be
|
||||
used in all of the usual ways that eltsets and psets may be used, e.g :
|
||||
|
||||
|
||||
**cmo/setatt**/ 3dmesh/fluid_structure/**fset**,**get**,blue/
|
||||
|
||||
|
||||
where fluid_structure is the name of a face set attribute.
|
||||
 _place_holder; _place_holder; _place_holder;
|
||||
|
||||
**
|
||||
**NOTE: All modules do not support use of fset.**
|
||||
**
|
||||
>
|
||||
|
||||
> EXAMPLE:
|
||||
|
||||
>
|
||||
|
||||
>>  _place_holder;fset / fname / pset, get psetname
|
||||
|
||||
 _place_holder;
|
||||
|
||||
|
||||
|
||||
153
documentation/lagrit_manual/commands/geniee.txt
Executable file
153
documentation/lagrit_manual/commands/geniee.txt
Executable file
@@ -0,0 +1,153 @@
|
||||
.. _geniee:
|
||||
|
||||
 _place_holder;
|
||||
|
||||
> **_GENIEE_**
|
||||
|
||||
>
|
||||
|
||||
>> OPTION1:
|
||||
|
||||
Generate element connectivity list (jtet) that gives neighbor information.
|
||||
Element connectivity is maintained by LaGriT, but can also be generated by the
|
||||
user with this command.
|
||||
|
||||
>>
|
||||
|
||||
>> The jtet attribute contains for each facet of an element the neighboring
|
||||
element and its local face. _place_holder; For 3D grids the jtet
|
||||
relationship is reflexsive; each element-face pair has exactly one neighboring
|
||||
element-face pair. _place_holder; For 2D grids the jtet relationship can
|
||||
include cycles; a triangle or quad edge may have many edge
|
||||
neighbors. _place_holder; In this case the jtet is constructed as a closed
|
||||
cycle where the jtet of one element-edge pair will be a neighboring element-
|
||||
edge pair whose jtet wil be another neighboring element-edge pair and so on
|
||||
until all neighbors are included in the cycle exactly once.
|
||||
|
||||
>>
|
||||
|
||||
>> The jtet is constructed by looking at matching node numbers and will use
|
||||
the parent nodes if they exist. _place_holder; Faces with matching node
|
||||
coordinates but different node numbers will not be matched.
|
||||
|
||||
For hybrid grids that contain degenerate elements there are two
|
||||
options. _place_holder; If the mesh object attribute jtet_reduce_nnd
|
||||
exists and is set to 1, then faces with repeated node numbers will be matched
|
||||
to faces with the same numbers but not repeated. _place_holder; For
|
||||
example if a degenerate hex has a face 1 1 2 3 and there is an element (prism,
|
||||
tet, pyramid) with face 1 2 3 and if jtet_reduce_nnd is 1, then these faces
|
||||
will be matched. _place_holder; Otherwise they will be marked as external
|
||||
boundary faces.
|
||||
|
||||
>>
|
||||
|
||||
>> OPTION2:
|
||||
|
||||
Attempt to make the topological orientation (itet array) of a triangle, quad,
|
||||
or hybrid tri/quad mesh consistent so that shared edges are traversed in
|
||||
opposite directions. This is only possible in a mesh with jtet_loop_max = 2.
|
||||
For networks with jtet_loop_max > 2 there may not be a configuration that
|
||||
meets the goal.
|
||||
|
||||
>>
|
||||
|
||||
>> This command could also be used to flip the normals of a mesh that is
|
||||
already consistent. For example:
|
||||
|
||||
geniee / -def- / 2dnormal / -1
|
||||
|
||||
>>
|
||||
|
||||
>> _Note:_ For the case where a mesh is not completely edge connected, this
|
||||
module will detect that all elements have not been tested and will warn the
|
||||
user and suggest a command line syntax to test elements not visited.
|
||||
|
||||
|
||||
_Note:_ Code not set up for a mesh with parent/child chains. When check is
|
||||
made, it compares child points. When permutation of elements is done, only
|
||||
itet and jtet arrays are updated.
|
||||
|
||||
>
|
||||
|
||||
> FORMAT:
|
||||
|
||||
>
|
||||
|
||||
>> OPTION 1:
|
||||
|
||||
**geniee**
|
||||
OPTION 2:
|
||||
|
||||
**geniee** / **cmoname** / **2dnormal** / **reference_element_number** / [addatt]
|
||||
**cmoname** - name of mesh object to operate on. Can be / _place_holder; / or /-def-/
|
||||
**2dnormal** - keyword to cause this module to execute
|
||||
**reference_element_number** - default = 1
|
||||
|
||||
This is the element number that will be the reference element that all other
|
||||
elements are compared to. If this parameter is a negative number, the
|
||||
orientation of element number abs(reference_element_number) is reversed and
|
||||
then used as the reference.
|
||||
|
||||
|
||||
**reference_element_number** = 0 will check and report if orientation is consistent, but will not do any flipping.
|
||||
|
||||
**addatt** - if the keyword addatt is included, two new arrays are added to the mesh object.
|
||||
**ipath** - The order in which elements are visited.
|
||||
**ifflip** - _place_holder; _place_holder; _place_holder; 0 if the element orientation was NOT changed
|
||||
 _place_holder; _place_holder; _place_holder;
|
||||
 _place_holder; _place_holder; _place_holder;
|
||||
 _place_holder; _place_holder; _place_holder;
|
||||
 _place_holder; _place_holder; _place_holder; 1 if the element
|
||||
orientation was changed
|
||||
|
||||
|
||||
|
||||
>
|
||||
|
||||
> EXAMPLE:
|
||||
|
||||
>
|
||||
|
||||
>> geniee / cmo / 2dnormal
|
||||
|
||||
|
||||
Check orientation of tri/quad elements and if their orientation is different
|
||||
than element 1, then flip their orientation.
|
||||
|
||||
|
||||
geniee / cmo/2dnormal/-1
|
||||
|
||||
|
||||
Flip the orientation of element one and then make the rest of the mesh
|
||||
consistent with element 1. If the mesh object is already consistent, then this
|
||||
command will reverse the orientation of all the elements in a surface (tri,
|
||||
quad) mesh.
|
||||
|
||||
|
||||
geniee / -def- / 2dnormal / 17
|
||||
|
||||
|
||||
Check orientation of tri/quad elements and if their orientation is different
|
||||
than element 17, then flip their orientation.
|
||||
|
||||
|
||||
geniee / cmo / 2dnormal / 0
|
||||
|
||||
|
||||
Check orientation of tri/quad elements and if their orientation is different
|
||||
than element 1, report the difference but do not change the mesh object
|
||||
orientation.
|
||||
|
||||
|
||||
geniee / cmo / 2dnormal / 0 / addatt
|
||||
|
||||
|
||||
Check orientation of tri/quad elements and if their orientation is different
|
||||
than element 1, report the difference but do not change the mesh object
|
||||
orientation. Create two new attributes. ipath is the search path the algorithm
|
||||
followed through the mesh. ifflip reports the orientation of each element as
|
||||
compared to element 1.
|
||||
|
||||
|
||||
|
||||
|
||||
40
documentation/lagrit_manual/commands/geometry.txt
Executable file
40
documentation/lagrit_manual/commands/geometry.txt
Executable file
@@ -0,0 +1,40 @@
|
||||
.. _geometry:
|
||||
|
||||
> **_GEOMETRY_**
|
||||
|
||||
>
|
||||
|
||||
>> **geometry/create **/geom_name
|
||||
|
||||
>>
|
||||
|
||||
>> Initialize a geometry called geom_name. Change the name of the current
|
||||
geometry to geom_name. Save all values associated with the previous
|
||||
geometry. _place_holder; To associate this geometry with a mesh object use
|
||||
the [cmo/geometry](cmo/cmo_geom.html) command. _place_holder; See III.E
|
||||
for a discussion of geometry.
|
||||
|
||||
>>
|
||||
|
||||
>> **geometry/release **/geom_name
|
||||
|
||||
>>
|
||||
|
||||
>> Release all data structures related to geometry, geom_name and remove
|
||||
geom_name from the list of geometries.
|
||||
|
||||
>
|
||||
|
||||
> EXAMPLES:
|
||||
|
||||
>
|
||||
|
||||
>> **geometry/create/**new_geom/
|
||||
|
||||
**geometry/releas**e/old_geom/
|
||||
 _place_holder;
|
||||
|
||||
> >  _place_holder;
|
||||
|
||||
 _place_holder;
|
||||
|
||||
72
documentation/lagrit_manual/commands/grid2grid.txt
Executable file
72
documentation/lagrit_manual/commands/grid2grid.txt
Executable file
@@ -0,0 +1,72 @@
|
||||
.. _grid2grid:
|
||||
|
||||
 _place_holder;
|
||||
|
||||
## GRID2GRID
|
||||
|
||||
 _place_holder; _place_holder; _place_holder;
|
||||
 _place_holder; _place_holder; _place_holder;
|
||||
 _place_holder; _place_holder; _place_holder; The **grid2grid**
|
||||
command converts a mesh with one element type to a mesh with another. The
|
||||
conversion type is determined by the second argument.
|
||||
|
||||
|
||||
|
||||
FORMAT:
|
||||
|
||||
> **grid2grid **/ ioption / [cmo_sink] / [cmo_source]
|
||||
|
||||
|
||||
ioption: is a character string that determines the element type of the source
|
||||
and sink meshes. There is no 'default' option - this argument must be
|
||||
specified.
|
||||
|
||||
> **quadtotri2** _place_holder; _place_holder; quad to 2 triangles, no
|
||||
new points.
|
||||
|
||||
**prismtotet3** _place_holder; _place_holder; prism to 3 tets, no new points.
|
||||
**quattotri4** _place_holder; _place_holder; quad to 4 triangles, with one new point.
|
||||
**pyrtotet4** _place_holder; _place_holder; pyramid to 4 tets, with one new point.
|
||||
**hextotet5** _place_holder; _place_holder; hex to 5 tets, no new points.
|
||||
**hextotet6** _place_holder; _place_holder; hex to 6 tets, no new points.
|
||||
**prismtotet14** _place_holder; _place_holder; prism to 14 tets, four new points (1 + 3 faces).
|
||||
**prismtotet18** _place_holder; _place_holder; prism to 18 tets, six new points (1 + 5 faces).
|
||||
**hextotet24** _place_holder; _place_holder; hex to 24 tets, seven new points (1 + 6 faces).
|
||||
tree_to_fe  _place_holder; quadtree or octree grid to grid with no parent-
|
||||
type elements.
|
||||
|
||||
|
||||
[ cmo_snk / cmo_src ] : are the mesh_object names. cmo_src is the original
|
||||
grid. cmo_snk
|
||||
|
||||
 _place_holder; _place_holder; _place_holder;
|
||||
 _place_holder; _place_holder; _place_holder;
|
||||
 _place_holder; _place_holder; _place_holder; is the name for the
|
||||
new tet or triangle grid. These may be the same grid, if so desired. If both
|
||||
are left blank,
|
||||
|
||||
 _place_holder; _place_holder; _place_holder;
|
||||
 _place_holder; _place_holder; _place_holder;
|
||||
 _place_holder; _place_holder; _place_holder; the current mesh
|
||||
object will be used. If only one mesh name is given, it will be used at the
|
||||
sink mesh, and the
|
||||
|
||||
 _place_holder; _place_holder; _place_holder;
|
||||
 _place_holder; _place_holder; _place_holder;
|
||||
 _place_holder; _place_holder; _place_holder; current mesh object
|
||||
will be used as the source.
|
||||
|
||||
|
||||
****EXAMPLES:
|
||||
|
||||
> **grid2grid / hextotet****24 _place_holder; **/ _place_holder;
|
||||
cmo_tet / cmo_hex Convert each hex element in cmo_hex to 24 tets and name the
|
||||
new grid cmo_tet.
|
||||
|
||||
**grid2grid / quadtotri4 **/ _place_holder; new_mesh No source mesh is given, so the current mesh object (which is a quad mesh) will have every quad converted into 4 triangles, and saved as new_mesh.
|
||||
**grid2grid / tree_to_fe**** **/ new_mesh / _place_holder; octree_mesh**** Every element in octree_mesh will be scanned to see if it is a parent element. If it is, it will be removed, so only the leaf elements remain. The result will be stored in new_mesh.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
28
documentation/lagrit_manual/commands/help.txt
Executable file
28
documentation/lagrit_manual/commands/help.txt
Executable file
@@ -0,0 +1,28 @@
|
||||
.. _help :
|
||||
|
||||
 _place_holder;
|
||||
|
||||
> **_HELP_**
|
||||
|
||||
>
|
||||
|
||||
>> **help**/code_variable will return the variable definition and the correct
|
||||
value of the variable.
|
||||
|
||||
> FORMAT:
|
||||
|
||||
>
|
||||
|
||||
>> **help**/variable_name
|
||||
|
||||
>
|
||||
|
||||
> EXAMPLES:
|
||||
|
||||
>
|
||||
|
||||
>> **help**/**ipointi**
|
||||
|
||||
|
||||
 _place_holder;
|
||||
|
||||
76
documentation/lagrit_manual/commands/hextotet.txt
Executable file
76
documentation/lagrit_manual/commands/hextotet.txt
Executable file
@@ -0,0 +1,76 @@
|
||||
.. _hextotet:
|
||||
|
||||
 _place_holder;
|
||||
|
||||
## HEXTOTET
|
||||
|
||||
 _place_holder; _place_holder; _place_holder;
|
||||
 _place_holder; _place_holder; _place_holder;
|
||||
 _place_holder; _place_holder; _place_holder; IMPORTANT NOTE: This
|
||||
command, while still recognized, is officially unsupported. Please see
|
||||
[grid2grid](GRID2GRID.html) instead.
|
||||
|
||||
|
||||
|
||||
> The **hextotet** command creates a tetrahedral grid from 3D grids. In 2D the
|
||||
elements are converted to triangles. The first parameter ioption determines
|
||||
how the conversion is performed.
|
||||
|
||||
|
||||
|
||||
|
||||
FORMAT:
|
||||
|
||||
> **hextotet**/ [ ioption ] / cmo_snk / cmo_src / [**rmvolume**]
|
||||
|
||||
|
||||
ioption: is a numerical number indicating the number of tets or triangles to
|
||||
break each element into. If this parameter is missing then default settings
|
||||
are used. The defaults are underlined and will be detirmined by reading the
|
||||
mesh_type of the mesh_object. If mesh_type is quad, **2** is used. If
|
||||
mesh_type is prism, **3** is used. If mesh_type is hex, **6** is used.
|
||||
Otherwise **24** is the default value for ioption.
|
||||
|
||||
The selections include:
|
||||
|
||||
> **_2_** _place_holder; _place_holder; quad to 2 triangles, no new
|
||||
points.
|
||||
|
||||
**_3_** _place_holder; _place_holder; prism to 3 tets, no new points.
|
||||
**4** _place_holder; _place_holder; quad to 4 triangles, with one new point.
|
||||
**4** _place_holder; _place_holder; pyramid to 4 tets, with one new point.
|
||||
**5** _place_holder; _place_holder; hex to 5 tets, no new points.
|
||||
**_6_** _place_holder; _place_holder; hex to 6 tets, no new points.
|
||||
**14** _place_holder; _place_holder; prism to 14 tets, four new points (1 + 3 faces).
|
||||
**18** _place_holder; _place_holder; prism to 18 tets, six new points (1 + 5 faces).
|
||||
**_24_** _place_holder; _place_holder; hex to 24 tets, seven new points (1 + 6 faces).
|
||||
|
||||
|
||||
cmo_snk / cmo_src : are the mesh_object names. cmo_src is the original grid.
|
||||
cmo_snk is the name for the new tet or triangle grid.
|
||||
|
||||
|
||||
**rmvolume **: keyword is optional and will assign hextotet_remove_volume and hextotet_remove_duplicates to 'yes'. This will enable hextotet to use its own algorithm for removing elements with zero volume and duplicate points. It may be prone to epsilon errors for grids over large areas. By default, zero volumes and duplicate points are not removed from the new mesh object cmo_snk.
|
||||
|
||||
|
||||
|
||||
|
||||
EXAMPLES:
|
||||
|
||||
> **hextotet** /** 24 **/ cmo_tet / cmo_hex Convert each hex element in
|
||||
cmo_hex to 24 tets and name the new grid cmo_tet.
|
||||
|
||||
**hextotet** / / cmo_tri / cmo_quad No value is given for ioption, so the default settings are used. The mesh_type of cmo_quad is quad, so each element is converted to two triangles. The new mesh_object is named cmo_tri.
|
||||
**hextotet** /** 3 **/ cmo_tet / cmo_pri / **rmvolume** Each prism element in cmo_pri is converted to three tet elements. Zero volume elements and duplicate points are removed. The new tet mesh object is called cmo_tet.
|
||||
|
||||
|
||||
|
||||
LINKS:
|
||||
|
||||
> [Click here for demos](../demos/hextotet/test/html/main_hextet.html)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
20
documentation/lagrit_manual/commands/infile.txt
Executable file
20
documentation/lagrit_manual/commands/infile.txt
Executable file
@@ -0,0 +1,20 @@
|
||||
.. _infile :
|
||||
|
||||
 _place_holder;
|
||||
|
||||
> **_INPUT OR INFILE_**
|
||||
|
||||
>
|
||||
|
||||
>> These commands instruct LaGriT to begin processing commands from a file.
|
||||
The **infile** commands may be nested. Each _place_holder; set of commands
|
||||
should be terminated with a **finish **command.
|
||||
|
||||
> **FORMAT:**
|
||||
|
||||
>
|
||||
|
||||
>> **infile/**file_name
|
||||
|
||||
**input/**file_name
|
||||
|
||||
20
documentation/lagrit_manual/commands/input.txt
Executable file
20
documentation/lagrit_manual/commands/input.txt
Executable file
@@ -0,0 +1,20 @@
|
||||
.. _input :
|
||||
|
||||
 _place_holder;
|
||||
|
||||
> **_INPUT OR INFILE_**
|
||||
|
||||
>
|
||||
|
||||
>> These commands instruct LaGriT to begin processing commands from a file.
|
||||
The **infile** commands may be nested. Each _place_holder; set of commands
|
||||
should be terminated with a **finish **command.
|
||||
|
||||
> **FORMAT:**
|
||||
|
||||
>
|
||||
|
||||
>> **infile/**file_name
|
||||
|
||||
**input/**file_name
|
||||
|
||||
523
documentation/lagrit_manual/commands/interpolate.txt
Executable file
523
documentation/lagrit_manual/commands/interpolate.txt
Executable file
@@ -0,0 +1,523 @@
|
||||
.. _interpolate:
|
||||
|
||||
## INTERPOLATE
|
||||
|
||||
> The **interpolate** (or **intrp**) command is used to interpolate attribute
|
||||
values from nodes or elements of a source mesh to node or element attributes
|
||||
of a sink mesh. Normally the source grid is coarser or the same resolution as
|
||||
the sink grid. **interpolate** replaces method options in the **doping**
|
||||
command called **integer1, integer2**, and **table**.
|
||||
|
||||
>
|
||||
|
||||
> The **interpolate** methods depend on the location of sink nodes as they
|
||||
relate to the source grid nodes or elements. The interpolations are from
|
||||
either source nodes or elements on to sink points. The **interpolate** values
|
||||
are written to the indicated sink attribute for each sink point. If the
|
||||
indicated sink attribute is of element type, then the centroids for each
|
||||
element are calculated and used for the interpolated sink points.
|
||||
|
||||
>
|
||||
|
||||
> The intrp_method parameter includes **map**, **voronoi**, and
|
||||
**continuous**. The **map** method copies the value from the enclosing source
|
||||
element. **continuous** interpolates on to a sink point using the enclosing
|
||||
source element nodes. Method **voronoi** copies the value from the nearest
|
||||
source node.
|
||||
|
||||
>
|
||||
|
||||
> The remaining **interpolate** parameters are all optional on the command
|
||||
line. tie_option is used to break a tie when a sink point has more than one
|
||||
valid candidate source node or element. flag_option is used to assign an error
|
||||
value, or to assign a value for points not inside the source mesh.
|
||||
intrp_function allows the interpolation function associated with the sink
|
||||
attribute to be set. A kdtree node or element search is used to pair the
|
||||
source mesh to the sink mesh points. Each sink point is paired with either an
|
||||
element or point found with the search. This one-to-one correspondence can be
|
||||
saved as a sink cmo attribute. These attributes are reused during multiple
|
||||
calls to the **interpolate** command instead of repeating a long search. The
|
||||
keyword that allows the attributes to be kept as part of the sink cmo is
|
||||
**keepatt**.
|
||||
|
||||
>
|
||||
|
||||
> The valid element types depend on the **interpolate** method being used. For
|
||||
instance, a valid **continuous** interpolation can not currently be applied
|
||||
using a hex element. Use **hextotet** to convert hex elements of the source
|
||||
grid to tets.
|
||||
|
||||
For valid combinations of **interpolate** methods and options, see the Tables
|
||||
below.
|
||||
|
||||
|
||||
|
||||
|
||||
> The format for the command line is as follows:
|
||||
|
||||
**interpolate **/ intrp_method / cmosink, attsink / 1,0,0 / cmosrc, attsrc /
|
||||
[tie_option] [flag_option] [keep_option] [intrp_function]
|
||||
|
||||
Parameters appearing after the source cmo attribute name are optional.
|
||||
|
||||
|
||||
|
||||
intrp_method is the choice of interpolation methods. These methods evolved
|
||||
from methods available in the **doping** command. The **map** method replaces
|
||||
**doping/integer1** which copied source itetclr values to sink imt values. The
|
||||
**voronoi** method replaces **doping/integer2** which copied nearest node
|
||||
source imt to sink imt. **continuous** evolved from the **doping/table**
|
||||
command. These commands are still similar to the old versions except that they
|
||||
have been generalized to include user chosen attributes and more element
|
||||
types. The choices for intrp_method are as follows:
|
||||
|
||||
>
|
||||
|
||||
>> **map** - For each sink point, search source cmo for an enclosing element.
|
||||
Copy the found source element value to the sink attribute. The source
|
||||
attribute is of type element. To copy from a source attribute of type node,
|
||||
use **voronoi** method.
|
||||
|
||||
**voronoi** - For each sink point, search the source cmo for a nearest node. Copy found source node value to the sink attribute. The source attribute is of type node. To copy from a source attribute of type element, use **map** method. By selecting the nearest source points, Voronoi regions are generated around each sink point. The sink point (node or centroid) is given the value of the attribute associated with the Voronoi generating point whose Voronoi cell the sink point lands in.
|
||||
**continuous** - For each sink point, search the source cmo for an enclosing element. Use the vertices of enclosing element to interpolate a value on to the sink point. The source attribute is of type node. The interpolation is the sum of vertice values multiplied by the relative volume of elements formed by the sink point location on or inside the found element. The element is divided into volumes as determined by the sink point location and its relationship to the vertices of the enclosing element. A triangle becomes three triangles each with a vertices on the sink point. A quad becomes four quads. A tet becomes four tets. WARNING: A hex becomes 8 hexs which depends on orthogonal hexs and so is not currently supported. Use hextotet to convert hex elements to tets. Each vertice value of the found element is multiplied by these relative volumes. The assigned sink point value is the sum of these values divided by the number of element vertices. The interpolation function belonging to the attribute is applied to the vertice values before being summed. These interpolate types include LINEAR, ASINH, and LOG. Other interpolate functions such as min, max, and copy pass the value unchanged. See the cinterpolate() routine for how these interpolation types are handled. The final value of the sink point has the inverse function operation applied.
|
||||
**default** - If source attribute is element type then use **_map_**. If source attribute is node type then use **_continuous_**.
|
||||
>
|
||||
|
||||
>
|
||||
|
||||
cmosink, attsink are the cmo name and attribute name to write interpolated
|
||||
values into. The interpolation are applied to the points of the sink cmo. If
|
||||
the sink attribute is element type, centroids are calculated for each element
|
||||
and these are used for the interpolation methods. All integer attributes are
|
||||
converted to double for the interpolation routines. The interpolated values
|
||||
are then converted to integer if the sink attribute is integer.
|
||||
|
||||
>
|
||||
|
||||
> indexed_set is the set of sink nodes or elements to write interpolated
|
||||
values to. 1,0,0 will select all sink nodes or elements. _place_holder;
|
||||
|
||||
>
|
||||
|
||||
> cmosrc, attsrc are the cmo name and attribute name are the cmo and attribute
|
||||
to interpolate from. Points from the sink grid will be located within source
|
||||
elements or nearest source nodes depending on the method used.
|
||||
|
||||
 _place_holder;
|
||||
|
||||
 _place_holder;
|
||||
|
||||
>
|
||||
|
||||
> The following parameters are optional for the command
|
||||
**interpolate**. _place_holder;
|
||||
|
||||
>
|
||||
|
||||
> tie_option provides a method of choice when multiple candidates are found
|
||||
for nearest node or enclosing element. Along with kdtree search,
|
||||
nearestpoint() and retrieve_within_eps() routines return a list of candidate
|
||||
objects for a sink point. These can be either a list of closest points, or a
|
||||
list of elements the point is on or inside. tie_option chooses one candidate
|
||||
from the possible candidates. The result is a one-to-one correspondence with
|
||||
each sink point paired with a single source node or a single source element.
|
||||
|
||||
>
|
||||
|
||||
>> **_tiemax_** selects the maximum value from candidate nodes or elements.
|
||||
This is the default selection.
|
||||
|
||||
**tiemin** selects the minimum value from candidate nodes or elements.
|
||||
>
|
||||
|
||||
> flag_option is the value used to initialize the sink attribute. These flag
|
||||
values indicate either that there was an error and a value could not be
|
||||
written to the sink attribute. The kdtree element search will assign a flag
|
||||
value if a sink point is located outside the source grid.
|
||||
|
||||
>
|
||||
|
||||
>> **_plus1_** will assign a flag value of maximum source value plus 1.
|
||||
|
||||
**nearest/**near_attribute will find the nearest source node and use the node's attribute value as the flag value. The keyword **nearest** must be followed with the name of the source node attribute to use for the flag values.
|
||||
flag_option given as an integer or real value will use the user's numeric
|
||||
value for the flag assignments.
|
||||
|
||||
>
|
||||
|
||||
> keep_option is used during multiple calls to **interpolate** with the same
|
||||
two grids. It keeps attributes created during the search routines and uses
|
||||
these attributes to look up associated node or element numbers. The
|
||||
**interpolate** command uses kdtree to create sink attributes that pair sink
|
||||
points to associated source node or element numbers. If **map** or
|
||||
**continuous** methods are used, the element attribute named el_gtg will be
|
||||
created. If **voronoi** or the flag_option **nearest** are used, the node
|
||||
attribute named pt_gtg will be created.
|
||||
|
||||
>
|
||||
|
||||
>> **_delatt_** deletes any attributes created during the kdtree searches. By
|
||||
default these attributes are removed.
|
||||
|
||||
**keepatt** keeps any attributes created during the kdtree searches. The attribute names are pt_gtg for nearest node numbers, and el_gtg for enclosing element numbers.
|
||||
>
|
||||
|
||||
> intrp_function replaces the interpolation function associated with the sink
|
||||
attribute. This interpolation function is applied to the final interpolated
|
||||
field value. Valid interpolate functions are linear, asinh, log, copy,
|
||||
sequence, min, incmin, max, incmax, and, or, user. Functions such as min and
|
||||
max pass the interpolation value unchanged.
|
||||
|
||||
 _place_holder;
|
||||
|
||||
 _place_holder;
|
||||
|
||||
>
|
||||
|
||||
> The following tables identify what combinations of methods, options, and
|
||||
element types are supported with the command **interpolate**.
|
||||
|
||||
>
|
||||
|
||||
> This table indicates the type of attributes that can be used with the
|
||||
interpolation methods. If a sink attribute is of type element, centroids are
|
||||
calculated for each sink element and used for the interpolation methods.
|
||||
|
||||
 _place_holder;
|
||||
|
||||
>
|
||||
|
||||
> **SOURCE _place_holder;**
|
||||
|
||||
**node**
|
||||
> **SOURCE _place_holder;**
|
||||
|
||||
**element**
|
||||
>
|
||||
|
||||
> **SINK**
|
||||
|
||||
>  _place_holder;
|
||||
|
||||
>  _place_holder;
|
||||
|
||||
>
|
||||
|
||||
> **map node**
|
||||
|
||||
> no
|
||||
|
||||
> yes
|
||||
|
||||
>
|
||||
|
||||
> **map element**
|
||||
|
||||
> no
|
||||
|
||||
> yes
|
||||
|
||||
>
|
||||
|
||||
> **continuous node**
|
||||
|
||||
> yes
|
||||
|
||||
> no
|
||||
|
||||
>
|
||||
|
||||
> **continuous element**
|
||||
|
||||
> yes
|
||||
|
||||
> no
|
||||
|
||||
>
|
||||
|
||||
> **voronoi node**
|
||||
|
||||
> yes
|
||||
|
||||
> no
|
||||
|
||||
>
|
||||
|
||||
> **voronoi element**
|
||||
|
||||
> yes
|
||||
|
||||
> no
|
||||
|
||||
>
|
||||
|
||||
|
||||
|
||||
>
|
||||
|
||||
> This table shows supported applications for each of the interpolation
|
||||
methods.
|
||||
|
||||
(parenthesis) means the option should work, but is not untested
|
||||
|
||||
NOT means Not Supported
|
||||
|
||||
|
||||
|
||||
>
|
||||
|
||||
> **MAP**
|
||||
|
||||
copy element value to enclosed point
|
||||
|
||||
> **CONTINUOUS**
|
||||
|
||||
interpolate element nodes to enclosed point
|
||||
|
||||
> **VORONOI**
|
||||
|
||||
copy nearest node value
|
||||
|
||||
>
|
||||
|
||||
> **source**
|
||||
|
||||
**elements**
|
||||
> tri, quad, hex, tet, (pyr), (pri), (line)
|
||||
|
||||
> tri, quad, NOT hex, tet, (pyr), (pri), (line)
|
||||
|
||||
> tri, quad, hex, tet, (pyr), (pri), (line), (pnt)
|
||||
|
||||
>
|
||||
|
||||
> **sink**
|
||||
|
||||
**elements**
|
||||
> tri, quad, hex, tet, (pyr), (pri), (line), (pnt)
|
||||
|
||||
> tri, quad, hex, tet, (pyr), (pri), (line), (pnt)
|
||||
|
||||
> tri, quad, hex, tet, (pyr), (pri), (line), (pnt)
|
||||
|
||||
>
|
||||
|
||||
> **source**
|
||||
|
||||
**attribute**
|
||||
> element
|
||||
|
||||
> node
|
||||
|
||||
> node
|
||||
|
||||
>
|
||||
|
||||
> **sink**
|
||||
|
||||
**attribute**
|
||||
> node or element (centroid)
|
||||
|
||||
> node or element (centroid)
|
||||
|
||||
> node or element (centroid)
|
||||
|
||||
>
|
||||
|
||||
> **source**
|
||||
|
||||
**attribute type**
|
||||
> integer or double
|
||||
|
||||
> integer or double
|
||||
|
||||
> integer or double
|
||||
|
||||
>
|
||||
|
||||
> **sink**
|
||||
|
||||
**attribute type**
|
||||
> integer or double
|
||||
|
||||
> NOT integer, double
|
||||
|
||||
> integer or double
|
||||
|
||||
>
|
||||
|
||||
> **interpolation**
|
||||
|
||||
**function**
|
||||
> linear, log, sinh
|
||||
|
||||
all others pass value unaltered
|
||||
|
||||
> linear, log, sinh
|
||||
|
||||
all others pass value unaltered
|
||||
|
||||
> linear, log, sinh
|
||||
|
||||
all others pass value unaltered
|
||||
|
||||
>
|
||||
|
||||
> **tiebreaker**
|
||||
|
||||
> tiemin or tiemax
|
||||
|
||||
> tiemin or tiemax
|
||||
|
||||
> tiemin or tiemax
|
||||
|
||||
>
|
||||
|
||||
> **error flag**
|
||||
|
||||
> plus1, nearest, or user value
|
||||
|
||||
> plus1, nearest, or user value
|
||||
|
||||
> plus1 or user value
|
||||
|
||||
>
|
||||
|
||||
> **added**
|
||||
|
||||
**attributes**
|
||||
>
|
||||
|
||||
keepatt creates attribute el_gtg
|
||||
|
||||
>
|
||||
|
||||
keepatt creates attribute el_gtg
|
||||
|
||||
>
|
||||
|
||||
keepatt creates attribute pt_gtg
|
||||
|
||||
>
|
||||
|
||||
>
|
||||
|
||||
|
||||
|
||||
>
|
||||
|
||||
> FORMAT:
|
||||
|
||||
>
|
||||
|
||||
>> **interpolate **/ intrp_method / cmosink, attsink / 1,0,0 / cmosrc, attsrc
|
||||
/ &
|
||||
|
||||
[tie_option] [flag_option] [keep_option] [intrp_function]
|
||||
|
||||
>>
|
||||
|
||||
>> **interpolate | intrp** _place_holder; _place_holder;
|
||||
/ _place_holder; **map | voronoi | continuous | default
|
||||
** _place_holder;/ _place_holder; &
|
||||
|
||||
cmosink, attsink  _place_holder;/  _place_holder; 1,0,0
|
||||
 _place_holder; / _place_holder; cmosrc, attsrc
|
||||
 _place_holder;/ _place_holder; [ **tiemin | _tiemax_** ]
|
||||
 _place_holder; _place_holder;&
|
||||
|
||||
[ flag_value _place_holder; | _place_holder;
|
||||
**_plus1_ _place_holder; | nearest,** near_attribute ]
|
||||
 _place_holder;[ **keepatt | _delatt_** ]  _place_holder;[
|
||||
intrp_function ]
|
||||
|
||||
>
|
||||
|
||||
> EXAMPLES:
|
||||
|
||||
>
|
||||
|
||||
>> **interpolate / map /** cmo_sink imt /1,0,0/ cmo_src itetclr
|
||||
|
||||
For each node in cmo_sink find an enclosing element from mesh cmo_src. Assign
|
||||
the element's itetclr value to the corresponding imt attribute of cmo_sink.
|
||||
|
||||
>
|
||||
|
||||
>> **interpolate/ map /** cmo_sink Pval /1,0,0/ cmo_src Vval / tiemin, log
|
||||
|
||||
This command will assign source Vval values to sink Pval for elements
|
||||
enclosing cmo_sink points. If the sink point is found within more than one
|
||||
element, the min value of the candidate elements will be chosen. Since the
|
||||
interpolation function "log" is named, it will be applied to the source Vval
|
||||
value before being written to sink attribute Pval.
|
||||
|
||||
>
|
||||
|
||||
>> **interpolate/ voronoi **/ cmo_sink imt /1,0,0/ cmo_src imt
|
||||
|
||||
For each node in cmo_sink, find the closest node in cmo_src. Assign the imt
|
||||
value from the closest cmo_src node to the imt attribute of cmo_sink.
|
||||
|
||||
>
|
||||
|
||||
>> **interpolate/ continuous** / cmo_sink xval /1,0,0/ cmo_src Pv
|
||||
|
||||
For each node in cmo_sink, find a cmo_src element the node is inside.
|
||||
Interpolate the element node values in Pv on to the sink point and write to
|
||||
the sink attribute xval.
|
||||
|
||||
>
|
||||
|
||||
>> **interpolate/ map** /cmo_sink imt /1,0,0/ cmo_src itetclr / **nearest,**
|
||||
imt / **keepatt**
|
||||
|
||||
**interpolate/ map **/cmo_sink imtreal /1,0,0/ cmo_src itetreal / **nearest,** imtreal
|
||||
The first call to interpolate will assign itetclr values from source elements
|
||||
to imt in the sink cmo for points inside the source elements. Any sink point
|
||||
not inside the source grid will be assigned the imt value of the nearest
|
||||
source point. Since keepatt is set, both attributes pt_gtg and el_gtg will be
|
||||
kept as sink cmo attributes and hold the node and element numbers for each
|
||||
sink point.
|
||||
|
||||
The second call to interpolate will find the sink attributes pt_gtg and
|
||||
el_gtg. The nearest point and enclosing element kdtree searches will be
|
||||
skipped. This time the element value in attribute itetreal will be assigned to
|
||||
the sink node attribute imtreal. For points outside the grid, values from
|
||||
nearest node attribute imtreal will be used. Note that the **delatt** keyword
|
||||
does not have to exist, the interpolate attributes are always deleted unless
|
||||
the keyword **keepatt** is used.
|
||||
|
||||
>
|
||||
|
||||
>
|
||||
|
||||
|
||||
|
||||
>
|
||||
|
||||
> [](../../images/vor_rand.gif)
|
||||
|
||||
[Example 1: interpolate / voronoi](../description_voronoi.html)
|
||||
|
||||
Copy nearest source node value to sink point
|
||||
|
||||
> [](../../images/map03_view.gif)
|
||||
|
||||
[Example 2: interpolate / map](../description_map.html)
|
||||
|
||||
Copy source element value to enclosed sink point
|
||||
|
||||
> [](../../images/con02_sink.gif)
|
||||
|
||||
[Example 3: interpolate / continuous](../description_cont.html)
|
||||
|
||||
Interpolate source element vertices to sink point
|
||||
|
||||
>
|
||||
|
||||
 _place_holder;
|
||||
|
||||
33
documentation/lagrit_manual/commands/intersect.txt
Executable file
33
documentation/lagrit_manual/commands/intersect.txt
Executable file
@@ -0,0 +1,33 @@
|
||||
.. _intersect:
|
||||
|
||||
 _place_holder;
|
||||
|
||||
 _place_holder;
|
||||
|
||||
> **_INTERSECT_**
|
||||
|
||||
>
|
||||
|
||||
>> Creates a new Mesh Object from the intersection of two existing Mesh
|
||||
Objects. The existing Mesh Objects have to be topologically 2D and
|
||||
geometrically 3D. The created Mesh Object will be topologically 1D and
|
||||
geometrically 3D. Node quantities for the new Mesh Object will be created by
|
||||
interpolation on the corresponding node quantities of the first input Mesh
|
||||
Object, cmo_1_in.
|
||||
|
||||
>
|
||||
|
||||
>> This command will also apply the **line_graph** option of the **sort**
|
||||
command on the new Mesh Object. This will sort the elements (which will be
|
||||
line segments) into a reasonable order based on their connectivity, and will
|
||||
also create element attributes ctype, cid, and loop_id. **intersect** will
|
||||
create a temporary sort key and use that to reorder the elements, so there is
|
||||
no need to use your own sort key. For more details on the sorting and on the
|
||||
created element attributes, please see [sort](SORT.html).
|
||||
|
||||
> **FORMAT**:
|
||||
|
||||
>
|
||||
|
||||
>> **intersect**/cmo_out/cmo_1_in/cmo_2_in
|
||||
|
||||
217
documentation/lagrit_manual/commands/intersect_elements.txt
Executable file
217
documentation/lagrit_manual/commands/intersect_elements.txt
Executable file
@@ -0,0 +1,217 @@
|
||||
.. _intersect_elements:
|
||||
|
||||
**_INTERSECT_ELEMENTS_**
|
||||
|
||||
> This command takes two meshes and creates an element-based attribute in
|
||||
mesh1 that contains the number of elements in mesh2 that intersected the
|
||||
respective element in mesh1.
|
||||
|
||||
>
|
||||
|
||||
> We define intersection as two elements sharing any common point.
|
||||
|
||||
FORMAT:
|
||||
|
||||
> **intersect_elements** / mesh1 / mesh2 / [attrib_name]
|
||||
|
||||
NOTES:
|
||||
|
||||
> [attrib_name] specifies the name of the element based attribute in mesh1
|
||||
that is created by this command. The default name for this attribute is
|
||||
in_<mesh2>. For example, if the comand syntax was:
|
||||
|
||||
>
|
||||
|
||||
>> **intersect_elements**/cmo_strat/cmo_well/
|
||||
|
||||
>
|
||||
|
||||
> the element based attribute that stores the number of intersections would be
|
||||
named in_cmo_well. It is worth noting that GMV does not take kindly to names
|
||||
that are longer than eight characters and will truncate them without even
|
||||
thinking twice, resulting in the name used in our example being changed to
|
||||
in_cmo_w. Therefore, it is good practice to use your own attribute names less
|
||||
than eight characters if possible.
|
||||
|
||||
>
|
||||
|
||||
> This code has been slightly modified to work with AMR grids produced in X3D.
|
||||
This modification depends on an element based attribute that X3D creates
|
||||
called **itetkid**. If this attribute is not present, **intersect_elements**
|
||||
will **NOT** be able to recognize the AMR grid, and will intersect all
|
||||
elements of the octree. With the itetkid attribute present, only leaves of the
|
||||
octree which intersect will be flagged.
|
||||
|
||||
>
|
||||
|
||||
> **intersect_elements** is not designed to work with every element-element
|
||||
combination, but it is pretty thorough. The following table shows what
|
||||
element/element intersetion capabilities are available. An **X** in the box
|
||||
means that the intersection is supported.
|
||||
|
||||
>
|
||||
|
||||
>  _place_holder;
|
||||
|
||||
> point
|
||||
|
||||
> line
|
||||
|
||||
> tri
|
||||
|
||||
> quad
|
||||
|
||||
> tet
|
||||
|
||||
> pyr
|
||||
|
||||
> hex
|
||||
|
||||
>
|
||||
|
||||
> point
|
||||
|
||||
> **X**
|
||||
|
||||
> **X**
|
||||
|
||||
> **X**
|
||||
|
||||
> **X**
|
||||
|
||||
> **X**
|
||||
|
||||
> **X**
|
||||
|
||||
> **X**
|
||||
|
||||
>
|
||||
|
||||
> line
|
||||
|
||||
> **X**
|
||||
|
||||
> **X**
|
||||
|
||||
> **X**
|
||||
|
||||
> **X**
|
||||
|
||||
> **X**
|
||||
|
||||
>  _place_holder;
|
||||
|
||||
> **X**
|
||||
|
||||
>
|
||||
|
||||
> tri
|
||||
|
||||
> **X**
|
||||
|
||||
> **X**
|
||||
|
||||
> **X**
|
||||
|
||||
> **X**
|
||||
|
||||
> **X**
|
||||
|
||||
>  _place_holder;
|
||||
|
||||
> **X**
|
||||
|
||||
>
|
||||
|
||||
> quad
|
||||
|
||||
> **X**
|
||||
|
||||
> **X**
|
||||
|
||||
> **X**
|
||||
|
||||
> **X**
|
||||
|
||||
> **X**
|
||||
|
||||
>  _place_holder;
|
||||
|
||||
> **X**
|
||||
|
||||
>
|
||||
|
||||
> tet
|
||||
|
||||
> **X**
|
||||
|
||||
> **X**
|
||||
|
||||
> **X**
|
||||
|
||||
> **X**
|
||||
|
||||
> **X**
|
||||
|
||||
>  _place_holder;
|
||||
|
||||
> **X**
|
||||
|
||||
>
|
||||
|
||||
> pyr
|
||||
|
||||
> **X**
|
||||
|
||||
>  _place_holder;
|
||||
|
||||
>  _place_holder;
|
||||
|
||||
>  _place_holder;
|
||||
|
||||
>  _place_holder;
|
||||
|
||||
>  _place_holder;
|
||||
|
||||
>  _place_holder;
|
||||
|
||||
>
|
||||
|
||||
> hex
|
||||
|
||||
> **X**
|
||||
|
||||
> **X**
|
||||
|
||||
> **X**
|
||||
|
||||
> **X**
|
||||
|
||||
> **X**
|
||||
|
||||
>  _place_holder;
|
||||
|
||||
> **X**
|
||||
|
||||
>
|
||||
|
||||
> For example, this means that if you have a mesh that has hexes and tets in
|
||||
it, you could intersect it with a mesh that has anything but pyramids in it.
|
||||
|
||||
>
|
||||
|
||||
> Finally, **intersect_elements** is based on a k-D-R tree implementation to
|
||||
improve performance in many circumstances. Unfortunately, there is no way to
|
||||
improve performance if the elements being intersected have many candidate
|
||||
elements in their bounding boxes. As such, there are situations where running
|
||||
time may be improved by refining mesh2 such that its elements are of
|
||||
comparable size with those of mesh1.
|
||||
|
||||
EXAMPLES:
|
||||
|
||||
> **intersect_elements**/cmo_grid/cmo_sphere/
|
||||
|
||||
>
|
||||
|
||||
> **intersect_elements**/cmo_grid/cmo_well/obswell
|
||||
|
||||
159
documentation/lagrit_manual/commands/kdtree.txt
Executable file
159
documentation/lagrit_manual/commands/kdtree.txt
Executable file
@@ -0,0 +1,159 @@
|
||||
.. _kdtree:
|
||||
|
||||
**** _place_holder;
|
||||
|
||||
> **_KDTREE _place_holder;_**
|
||||
|
||||
>
|
||||
|
||||
>> **KDTRE**E uses the elements of the current mesh object to produce a k-D
|
||||
tree that is stored in the attributes LINKT and SBOX that are appended to the
|
||||
mesh object. _place_holder; Leaf nodes in LINKT each contain exactly one
|
||||
element index. _place_holder; _place_holder; Because of the
|
||||
possibility of triangle overlap, **KDTREE** also produces an array SBOX which
|
||||
gives 'safety boxes'. _place_holder; For each node in the k-D tree, there
|
||||
is a corresponding safety box which is just big enough to contain all the
|
||||
triangles _place_holder; "under" the node. _place_holder; The
|
||||
attributes LINKT and SBOX are used by the subroutine: _place_holder;
|
||||
RETRIEVE_WITHIN_EPS. _place_holder; RETRIEVE_WITHIN_EPS finds all elements
|
||||
with epsilon of the query point (xq,yq,zq). What is actually returned is a
|
||||
small subset of leaves _place_holder; (i.e., elements) that feasibly could
|
||||
be within epsilon of the query point. _place_holder; The user must then do
|
||||
exact geometric tests on this small subset to actually determine which
|
||||
elements are a distance epsilon from the query point.
|
||||
|
||||
 _place_holder;
|
||||
|
||||
>>
|
||||
|
||||
>> subroutine retrieve_within_eps(xq,yq,zq,linkt,sbox,
|
||||
eps,nefound,iefound,ierr)
|
||||
|
||||
> > xq, yq, zq _place_holder;
|
||||
|
||||
>> coordinates of query point
|
||||
|
||||
>>
|
||||
|
||||
>> linkt, sbox
|
||||
|
||||
>> mesh object KDTREE attributes created by the KDTREE command
|
||||
|
||||
>>
|
||||
|
||||
>> eps _place_holder;
|
||||
|
||||
>> search epsilon
|
||||
|
||||
>>
|
||||
|
||||
>> nefound _place_holder;
|
||||
|
||||
>> number of elements found
|
||||
|
||||
>>
|
||||
|
||||
>> iefound
|
||||
|
||||
>> array of elements found
|
||||
|
||||
>>
|
||||
|
||||
>> ierr
|
||||
|
||||
>> error flag _place_holder; _place_holder; (0 = no error)
|
||||
|
||||
>>  _place_holder;
|
||||
|
||||
The attributes LINKT and SBOX may also be used by the subroutine:
|
||||
NEARESTPOINT. _place_holder; NEARESTPOINT uses the k-D tree structure for
|
||||
a triangular surface mesh object _place_holder; (generated by KDTREE) to
|
||||
accelerate finding the nearest point on the surface to the given query point
|
||||
(xq,yq,zq). _place_holder; What is actually returned is a small subset of
|
||||
leaves (i.e., triangles) that feasibly could contain the nearest
|
||||
point. _place_holder; The user must then do exact geometric tests on this
|
||||
small subset to determine points of intersection.
|
||||
|
||||
 _place_holder;
|
||||
|
||||
 _place_holder;subroutine nearestpoint(xq,yq,zq,xic,yic,zic,itet,xs,ys,zs,
|
||||
linkt,sbox,eps,distpossleaf,mtfound,itfound,ierr)
|
||||
|
||||
 _place_holder;
|
||||
|
||||
>>
|
||||
|
||||
>> xq, yq, zq _place_holder;
|
||||
|
||||
>> coordinates of query point
|
||||
|
||||
>>
|
||||
|
||||
>> xic,yic,zic
|
||||
|
||||
>> arrays of coordinates of nodes in the surface mesh object
|
||||
|
||||
>>
|
||||
|
||||
>> itet
|
||||
|
||||
>> array containing trianged-node relationship for surface mesh object.
|
||||
|
||||
>>
|
||||
|
||||
>> xs,ys,zs
|
||||
|
||||
>> coordinates of previous retrieved "nearestpoint". _place_holder; If
|
||||
there is no previous query, set these to a very large value
|
||||
|
||||
>>
|
||||
|
||||
>> linkt, sbox
|
||||
|
||||
>> mesh object. _place_holder; KDTREE attributes created by the KDTREE
|
||||
command
|
||||
|
||||
>>
|
||||
|
||||
>> distpossleaf
|
||||
|
||||
>> work array of length = number of triangles in the surface mesh.
|
||||
|
||||
>>
|
||||
|
||||
>> mtfound
|
||||
|
||||
>> number of triangles found
|
||||
|
||||
>>
|
||||
|
||||
>> itfound
|
||||
|
||||
>> array of triangle (element number) found
|
||||
|
||||
>>
|
||||
|
||||
>> ierr
|
||||
|
||||
>> error flag
|
||||
|
||||
>>  _place_holder;
|
||||
|
||||
 _place_holder;
|
||||
|
||||
>
|
||||
|
||||
>  _place_holder;
|
||||
|
||||
 _place_holder;
|
||||
|
||||
>
|
||||
|
||||
>>  _place_holder;
|
||||
|
||||
 _place_holder;
|
||||
|
||||
 _place_holder;
|
||||
|
||||
 _place_holder;
|
||||
|
||||
26
documentation/lagrit_manual/commands/log.txt
Executable file
26
documentation/lagrit_manual/commands/log.txt
Executable file
@@ -0,0 +1,26 @@
|
||||
.. _log :
|
||||
|
||||
 _place_holder;
|
||||
|
||||
> **_LOG_**
|
||||
|
||||
>
|
||||
|
||||
>> Turn the batch output file and tty output file **off** and **on**. The tty
|
||||
prints to and reads from the user's screen. The batch file is the output file
|
||||
called outx3dgen. Default is **on** for both files.
|
||||
|
||||
> FORMAT:
|
||||
|
||||
>
|
||||
|
||||
>> **log**/**bat**|**tty**/**on**|**off**/
|
||||
|
||||
>
|
||||
|
||||
> EXAMPLE:
|
||||
|
||||
>
|
||||
|
||||
>> **log**/**tty**/**off**
|
||||
|
||||
82
documentation/lagrit_manual/commands/loop.txt
Executable file
82
documentation/lagrit_manual/commands/loop.txt
Executable file
@@ -0,0 +1,82 @@
|
||||
.. _loop:
|
||||
|
||||
 _place_holder;
|
||||
|
||||
## loop
|
||||
|
||||
 _place_holder;
|
||||
|
||||
> The **loop** command repeatedly executes any LaGriT command with either a do
|
||||
loop type or foreach type variable argument control.
|
||||
|
||||
**loop** supports loops up to 10 deep with a maximum of 250 tokens in the /foreach/ list.
|
||||
|
||||
|
||||
 _place_holder;
|
||||
|
||||
FORMAT:
|
||||
|
||||
> **loop**/ **do** / variable / loop_start / loop_stop / loop_stride /
|
||||
**loop_end** / LaGriT_command
|
||||
|
||||
> **loop**/ **foreach** / variable / list_var1 list_var2 ... list_varN /
|
||||
**loop_end** / LaGriT_command
|
||||
|
||||
> **do** or **foreach** : are keywords that determine the type of loop
|
||||
operation.
|
||||
|
||||
>
|
||||
|
||||
> variable : is a character string that can be used in the LaGriT_command. The
|
||||
variable values are controled by the loop range or given in a variable list.
|
||||
|
||||
>
|
||||
|
||||
> loop range: loop_start / loop_stop / loop_stride : Integers that specify the
|
||||
initial, limit, and increment of variable.
|
||||
|
||||
>
|
||||
|
||||
> variable_list: list_var1 list_var2 ... list_varN : Integers, reals or
|
||||
characters that are substituted into variable prior to each execution of the
|
||||
LaGriT_command.
|
||||
|
||||
>
|
||||
|
||||
> **loop_end**: Required keyword string to terminate a foreach list. It is
|
||||
also REQUIRED after loop_stride.
|
||||
|
||||
>
|
||||
|
||||
> LaGriT_command: Any valid LaGriT command including another **loop** command.
|
||||
|
||||
 _place_holder;
|
||||
|
||||
 _place_holder;
|
||||
|
||||
EXAMPLES:
|
||||
|
||||
> **loop / foreach** / MO / cmo1 cmo2 cmo3 / **loop_end **/ **cmo** /
|
||||
**delete** / MO  _place_holder;
|
||||
|
||||
Delete a list of mesh objects. **loop** / **foreach** / FILE / file1 file2
|
||||
file3 / **loop_end** & **loop** / **foreach** / MO / cmo1 cmo2 cmo3 /
|
||||
**loop_end** & **infile** LaGriT.input_control_file  _place_holder;
|
||||
|
||||
Execute a set of commands in a LaGriT control file that utilize the variables
|
||||
FILE and MO.
|
||||
|
||||
>
|
||||
|
||||
>
|
||||
|
||||
**loop** / **do** / NX 2 3 1 / **loop_end** & **loop** / **do** / NY 4 5 1 / **loop_end** & **loop** / **do** / NZ 6 7 1 / **loop_end** & **loop** / **foreach** / X0 0 5.5 10.2345678 / **loop_end **& **createpts**/**xyz**/NX,NY,NZ/X0 0. 0. / 100. 100. 100.  _place_holder;
|
||||
Execute a set of commands in a LaGriT control file that utilize the variables
|
||||
NX,NY,NZ,X0. **loop** / **foreach** / MO cmo1 cmo2 cmo3 / **loop_end** &
|
||||
**loop** / **foreach** / ATTRIBUTE / icr isn itp / **loop_end **&
|
||||
**cmo**/**modatt**/MO/ATTRIBUTE/**ioflag**/l  _place_holder;
|
||||
|
||||
Modify IO flags of three attributes in three different mesh objects.
|
||||
|
||||
[](../demos/trans/test/html/main_trans.html)
|
||||
|
||||
318
documentation/lagrit_manual/commands/lower_d.txt
Executable file
318
documentation/lagrit_manual/commands/lower_d.txt
Executable file
@@ -0,0 +1,318 @@
|
||||
.. _lower_d:
|
||||
|
||||
 _place_holder;
|
||||
|
||||
> **_LOWER_D_**
|
||||
|
||||
>
|
||||
|
||||
>> This suite of commands creates and handles the lower dimension structures
|
||||
associated with a mesh. _place_holder; The existing mesh is labeled
|
||||
'd0'. _place_holder; The next lower dimension mesh 'd1' and so
|
||||
on. _place_holder; For an original 3D mesh, the d1 structures are the
|
||||
surfaces (2D) separating material regions, the d2 structures are the lines
|
||||
separating the d1 surfaces and the d3 structures are the nodes at the ends of
|
||||
the d2 lines.
|
||||
|
||||
Several new attributes are created which belong the original mesh object:
|
||||
|
||||
 _place_holder;
|
||||
|
||||
>>
|
||||
|
||||
>> name
|
||||
|
||||
>> type
|
||||
|
||||
>> length
|
||||
|
||||
>>
|
||||
|
||||
>> d0_nnodes_topo
|
||||
|
||||
>>
|
||||
|
||||
>>  _place_holder;
|
||||
|
||||
>> VINT, nnodes
|
||||
|
||||
>>
|
||||
|
||||
>>  _place_holder;
|
||||
|
||||
>> 0 = interior
|
||||
|
||||
1 = surface node
|
||||
|
||||
2 = line node
|
||||
|
||||
3 = line end node
|
||||
|
||||
>>
|
||||
|
||||
>> d1_nnodes
|
||||
|
||||
>> INT, scalar
|
||||
|
||||
>> number of nodes in this structure
|
||||
|
||||
>>
|
||||
|
||||
>> d1_elements
|
||||
|
||||
>> INT, scalar
|
||||
|
||||
>> number of elements in this structure
|
||||
|
||||
>>
|
||||
|
||||
>> d1_nef_cmo
|
||||
|
||||
>> INT, scalar
|
||||
|
||||
>> number of facets/element in this structure
|
||||
|
||||
>>
|
||||
|
||||
>> d1_nee_cmo
|
||||
|
||||
>> INT, scalar
|
||||
|
||||
>> number of edges/element in this structure
|
||||
|
||||
>>
|
||||
|
||||
>> d1_nen_cmo
|
||||
|
||||
>> INT, scalar
|
||||
|
||||
>> number of nodes/element in this structure
|
||||
|
||||
>>
|
||||
|
||||
>> d1_jtet_cycle_max
|
||||
|
||||
>> INT, scalar
|
||||
|
||||
>> the longest jtet cycle in this structure
|
||||
|
||||
>>
|
||||
|
||||
>> d1_itettyp
|
||||
|
||||
>> VINT d1_elements
|
||||
|
||||
>> element type
|
||||
|
||||
>>
|
||||
|
||||
>> d1_itetclr
|
||||
|
||||
>> VINT d1_elements
|
||||
|
||||
>> element selection number
|
||||
|
||||
>>
|
||||
|
||||
>> d1_itet off
|
||||
|
||||
>> VINT d1_elements
|
||||
|
||||
>> offset to d1_itet
|
||||
|
||||
>>
|
||||
|
||||
>> d1_jtet off
|
||||
|
||||
>> VINT d1_elements
|
||||
|
||||
>> offset to d1_jtet
|
||||
|
||||
>>
|
||||
|
||||
>> d1_itet
|
||||
|
||||
>> VINT d1_elements xd1_neu_cmo
|
||||
|
||||
>> list of nodes for each element
|
||||
|
||||
>>
|
||||
|
||||
>> d1_jtet
|
||||
|
||||
>> VINT d1_elements xd1_nef_cmo
|
||||
|
||||
>> list of face neighbors
|
||||
|
||||
>>
|
||||
|
||||
>> d1_elm_d0
|
||||
|
||||
>> VINT d1_elements _place_holder;
|
||||
|
||||
>> elements face # in original mesh that this element came from
|
||||
|
||||
>>
|
||||
|
||||
>> d2_nnodes
|
||||
|
||||
>> INT, scalar
|
||||
|
||||
>> number of nodes in this structure
|
||||
|
||||
>>
|
||||
|
||||
>> d2_elements
|
||||
|
||||
>> INT, scalar
|
||||
|
||||
>> number of elements in this structure
|
||||
|
||||
>>
|
||||
|
||||
>> d2_nef_cmo
|
||||
|
||||
>> INT, scalar
|
||||
|
||||
>> number of facets/element in this structure
|
||||
|
||||
>>
|
||||
|
||||
>> d2_nee_cmo
|
||||
|
||||
>> INT, scalar
|
||||
|
||||
>> number of edges/element in this structure
|
||||
|
||||
>>
|
||||
|
||||
>> d3_nen_cmo
|
||||
|
||||
>> INT, scalar
|
||||
|
||||
>> number of nodes/element in this structure
|
||||
|
||||
>>
|
||||
|
||||
>> d2_jtet_cycle_max
|
||||
|
||||
>> INT, scalar
|
||||
|
||||
>> the longest jtet cycle in this structure
|
||||
|
||||
>>
|
||||
|
||||
>> d2_itettyp
|
||||
|
||||
>> VINT d2_elements
|
||||
|
||||
>> element type
|
||||
|
||||
>>
|
||||
|
||||
>> d2_itetclr
|
||||
|
||||
>> VINT d2_elements
|
||||
|
||||
>> element material number
|
||||
|
||||
>>
|
||||
|
||||
>> d2_itet off
|
||||
|
||||
>> VINT d2_elements
|
||||
|
||||
>> offset to d2_itet
|
||||
|
||||
>>
|
||||
|
||||
>> d2_jtet off
|
||||
|
||||
>> VINT d2_elements
|
||||
|
||||
>> offset to d2_jtet
|
||||
|
||||
>>
|
||||
|
||||
>> d2_itet
|
||||
|
||||
>> VINT d2_elements xd2_neu_cmo
|
||||
|
||||
>> list of nodes for each element
|
||||
|
||||
>>
|
||||
|
||||
>> d2_jtet
|
||||
|
||||
>> VINT d2_elements xd2_nef_cmo
|
||||
|
||||
>> list of face neighbors _place_holder;
|
||||
|
||||
>>
|
||||
|
||||
>> d2_elm_d1
|
||||
|
||||
>> VINT d2_elements
|
||||
|
||||
>> element & face that this element came from in next higher level structure
|
||||
|
||||
>>
|
||||
|
||||
>> d3_nnodes
|
||||
|
||||
>> INT, scalar
|
||||
|
||||
>> number of nodes in this structure
|
||||
|
||||
>>
|
||||
|
||||
>> lower_d_flag
|
||||
|
||||
>> INT, scalar
|
||||
|
||||
>> 0= no lower d structure exist
|
||||
|
||||
=1 lower_d structures exist and are valid
|
||||
|
||||
=2 lower_d structures not valid
|
||||
|
||||
>>
|
||||
|
||||
>> The above set of attributes are created if the original mesh is
|
||||
3D. _place_holder; If the original mesh is 2D then the d1 structures are
|
||||
created, but the d2 structures are simply the d2_nnodes. _place_holder; If
|
||||
the original mesh is 1D, then only the d1_nnodes structure is created.
|
||||
|
||||
>>
|
||||
|
||||
>> At the time the lower_d structures are created color table attributes:
|
||||
d0_clrtab, d0_nclrs, .. are also created.
|
||||
|
||||
>
|
||||
|
||||
> FORMAT:
|
||||
|
||||
>
|
||||
|
||||
>> **lower_d **/ **create**/ [cmo_name]
|
||||
|
||||
 _place_holder; create lower_d structures in mesh object
|
||||
|
||||
**lower_d** /** release**/ [cmo_name]
|
||||
 _place_holder;release lower_d structures
|
||||
|
||||
**lower_d** / **extract**/ [cmo_name/cmo1/cmo2/cmo2]
|
||||
 _place_holder;create lower_d structures into named mesh objects cmo1,
|
||||
cmo2, cmo3.
|
||||
|
||||
**lower_d** /** filter**/ [cmo_name] /[iclr1 | itp | **imt **| **clr **] / value [ **and** | **or** | **new** ]
|
||||
 _place_holder; these commands are advised for expert users only.
|
||||
|
||||
>
|
||||
|
||||
> EXAMPLES:
|
||||
|
||||
>
|
||||
|
||||
>>  _place_holder;
|
||||
|
||||
252
documentation/lagrit_manual/commands/massage.txt
Executable file
252
documentation/lagrit_manual/commands/massage.txt
Executable file
@@ -0,0 +1,252 @@
|
||||
.. _massage:
|
||||
|
||||
 _place_holder;
|
||||
|
||||
> **_MASSAGE_**
|
||||
|
||||
>
|
||||
|
||||
> **MASSAGE** creates, annihilates, and moves nodes and swaps connections in a
|
||||
2D or 3D mesh in order to improve element aspect ratios and establish user-
|
||||
desired edge lengths.
|
||||
|
||||
>
|
||||
|
||||
> Specifically, **MASSAGE** performs up to four iterations of a loop which
|
||||
calls AGD3D (a routine for automated merging of nodes), RECON (a routine for
|
||||
automated reconnection of edges), and SGD (a routine for element aspect ratio
|
||||
improvement using smoothing). **MASSAGE** then calls CEL_CHAIN which performs
|
||||
Rivara edge refinement and then another call to RECON. _place_holder; In
|
||||
the case of 2-D surface grids, this is then followed by a call to CER_CHAIN
|
||||
which is another edge refinement routine and then a final call to RECON if
|
||||
necessary.
|
||||
|
||||
>
|
||||
|
||||
> AGD3D will attempt to merge edges that are shorter than
|
||||
merge_length. _place_holder; CEL_CHAIN will attempt to bisect edges that
|
||||
are longer than bisection_length. _place_holder; For 2-D surface grids,
|
||||
CER_CHAIN will attempt to bisect edges that deviate from an averaged surface
|
||||
normal ("have a roughness of") greater than tolroughness. RECON will attempt
|
||||
to create 'nice' elements by using face swapping. _place_holder; (The
|
||||
LaGriT command MODE/RECON can alter the meaning of 'nice'. _place_holder;
|
||||
The default is to reconnect to restore the delaunay
|
||||
criterion. _place_holder; Calling MODE/RECON/GEOM prior to the MASSAGE
|
||||
call will create 'plumper' elements). _place_holder; SGD will attempt to
|
||||
improve element aspect ratios by moving nodes.
|
||||
|
||||
>
|
||||
|
||||
> The actions of MASSAGE are controlled by values of these four parameters:
|
||||
|
||||
>
|
||||
|
||||
> * bisection_length _place_holder; - edge length that will trigger
|
||||
bisection.
|
||||
|
||||
> * merge_length - edge length that will trigger merging.
|
||||
|
||||
> * toldamage - maximum grid deformation of interfaces and external
|
||||
boundaries allowed in a single merge, smooth or reconnection event.
|
||||
|
||||
> * tolroughness - (for 2D surface grids only) _place_holder; measure of
|
||||
grid roughness (deviation from average surface normal) that triggers
|
||||
refinement.
|
||||
|
||||
>
|
||||
|
||||
> **bisection_length** can either be a scalar value or a node field (a node
|
||||
attribute). In the first case, the algorithm directly compares the edge length
|
||||
to the **bisection_length** value. If the edge length is greater than the
|
||||
**bisection_length**, the edge will be refined. In the second case, the
|
||||
algorithm compares the edge length to the minimum value of the field at the
|
||||
two nodes incident to this edge. If the edge lenght is greater than this
|
||||
minimum value, the edge will be refined. Thus, one should put a minimum floor
|
||||
value (probably equal to twice the desired minimum edge lenth) for the field.
|
||||
Otherwise the code will refine indefinitely. For an example of an appropriate
|
||||
field, see **MASSAGE2** at the end.
|
||||
|
||||
>
|
||||
|
||||
> toldamage is a parameter which controls how much the grid will be
|
||||
deformed. _place_holder; The 'damage' is a measure of how much interfaces
|
||||
and external boundaries are deformed. _place_holder; Roughly, it measures
|
||||
the depths of 'dents' that are invariably introduced when nodes are moved,
|
||||
annihilated, and faces are swapped. We guarantee that the damage of any single
|
||||
node movement, node annihilation, or face swap is bounded by toldamage. So if
|
||||
toldamage is set to an extremely small number, one can expect hardly any node
|
||||
movements, annihilations, or face swaps will be allowed. _place_holder;
|
||||
Conversely, if toldamage is set too large, physical interfaces may be
|
||||
significantly deformed by the action of **MASSAGE**. _place_holder;
|
||||
Experience has shown that setting toldamage equal to approximately .01 times
|
||||
the diameter of the mesh frequently gives acceptable results.
|
||||
 _place_holder;
|
||||
|
||||
>
|
||||
|
||||
> The guidelines for selecting bisection_length, merge_length, toldamage , and
|
||||
tolroughness are as follows. _place_holder; bisection_length should not be
|
||||
smaller than merge_length, or the action of merging nodes together will be
|
||||
largely pointless because the newer, longer edges created by merging will
|
||||
simply be bisected again. _place_holder; In fact, merging all edges of
|
||||
length > merge_length together can easily create edges of length roughly
|
||||
3*merge_length in the mesh. _place_holder; Hence it is recommended that
|
||||
bisection_length be at least three times as large as merge length.
|
||||
|
||||
>
|
||||
|
||||
> Merges of edges of length <= merge_length are meant to coarsen the mesh, but
|
||||
are not meant to deform surfaces and material interfaces on this
|
||||
scale. _place_holder; The amount of material/surface deformation
|
||||
(toldamage) is meant to be considerably less than merge_length.
|
||||
|
||||
>
|
||||
|
||||
> On the other hand, the maximum roughness tolerated in the graph
|
||||
(tolroughness) should be considerably more than toldamage, or roughness
|
||||
refinement will be triggered by actions such as flipping or merging.
|
||||
|
||||
>
|
||||
|
||||
> Hence, our guidelines for selecting the parameters are:
|
||||
|
||||
>
|
||||
|
||||
> bisection_length >= 3*merge_length>> toldamage
|
||||
|
||||
tolroughness >= 10*toldamage _place_holder; (for 2-D surface grids).
|
||||
|
||||
>
|
||||
|
||||
> For example, for a grid with diameter of order three, we have used:
|
||||
|
||||
>
|
||||
|
||||
> bisection_length, merge_length, toldamage, tolroughness =.3, .1, .01, .1
|
||||
|
||||
>
|
||||
|
||||
> If one of {bisection_length, merge_length} is omitted, the omitted one will
|
||||
be set so that bisection_length=3*merge_length.
|
||||
|
||||
If they are both omitted, they will both be taken to be infinity.
|
||||
|
||||
If toldamage is not specified, no node annihilation will take place.
|
||||
|
||||
If tolroughness is not specified, no refinement on roughness will occur and
|
||||
thus the format is compatible with old decks where refinement on roughness did
|
||||
not occur.
|
||||
|
||||
>
|
||||
|
||||
> The final, optional keywork argument(s) can be one or more of nosmooth,
|
||||
norecon, lite, ignoremats, strictmergelength, checkaxy, semiexclusive, and
|
||||
exclusive. _place_holder;
|
||||
|
||||
* Specifying nosmooth will turn off the 'smooth' step by skipping the call to SGD.
|
||||
* Specifying norecon will turn off all 'recon' steps.
|
||||
* If lite is specified, only one iteration of the merging/reconnection/smoothing loop is executed, and a reconnection after edge refinement is omitted. _place_holder; This is suitable for applications, such as Gradient Weighted Moving Finite Elements, where **MASSAGE** is called repeatedly.
|
||||
* The optional argument ignoremats causes **MASSAGE** to process the multimaterial mesh in a single material mode; it ignores the material interfaces. _place_holder;
|
||||
* The optional argument strictmergelength forces strict interpretation of merge_length so that there is no merging along the edges of flat elements. _place_holder; This is important if ignoremats is specified to avoid losing the interfaces.
|
||||
*  _place_holder;If checkaxy is given, then we insure that for 2D meshes, the output mesh will have positive xy-projected triangle areas, provided that the input mesh had them in the first place. _place_holder;
|
||||
* If exclusive is given, then edge refinement operations will only be performed on edges whose endpoints are _both_ in the PSET that **MASSAGE** is working on. _place_holder; (As usual, new nodes created by refinement are added to the PSET so that **MASSAGE** can refine edges recursively.) _place_holder; The default behavior is 'inclusive', where only ONE edge endpoint has to belong to the PSET for the edge to be eligible for refinement.
|
||||
* If semiexclusive is given, refinement will only be triggered by edges with both endpoints in the PSET, but some edges with less than two endpoints in the PSET might be refined as part of a 'Rivara chain' triggered by the refinement of an edge with both endpoints in the PSET. _place_holder; This represents an intermediate case between 'inclusive' and exclusive
|
||||
|
||||
> Note: _place_holder; Since CEL_CHAIN is called only once at the end of
|
||||
**MASSAGE**, it may be necessary to call **MASSAGE** twice for optimal
|
||||
results. _place_holder; This is because annihilation of nodes is done with
|
||||
an intent to improve element aspect ratios, but cannot be effective if there
|
||||
are too few nodes initially.
|
||||
|
||||
>
|
||||
|
||||
> Note: The user may wish to issue a "**RMPOINT/COMPRESS**" after **MASSAGE
|
||||
**operations that merge a significant number of nodes.
|
||||
|
||||
>
|
||||
|
||||
> FORMAT:
|
||||
|
||||
>
|
||||
|
||||
> **massage**/bisection_length/merge_length/toldamage/[tolroughness]/[ifirst,i
|
||||
last,istride]/
|
||||
|
||||
 _place_holder; _place_holder; _place_holder; [**nosmooth**]/[**no
|
||||
recon**][**strictmergelength**]/[**ignoremats**]/[**lite]**/[**checkaxy**]/[**
|
||||
semiexclusive**]/**[exclusive**]
|
||||
|
||||
>
|
||||
|
||||
>
|
||||
|
||||
EXAMPLES:
|
||||
|
||||
>
|
||||
|
||||
> **massage**/0.3/0.1/0.01/
|
||||
|
||||
 _place_holder;Mesh edges longer than 0.3 will be bisected; mesh edges
|
||||
shorter than 0.1 might be collapsed if that causes damage (normal surface
|
||||
motion) to material interfaces or external boundaries less than 0.01 ;
|
||||
smoothing of nodes causing damage less than 0.01 is allowed ; face swapping
|
||||
causing damage less than 0.01 is allowed.
|
||||
|
||||
>
|
||||
|
||||
> **massage**/H_SCALE/0.1/0.01/
|
||||
|
||||
 _place_holder;Same as above, except that the **bisection_length** is a
|
||||
node field called H_SCALE in this case.
|
||||
|
||||
>
|
||||
|
||||
> **massage/**0.3/0.1/0.01/0.1/
|
||||
|
||||
Same as above but for 2-D surface meshes, roughness greater than 0.1 will
|
||||
trigger refinement.
|
||||
|
||||
>
|
||||
|
||||
> **massage**/0.3/0.1/0.01/**pset,get,**pset1
|
||||
|
||||
Mesh edges (containing at least one endpoint in pset1) longer than 0.3 will be
|
||||
bisected; mesh edges shorter than 0.1 might be collapsed if that causes damage
|
||||
(normal surface motion) to material interfaces or external boundaries less
|
||||
than 0.01 and if the annihilated node is in pset1; _place_holder;
|
||||
smoothing of nodes in pset1 causing damage less than 0.01 is allowed; face
|
||||
swapping causing damage less than 0.01 is allowed (unfortunately, LaGriT at
|
||||
this time does not restrict swapping to pset1).
|
||||
|
||||
>
|
||||
|
||||
> **massage**/0.3/0.1/0.01/**pset,get,**pset1**/nosmooth**
|
||||
|
||||
 _place_holder;As above, but without smoothing.
|
||||
|
||||
>
|
||||
|
||||
> **massage**/1.e+20/0.1/0.1/1,0,0/**nosmooth**
|
||||
|
||||
Because of the virtually infinite value of bisection_length,no edges will be
|
||||
bisected. _place_holder; Since merge_length=toldamage=0.1, merging of
|
||||
edges _place_holder; of length less than 0.1 will be considered, and will
|
||||
not be rejected because of excessive damage. _place_holder; Hence we
|
||||
expect that all edges of length less than 0.1 will be merged away (except in
|
||||
those cases where merging would invert tetrahedra or change material
|
||||
topology). _place_holder; _place_holder; Because **nosmooth** is
|
||||
specified, no smoothing will take place. _place_holder; Face swapping
|
||||
causing damage less than toldamage is allowed
|
||||
|
||||
>
|
||||
|
||||
> **massage**/1.e+20/1.e-9/1.e-9/1,0,0/**nosmooth**/**strictmergelength**/**ig
|
||||
noremats**
|
||||
|
||||
This set of arguments will remove degenerate elements from a mesh by merging
|
||||
nodes that have the same coordinate values ( within 1.e-9).
|
||||
|
||||
 _place_holder;
|
||||
|
||||
|
||||
|
||||
98
documentation/lagrit_manual/commands/massage2.txt
Executable file
98
documentation/lagrit_manual/commands/massage2.txt
Executable file
@@ -0,0 +1,98 @@
|
||||
.. _massage2:
|
||||
|
||||
 _place_holder;
|
||||
|
||||
> **_MASSAGE2_**
|
||||
|
||||
>
|
||||
|
||||
> **MASSAGE2** iteratively calls MASSAGE to refine adaptively according to a
|
||||
gradient field. Thus, the **bisection_length** option must be a field.
|
||||
|
||||
>
|
||||
|
||||
> FORMAT:
|
||||
|
||||
>
|
||||
|
||||
> **massage2** / file_name / min_scale / bisection_length / merge_length /
|
||||
toldamage / [tolroughness] / [ifirst,ilast,istride]/
|
||||
|
||||
 _place_holder; _place_holder; _place_holder; [**nosmooth**]/[**no
|
||||
recon**][**strictmergelength**]/[**ignoremats**]/[**lite]**/[**checkaxy**]/[**
|
||||
semiexclusive**]/**[exclusive**]
|
||||
|
||||
>
|
||||
|
||||
>
|
||||
|
||||
|
||||
**file_name** is a file which contains a set of LaGriT commands that calculates the gradient field based on the distance field. In other words, the gradient field is a function of the distance field. It is necessary to have this file when using this routine, as the field must be updated after each refinement iteration.
|
||||
|
||||
**_Creating user function file for MASSAGE2 routine_**
|
||||
>
|
||||
|
||||
> This file contains a set of LaGriT commands which calculate the gradient
|
||||
field for refinement based on the distance field.
|
||||
|
||||
>
|
||||
|
||||
> A file could be written like this:
|
||||
|
||||
>
|
||||
|
||||
> #user_function.mlgi
|
||||
|
||||
#An example of calculating the gradient field **F** as a linear function of
|
||||
the distance field **D**
|
||||
|
||||
#Define some coefficients for the function
|
||||
|
||||
define / COEF_A /
|
||||
|
||||
define / COEF_B /
|
||||
|
||||
|
||||
#Formula **F** = COEF_A * **D** + COEF_B
|
||||
|
||||
#First remove any distance field that exists and recompute the distance field
|
||||
|
||||
cmo / DELATT / mo_sink / dfield
|
||||
|
||||
compute / distance_field / mo_sink / mo_src / dfield
|
||||
|
||||
|
||||
#Calculate **F**
|
||||
|
||||
math / multiply / mo_sink / ref_field / 1,0,0 / mo_sink / dfield / COEF_A
|
||||
|
||||
math / add / mo_sink / ref_field / 1,0,0 / mo_sink / ref_field / COEF_B
|
||||
|
||||
|
||||
finish The user does not have to put a floor value for the gradient field in
|
||||
this case (unlike in MASSAGE), as MASSAGE2 will calculate the floor value
|
||||
automatically. However, the minimum length scale 'min_scale' must be
|
||||
specified.
|
||||
|
||||
|
||||
The user must also create a node-based attribute for the gradient field before
|
||||
calling MASSAGE2. In the example above, attribute 'ref_field' must already
|
||||
exist in the mesh object. The name of the field must also match the
|
||||
'field_name' argument in the MASSAGE2 command.
|
||||
|
||||
|
||||
**min_scale** is the minimum length scale of the mesh (the minimum desired edge length).
|
||||
|
||||
See [**MASSAGE**](MASSAGE.html) for other arguments.
|
||||
|
||||
>
|
||||
|
||||
> EXAMPLE:
|
||||
|
||||
>
|
||||
|
||||
> **massage2** / user_function.mlgi / 0.1 / ref_field / 1.e-5 / 1.e-5 /
|
||||
strictmergelength
|
||||
|
||||
|
||||
|
||||
155
documentation/lagrit_manual/commands/math.txt
Executable file
155
documentation/lagrit_manual/commands/math.txt
Executable file
@@ -0,0 +1,155 @@
|
||||
.. _math:
|
||||
|
||||
## MATH
|
||||
|
||||
> The **math** routine operates on attributes of a mesh object(s). It performs
|
||||
arithmetic operations or evaluates mathematical functions on the source mesh
|
||||
object or objects, and places the results in the sink mesh object. The source
|
||||
and sink mesh objects can be the same, and there can be either one or two
|
||||
source objects, depending on the operation selected.
|
||||
|
||||
>
|
||||
|
||||
> All attributes must have the same type, rank, and length.
|
||||
|
||||
The last parameter, value, may or may not be used according to the operation
|
||||
details listed below.
|
||||
|
||||
For the standard arithmetic operations, value can be either a constant or an
|
||||
attribute. These arithmetic operations work for all types of attributes.
|
||||
|
||||
For the mathematical functions other than **floor** and
|
||||
**ceiling**, _place_holder; value is omitted, and the function is
|
||||
performed on the src_attr and stored in the sink_attr. Mathematical functions
|
||||
other than **floor** and **ceiling **are not implemented for attributes whose
|
||||
values are integers.
|
||||
|
||||
FORMAT:
|
||||
|
||||
> **math** / operation / cmo_sink/attr_sink / range /cmo_src/attr_src / [
|
||||
value ]
|
||||
|
||||
|
||||
operation: The first parameter is one of the following keywords that indicates
|
||||
the type of work to perform.
|
||||
|
||||
> **plus, add, minus, sub, subtract, times, _place_holder; multiply, mult,
|
||||
divide, min, max, modulo ** are arithmetic operators; the result is stored in
|
||||
sink_attr:
|
||||
|
||||
sink_attr = (src_attr) operator (value), where value can be either a numerical
|
||||
constant or a second mesh object attribute.
|
||||
|
||||
min, max are not to be confused with the minimum or maximum value of an
|
||||
attribute; rather the the result is a comparison of pairs of source values.
|
||||
|
||||
>
|
||||
|
||||
> **sin, cos, tan, ln** (natural log), and **log10** are mathematical
|
||||
functions. The value parameter is omitted, and the function is performed on
|
||||
the src_attr and stored in the sink_attr. These functions are not implemented
|
||||
for integer attributes.
|
||||
|
||||
>
|
||||
|
||||
> **floor** and **ceiling** are mathematical functions where value is used as
|
||||
the lower or upper limit, the value(s) of src_attr are checked against value,
|
||||
and the results are stored in the sink_attr. These functions work for all
|
||||
types of attributes.
|
||||
|
||||
>
|
||||
|
||||
> **power** function uses both value parameters. The first value or src_attr
|
||||
is raised to the power of the second value or attribute. You cannot use two
|
||||
constants. At least one of the sources must be an attribute. The result is
|
||||
stored in the sink_attr.
|
||||
|
||||
>
|
||||
|
||||
> **exp** and **exp10** functions raise the constant e or the constant 10 to
|
||||
the power specified by src_attr and stores the result in the sink_attr.
|
||||
|
||||
>
|
||||
|
||||
> <>**integrate** function computes the product of 'field_value 'times
|
||||
'element volume' at each element and either saves these products or sums the
|
||||
products and saves the integrated result.
|
||||
|
||||
The syntax is: math/integrate/cmo_sink/attr_sink/range/attr_src_field<>
|
||||
|
||||
<>The 'field_value' for an element is either the value of attr_src (if the
|
||||
attr_src is an element attribute and has length 'nelements') or is the average
|
||||
of the values at the vertices of the element (if the attr_src is a node
|
||||
attribute has length 'nnodes').
|
||||
|
||||
If sink_attr does not exist or if it exists and has length 'nelements' and
|
||||
type 'VDOUBLE' the products (<> <>'field_value' times 'element_volume') are
|
||||
stored in sink_attr.
|
||||
|
||||
If sink_attr exists and has length 'scalar' and type 'REAL', then the products
|
||||
are summed up and the resulting sum if stored in sink_attr. (If the user
|
||||
requires just the integrated sum this alternative avoids having to use the
|
||||
pair of commands 'integrate, sum' and also avoids creating the 'nelement' long
|
||||
sink attribute)
|
||||
|
||||
It is assumed that the sink and source attributes are in the same mesh object
|
||||
and the second cmo name is ignored.
|
||||
|
||||
If range is used, it must refer to a set of elements.
|
||||
|
||||
>
|
||||
|
||||
> **sum** adds all node or element values in attr_src, within the selected
|
||||
range and writes the result to attr_sink. The sink attribute must be of type
|
||||
'REAL' or 'INT' (length='scalar') and will be created if it does not exist.
|
||||
|
||||
|
||||
cmo_sink, attr_sink: are the sink cmo and sink attribute for the math results
|
||||
to be written to. These parameters are required for all math operations.
|
||||
|
||||
|
||||
range: is the selection set of elements or nodes for the math operation and
|
||||
may be in one of these 3 forms:
|
||||
|
||||
> /ifirst,ilast,istride / numbers indicating attribute set _place_holder;
|
||||
(1,0,0 means all elements or nodes)
|
||||
|
||||
/**pset,get**, pset_name / for attributes with length =
|
||||
'nnodes' _place_holder; (all nodes in the named point set)
|
||||
|
||||
/**eltset,get**, eltset_name / for attributes with length = 'nelements' (all
|
||||
elements in the named element set)
|
||||
|
||||
|
||||
value: is required by some math operations and can be of type constant or can
|
||||
be a cmo attribute. The following are possible forms:
|
||||
|
||||
> /cmo_src2/attr_src2/ where cmo_src2 may be the same name as the source cmo,
|
||||
or the name of a second source cmo.
|
||||
|
||||
/attr_src2/ assumes attribute is a part of cmo_src
|
||||
|
||||
/constant/ is a numerical value
|
||||
|
||||
|
||||
EXAMPLES:
|
||||
|
||||
**math**/**multiply**/sink_mo/sink_attribute/50,60,3/src_mo/src_attribute/1.0
|
||||
**math/add/**mo/attribute/50,60,3/mo/attribute/100.0
|
||||
**math/modulo/**mo/attribute/1,0,0/mo/attribute/10
|
||||
**math/sub/**sink_mo/sink_attribute/50,60,3/src_mo1/src_attribute1/src_mo2/src_attribute2/
|
||||
**math/min/**sink_mo/sink_attribute/1,0,0/src_mo1/src_attribute1/src_mo2/src_attribute2/
|
||||
**math**/**ln**/sink_mo/sink_attribute/1,0,0/src_mo/src_attribute/
|
||||
**math/floor/**sink_mo/sink_attribute/1,0,0/src_mo/src_attribute/2.0/
|
||||
**math/power**/sink_mo/sink_attribute/1,0,0/src_mo/src_attribute/2.0/
|
||||
**math/power**/sink_mo/sink_attribute/1,0,0/2.0/src_mo/src_attribute/
|
||||
**math/power**/sink_mo/sink_attribute/1,0,0/base_mo/base_attribute/ power_mo/power_attr
|
||||
**math/exp**/sink_mo/sink_attribute/1,0,0/src_mo/src_attribute/
|
||||
**math/exp10**/sink_mo/sink_attribute/1,0,0/src_mo/src_attribute/
|
||||
**math/integrate/** cmotri /Vf /1,0,0/ cmotri/ Fn
|
||||
**math/sum/** cmotri / Vfsum /1,0,0/ cmotri / Vf
|
||||
**math/sum/** cmotri / area_sum /1,0,0/ cmotri / darea
|
||||
 _place_holder;
|
||||
|
||||
|
||||
|
||||
164
documentation/lagrit_manual/commands/memory.txt
Executable file
164
documentation/lagrit_manual/commands/memory.txt
Executable file
@@ -0,0 +1,164 @@
|
||||
.. _memory:
|
||||
|
||||
|
||||
|
||||
## memory
|
||||
|
||||
These commands report the current state of LaGriT's dynamic memory allocation.
|
||||
LaGriT arrays are referenced by memory management by a two part name, block
|
||||
name and partition name. It is allocated in integer or real blocks(real is
|
||||
implemented as real*8). Each memory block is preceeded by a header and
|
||||
terminated by a trailer. Different platforms will have different values for
|
||||
integer and real word lengths. LaGriT developers read more on LaGriT memory
|
||||
management at **[Memory Manager](../memmang.html)**
|
||||
|
||||
|
||||
|
||||
The following memory keywords are recognized:
|
||||
|
||||
>  _place_holder;
|
||||
|
||||
**memory / verify  _place_holder;**
|
||||
verify the integerity of LaGriT memory manager storage by checking that the
|
||||
known blocks have not been overwritten. If corruption is detected, an array
|
||||
map will be printed. Nothing is printed if there memory is successfully
|
||||
verified.
|
||||
|
||||
|
||||
|
||||
**memory / print  _place_holder;**
|
||||
print an address map of the LaGriT managed arrays. For each array the
|
||||
following is printed; index, length, type, memory address, associated name,
|
||||
and partition. The partition is the grouping of arrays by usage. Common
|
||||
partitions include the mesh object (by name), global memory, and temporary
|
||||
memory for work arrays.
|
||||
|
||||
>
|
||||
|
||||
>
|
||||
|
||||
> MEMORY SIZES :
|
||||
|
||||
> Sizeof char (type 3) = 1 bytes Sizeof long = 4 bytes
|
||||
|
||||
> Sizeof real*8 (type 2) = 8 bytes Sizeof pointer = 4 bytes
|
||||
|
||||
> Sizeof integer (type 1) = 4 bytes Sizeof INT_PTRSIZE = 4 bytes
|
||||
|
||||
>
|
||||
|
||||
> INDEX LENGTH TYPE ADDRESS NAME
|
||||
PARTITION
|
||||
|
||||
> 29 40000000 2 -1894248416 xic
|
||||
cmo1
|
||||
|
||||
> 1 10 3 143632720 global_name
|
||||
global_lg
|
||||
|
||||
> 31 40000000 2 1760710688 zic
|
||||
cmo1
|
||||
|
||||
> 30 40000000 2 2080714784 yic
|
||||
cmo1
|
||||
|
||||
>
|
||||
|
||||
> Total BYTES = 2.400E+09 Total MEGABYTES = 2.400E+03
|
||||
|
||||
>
|
||||
|
||||
>
|
||||
|
||||
>
|
||||
|
||||
>
|
||||
|
||||
|
||||
**memory / maxmalloc  _place_holder;**
|
||||
Report estimate of possible amount of memory available for allocation by
|
||||
LaGriT. This test will make incremental calls to internal LaGriT memory
|
||||
allocation (mmgetblk) until failure. The report will include the total
|
||||
Megabytes where allocation succeeded, and amount at which allocation failed.
|
||||
This command will also print a map of the memory manager storage.
|
||||
|
||||
>
|
||||
|
||||
>
|
||||
|
||||
> ....
|
||||
|
||||
>
|
||||
|
||||
> MMGETBLK ERROR: value exceeds sizeof: 4
|
||||
|
||||
> MAX ALLOC SIZE: 4294967296.0000000
|
||||
|
||||
> ATTEMPTED SIZE: 6553600048.0000000
|
||||
|
||||
> MMGETBLK: return early with error flag: -21
|
||||
|
||||
>
|
||||
|
||||
> Succeeded at 819.20000000000005 MEGABYTES
|
||||
|
||||
> Failed at 1638.4000000000001 MEGABYTES
|
||||
|
||||
>
|
||||
|
||||
>
|
||||
|
||||
>
|
||||
|
||||
>
|
||||
|
||||
>
|
||||
|
||||
The 64 bit version for memory routines will look slightly different:
|
||||
|
||||
>
|
||||
|
||||
>
|
||||
|
||||
> MEMORY SIZES :
|
||||
|
||||
> Sizeof char (type 3) = 1 bytes Sizeof long = 8 bytes
|
||||
|
||||
> Sizeof real*8 (type 2) = 8 bytes Sizeof pointer = 8 bytes
|
||||
|
||||
> Sizeof integer (type 1) = 4 bytes Sizeof INT_PTRSIZE = 8 bytes
|
||||
|
||||
>
|
||||
|
||||
> ....
|
||||
|
||||
>
|
||||
|
||||
> util_malloc_: Out of memory, malloc return: (nil)
|
||||
|
||||
> Requested value: 104857600000.000000 = 8 bit unsigned int
|
||||
|
||||
> MMGETBLK FAILED: Array array_01 with bytes: 104857600096
|
||||
|
||||
> MMGETBLK: return ending with error flag: -1
|
||||
|
||||
>
|
||||
|
||||
> Succeeded at 52428.800000000003 MEGABYTES
|
||||
|
||||
> Failed at 104857.60000000001 MEGABYTES
|
||||
|
||||
>
|
||||
|
||||
>
|
||||
|
||||
>
|
||||
|
||||
|
||||
|
||||
EXAMPLES:
|
||||
|
||||
**memory / verify **
|
||||
**memory / print **
|
||||
**memory / maxmalloc **  _place_holder;
|
||||
|
||||
29
documentation/lagrit_manual/commands/merge.txt
Executable file
29
documentation/lagrit_manual/commands/merge.txt
Executable file
@@ -0,0 +1,29 @@
|
||||
.. _merge:
|
||||
|
||||
 _place_holder;
|
||||
|
||||
> **_MERGE_**
|
||||
|
||||
>
|
||||
|
||||
>> Merge pairs of points together. On return, the first_point of a pair is the
|
||||
survivor unless first_point may not be removed ( a corner point for example),
|
||||
then the command operates as if first_point and second_point have been
|
||||
interchanged. If there is no confirmation of the merge, one or both of the
|
||||
points may be inactive, or the merge may be illegal because the points are not
|
||||
neighbors or because this merge is disallowed by the merge tables. Merging may
|
||||
trigger other merges by the reconnection step that follows the merge.
|
||||
|
||||
The command [massage](MASSAGE.html) may be used to merge nodes together based
|
||||
on the edge distance separating the nodes.
|
||||
|
||||
> FORMAT:
|
||||
|
||||
>
|
||||
|
||||
>> **merge**/first_point/second_point
|
||||
|
||||
**merge**/1st_of_pair1/2nd_of_pair1/1st_of_pair2/2nd_of_pair2/../ 1st_of_pairn/2nd_of_pairn/
|
||||
|
||||
EXAMPLE: **merge**/21,22/
|
||||
|
||||
29
documentation/lagrit_manual/commands/metis.txt
Executable file
29
documentation/lagrit_manual/commands/metis.txt
Executable file
@@ -0,0 +1,29 @@
|
||||
.. _metis:
|
||||
|
||||
 _place_holder;
|
||||
|
||||
> **_MERGE_**
|
||||
|
||||
>
|
||||
|
||||
>> Merge pairs of points together. On return, the first_point of a pair is the
|
||||
survivor unless first_point may not be removed ( a corner point for example),
|
||||
then the command operates as if first_point and second_point have been
|
||||
interchanged. If there is no confirmation of the merge, one or both of the
|
||||
points may be inactive, or the merge may be illegal because the points are not
|
||||
neighbors or because this merge is disallowed by the merge tables. Merging may
|
||||
trigger other merges by the reconnection step that follows the merge.
|
||||
|
||||
The command [massage](MASSAGE.html) may be used to merge nodes together based
|
||||
on the edge distance separating the nodes.
|
||||
|
||||
> FORMAT:
|
||||
|
||||
>
|
||||
|
||||
>> **merge**/first_point/second_point
|
||||
|
||||
**merge**/1st_of_pair1/2nd_of_pair1/1st_of_pair2/2nd_of_pair2/../ 1st_of_pairn/2nd_of_pairn/
|
||||
|
||||
EXAMPLE: **merge**/21,22/
|
||||
|
||||
84
documentation/lagrit_manual/commands/mode.txt
Executable file
84
documentation/lagrit_manual/commands/mode.txt
Executable file
@@ -0,0 +1,84 @@
|
||||
.. _mode:
|
||||
|
||||
 _place_holder;
|
||||
|
||||
> **_MODE_**
|
||||
|
||||
>
|
||||
|
||||
>> The MODE Command _place_holder; sets up several optimization options
|
||||
|
||||
Currently implemented are:
|
||||
|
||||
(1) discrete optimization:
|
||||
|
||||
**mode/discrete**/surface_cmo/tolldamage
|
||||
>>
|
||||
|
||||
>>> if this mode is set, **refine,** **smooth**, **merge** will require any
|
||||
operation that involves nodes on the specified surface to result in a mesh
|
||||
whose surface nodes are also members of the surface_cmo.
|
||||
|
||||
A mesh object attribute associated with the 3d mesh named discrete_optimize
|
||||
will be created and its value will be the name of the surface mesh object.
|
||||
|
||||
>>
|
||||
|
||||
>> (2) error_adaption
|
||||
|
||||
**mode**/**adaption_field**/field_name
|
||||
>>
|
||||
|
||||
>>> if this mode is set, optimization operations will be based on reducing
|
||||
error. _place_holder; A mesh object attribute associated with the 3d mesh
|
||||
named 'adaption_field' will be created and it's value will be the name of the
|
||||
field.
|
||||
|
||||
>>
|
||||
|
||||
>> (3) reconnection
|
||||
|
||||
**mode/recon**/**geom**
|
||||
**mode/recon**/**delaunay**
|
||||
**mode/recon**/**adaption**
|
||||
>>
|
||||
|
||||
>>> Setting this mode will determine the criterion used to
|
||||
[reconnect](RECON.html) the mesh. _place_holder; The default mode is
|
||||
**delaunay** and setting mode to **delaunay** will cause recon to attempt to
|
||||
create a [delaunay mesh](CONNECT1.html). _place_holder; Setting mode to
|
||||
**geom** will reconnect to increase inscribed radii of
|
||||
elements. _place_holder; Setting mode to adaption will reconnect to reduce
|
||||
solution error. _place_holder; Field_name must be set with the
|
||||
**mode**/**adaption_field **command.
|
||||
|
||||
>
|
||||
|
||||
> FORMAT:
|
||||
|
||||
>
|
||||
|
||||
>> **mode/discrete**/surface_cmo/tolldamage
|
||||
|
||||
**mode**/**adaption_field**/field_name
|
||||
**mode/recon**/**geom**|**delaunay**|**adaptio**n
|
||||
 _place_holder;
|
||||
|
||||
>
|
||||
|
||||
> EXAMPLES:
|
||||
|
||||
>
|
||||
|
||||
>> **mode**/**adaption_field**/solution
|
||||
|
||||
**mode**/**recon**/**adaption******
|
||||
>>
|
||||
|
||||
>> All optimization including **[massage](MASSAGE.html) **commands that follow
|
||||
will be performed to reduce error in the user defined field solution.
|
||||
|
||||
>
|
||||
|
||||
>>  _place_holder;
|
||||
|
||||
37
documentation/lagrit_manual/commands/mregion.txt
Executable file
37
documentation/lagrit_manual/commands/mregion.txt
Executable file
@@ -0,0 +1,37 @@
|
||||
.. _mregion :
|
||||
|
||||
 _place_holder;
|
||||
|
||||
> **_MREGION_**
|
||||
|
||||
>
|
||||
|
||||
>> Define a material region from a set of surfaces by logically combining the
|
||||
surface names and region names. A material region may be removed from the
|
||||
geometry by specifying the release keyword.
|
||||
|
||||
>>
|
||||
|
||||
>> To define material rgion, the operator **lt, le, gt**, and **ge** are
|
||||
applied to previously defined surfaces according to the following rules.
|
||||
|
||||
**lt **-- if the surface following is a volume then **lt** means inside not including the surface of the volume. If the surface is a plane or a sheet lt means the space on the side of the plane or sheet opposite to the normal not including the plane or sheet itself.
|
||||
|
||||
**le **-- if the surface following is a volume then **le **means inside including the surface of the volume. If the surface is a plane or a sheet le means the space on the side of the plane or sheet opposite to the normal including the plane or sheet itself.
|
||||
|
||||
**gt **-- if the surface following is a volume then **gt** means outside not including the surface of the volume. If the surface is a plane or a sheet **gt** means the space on the same side of the plane or sheet as the normal not including the plane or sheet itself.
|
||||
|
||||
**ge **-- if the surface following is a volume then **ge** means outside including the surface of the volume. If the surface is a plane or a sheet **ge **means the space on the same side of the plane or sheet as the normal including the plane or sheet itself. The operators **or, and**, and **not** applied to regions or modified surfaces mean union, intersection and complement respectively. Parentheses are operators and are used for nesting. Spaces are required as delimiters to separate operators and operands; parentheses are operators and must be surrounded by spaces. Internal interfaces should be excluded when defining material regions. (i.e. use **lt** and **gt** ). External boundaries should be included when defining material regions. If a material regions consists of more than one region and the regions touch (i.e. share a region interface), then the region interface is not a material interface -- all the points on the region interface are interior to the material region. In this case use **le **or** ge** to include these region interface points in the material region as interior points.
|
||||
|
||||
Defining a material region will cause the information associated with this
|
||||
material region to be stored under the name of the[ geometry
|
||||
](../geometries.html)of the current mesh object. _place_holder; Releasing
|
||||
the material region will remove this information.
|
||||
|
||||
 _place_holder; FORMAT:
|
||||
 _place_holder;**mregion/**material_region_name/region definition
|
||||
EXAMPLES: **mregion/ **material_region_name/**release**
|
||||
|
||||
**mregion**/mat1/** le **box1 **and **(** lt** sphere1 **and** ( **lt** plane1 **or gt** plane2 ) ) /
|
||||
**mregion**/mat2/ regiona **or** regionb /
|
||||
|
||||
46
documentation/lagrit_manual/commands/negative_aij.txt
Executable file
46
documentation/lagrit_manual/commands/negative_aij.txt
Executable file
@@ -0,0 +1,46 @@
|
||||
.. _negative_aij :
|
||||
|
||||
 _place_holder;
|
||||
|
||||
> **_NEGATIVE_AIJ_**
|
||||
|
||||
>
|
||||
|
||||
>> This command tests all edges of all boundary faces for negative coupling
|
||||
coefficients.
|
||||
|
||||
It adds three attributes to the mesh object: num_neg_coup_coeff, type=INT,
|
||||
length=scalar -number of negative coupling coefficients
|
||||
|
||||
neg_coup_coeff, type=VDOUBLE, length=num_neg_coup_coeff - value of coupling
|
||||
coefficient
|
||||
|
||||
ietet_aij, type=VINT, length=num_neg_coup_coeff,rank=vector -
|
||||
|
||||
for each negative coupling coefficient, i: ietet_aij(1,i) contains the
|
||||
tetrahedron number which contributes the most negative portion to the coupling
|
||||
coefficient, ietet_aij(2,i) contains the local face number that contains the
|
||||
local edge (ietet_aij(3,i)) which has the negative coupling coefficient These
|
||||
attributes can be used to generate a set of points to be added to the mesh in
|
||||
an attempt to reduce the number of negative coupling coefficients by the
|
||||
**refine** option. The points added are created by projecting the fourth node
|
||||
of the tetrahedron onto the identified face and then projecting this
|
||||
projection onto the identified edge. If the final projected point lies between
|
||||
the end points of the identified edge, this edge is refined. The
|
||||
identification and refinement steps may be iterated up to maxiter times.
|
||||
Alternatively the attribute may be used to create an **eltset **of the
|
||||
identified elements.
|
||||
|
||||
The **rivara** option uses a rivara refinement method to add nodes on exterior
|
||||
boundary edges until all coupling coefficients are positive or until a maximum
|
||||
number of iterations has been exceeded. FORMAT: **negative_aij**
|
||||
|
||||
**negative_aij**/**refine**
|
||||
**negative_aij**/**refine**/maxiter
|
||||
**negative_aij/eltset/**eltset_name
|
||||
**negative_aij/rivara** EXAMPLES: **negative_aij**
|
||||
**negative_aij/refine **only one iteration will be performed
|
||||
**negative_aij/refine/5** a maximum of 5 iterations will be performed
|
||||
**negative_aij**/**eltset**/bad_tets an element set called bad_tets will be made no refinement will be performed/ **negative_aij/rivara**
|
||||
**** _place_holder; [Click here for demos](../demos/refine_rivara/test/html/main_rivara.html)
|
||||
|
||||
70
documentation/lagrit_manual/commands/offsetsurf.txt
Executable file
70
documentation/lagrit_manual/commands/offsetsurf.txt
Executable file
@@ -0,0 +1,70 @@
|
||||
.. _offsetsurf :
|
||||
|
||||
 _place_holder;
|
||||
|
||||
> **_OFFSETSURF_**
|
||||
|
||||
>
|
||||
|
||||
>> Offsets triangulated surfaces in the direction of the surface outward
|
||||
normal, i.e., normal surface motion. For each node a 'synthetic' unit outward
|
||||
normal **N** is computed based on the weighted average angle of the normals of
|
||||
the triangles shared by that node. old_cmo is the surface to be used in
|
||||
generating the offset surface. new_cmo is the name of the new surface.
|
||||
|
||||
> > To add the nodes in the new surface to the main mesh object use the
|
||||
**copypts** command. To add the new surface to the main mesh object use a
|
||||
**surface** command with new_cmo as the sheet name (e.g.
|
||||
**surface**/s2d/bndy_typedist is given in user coordinates (i.e. whatever
|
||||
units the old_cmo mesh object was defined in.) The new node coordinates,
|
||||
R_new, are computed using the formula:
|
||||
|
||||
>>
|
||||
|
||||
>>> R_new = R_old + dist * N_node
|
||||
|
||||
>>
|
||||
|
||||
>> Various keywords control the behavior of the command:
|
||||
|
||||
>>
|
||||
|
||||
>>> The following keywords can appear in the 5th, 6th, 7th or 8th argument
|
||||
position.**
|
||||
|
||||
keepatt****, keep_angle** -  _place_holder;Compute node angle weighted
|
||||
normals and keep the vector components in three scalar attributes x_n_norm,
|
||||
y_n_norm, z_n_norm
|
||||
|
||||
**keep_area** - Compute node area weighted normals and keep the vector components in three scalar attributes, x_n_norm, y_n_norm, z_n_norm**
|
||||
xzero** _place_holder; - Compute the full offset direction vector but set
|
||||
x component to zero
|
||||
|
||||
**yzero** _place_holder; - Compute the full offset direction vector but set x component to zero
|
||||
**zzero** _place_holder; - Compute the full offset direction vector but set x component to zero
|
||||
|
||||
The following keywords can appear in the 5th argument position.
|
||||
|
||||
**xy, xz, yx yz zx zy** - these keywords constrain the offset to be parallel to the specified plane. These arguments can be used with a line type mesh object to constrain the offset to a particular plane.
|
||||
|
||||
>
|
||||
|
||||
>> FORMAT:
|
||||
|
||||
 _place_holder; **offsetsurf**/new_cmo/old_cmo/dist/keyword
|
||||
|
||||
 _place_holder;
|
||||
|
||||
 _place_holder; EXAMPLES: **offsetsurf/**cmo_out/cmo_in/d
|
||||
|
||||
 _place_holder; _place_holder; _place_holder; _place_holder;&n
|
||||
bsp_place_holder; _place_holder; _place_holder; _place_holder;&nbs
|
||||
p_place_holder; offset a triangulated surface a distance d using angle
|
||||
weighted normals
|
||||
|
||||
offsetsurf/cmo_out / cmo_in / d / keep_area  _place_holder; - offset using
|
||||
area weithted normals **offsetsurf/**cmo_out/cmo_in/d/[xy,xz,yx,yz,zx,zy]
|
||||
offset a line cmo a distance d in a direction parallel to the specified plane.
|
||||
**offsetsurf/**cmo_out/cmo_in/d/x y z offset a line cmo a distance d in the
|
||||
direction specified by the vector (x,y,z)
|
||||
|
||||
26
documentation/lagrit_manual/commands/perturb.txt
Executable file
26
documentation/lagrit_manual/commands/perturb.txt
Executable file
@@ -0,0 +1,26 @@
|
||||
.. _perturb :
|
||||
|
||||
 _place_holder;
|
||||
|
||||
> **_PERTURB_**
|
||||
|
||||
This command moves node coordinates in the following manner.
|
||||
|
||||
Three pairs random numbers between 0 and 1 are obtained. These pairs refer to
|
||||
the x, y and z coordinates of the nodes respectively. The first random number
|
||||
of each pair is multiplied by the factor given in thecommand. The second
|
||||
random number is used to determine if the calculated offset is to be added or
|
||||
subtracted from the coordinate. No checking is done to see if elements are
|
||||
inverted by this perturbation. _place_holder; It is assumed that the mesh
|
||||
is not yet connected.
|
||||
|
||||
 _place_holder; FORMAT:
|
||||
**perturb/pset,get,psetnam**e/xfactor,yfactor,zfactor
|
||||
|
||||
 _place_holder; EXAMPLES
|
||||
**perturb/**1,0,0/0.5,0,0 _place_holder; _place_holder; add offsets to
|
||||
only the xcoordinates of all nodes
|
||||
|
||||
**perturb/pset,get,mypset**/0.001,0.001,0.001 _place_holder; add small offsets to all coordinates of the nodes in the **pset** named **mypset.**
|
||||
 _place_holder; [](../new_html/demos/pset/test/html/main_pset.html)
|
||||
|
||||
142
documentation/lagrit_manual/commands/pset.txt
Executable file
142
documentation/lagrit_manual/commands/pset.txt
Executable file
@@ -0,0 +1,142 @@
|
||||
.. _pset:
|
||||
|
||||
 _place_holder;
|
||||
|
||||
> **_PSET (Point Set)_**
|
||||
|
||||
>
|
||||
|
||||
>> Associate a name with a point set based on various geometric and logical
|
||||
operators. Manipulate point sets. Output point sets.
|
||||
|
||||
>>
|
||||
|
||||
>> **seq** forms a pset of the nodes defined by ifirst, ilast, istride;
|
||||
|
||||
the special syntax,: 1,0,0 refers to all nodes and 0,0,0 refers to the last
|
||||
set of nodes created.
|
||||
|
||||
**union, inter** and **not** are logical operations on previously defined psets. _place_holder; The definition of the unary operator **not **is extended such that **not**/p1/p2 means p1 and (not(p2)).
|
||||
**list **lists nodes in a pset or names of all psets
|
||||
**write **write pset node list to a file
|
||||
pset / [name|_-all-_] / write/ file_name[.vertexset] / [_ascii_|binary]
|
||||
|
||||
**zone **write pset node list to a file (FEHM Flow and Transport code zone file format)
|
||||
pset / [name|_-all-_] / zone / file_name[.zone] / [ascii]
|
||||
|
||||
**zonn **write pset node list to a file (FEHM Flow and Transport code zonn file format)
|
||||
pset / [name|_-all-_] / zonn / file_name[.zonn] / [ascii]
|
||||
|
||||
In write|zone|zonn mode the file name suffix .vertexset|.zone|.zonn is added
|
||||
if the string provided does not have the file name suffix. The -all- argument
|
||||
specifies that all psets are output. The name argument is the name of a single
|
||||
pset.
|
||||
|
||||
**delete **deletes a previously defined pset
|
||||
**attribute _place_holder; **forms a pset from all points in** **ifirst,ilast,istride which have the specified value for a node based attribute. This option was previously named **zq.**
|
||||
If the optional comparator field is given; that operation is used to compare
|
||||
the attribute value to the requested value.
|
||||
|
||||
**geom/xyz/** forms a pset from all points inside the box whose corners are xl,yl,zl and xu,yu,zu relative to the geometry center at xc,yc,zc.
|
||||
**geom/rtz/** forms a pset of nodes within the cylinder or cylindrical shell given by radius r1 to r2, angle theta t1 to t2 and height z1 to z2.
|
||||
**geom/rtp**/ forms a pset of nodes within the sphere, sperical shell or sperical section given by radius r1 to r2, and angles theta t1 to t2 and angles phi p1 to p2. _place_holder; [See chapter II, A. Conventions](../conventions.html) for an explanation of angles theta and phi.
|
||||
**region**/region name/ifirst,ilast,istride
|
||||
**mregion**/mregion name/ifirst,ilast,istride will return all nodes that are in the specified region/mregion - the definition of the region/mregion is evaluated to determine membership. _place_holder; Hence the result may vary from what would be returned if the 'imt1' value of the nodes had been queried using the **attribute** option
|
||||
**surface** identifies nodes on the specified surface. _place_holder; Keyword surface names have the following meaning:
|
||||
>>
|
||||
|
||||
>>> -**all**- will identify nodes on any surface.
|
||||
|
||||
-**interface**- will identify nodes on any interface surface.
|
||||
-**boundary**- will idendify nodes on exterior surfaces.
|
||||
|
||||
**eltset** form a pset of nodes in the element set listed.
|
||||
**constraints** forms a pset of nodes having the specified number of constraints. _place_holder; The node's **icr** value is used as an index to the **icontab **attribute which gives the number of constraints. _place_holder; [See chapter III, A](../meshobject.html) for an explanation of the **icontab** entries. FORMAT: **pset**/pset name/ **seq**/ifirst,ilast,istride
|
||||
**union|inter|not|delete/**pset1[/pset2/.../psetn]
|
||||
**list **
|
||||
**write **/ file_name[.vertexset] / [_ascii_|binary]
|
||||
**zone **/ file_name[.zone] / [ascii]
|
||||
**zonn **/ file_name[.zonn] / [ascii]
|
||||
**delete**
|
||||
**attribute**/attribute /ifirst,ilast,istride/value/[lt|le|gt|ge|eq|ne]
|
||||
**attribute**/attribute /ifirst,ilast,istride/[lt|le|gt|ge|eq|ne]/value
|
||||
**zq**/attribute /ifirst,ilast,istride/value/[lt|le|gt|ge|eq|ne]
|
||||
**zq**/attribute /ifirst,ilast,istride/[lt|le|gt|ge|eq|ne]/value
|
||||
**region**/region name/ifirst,ilast,istride
|
||||
**mregion**/mregion name/ifirst,ilast,istride
|
||||
**geom**/**xyz**/ifirst,ilast,istride/xl,yl,zl/xu,yu,zu/xcen,ycen,zcen
|
||||
**geom**/**rtz**/ifirst,ilast,istride/r1,t1,z1/r2,t2,z2/xcen,ycen,zcen
|
||||
**geom**/**rtp**/ifirst,ilast,istride/r1,t1,p1/r2/t2/p2/xcen,ycen,zcen
|
||||
|
||||
**surface**/surface_name/[ifirst,ilast,istride] **surface** will select nodes that are on the specified surface. _place_holder; If **-interface- **is specified for the surface name, all interface _place_holder; nodes _place_holder; will be returned. _place_holder; If** -boundary-** is specified for the surface name, all nodes on external bounding surfaces will be returned. If** -all-** is specified all nodes on any surface are returned.
|
||||
**eltset**/element_set_name **eltset **will return all nodes that are vertices of the elements in the specified element set **constraints**/number_of_constraints/ifirst,ilast,istride  _place_holder; EXAMPLES: **pset**/apset/**seq**/1,0,0/
|
||||
 _place_holder;associate the pset name apsetwith all points.
|
||||
|
||||
**pset**/apset/**seq**/0,0,0/
|
||||
 _place_holder;associate the pset name apsetwith the last set of nodes
|
||||
created.
|
||||
|
||||
**pset**/apset/**union**/pset1,pset2,pset
|
||||
 _place_holder;associate the pset name apset with the set of nodes which
|
||||
belong to at least one of pset1, pset2, pset3.
|
||||
|
||||
**pset**/apset/**inter**/pset1,pset2,pset3
|
||||
 _place_holder; _place_holder; associate the pset name apset with the
|
||||
set of nodes which belong to pset1, and pset2, and pset3.
|
||||
|
||||
**pset**/apset/**not**/pset1,pset2,pset3
|
||||
 _place_holder; _place_holder; associate the pset name apset with the
|
||||
set of nodes which belong to pset1, and do not belong to pset2, and do not
|
||||
belong to pset3
|
||||
|
||||
**pset**/apset/**not**/pset1
|
||||
 _place_holder; _place_holder; associate the pset name apset with the
|
||||
set of nodes which do not belong to pset1
|
||||
|
||||
**pset**//**list**/
|
||||
 _place_holder; _place_holder; list the names of all psets
|
||||
|
||||
**pset**/mypset/**list**
|
||||
 _place_holder; _place_holder; output the list the node numbers of the
|
||||
members of mypset to the screen and the log file outx3dgen
|
||||
|
||||
**pset**/mypset/**write/file_name.vertexset/ascii**
|
||||
 _place_holder; _place_holder; Write list of nodes in pset mypset to
|
||||
an ascii file named file_name.vertexset
|
||||
|
||||
**pset**/-all-/**write/root_name/ascii**
|
||||
Write list of nodes in all psets. root_name is treated as a root name and each
|
||||
pset is written to a separate file beginning with that root. For example, if
|
||||
you have psets named pset1 and pset2, they will be written to files called
|
||||
root_name_pset1.vertexset and root_name_pset2.vertexset.
|
||||
|
||||
**pset**/mypset/**zone/file_name.zone/ascii**
|
||||
 _place_holder; _place_holder; Write list of nodes in pset mypset to
|
||||
an ascii file named file_name.zone The output is in FEHM zone file format.
|
||||
|
||||
**pset**/apset/**attribute**/**itp**/1,0,0/10/**ge**
|
||||
 _place_holder; _place_holder; associate the name apset with the
|
||||
points whose type field(**itp1**) has value greater than or equal to 10 (these
|
||||
would be boundary nodes).
|
||||
|
||||
**pset**/mypset/**geom**/**xyz**/1,0,0/1.,1.,-5./10.,20.,10./
|
||||
 _place_holder; _place_holder; associate the name mypset with all
|
||||
nodes that fall with the box with corners at (1,1,-5) and (10,20,10)
|
||||
|
||||
**pset**/mypset/**geom/rtz/pset,get,**oldpset/0.,0.,0./10.,360.,10. _place_holder; _place_holder; associate the name mypset with the nodes that are members of the pset oldpset and which fall inside the cylinder of radius 10 and height 10 and whose axis is the z-axis.
|
||||
**pset**/spset/**surface**/s1/1,0,0
|
||||
 _place_holder; associate the name spset with the set of nodes that lie on
|
||||
the surface s1.
|
||||
|
||||
**pset**/spseta/**surface**/s2/**pset,get,spset**
|
||||
 _place_holder; associate the name spseta with the set of nodes that lie
|
||||
on the surface s2 and which are members of the pset spset _place_holder;
|
||||
This command and the previous command would identify the nodes that are on the
|
||||
intersection of surfaces s1 and s2 and give the name spseta to these nodes.
|
||||
|
||||
**pset**/mypset/**constraints**/3
|
||||
 _place_holder;associate the name mypset with the set of nodes that have 3
|
||||
constraints ( normally the set of nodes that lie on 3 _place_holder;
|
||||
constrained surfaces -- surfaces of type **reflect** or **intrcons**) [Click
|
||||
here for demos](../demos/pset/html/main_pset.html)
|
||||
|
||||
25
documentation/lagrit_manual/commands/pstatus.txt
Executable file
25
documentation/lagrit_manual/commands/pstatus.txt
Executable file
@@ -0,0 +1,25 @@
|
||||
.. _pstatus:
|
||||
|
||||
**__** _place_holder;
|
||||
|
||||
> **_PSTATUS_**
|
||||
|
||||
>
|
||||
|
||||
>> Saves, removes, retrieves, or replaces a specified set of points, usually
|
||||
the last set of points defined by a generator command or the set of points
|
||||
defined by ifirst,ilast,istride. Note that point sets must be specified in
|
||||
sequence in order for this command to work properly.
|
||||
|
||||
FORMAT: **pstatus** (Returns current point status counters)
|
||||
|
||||
**pstatus** /**save**/name/ifirst,ilast,
|
||||
(Saves the point status numbers, ifirst,ilast,istride under name)
|
||||
|
||||
**pstatus** /**store**/name/ifirst,ilast
|
||||
(Overwrites what was in name with ifirst,ilast,istride
|
||||
|
||||
**pstatus /delete/**name (Deletes values from name)
|
||||
**pstatus** /**get**/name (Retrieves values from name)  _place_holder;
|
||||
 _place_holder;
|
||||
|
||||
15
documentation/lagrit_manual/commands/quadxy.txt
Executable file
15
documentation/lagrit_manual/commands/quadxy.txt
Executable file
@@ -0,0 +1,15 @@
|
||||
.. _quadxy:
|
||||
|
||||
 _place_holder;
|
||||
|
||||
> **_QUADXY_**
|
||||
|
||||
>
|
||||
|
||||
>> Define an arbitrary, logical quad of points in 2D(xy) space.nx and ny
|
||||
specify the number of points in the x and y directions. The four corners of
|
||||
the quad are then listed in counter clockwise order ( the normal to the quad
|
||||
points is defined using the right hand rule and the order of the points).
|
||||
|
||||
FORMAT: **quadxy**/nx ,ny /x1,y1,z1/x2,y2,z2/x3,y3,z3/x4,y4,z4/
|
||||
|
||||
6
documentation/lagrit_manual/commands/quadxyz.txt
Executable file
6
documentation/lagrit_manual/commands/quadxyz.txt
Executable file
@@ -0,0 +1,6 @@
|
||||
.. _quadxyz:
|
||||
|
||||
# Not Found
|
||||
|
||||
The requested URL /docs/commands/QUADXYZ1.html was not found on this server.
|
||||
|
||||
139
documentation/lagrit_manual/commands/quality.txt
Executable file
139
documentation/lagrit_manual/commands/quality.txt
Executable file
@@ -0,0 +1,139 @@
|
||||
.. _quality:
|
||||
|
||||
 _place_holder;
|
||||
|
||||
> **_QUALITY_**
|
||||
|
||||
>
|
||||
|
||||
>> quality provides a collection of mesh quality measures
|
||||
|
||||
 _place_holder;
|
||||
|
||||
 _place_holder;FORMAT: **quality /**[quality_type] / [quality_type
|
||||
options]
|
||||
|
||||
Where quality-type can be **aspect**, **pcc**,** volume**, **angle**,
|
||||
**quad**, or** taylor. **Quality-type options depend on the quality-type.
|
||||
|
||||
**quality **(no arguments)
|
||||
writes to screen and outx3dgen logfile giving volume and aspect ratio
|
||||
distribution information. Aspect ratios and element volumes are binned into 5
|
||||
bins then totaled, min and max values are also reported.
|
||||
|
||||
**quality/aspect**/[**y**]
|
||||
displays a count of the number of elements whose aspect ratio falls in each of
|
||||
7 bins . _place_holder; If **y **is specified create an attribute named
|
||||
**aratio** that will contain the value of the aspect ratio of each element.
|
||||
|
||||
**quality/edge_ratio/[y]**
|
||||
displays a count of the edge length minimum/edge length maximum in each of 7
|
||||
bins. If y is specified create an attribute named **eratio** that will contain
|
||||
the value of the min/max edge ratio of each element.
|
||||
|
||||
**quality/edge_min/[y]**
|
||||
displays a count of the minimum edge length in each of 7 bins. If y is
|
||||
specified create an attribute named **edgemin** that will contain the value of
|
||||
the min edge length of each element.
|
||||
|
||||
**quality/edge_max/[y]**
|
||||
displays a count of the maximum edge length in each of 7 bins. If y is
|
||||
specified create an attribute named **edgemax** that will contain the value of
|
||||
the max edge length of each element.
|
||||
|
||||
**quality**/**angle**/**gt**|**lt**/value]/
|
||||
displays a count of the number of elements with a dihedral angle that is
|
||||
greater than or less than the supplied value. See also [ cmo/addatt/mo/ang_*
|
||||
](cmo/cmo_addatt.html) commands for dihedral angle and solid angle
|
||||
calculations.
|
||||
|
||||
**quality**/**pcc**
|
||||
creates an element based attribute called 'neg_coup_coeff' which is a
|
||||
"negative coupling coefficient" indicator. _place_holder; A value of 1
|
||||
means the coupling coefficient is OK. _place_holder; Anything less than 1
|
||||
means it is negative. _place_holder; This is _place_holder;
|
||||
**element** attribute and is useful when viewing a mesh with GMV to find the
|
||||
negative coupling coefficients.
|
||||
|
||||
**quality**/**quad** generates some quality measures for quads and displays them after binning them into seven bins. Please see [`cmo / addatt // quad_quality`](cmo/cmo_addatt.html#quad) for details on the quality measures used.
|
||||
**quality**/**taylor**/fieldname/value/
|
||||
displays a count of the number of element-edge pairs with a taylor error
|
||||
estimate value whose absolute value is greater than the supplied value.
|
||||
|
||||
**quality/volume**
|
||||
quality/volume can appear with or without any of the following options:
|
||||
|
||||
**quality**/**volume **/** **number_of_bins
|
||||
number_of_bins is an integer value controlling the number of bins in which to
|
||||
distribute the volume values for display. if number_of_bins is 0, then binning
|
||||
of distributed volumes is skipped, and only min and max volumes are reported.
|
||||
number_of_bins must be the 2nd argument to **quality** if used.
|
||||
|
||||
**quality/volume**/**itetclr**
|
||||
 _place_holder;output element volume distributions with 5 bins. loop
|
||||
through** itetclr** values and report total volume for each material
|
||||
|
||||
**quality**/**volume**/number_of_bins/**itetclr**
|
||||
**itetclr** is a keyword that will give volume information according to the values in the itetclr attribute. Number_of_bins applies to each tetclr value. _place_holder; For each itetclr value, the volume of elements will be totaled.
|
||||
**quality/volume**/**lt**|**gt**|**eq**|**ne**/xvalue
|
||||
will report volumes based on compare operator and given xvalue, for instance
|
||||
quality/volume/**lt** 0.0/ will report total number of elements with volumes
|
||||
less than 0.0 It may be used in combination of other volume options. if used
|
||||
with itetclr keyword, values will be reported by itetclr value
|
||||
|
||||
**quality/volume**/**eltset**,**get**,ename
|
||||
eltset,get,ename will report volumes on elements in defined eltset can be used
|
||||
in combination with previous options with operations done only on the chosen
|
||||
eltset. itetclr will still report for each of the values in itetclr .
|
||||
|
||||
Any combination of quality_type options may occur with the **volume**
|
||||
quality_type, for example:
|
||||
|
||||
**quality**/**volume**/number_of_bins/**itetclr**/**lt**| **gt** | **eq **| **ne** | xvalue/**eltset**,**get**,ename.
|
||||
 _place_holder;
|
||||
|
||||
EXAMPLES:
|
||||
|
||||
**quality**/ _place_holder;
|
||||
display volume and aspect ratio
|
||||
|
||||
**quality**/**aspect**/ _place_holder;
|
||||
display aspect ratiodistribution in 7 bins
|
||||
|
||||
**quality**/**aspect**/**y**/ _place_holder;
|
||||
display aspect ratio distribution and add attribute named aratio
|
||||
|
||||
**quality**/**angle**/**gt**/179/ _place_holder;
|
||||
return count of elements with a dihedral angle > 179.
|
||||
|
||||
**quality**/**taylor**/boron/1.e-10/
|
||||
run taylor error estimate and return count of element edge pairs with absolute
|
||||
error greater than value
|
||||
|
||||
**quality**/**volume**
|
||||
output element volume distribution with 5 bins
|
||||
|
||||
**quality**/**volume** / 2
|
||||
output element volume distribution with 2 bins
|
||||
|
||||
**quality**/**volume**/**itetclr**
|
||||
loop through** itetclr** values and report total volume for each material
|
||||
|
||||
**quality**/**volume**/**lt .03**
|
||||
count and report element volumes lt .03
|
||||
|
||||
**quality**/**volume** /**itetclr**/**lt .03**
|
||||
count and report element volumes lt .03 by **itetclr** value
|
||||
|
||||
**quality**/**volume**/**eltset**,**get**,e2
|
||||
report on element volumes only for those in the set e2
|
||||
|
||||
**quality**/**volume**/**itetclr**/**eltset,get,e2**
|
||||
report on element volumes only for those in the set e2, loop through each of
|
||||
the **itetclr** values, report total volume by material for elements in set e2
|
||||
|
||||
[Detect and characterize tetrahedra as type : sliver, cap, needle,
|
||||
wedge](../QUALITY_sliver_cap_needle_wedge.html)
|
||||
|
||||
|
||||
|
||||
216
documentation/lagrit_manual/commands/radapt.txt
Executable file
216
documentation/lagrit_manual/commands/radapt.txt
Executable file
@@ -0,0 +1,216 @@
|
||||
.. _radapt :
|
||||
|
||||
 _place_holder;
|
||||
|
||||
> **_RADAPT_**
|
||||
|
||||
>
|
||||
|
||||
>> The command radapt performs r-adaption on 2D or 3D mesh objects. For simple
|
||||
smoothing see command smooth. radapt takes a 2D or 3D mesh object and moves
|
||||
nodes (specifically the nodes selected by ifirst,ilast,istride), without
|
||||
changing the connectivity of the grid, in order to adapt the mesh to best
|
||||
capture the behavior of a specified field or to an _adaptionfunction_ (fadpt)
|
||||
supplied by the user.
|
||||
|
||||
> > There are two adaptive smoothing algorithms available:
|
||||
|
||||
1. **esug** --- Elliptic Smoothing for Unstructured Grids. This can only be
|
||||
used on triangular 2D mesh objects. If field is specified in the command line,
|
||||
**esug** will attempt to adapt the grid to the specified field. If the keyword
|
||||
**user** is specified in the command line, **esug** will attempt to adapt the
|
||||
grid to an _adaption function_ defined by the user-supplied subroutine fadpt.
|
||||
(Ahmed Khamayseh and Andrew Kuprat, "Anisotropic Smoothing and Solution
|
||||
Adaption for Unstructured Grids", Int. J. Num. Meth. Eng., Vol. 39, pp.
|
||||
3163-3174 (1996)).
|
||||
|
||||
2. **mega** --- Minimum Error Gradient Adaption. For adaptive smoothing
|
||||
purposes, **mega** can only be used on 3D meshes, and only in conjunction with
|
||||
a user-supplied subroutine fadpt or with a user specified attribute field. If
|
||||
adaption is to an attribute field, then **radapt** may be instructed to use
|
||||
the interpolation mode associated with the attribute to **refresh **the
|
||||
attribute values. The default is **stale **in which case the attribute value
|
||||
will not be updated to reflect the new node position. In either case, the user
|
||||
is cautioned to carefully consider the validity of the data used for the
|
||||
adaption. **mega** can be used to adapt hybrid meshes as well as tetrahedral
|
||||
meshes. (Randolph E. Bank and R. Kent Smith, "Mesh Smoothing Using A
|
||||
Posteriori Error Estimates", SIAM J. Num. Anal. Vol. 34, Issue 3, pp. 979-997
|
||||
(1997))
|
||||
|
||||
In the field adaption form, the user has specified a valid field from the
|
||||
current mesh object, and r-adaption is to be based upon this field. Typically,
|
||||
if the field has large gradients or curvature in a particular region,
|
||||
r-adaption using this field will cause nodes to be attracted to the region of
|
||||
interest. (**esug **adapts especially to large gradients, **mega **adapts
|
||||
especially to large second derivatives---"curvature".) If adaption is to an
|
||||
attribute field, then **radapt** may be instructed to use the interpolation
|
||||
mode associated with the attribute field to **refresh **the attribute values.
|
||||
The default is **stale **in which case the attribute value will not be updated
|
||||
to reflect the new node position adaption. In this case, the user should
|
||||
reduce the number of adaption iterations to less than 4, since r-adaption with
|
||||
stale data becomes meaningless. (See **maxiter**_**sm** variable description
|
||||
below.) The user takes on the task of refreshing the field values by e.g. re-
|
||||
solving a PDE for the new field values on the new mesh. If **refresh** is
|
||||
specified, the r-adaption routine will automatically interpolate the new field
|
||||
values every iteration, using a call to the **doping** command. In this case,
|
||||
the number of adaption iterations need not be reduced from the default value
|
||||
of 25. In either case, the user is cautioned to carefully consider the
|
||||
validity of the data used for the adaption.
|
||||
|
||||
In the **user** form, the mesh will r-adapt to the function returned by the
|
||||
subroutine fadpt which must be supplied by the user.
|
||||
|
||||
Specifying **position** signifies that the x-y-z values of the nodes in the
|
||||
current mesh object will be altered. (Other argument values allow for
|
||||
modification options that are not yet implemented.)
|
||||
|
||||
If **esug** is used (currently available in 2D only), the degree of node
|
||||
adaption will depend on the scale of the specified field. In this case, the
|
||||
results of adaption of the grid to the field can be altered by using one or
|
||||
more **field** commands beforehand to modify the field. For example, by
|
||||
increasing the scale of a field using **field**/**scale**, the **esug**
|
||||
algorithm will produce grids with increased numbers of nodes in the regions
|
||||
where the field experiences relatively large gradients. By volume averaging a
|
||||
field using **field**/**volavg**, **esug** will cause a more gentle form of
|
||||
adaption with a better grading of elements. By composing the values of the
|
||||
field with **log** or **asinh** using **field** /**compose**, one can cause
|
||||
**esug** to shift nodes to where the logarithm (or hyperbolic arcsine) of the
|
||||
field has interesting features, rather than where the field itself has
|
||||
interesting features._ Note: Since the_ **mega** _adaptive smoothing algorithm
|
||||
is rigorously based on error minimization, it is in general of little or no
|
||||
value to modify the adaption function for this algorithm. In particular,
|
||||
rescaling has no effect on the output._
|
||||
|
||||
The code variable **maxiter**_**sm** (default=25) can be set using the
|
||||
**assign** command before calling **radapt**. This controls the maximum number
|
||||
of adaption iterations to be performed by **radapt**. If convergence is
|
||||
detected , fewer iterations will be performed. If field data is allowed to
|
||||
become **stale** during the course of r-adaption, **maxiter**_**sm** should be
|
||||
reduced (e.g. less than 4).
|
||||
|
||||
>
|
||||
|
||||
> FORMAT:
|
||||
|
||||
>
|
||||
|
||||
>> **radapt **/**[position**]/** **[**esug**|**mega**]/[ifirst,ilast,istride]
|
||||
/[field]/
|
||||
|
||||
[**refresh**|**stale**]
|
||||
|
||||
**radapt **/ [**position**]/** **[**esug**|**mega** ]/ [ifirst,ilast,istride] / [**user**]
|
||||
>
|
||||
|
||||
> EXAMPLES:
|
||||
|
||||
>
|
||||
|
||||
>> Using **esug**, adapt all nodes in 2dmesh to the density field. Do not
|
||||
update data.
|
||||
|
||||
>>
|
||||
|
||||
>>> **radapt / / esug / **1,0,0 / density
|
||||
|
||||
>>
|
||||
|
||||
>> Assuming a default 3D cmo, use **mega** to adapt the mesh to the adaption
|
||||
function supplied by the user via subroutine fadpt. Afterwards dope the
|
||||
density field with the fadpt function values.
|
||||
|
||||
>>
|
||||
|
||||
>>> **radapt **/ / / 1,0,0 / **user**
|
||||
|
||||
**doping **/** user **/ density / **set **/1,0,0/
|
||||
>
|
||||
|
||||
> FORMAT FOR fadpt:
|
||||
|
||||
>
|
||||
|
||||
>> subroutine fadpt(xvec,yvec,zvec,imtvec,nvec,time,fvec)
|
||||
|
||||
xvec, yvec, zvec --- Vectors of x, y, and z coordinates of the points where
|
||||
the function is to be evaluated.
|
||||
|
||||
imtvec --- Vector of **imt** values (material types) for the case where
|
||||
function value depends on material type as well as position (ie. functions
|
||||
with discontinuities).
|
||||
|
||||
nvec --- Vector length (= number of places where function is to be evaluated).
|
||||
|
||||
>>
|
||||
|
||||
>> time --- Time (scalar), for time-dependent functions.
|
||||
|
||||
>>
|
||||
|
||||
>> fvec --- Vector of adaption function values.
|
||||
|
||||
>
|
||||
|
||||
>
|
||||
|
||||
SAMPLE FUNCTIONS AND INPUT DECKS
|
||||
|
||||
>
|
||||
|
||||
>> To demonstrate adaptive smoothing using **mega**, examples are available
|
||||
which use the files [fadpt_boron.f](../../new_html/fadpt_boron.f),[input.boron
|
||||
.3dtet](../../new_html/input.boron.3dtet),[input.boron.3dhex](../../new_html/i
|
||||
nput.boron.3dhex),[fadpt_gyro.f](../../new_html/fadpt_gyro.f), [input.gyro.3dt
|
||||
et](../../new_html/input.gyro.3dtet),[input.gyro.3dhex](../../new_html/input.g
|
||||
yro.3dhex).
|
||||
|
||||
> > 1. Boron density function fadpt_boron.f. Load the file fadpt_boron.f ahead
|
||||
of the **LaGriT** libraries; this will cause the default fadpt subroutine to
|
||||
be displaced by the one in this file. The result is that now 3D adaptive
|
||||
smoothing will attempt to adapt 3D tetrahedral or hybrid meshes to the boron
|
||||
density function devised by Kent Smith of Bell Labs. This function has a
|
||||
maximum value of 1.1 x 1018, and drops rapidly to zero; the function attains
|
||||
its largest values on a T-shaped region in space and provides very challenging
|
||||
isosurfaces to capture. Two input decks use this function:
|
||||
|
||||
>>
|
||||
|
||||
>>> a. input.boron.3dtet. This deck generates and adapts a tetrahedral mesh to
|
||||
the boron function. _place_holder; A snapshot of the adapted grid may be
|
||||
seen at [boron.png](../../images/boron.png).
|
||||
|
||||
b. input.boron.3dhex. This deck generates and adapts a hexahedral mesh to the
|
||||
boron function. _place_holder; _place_holder; A snapshot of the
|
||||
adapted grid may be seen at [boron.hex.png.](../../images/boron.hex.png)
|
||||
|
||||
>>
|
||||
|
||||
>> 2. "Gyroscope function" fadpt_gyro.f. This function has large second
|
||||
derivatives near three rings of unit diameter which are aligned with each of
|
||||
the three coordinate planes which pass through the origin. Adaption to this
|
||||
function results in the pulling of the grid towards the rings when running the
|
||||
following two input decks:
|
||||
|
||||
>>
|
||||
|
||||
>>> a. input.gyro.3dtet. This deck generates and adapts a tetrahedral mesh to
|
||||
the "gyroscope" function. _place_holder; _place_holder; A snapshot of
|
||||
the adapted grid may be seen at [gyro.png](../../images/gyro.png).
|
||||
|
||||
b. input.gyro.3dhex. This deck generates and adapts a hexahedral mesh to the
|
||||
"gyr/scope" function. _place_holder; _place_holder; A snapshot of the
|
||||
adapted grid may be seen at [gyro.hex.png](../../images/gyro.hex.png).
|
||||
|
||||
>>
|
||||
|
||||
>> RELEVANT LaGriT VARIABLE FOR radapt
|
||||
|
||||
The **maxiter_sm** variable is provided to control the maximum number of
|
||||
iterations used by **radapt** on a single call. By default, this variable is
|
||||
set to 25, but this can be changed by the user. For example,
|
||||
|
||||
**assign **/ / /** maxiter_sm **/** **50
|
||||
changes the maximum number of iterations to 50. If **radapt **detects a
|
||||
sufficient amount of convergence, it will terminate smoothing in less than
|
||||
**maxiter_sm** iterations.
|
||||
|
||||
88
documentation/lagrit_manual/commands/rankvolume.txt
Executable file
88
documentation/lagrit_manual/commands/rankvolume.txt
Executable file
@@ -0,0 +1,88 @@
|
||||
.. _rankvolume:
|
||||
|
||||
> **_RANKVOLUME_**
|
||||
|
||||
 _place_holder;
|
||||
|
||||
 _place_holder;
|
||||
|
||||
>
|
||||
|
||||
>> RANKVOLUME prints out the lowest volume elements from a mesh, ranked in
|
||||
increasing order. _place_holder; The default is to print out the 100
|
||||
lowest volume elements, but this number can be changed by specifying it as an
|
||||
optional second argument to the command. Also printed are the number of
|
||||
exterior boundary faces and number of interfaces faces for each of these
|
||||
elements.
|
||||
|
||||
 _place_holder; FORMAT: **rankvolume**/[number_of_elements_to_rank]
|
||||
EXAMPLE:  _place_holder;
|
||||
|
||||
rankvolume/10
|
||||
|
||||
elt. no. _place_holder; _place_holder; _place_holder; _place_h
|
||||
older; _place_holder; _place_holder; volume _place_holder; _pl
|
||||
ace_holder; _place_holder; _place_holder; #ext.bound.faces
|
||||
#int.bound.faces
|
||||
|
||||
 _place_holder; _place_holder; _place_holder;
|
||||
343660 _place_holder; 0.105844E-05 _place_holder; _place_holder;&n
|
||||
bsp_place_holder; _place_holder; _place_holder; 0 _place_holder;&n
|
||||
bsp_place_holder; _place_holder; _place_holder; _place_holder;&nbs
|
||||
p_place_holder; _place_holder; _place_holder; _place_holder; 1
|
||||
|
||||
 _place_holder; _place_holder; _place_holder;
|
||||
567342 _place_holder; 0.105844E-05 _place_holder; _place_holder;&n
|
||||
bsp_place_holder; _place_holder; _place_holder; 0 _place_holder;&n
|
||||
bsp_place_holder; _place_holder; _place_holder; _place_holder;&nbs
|
||||
p_place_holder; _place_holder; _place_holder; _place_holder; 0
|
||||
|
||||
 _place_holder; _place_holder; _place_holder;
|
||||
567266 _place_holder; 0.105844E-05 _place_holder; _place_holder;&n
|
||||
bsp_place_holder; _place_holder; _place_holder; 0 _place_holder;&n
|
||||
bsp_place_holder; _place_holder; _place_holder; _place_holder;&nbs
|
||||
p_place_holder; _place_holder; _place_holder; _place_holder; 1
|
||||
|
||||
 _place_holder; _place_holder; _place_holder;
|
||||
283659 _place_holder; 0.105844E-05 _place_holder; _place_holder;&n
|
||||
bsp_place_holder; _place_holder; _place_holder; 0 _place_holder;&n
|
||||
bsp_place_holder; _place_holder; _place_holder; _place_holder;&nbs
|
||||
p_place_holder; _place_holder; _place_holder; _place_holder; 0
|
||||
|
||||
 _place_holder; _place_holder; _place_holder;
|
||||
687334 _place_holder; 0.105844E-05 _place_holder; _place_holder;&n
|
||||
bsp_place_holder; _place_holder; _place_holder; 0 _place_holder;&n
|
||||
bsp_place_holder; _place_holder; _place_holder; _place_holder;&nbs
|
||||
p_place_holder; _place_holder; _place_holder; _place_holder; 0
|
||||
|
||||
 _place_holder; _place_holder; _place_holder;
|
||||
450784 _place_holder; 0.105844E-05 _place_holder; _place_holder;&n
|
||||
bsp_place_holder; _place_holder; _place_holder; 0 _place_holder;&n
|
||||
bsp_place_holder; _place_holder; _place_holder; _place_holder;&nbs
|
||||
p_place_holder; _place_holder; _place_holder; _place_holder; 0
|
||||
|
||||
 _place_holder; _place_holder; _place_holder;
|
||||
730990 _place_holder; 0.105844E-05 _place_holder; _place_holder;&n
|
||||
bsp_place_holder; _place_holder; _place_holder; 0 _place_holder;&n
|
||||
bsp_place_holder; _place_holder; _place_holder; _place_holder;&nbs
|
||||
p_place_holder; _place_holder; _place_holder; _place_holder; 0
|
||||
|
||||
 _place_holder; _place_holder; _place_holder;
|
||||
146725 _place_holder; 0.105844E-05 _place_holder; _place_holder;&n
|
||||
bsp_place_holder; _place_holder; _place_holder; 0 _place_holder;&n
|
||||
bsp_place_holder; _place_holder; _place_holder; _place_holder;&nbs
|
||||
p_place_holder; _place_holder; _place_holder; _place_holder; 0
|
||||
|
||||
 _place_holder; _place_holder; _place_holder;
|
||||
785111 _place_holder; 0.105844E-05 _place_holder; _place_holder;&n
|
||||
bsp_place_holder; _place_holder; _place_holder; 0 _place_holder;&n
|
||||
bsp_place_holder; _place_holder; _place_holder; _place_holder;&nbs
|
||||
p_place_holder; _place_holder; _place_holder; _place_holder; 0
|
||||
|
||||
 _place_holder; _place_holder; _place_holder;
|
||||
450711 _place_holder; 0.105844E-05 _place_holder; _place_holder;&n
|
||||
bsp_place_holder; _place_holder; _place_holder; 0 _place_holder;&n
|
||||
bsp_place_holder; _place_holder; _place_holder; _place_holder;&nbs
|
||||
p_place_holder; _place_holder; _place_holder; _place_holder;
|
||||
0 _place_holder; _place_holder; _place_holder;
|
||||
|
||||
64
documentation/lagrit_manual/commands/read.txt
Executable file
64
documentation/lagrit_manual/commands/read.txt
Executable file
@@ -0,0 +1,64 @@
|
||||
.. _read :
|
||||
|
||||
 _place_holder;
|
||||
|
||||
> **_READ_**
|
||||
|
||||
>
|
||||
|
||||
>> This command reads in data into the active Mesh Object, replacing whatever
|
||||
data might have been previously contained in the active Mesh Object.
|
||||
|
||||
> FORMAT:
|
||||
|
||||
>
|
||||
|
||||
>> avs, LaGriT, and gmv formats are supported. _place_holder; The other
|
||||
formats may be used, but no guarantees are made about their capabilities.
|
||||
goCad format is supported only for reading TSURF files.
|
||||
|
||||
>>
|
||||
|
||||
>> **[read/avs](../read_avs.html)**
|
||||
|
||||
**[read/LaGriT](../read_lagrit.html)**
|
||||
**[read/gmv](../read_gmv.html)**
|
||||
**[read/gocad](../read_gocad.html)**
|
||||
**[read/iges_grid](../read_iges_grid.html)**
|
||||
**[read/ngp](../read_ngp.html)**
|
||||
**[read/vrml](../read_vrml.html)**
|
||||
**[read/datex](../read_datex.html)**
|
||||
**[read sheetij](../read_sheetij.html)**
|
||||
**[read/gmvfreeformat](../read_freeformat.html)**
|
||||
**[read/zone|zonn
|
||||
](../read_fehm_zone.html)**
|
||||
|
||||
>>
|
||||
|
||||
>> Note: To read tabular data (spreadsheet style x,y,z nodes or attributes)
|
||||
see: [cmo/readatt/...](cmo/cmo_readatt.html)
|
||||
|
||||
>
|
||||
|
||||
> EXAMPLES:
|
||||
|
||||
>
|
||||
|
||||
>> **read** / gmv / myfile / mesh_object_name
|
||||
|
||||
**read** / LaGriT / myfile
|
||||
|
||||
Short form syntax does not require file type as the second token. This is
|
||||
supported for the suffixes listed below. Suffix may be upper or lower case.
|
||||
|
||||
|
||||
**read** / example.[inp|avs|gmv|ts|lg|lagrit] / mesh_object_name
|
||||
|
||||
See links to various formats for more detailed explanations and examples.
|
||||
|
||||
|
||||
|
||||
[
|
||||
|
||||
](../read_fehm_zone.html)
|
||||
|
||||
128
documentation/lagrit_manual/commands/recon.txt
Executable file
128
documentation/lagrit_manual/commands/recon.txt
Executable file
@@ -0,0 +1,128 @@
|
||||
.. _recon:
|
||||
|
||||
 _place_holder;
|
||||
|
||||
> **_RECON_**
|
||||
|
||||
>
|
||||
|
||||
>> This command flips connections in the mesh to get restore the Delaunay
|
||||
criterion or to improve element shapes. The option 1 (recommended for 2D
|
||||
meshes only) adds points on the boundaries if needed. The option 0 (default)
|
||||
specifies that no points are to be added on the boundaries. The standard
|
||||
method used by recon is to flip connections based on the in-sphere test (the
|
||||
circumsphere of a tetrahedral element should contain no other nodes).
|
||||
Additional flipping criteria are available. The Minimum Error Gradient
|
||||
Adaption ([mega](RADAPT.html)) can be invoked by changing the value of the
|
||||
code variable [ivoronoi](../meshobject.html) (**cmo/setatt**//ivoronoi/-2).
|
||||
The effect of this option is to generate well shaped elements; however the
|
||||
grid will not be Delaunay. If the user has a function to used for adaptive
|
||||
reconnection this option is available by setting the code variable ivoronoi to
|
||||
2 (**cmo/setatt**//ivoronoi/2). The user will have to supply an external
|
||||
function.
|
||||
|
||||
> > If damage is specified then flips on exterior boundaries are checked to
|
||||
verify that the maximum depth of deformation of the external boundary does not
|
||||
exceed the value of damage. The default value of damage is 1% of the problem
|
||||
size. This setting prevents connecting across corners if the external boundary
|
||||
is a reflective box.
|
||||
|
||||
>>
|
||||
|
||||
>> If the keyword **checkaxy **is provided, then 2D flips are suppressed if
|
||||
the new triangles
|
||||
|
||||
would have xy-projected areas less than EPSILONA.
|
||||
|
||||
>>
|
||||
|
||||
>> **recon** is called by other LaGriT commands such as
|
||||
**massage**. _place_holder; To disable recon set ivoronoi to 5
|
||||
(**cmo/setatt**//ivoronoi/5).
|
||||
|
||||
>>
|
||||
|
||||
>> **recon** will by default reconnect across interface
|
||||
edges. _place_holder; To restrict reconnection to interior faces and
|
||||
exterior boundary faces, set [iopt2to2](../meshobject.html) to 0
|
||||
(**cmo/setatt**//iopt2to2/0)
|
||||
|
||||
>
|
||||
|
||||
> FORMAT:
|
||||
|
||||
>
|
||||
|
||||
>> **recon**/[**1**|**0**]/[damage]/[**checkaxy**]
|
||||
|
||||
>
|
||||
|
||||
> EXAMPLES:
|
||||
|
||||
>
|
||||
|
||||
>> **recon** _place_holder; _place_holder; attempt to restore Delaunay
|
||||
|
||||
>>
|
||||
|
||||
>> **cmo/setatt**//ivoronoi/-2
|
||||
|
||||
>>
|
||||
|
||||
>> **recon _place_holder;** _place_holder; _place_holder; attempt
|
||||
to improve geometric mesh quality
|
||||
|
||||
>>
|
||||
|
||||
>> **recon**/**1** _place_holder; for 2d meshes add nodes on boundaries to
|
||||
guarantee Delaunay
|
||||
|
||||
>>
|
||||
|
||||
>> **recon**//.001 _place_holder; reconnect limit interface and boundary
|
||||
damage to a maximum of .001.
|
||||
|
||||
>>
|
||||
|
||||
>> **recon**/0/.001/**checkaxy** _place_holder; for 2d meshes reconnect,
|
||||
limiting damage to a maximum of .001
|
||||
|
||||
 _place_holder; _place_holder; _place_holder; _place_holder;&n
|
||||
bsp_place_holder; _place_holder; _place_holder; _place_holder;&nbs
|
||||
p_place_holder; _place_holder; _place_holder; _place_holder; _
|
||||
place_holder; _place_holder; _place_holder; _place_holder; _pl
|
||||
ace_holder; _place_holder; _place_holder; _place_holder; _plac
|
||||
e_holder; _place_holder; _place_holder; _place_holder; _place_
|
||||
holder; _place_holder; _place_holder; _place_holder; _place_ho
|
||||
lder; _place_holder; _place_holder; _place_holder; _place_hold
|
||||
er; _place_holder; _place_holder; _place_holder; _place_holder
|
||||
; _place_holder; _place_holder; _place_holder; and preventing
|
||||
creation of any negatively oriented or small triangles
|
||||
|
||||
 _place_holder; _place_holder; _place_holder; _place_holder;&n
|
||||
bsp_place_holder; _place_holder; _place_holder; _place_holder;&nbs
|
||||
p_place_holder; _place_holder; _place_holder; _place_holder; _
|
||||
place_holder; _place_holder; _place_holder; _place_holder; _pl
|
||||
ace_holder; _place_holder; _place_holder; _place_holder; _plac
|
||||
e_holder; _place_holder; _place_holder; _place_holder; _place_
|
||||
holder; _place_holder; _place_holder; _place_holder; _place_ho
|
||||
lder; _place_holder; _place_holder; _place_holder; _place_hold
|
||||
er; _place_holder; _place_holder; _place_holder; _place_holder
|
||||
; _place_holder; _place_holder; _place_holder; (with respect to
|
||||
the xy-plane).
|
||||
|
||||
 _place_holder;
|
||||
|
||||
 _place_holder;
|
||||
|
||||
>
|
||||
|
||||
> [Click here for demos](../demos/2d_recon/test/html/main_2d_recon.html)
|
||||
|
||||
>
|
||||
|
||||
>>  _place_holder;
|
||||
|
||||
|
||||
 _place_holder;
|
||||
|
||||
378
documentation/lagrit_manual/commands/refine.txt
Executable file
378
documentation/lagrit_manual/commands/refine.txt
Executable file
@@ -0,0 +1,378 @@
|
||||
.. _refine :
|
||||
|
||||
## REFINE
|
||||
|
||||
> The **refine** command is used to create more elements. The method in which
|
||||
these new elements are formed is based on the refine_option chosen. The refine
|
||||
criteria used in these methods are defined in the [Grid
|
||||
Refinement](http://lagrit.lanl.gov/new_html/REFINE1.html) Section.
|
||||
|
||||
|
||||
|
||||
COMMAND ARGUMENTS:
|
||||
|
||||
> The refinement choice is followed on the command line by options that are
|
||||
needed for the type of refinement chosen. See the details for each
|
||||
refine_option for a description of parameters specific to the refine type. See
|
||||
examples below for various formats. In general the refine arguments include:
|
||||
|
||||
>
|
||||
|
||||
> **refine** / refine_option / field / interpolation / refine_type / range /
|
||||
xvalue
|
||||
|
||||
/ [ xvalue2 / xvalue3 / inclusive_flag ]
|
||||
|
||||
|
||||
refine_option: indicates the choice of refinement method. The choices for
|
||||
first parameter are:
|
||||
|
||||
> * **junction** will refine object where field crosses xvalue
|
||||
|
||||
> * **constant** will refine object where field > xvalue
|
||||
|
||||
> * **delta** will refine object where delta(field) > xvalue
|
||||
|
||||
> * **lambda** will refine object where lambda(field) < xvalue
|
||||
|
||||
> * **maxsize** will refine object where object > xvalue. Size refers to
|
||||
volume for tets, area for face, and length for edges.
|
||||
|
||||
> * **aspect** will refine where aspect ratio < xvalue
|
||||
|
||||
> * **addpts** will refine explicitly by adding a set of nodes
|
||||
|
||||
> * **rivara **edges longer than xvalue will be refined according to the
|
||||
principle that a refined edge candidate is the longest edge in any element
|
||||
that contains it. This results in a recursive refinement procedure that adds
|
||||
neighboring edges to the refinement candidate list until no neighbor edge is
|
||||
longer then the candidate. refine_type must be **edge**. Arguments field and
|
||||
interpolation are ignored. This method of refinement, when used with a pset,
|
||||
produces a nicely graded mesh.
|
||||
|
||||
> * **rivara_boundary** applies the rivara algorithm, but only bisect edges
|
||||
on external boundaries.
|
||||
|
||||
> * **rivera_truncated** applies the rivara algorithm, but restricts the
|
||||
neighborhood search to the edges in the selected pset. If the pset is the
|
||||
entire mesh, this option has the same behavior as **rivara**.
|
||||
|
||||
> * **roughness** will refine based on the distance of the endpoint of an
|
||||
edge to the plane determined by the synthetic normal with respect to a
|
||||
specified surface at the other endpoint of the edge. This is intended to
|
||||
increase refinement on surfaces near corners or around sharp bends in
|
||||
surfaces. xvalue is the distance, the surface name must follow the distance
|
||||
argument.
|
||||
|
||||
> * **edge_list** will bisect a set of edges specified by the node numbers
|
||||
of the endpoints of the edges. refine_type must be **edge** followed by a list
|
||||
of end points making up the edge_list.
|
||||
|
||||
> * **element_set** (or **eltset**) will refine all elements in a specified
|
||||
element set. The mesh object may be tri, quad, tet or hex. _place_holder;
|
||||
Internally a node set will be created from the chosen
|
||||
elements. _place_holder; Because of the conversion from element set to
|
||||
point set, it is possible that some element not in the original element set
|
||||
will have all of its nodes as members of the internally constructed points set
|
||||
and hence will be refined. _place_holder; Refinement_method is
|
||||
**constant**; refine_type is **element**; inclusion_flag is
|
||||
**exclusive**. _place_holder; The element range **eltset,get,**ename is
|
||||
the only argument after **element_set**. _place_holder; _place_holder;
|
||||
|
||||
> The refine command generated internally is :
|
||||
|
||||
**refine**/**constant**/**imt1**/**linear**/**element**/**pset**,**get**,internal_psetname/ -1.,0.,0./**exclusive**
|
||||
directional refinement is available through **amr** keyword (see OCTREE
|
||||
examples below):
|
||||
|
||||
refine/constant/imt1/linear/element/**pset,get,psetname**/-1.,0.,0./exclusive/
|
||||
** amr prd_choice**
|
||||
|
||||
> * **interface** will bisect a set of non-interface edges of tets all of
|
||||
whose vertices are interface nodes. Valid only for 3D tetrahedral grids and is
|
||||
useful to 'unlock' tetrahedra that are stuck because all of their vertices lie
|
||||
on interface surfaces. _place_holder; After the refine operation these
|
||||
tetrahedral will be replaced by tetrahedra containing a vertex that is not on
|
||||
the surface - thus allowing later smooth or massage operations more freedom to
|
||||
improve the grid.
|
||||
|
||||
refine_type specifies what object will be refined and how that object will be
|
||||
refined:
|
||||
|
||||
> **element **in 3D will refine elements by placing a point in the center of
|
||||
the element.
|
||||
|
||||
 _place_holder; _place_holder; _place_holder; _place_holder;
|
||||
in 2D (triangle) will refine element by refining all edges of the triangle.
|
||||
|
||||
**face **in 3D will refine facets by placing a point in the center of the facet.
|
||||
 _place_holder; _place_holder; _place_holder; _place_holder;
|
||||
in 2D (triangle) will refine face by refining all edges of the face.
|
||||
|
||||
**edge **will refine edges by placing a point on the midpoint of the edge.
|
||||
**faceedge** will refine facets by refining all edges of the facet.
|
||||
**tetedge** will refine elements by refining all edges of the element.
|
||||
|
||||
field must refer to a previously defined attribute of the current Mesh Object.
|
||||
|
||||
interpolation specifies how to interpolate the field to give field values to
|
||||
the new nodes created. The implemented values are:
|
||||
|
||||
> **linear**
|
||||
|
||||
**log**
|
||||
**asinh**
|
||||
|
||||
|
||||
range is the selection of points designated by node numbers for
|
||||
ifirst,ilast,istride or **pset,get**,pname. **/1,0,0/** will select all nodes
|
||||
in the Mesh object.
|
||||
|
||||
xvalue [/xvalue2/xvalue3/] is the real number usually indicating a size for
|
||||
the different refine options. Most of the refine options do not use the second
|
||||
and third values so their places will be empty **///**. See examples.
|
||||
|
||||
inclusion_flag is an optional flag specifing if refinement is an inclusive or
|
||||
an exclusive operation. By default, all operations are **exclusive**. For
|
||||
**inclusive**, if an edge refinement is specified restricted to a pset, then
|
||||
an edge is eligible for refinement if either or both of the end points belong
|
||||
to the pset selected. If the inclusion_flag is **exclusive** then both end
|
||||
points must be in the pset. The implemented values are:
|
||||
|
||||
> **inclusive**
|
||||
|
||||
**_exclusive_**
|
||||
|
||||
QUADTREE and OCTREE REFINEMENT:
|
||||
|
||||
Quad and hexahedral elements may be refined creating quad tree and octree
|
||||
meshes. Three new Mesh object attributes are added during this operation. The
|
||||
refine_type must be **element**. The refine_option must be **constant,**
|
||||
**junction **or **maxsize**. The values for /xvalue/xvalue2/xvalue3/ should be
|
||||
/-1.,0.,0./. For an element set, use the shortened syntax
|
||||
**refine/element_set/eltset,get,**esetname.
|
||||
|
||||
The element attributes added to the Mesh object are:
|
||||
|
||||
> **itetlev**(ie) is an integer with the level of refinement. An unrefined
|
||||
mesh element has **itetlev**(ie)=0, one level of refinement **itetlev**(ie)=1,
|
||||
etc.
|
||||
|
||||
**itetkid**(ie) is a pointer to a child element number. If nothing has been done to change element numbering, it is element number of the first child element created and the rest of the children are in sequence after the first child. If** itetkid**(ie)=0 , the element has not been refined further.
|
||||
**itetpar**(ie)is a pointer to the parent element at refinement level _place_holder; **itetlev**(ie)-1.
|
||||
|
||||
Quad meshes will have 4 children for each refined element. Hex meshes will
|
||||
have 8 children. The children are generated sequentially; The first child will
|
||||
contain the first local node of the parent element, the other elements are
|
||||
created in the order shown in this diagram.
|
||||
|
||||
|
||||
For example in the picture below, element e1 is refined to create 8 children,
|
||||
c1, c2, c3, c4, c5, c6, c7, c8.
|
||||
|
||||
|
||||
|
||||
>
|
||||
|
||||
> Label
|
||||
|
||||
> Element #
|
||||
|
||||
> itetlev
|
||||
|
||||
> itetkid
|
||||
|
||||
> itetpar
|
||||
|
||||
>
|
||||
|
||||
> e1
|
||||
|
||||
> 1
|
||||
|
||||
> 0
|
||||
|
||||
> 2
|
||||
|
||||
> 0
|
||||
|
||||
>
|
||||
|
||||
> c1
|
||||
|
||||
> 2
|
||||
|
||||
> 1
|
||||
|
||||
> 0
|
||||
|
||||
> 1
|
||||
|
||||
>
|
||||
|
||||
> c2
|
||||
|
||||
> 3
|
||||
|
||||
> 1
|
||||
|
||||
> 0
|
||||
|
||||
> 1
|
||||
|
||||
>
|
||||
|
||||
> c3
|
||||
|
||||
> 4
|
||||
|
||||
> 1
|
||||
|
||||
> 0
|
||||
|
||||
> 1
|
||||
|
||||
>
|
||||
|
||||
> c4
|
||||
|
||||
> 5
|
||||
|
||||
> 1
|
||||
|
||||
> 0
|
||||
|
||||
> 1
|
||||
|
||||
>
|
||||
|
||||
> c5
|
||||
|
||||
> 6
|
||||
|
||||
> 1
|
||||
|
||||
> 0
|
||||
|
||||
> 1
|
||||
|
||||
>
|
||||
|
||||
> c6
|
||||
|
||||
> 7
|
||||
|
||||
> 1
|
||||
|
||||
> 0
|
||||
|
||||
> 1
|
||||
|
||||
>
|
||||
|
||||
> c7
|
||||
|
||||
> 8
|
||||
|
||||
> 1
|
||||
|
||||
> 0
|
||||
|
||||
> 1
|
||||
|
||||
>
|
||||
|
||||
> c8
|
||||
|
||||
> 9
|
||||
|
||||
> 1
|
||||
|
||||
> 0
|
||||
|
||||
> 1
|
||||
|
||||
>
|
||||
|
||||

|
||||
|
||||
|
||||
 _place_holder;
|
||||
|
||||
> One can control refinement so that a hex is broken into either 8, 4 or 2
|
||||
elements and a quad is broken into either 4 or 2 elements. This is controlled
|
||||
with the principal refine direction choice (prd_choice) parameter. This syntax
|
||||
works assuming imt values are greater or equal to zero with principal refine
|
||||
direction chosen through a combination of "123" prd_choice indicators as
|
||||
defined below. The command line used is:
|
||||
|
||||
refine/constant/itetclr/linear/element/1,0,0/-1.,0.,0./exclusive/amr
|
||||
**prd_choice**
|
||||
|
||||
or with element selection (based on pset and inclusive/exclusive options): ref
|
||||
ine/constant/imt1/linear/element/**pset,get,pname**/-1.,0.,0./**inclusive**/
|
||||
amr **prd_choice**
|
||||
|
||||
>
|
||||
|
||||
> **prd_choice** indicates the chosen principal refinement direction based on
|
||||
the local hex element topology as defined by edge numbers, for instance, quad
|
||||
edge 1 is in the x direction relative to the local topology.
|
||||
|
||||
= 1 refine along x direction, 1 hex->2 hex, 1 quad->2 quad (quad edges 1 and
|
||||
4)
|
||||
|
||||
= 2 refine along y direction, 1 hex->2 hex, 1 quad->2 quad (quad edges 2 and
|
||||
3)
|
||||
|
||||
= 3 refine along z direction, 1 hex->2 hex, 1 quad->4 quad
|
||||
|
||||
= 12 refine along x and y direction, 1 hex->4 hex, 1 quad->4 quad
|
||||
|
||||
= 13 refine along x and z direction, 1 hex->4 hex, 1 quad->4 quad
|
||||
|
||||
= 23 refine along y and z direction, 1 hex->4 hex, 1 quad->4 quad
|
||||
|
||||
= 123 refine xyz with prd amr routines, 1 hex->8 hex, 1 quad->4 quad
|
||||
|
||||
= 0 refine xyz with default amr refinement, 1 hex->8 hex, 1 quad->4 quad
|
||||
|
||||
|
||||
|
||||
FORMATS:
|
||||
|
||||
> **refine**/refine_option/ [field]/ [interpolation]/refine_type /ifirst,
|
||||
ilast, istride/xrefine/yrefine/zrefine/inclusive_flag/
|
||||
|
||||
**refine/roughness///edge**/ifirst,ilast,istride/distance/surface_name/**exclusive|inclusive**
|
||||
**refine/edge_list///edge/**edge_list/
|
||||
**refine/interface/// edge/pset,get**,psetname
|
||||
**refine/element_set / eltset,get**,esetname
|
||||
**refine/eltset / eltset,get**,esetname
|
||||
|
||||
EXAMPLES:
|
||||
|
||||
> **refine**/**maxsize**///**edge**/**pset,get,**something / .25 will refine
|
||||
element where edge is longer than .25
|
||||
**refine**/**constant**/concentration/**log**/**edge**/
|
||||
1,0,0/25.0///**inclusive** will refine where concentration is greater than 25.
|
||||
**refine**/**addpts**///**tet**/**pset,get,**newpoints/ refine explicitly by
|
||||
adding the new nodes in the set newpoints
|
||||
**refine**/**rivara**///**edge/pset,get,**p1/.5///**inclusive** refine all
|
||||
edges containing at least one node in pset p1 that are longer than .5. Using
|
||||
the 'rivera' algorithm may result in edges not containing nodes in the pset to
|
||||
be refined. **refine/rivara_truncated///edge/pset,get,p1/**.5///**exclusive**
|
||||
rivera_truncated, exclusive will refine only edges both of whose endpoints are
|
||||
in the selected pset named p1 **refine/rivara_boundary///edge/1,0,0/**.25
|
||||
rivara_boundary will only refine boundary edges.
|
||||
**refine/roughness///edge/1,0,0/**.28/ptop**/inclusive** will refine based on
|
||||
.28 distance to the surface named ptop. **refine/edge_list///edge/**1 2 23 47
|
||||
will refine the edge with endpoints 1 and 2 AND the edge with endpoints 23 and
|
||||
47. **eltset** / elem3 / id_elem1 / **eq** / 3
|
||||
|
||||
**refine/eltset** / **eltset,get**, elem3 will create a node set from the element set named elem3 and refine using the constant option. **refine/constant/**imt1/linear/**element/pset,get,**pbox /-1.,0.,0./**inclusive** create a quadtree refined quad mesh **eltset** / elm2 / itetclr / **eq** / 2
|
||||
**pset**/ pelm2 / **eltset** elm2
|
||||
**refine/constant/imt1/linear/element/pset,get,**pelm2**/-1.,0.,0./**inclusive/**amr** 12 refine the material 2 elements of a hex mesh , do not refine in the vertical direction **refine/constant/imt1/linear/element/pset,get,**pelm2**/-1.,0.,0./**inclusive/**amr** 3 refine the material 2 elements of a hex mesh , refine only in the vertical direction
|
||||
|
||||
|
||||
|
||||
22
documentation/lagrit_manual/commands/refine2d.txt
Executable file
22
documentation/lagrit_manual/commands/refine2d.txt
Executable file
@@ -0,0 +1,22 @@
|
||||
.. _refine2d :
|
||||
|
||||
>  _place_holder;
|
||||
|
||||
>
|
||||
|
||||
> **_REFINE2D_**
|
||||
|
||||
>
|
||||
|
||||
>> This routine deterministically refines a triangle by bisecting all the
|
||||
edges and connect these bisection points to form new triangles. Thus, after
|
||||
calling **REFINE2D** once, a triangle will be tessellated into 4 triangles.
|
||||
|
||||
>
|
||||
|
||||
> FORMAT:
|
||||
|
||||
>
|
||||
|
||||
>> **refine2d**
|
||||
|
||||
65
documentation/lagrit_manual/commands/region.txt
Executable file
65
documentation/lagrit_manual/commands/region.txt
Executable file
@@ -0,0 +1,65 @@
|
||||
.. _region :
|
||||
|
||||
 _place_holder;
|
||||
|
||||
> **_REGION_**
|
||||
|
||||
>
|
||||
|
||||
>> Define a geometric region from the set of surfaces by logically combining
|
||||
the surface names. _place_holder; A region may be removed from the
|
||||
geometry by specifying the release keyword.
|
||||
|
||||
>>
|
||||
|
||||
>> To define a region, the operators **lt, le, gt, and ge** are applied to
|
||||
previously defined surfaces according to the following rules.
|
||||
|
||||
>>
|
||||
|
||||
>>> **lt** -- if the surface following is a volume then lt means inside not
|
||||
including the surface of the volume. If the surface is a plane or a sheet lt
|
||||
means the space on the side of the plane or sheet opposite to the normal not
|
||||
including the plane or sheet itself.
|
||||
|
||||
**le** -- if the surface following is a volume then le means inside including the surface of the volume. If the surface is a plane or a sheet le means the space on the side of the plane or sheet opposite to the normal including the plane or sheet itself.
|
||||
**gt** -- if the surface following is a volume then gt means outside not including the surface of the volume. If the surface is a plane or a sheet **gt** means the space on the same side of the plane or sheet as the normal not including the plane or sheet itself.
|
||||
**ge** -- if the surface following is a volume then ge means outside including the surface of the volume. If the surface is a plane or a sheet **ge** means the space on the same side of the plane or sheet as the normal including the plane or sheet itself.
|
||||
The operators or, and, and not applied to surfaces mean union, intersection
|
||||
and complement respectively. The parentheses operators, (and ), are used for
|
||||
nesting. Spaces are required as delimiters to separate all operators and
|
||||
operands. Internal interfaces should be included in exactly one region. In the
|
||||
event of conflicting region commands, the one occurring last in the input
|
||||
stream takes precedence.
|
||||
|
||||
>>>
|
||||
|
||||
>>> Defining a _place_holder; region will cause the information associated
|
||||
with this material region to be stored under the name of the [geometry
|
||||
](../geometries.html)of the current mesh object. _place_holder; Releasing
|
||||
the _place_holder; region will remove this information.
|
||||
|
||||
>
|
||||
|
||||
> FORMAT:
|
||||
|
||||
>
|
||||
|
||||
>> **region/**region_name/region definition
|
||||
|
||||
**region/**region_name/**release**
|
||||
 _place_holder;
|
||||
|
||||
>
|
||||
|
||||
> EXAMPLES:
|
||||
|
||||
>
|
||||
|
||||
>> **region**/reg1/**le** sphere1 **and** ( **lt** plane1 **or** **gt** plane2
|
||||
)
|
||||
|
||||
**region**/reg2/**le** sphere1 **and** ( **ge** plane1 **and** **le** plane2 )
|
||||
**region**/reg1/**release**
|
||||
 _place_holder;
|
||||
|
||||
63
documentation/lagrit_manual/commands/regnpts.txt
Executable file
63
documentation/lagrit_manual/commands/regnpts.txt
Executable file
@@ -0,0 +1,63 @@
|
||||
.. _regnpts :
|
||||
|
||||
 _place_holder;
|
||||
|
||||
> **_REGNPTS_**
|
||||
|
||||
>
|
||||
|
||||
>> Generates points in a region previously defined by the region command. The
|
||||
points are generated by shooting rays through a user specified set of points
|
||||
from an origin point, line, or plane and finding the intersection of each ray
|
||||
with the surfaces that define the region. The point distribution is determined
|
||||
by the data in ptdist. If ptdist is integer, then that many points are evenly
|
||||
distributed along the ray in the region. If ptdist is real, then points are
|
||||
distributed at that distance along the ray, up to a maximum of maxpenetr
|
||||
points along the ray (in addition to any interface points that may be
|
||||
created). note: If the ray encounters a region more than once, multiple sets
|
||||
of points are layed down. Points are distributed on the regionis material
|
||||
interfaces and external boundaries if the region definition includes the
|
||||
interfaces or boundaries -- usually **ge** or **le** means that the region
|
||||
includes the interface or boundary.
|
||||
|
||||
Only surface intersection points are created if ptdist is **inside**, **in**,
|
||||
**out**, **outside**, or**both****. **In this case, surface points are created
|
||||
regardless of region ownership of the interface or boundary surface -- if a
|
||||
ray encounters a region more than once, the appropriate surface intersection
|
||||
point(s) is generated for each encounter.
|
||||
|
||||
If another region intrudes upon the regnpts region so that the regpts region
|
||||
is divided into more than one piece, points that fall inside the intruding
|
||||
region are not distributed.
|
||||
|
||||
The variables irratio and rrz determine ratio zoning when ptdist is an
|
||||
integer. Ratio zoning is on when irratio is 1; the point distribution is
|
||||
adjusted so that the ratio between successive pairs of points is rrz. When
|
||||
irratio is 3, ratio zoning is calculated on the longest ray; then this length
|
||||
distribution is applied to all rays.
|
||||
|
||||
See the description of the command **surface **for a discussion of point
|
||||
distributions with respect to sheet surfaces.
|
||||
|
||||
>
|
||||
|
||||
> FORMAT: **regnpts**/region name/ptdist/ifirst,ilast,istride/geom/ ray
|
||||
origin/irratio,rrz,maxpenetr **regnpts/**region
|
||||
name/ptdist/**pset**,**get**,setname/geom/ray origin /irratio,rrz/maxpenetr
|
||||
Where ifirst,ilast,istride or **pset**,**get**,setname define the set of
|
||||
points to shoot rays through.
|
||||
|
||||
SPECIFICALLY FOR ALLOWABLE GEOMETRIC TYPES: **regnpts**/region
|
||||
name/ptdist/ifirst,ilast,istride/**xyz**
|
||||
/x1,y1,z1/x2,y2,z2/x3,y3,z3/irratio,rrz/maxpenetr
|
||||
|
||||
Where points 1, 2, 3 define the plane to shoot rays from that are normal to
|
||||
the plane. **regnpts**/region name/ptdist/ifirst,ilast,istride/
|
||||
**rtz**/x1,y1,z1/x2,y2,z2/irratio,rrz/ Where points 1, 2, define the line from
|
||||
which to shoot perpendicular rays **regnpts**/region
|
||||
name/ptdist/ifirst,ilast,istride/
|
||||
|
||||
**rtp**/xcen,ycen,zcen/irratio,rrz,maxpenetr Where xcen,ycen,zcen define a point from which to shoot rays . **regnpts**/region name/ptdist/ifirst,ilast,istride/**points**/iffirst,iflast,ifstride/irratio,rrz/ maxpenetr Where the 2 point sets have the same length and rays are constructed between pairs of elements, one from each point set.
|
||||
 _place_holder; [Click here for
|
||||
demos](../demos/regnpts/test/html/main_regnpts.html)
|
||||
|
||||
37
documentation/lagrit_manual/commands/reorder.txt
Executable file
37
documentation/lagrit_manual/commands/reorder.txt
Executable file
@@ -0,0 +1,37 @@
|
||||
.. _reorder:
|
||||
|
||||
 _place_holder;
|
||||
|
||||
> **_REORDER_**
|
||||
|
||||
>
|
||||
|
||||
>> This command will reorder a MO according to a designated permutation
|
||||
vector. _place_holder; The permutation vector can be any integer vector
|
||||
nnodes or nelements long with min value = 1, max value = nnodes/nelements and
|
||||
no repeated entries. _place_holder; _place_holder; sort_key is the
|
||||
permutation vector - i.e. an integer node/element based mesh object attribute.
|
||||
|
||||
>>
|
||||
|
||||
>> Reorder command will decide to reorder nodes or elements based on the
|
||||
length of the permutaion vector. When elements are reordered all element
|
||||
attributes are also reordered. itet and jtet arrays are also updated. When
|
||||
nodes are reordered, all node based attributes are also reordered. Arrays such
|
||||
as isn are also updated.
|
||||
|
||||
> FORMAT:
|
||||
|
||||
>
|
||||
|
||||
>> **reorder/**cmo_name/sort_key/
|
||||
|
||||
**reorder/ -def- **/sort_key/
|
||||
>
|
||||
|
||||
> EXAMPLE:
|
||||
|
||||
>
|
||||
|
||||
>>  _place_holder;
|
||||
|
||||
167
documentation/lagrit_manual/commands/resetpts.txt
Executable file
167
documentation/lagrit_manual/commands/resetpts.txt
Executable file
@@ -0,0 +1,167 @@
|
||||
.. _resetpts :
|
||||
|
||||
 _place_holder;
|
||||
|
||||
> **_RESETPTS_**
|
||||
|
||||
>
|
||||
|
||||
>> Reset node values.
|
||||
|
||||
>>
|
||||
|
||||
>> * If option is **parent** (default) the parent child flags are reset. All
|
||||
child points are eliminated and the connectivity list is corrected to
|
||||
reference only the parent points.
|
||||
|
||||
>> * If option is **itp** the itp1 array is reset to indicate whether each
|
||||
node is in the interior (0), on an interior interface (2), on a reflected
|
||||
boundary (10), or on a reflected interface boundary (12) . Resetting itp would
|
||||
be used if nodes were removed (such as with **rmmat**) leaving new boundaries
|
||||
|
||||
>> * If option is **cell_color** then node color (**imt**) is set based on
|
||||
element color(**itetclr**). _place_holder; There are three behaviors
|
||||
possible depending on whether 0, 1 or 3 arguments are specified.
|
||||
|
||||
>> * If no arguments are given, then, loop through all **itetclr** values
|
||||
in ascending order, and reset node **imt** to element colors, (**itetclr**).
|
||||
Note that if parent/child nodes do not exist, then an interface node will have
|
||||
its **imt** value set to the largest value of **itetclr** of all elements that
|
||||
contain this node.
|
||||
|
||||
>> * If three arguments are given, then these 3 arguments are interpreted
|
||||
as itetclr_min, itetclr_max, itetclr_stride. _place_holder; Node colors
|
||||
are reset only for nodes in elements that fall in the subset
|
||||
selected. _place_holder; See examples given below.
|
||||
|
||||
>> * If one argument is given, this argument is an node** imt** value and
|
||||
only nodes with node color (**imt** ) equal to this value will be set to the
|
||||
element color (**itetclr**). _place_holder; This option loops through each
|
||||
node of each element and if the node color (**imt**) is equal to the user
|
||||
specified value (integer_node_color) then it is changed to the element color
|
||||
(**itetclr**). This will introduce a bias since the nodes are modified in the
|
||||
order of the element numbering. To give some control over the bias the user
|
||||
can specify a negative value for integer_node_color. In that case, the element
|
||||
loop goes from largest to smallest element number.
|
||||
|
||||
>
|
||||
|
||||
>>  _place_holder;****
|
||||
|
||||
>
|
||||
|
||||
> FORMAT:
|
||||
|
||||
>
|
||||
|
||||
>>  _place_holder;
|
||||
|
||||
>>
|
||||
|
||||
>> **resetpts**
|
||||
|
||||
>> remove child points
|
||||
|
||||
>>
|
||||
|
||||
>> **resetpts/parent**
|
||||
|
||||
>> remove child points
|
||||
|
||||
>>
|
||||
|
||||
>> **resetpts/itp**
|
||||
|
||||
>> set node type (**itp**) from connectivity of mesh
|
||||
|
||||
>>
|
||||
|
||||
>> **resetpts/cell_color/**
|
||||
|
||||
>> set all node colors (**imt**) from element colors(**itetclr**)
|
||||
|
||||
>>
|
||||
|
||||
>> **resetpts/cell_color/**istart,iend,istride
|
||||
|
||||
>> set all node colors (**imt**) from element colors(**itetclr**)
|
||||
|
||||
>>
|
||||
|
||||
>> **resetpts/cell_color/** integer_node_color
|
||||
|
||||
>> reset node **imt** for nodes with **imt** currently = integer_node_color
|
||||
from the **itetclr** of an element that contains the node
|
||||
|
||||
>
|
||||
|
||||
> EXAMPLES:
|
||||
|
||||
>
|
||||
|
||||
>>  _place_holder;
|
||||
|
||||
>>
|
||||
|
||||
>> **resetpts/parent**
|
||||
|
||||
>> remove child points
|
||||
|
||||
>>
|
||||
|
||||
>> **resetpts/itp**
|
||||
|
||||
>> set node type from connectivity of mesh
|
||||
|
||||
>>
|
||||
|
||||
>> **resetpts/cell_color/**1
|
||||
|
||||
>> replace node color for nodes that currently have **imt** value of 1 by the
|
||||
cell color of an element containing the node; this is done by looping through
|
||||
all the elements in cell color order, so that the value of **imt** will be the
|
||||
largest **itetclr** of the set of elements containing this node.
|
||||
|
||||
>>
|
||||
|
||||
>> **resetpts/cell_color/**
|
||||
|
||||
>> loop through all element colors and reset all node **imt** values
|
||||
|
||||
>>
|
||||
|
||||
>> **resetpts/cell_color/**-1
|
||||
|
||||
>> replace node color for nodes that currently have **imt** value of 1 by the
|
||||
cell color of an element containing the node; this is done by looping through
|
||||
all the elements in desending cell color order, so that the value of **imt**
|
||||
will be the smallest **itetclr** of the set of elements containing this node.
|
||||
|
||||
>>
|
||||
|
||||
>> **resetpts/cell_color/**1,0,0
|
||||
|
||||
>> loop through all element colors and reset all node **imt** values (same as
|
||||
previous example)
|
||||
|
||||
>>
|
||||
|
||||
>> **resetpts/cell_color/**1,3,1
|
||||
|
||||
>> loop through colors from **itetclr**=1 to **itetclr**=3
|
||||
|
||||
>>
|
||||
|
||||
>> **resetpts/cell_color/**3,1,-1** _place_holder;**
|
||||
|
||||
>> loop through colors from **itetclr**=3 to **itetclr**=1
|
||||
|
||||
>>
|
||||
|
||||
>>  _place_holder;
|
||||
|
||||
 _place_holder;****
|
||||
|
||||
** _place_holder;**
|
||||
** _place_holder;**
|
||||
|
||||
53
documentation/lagrit_manual/commands/rm.txt
Executable file
53
documentation/lagrit_manual/commands/rm.txt
Executable file
@@ -0,0 +1,53 @@
|
||||
.. _rm:
|
||||
|
||||
**** _place_holder;
|
||||
|
||||
> **_RM_**
|
||||
|
||||
>
|
||||
|
||||
>> Removes any points that are within the specified point range and specified
|
||||
volume of space. This is done in Cartesian (**xyz**), cylindrical (**rtz**),
|
||||
or spherical (**rtp**) coordinates. It should be noted that in cylindrical
|
||||
coordinates, theta is the angle in the XY- plane with respect to the x-axis,
|
||||
while in spherical coordinates theta is the angle with respect to the Z-axis
|
||||
and phi is the angle in the XY-plane with respect to the X-axis. In
|
||||
cylindrical coordinates the cylinder always lines up along the z axis; use the
|
||||
**coordsys **command before issuing the **rm **command if the points to be
|
||||
removed are not aligned with the z-axis; then issue a final **coordsys**
|
||||
command to return to normal. Also note that the points that are removed become
|
||||
dudded out (point type set to 21) and are not removed from the data array.
|
||||
|
||||
>>
|
||||
|
||||
>> The other options are:
|
||||
|
||||
>>
|
||||
|
||||
>> geometry -- **xyz**, **rtz**, **rtp**
|
||||
|
||||
ifirst,ilast,istride -- point range to search
|
||||
|
||||
xmin, ymin, zmin -- minimums of geometry type coordinates
|
||||
|
||||
xmax, ymax, zmax -- maximums of geometry type coordinates
|
||||
|
||||
xcen, ycen, zcen -- center of removal space for geometry
|
||||
|
||||
xscale, yscale, zscale -- scaling factors for geometry limits
|
||||
|
||||
 _place_holder;
|
||||
|
||||
> FORMAT:
|
||||
|
||||
>
|
||||
|
||||
>> **rm **/ geometry /ifirst,ilast,istride/xmin,ymin,zmin/xmax,ymax,zmax/
|
||||
xcen,ycen,zcen / [xscale,yscale,zscale]
|
||||
|
||||
>
|
||||
|
||||
> EXAMPLE: **rm**/**xyz**/1,0,0/2.,2.,2./4.,4.,4./0.,0.,0./
|
||||
|
||||
**rm/rtz/**1,0,0/0.,0.,0./1.,360.,10./0.,0.,0./
|
||||
|
||||
63
documentation/lagrit_manual/commands/rmmat.txt
Executable file
63
documentation/lagrit_manual/commands/rmmat.txt
Executable file
@@ -0,0 +1,63 @@
|
||||
.. _rmmat :
|
||||
|
||||
> **_RMMAT_**
|
||||
|
||||
>
|
||||
|
||||
>> This routine is used to remove points that are of a specified material
|
||||
type. _place_holder; Elements with the specified material types are
|
||||
flagged by setting the element material type negative. _place_holder;
|
||||
After using **rmmat**, **[rmpoints/](RMPOINT.html)**compress will delete
|
||||
elements whose material type is negative and the dudded nodes.
|
||||
|
||||
>
|
||||
|
||||
>  _place_holder;** FORMAT**
|
||||
|
||||
>
|
||||
|
||||
>> **rmmat**/material number/[**all|node|element**]/[**exclusive**]
|
||||
|
||||
default is: **rmmat**/material number or **rmmat**/material number/**all**
|
||||
|
||||
removes nodes with imt = material number and removes elements with itetclr=
|
||||
material number
|
||||
|
||||
>>
|
||||
|
||||
>> other options are:
|
||||
|
||||
>>
|
||||
|
||||
>> **rmmat**/material number/**node**
|
||||
|
||||
removes nodes _place_holder; with imt = material number
|
||||
|
||||
>>
|
||||
|
||||
>> **rmmat**/material number/**element**
|
||||
|
||||
removes elements with itetclr= material number
|
||||
|
||||
>>
|
||||
|
||||
>> **rmmat**/material number//**exclusive or rmmat**/material
|
||||
number/**all/exclusive**
|
||||
|
||||
removes everything except nodes with imt =material and removes everything
|
||||
except elements with itetclr= material
|
||||
|
||||
 _place_holder;
|
||||
|
||||
 _place_holder;
|
||||
|
||||
 _place_holder;
|
||||
|
||||
>
|
||||
|
||||
> [Click here for demos](../demos/rmmat/test/html/main_rmmat.html)
|
||||
|
||||
>
|
||||
|
||||
>>  _place_holder;
|
||||
|
||||
56
documentation/lagrit_manual/commands/rmpoint.txt
Executable file
56
documentation/lagrit_manual/commands/rmpoint.txt
Executable file
@@ -0,0 +1,56 @@
|
||||
.. _rmpoint :
|
||||
|
||||
 _place_holder;
|
||||
|
||||
> **_RMPOINT_**
|
||||
|
||||
>
|
||||
|
||||
>> Removes nodes or marks nodes for removal points or removes elements from a
|
||||
mesh. _place_holder; _place_holder; The first option sets the node
|
||||
type flag _place_holder; [itp=**ifitpdud** (21)] to indicate that the set
|
||||
of nodes are treated as invisible, but does not actually remove the
|
||||
nodes. _place_holder; Elements will also be removed. _place_holder;
|
||||
If _place_holder; **inclusive **is specified, any element containing a
|
||||
marked node will be removed. _place_holder; If _place_holder;
|
||||
**exclusive **is specified (default), any element containing a retained node
|
||||
is retained. _place_holder; The second option, **compress**, removes the
|
||||
invisible nodes (i.e. those nodes whose itp1 value is 21) from the data
|
||||
structure and material-wise resequences all remaining
|
||||
nodes. _place_holder; The third option, **zero_volume**, will remove
|
||||
elements whose volumes are less than or equal to the specified
|
||||
threshold. _place_holder; The fourth option,** element, **will remove all
|
||||
marked elements from the mesh. _place_holder; Marked elements have a
|
||||
negative value for the first entry in the itet vertex list. _place_holder;
|
||||
The fifth option will remove a specified list of elements from the
|
||||
mesh. _place_holder; The sixth option will remove elements that are
|
||||
specified in a named element set from the mesh. The seventh option, **womesh
|
||||
**will delete stray nodes that are not connected to any element and that are
|
||||
not parent nodes.
|
||||
|
||||
FORMAT: **rmpoint**/ifirst,ilast,istride/[**exclusive**|**inclusive **]
|
||||
|
||||
**rmpoint**/**compress**/
|
||||
**rmpoint/zero_volume**/threshold
|
||||
**rmpoint/element**
|
||||
**rmpoint/element**/tet list
|
||||
**rmpoint/element/eltset,**get,esetname
|
||||
**rmpoint/womesh** EXAMPLES:
|
||||
 _place_holder; **rmpoint/pset, **get, pset1
|
||||
|
||||
 _place_holder; _place_holder; _place_holder; mark all the nodes
|
||||
in pset1 for removal. _place_holder; Remove elements all of whose vertices
|
||||
are members of pset1.
|
||||
|
||||
**rmpoint/compress**
|
||||
** _place_holder; _place_holder; _place_holder; **remove all marked nodes and correct the itet array
|
||||
**rmpoint/zero_volume/**1.e-16
|
||||
 _place_holder; _place_holder; _place_holder; _place_holder;
|
||||
remove all elements with volumes less than 1.e-16
|
||||
|
||||
**rmpoint/element/**27 259 1009
|
||||
 _place_holder; _place_holder; _place_holder; _place_holder;
|
||||
remove the three specified elements
|
||||
|
||||
**rmpoint/element/eltset, **get, myeset
|
||||
|
||||
12
documentation/lagrit_manual/commands/rmregion.txt
Executable file
12
documentation/lagrit_manual/commands/rmregion.txt
Executable file
@@ -0,0 +1,12 @@
|
||||
.. _rmregion :
|
||||
|
||||
**** _place_holder;
|
||||
|
||||
> **_RMREGION_**
|
||||
|
||||
>
|
||||
|
||||
>> Removes points that lie within the specified region.
|
||||
|
||||
**FORMAT:** **rmregion/**region_name/
|
||||
|
||||
12
documentation/lagrit_manual/commands/rmsphere.txt
Executable file
12
documentation/lagrit_manual/commands/rmsphere.txt
Executable file
@@ -0,0 +1,12 @@
|
||||
.. _rmsphere:
|
||||
|
||||
**** _place_holder;
|
||||
|
||||
> **_RMSPHERE_**
|
||||
|
||||
>
|
||||
|
||||
>> Removes a sphere of points from a point distribution.
|
||||
|
||||
**FORMAT:** **rmsphere/**inner_radius/outer_radius/xcen,ycen,zcen/
|
||||
|
||||
20
documentation/lagrit_manual/commands/rmsurf.txt
Executable file
20
documentation/lagrit_manual/commands/rmsurf.txt
Executable file
@@ -0,0 +1,20 @@
|
||||
.. _rmsurf :
|
||||
|
||||
**** _place_holder;
|
||||
|
||||
> **_RMSURF_**
|
||||
|
||||
>
|
||||
|
||||
>> Removes points that lie in, on or in and on the specified surface. ioper
|
||||
can be one of the following:
|
||||
|
||||
>>
|
||||
|
||||
>>> **lt** - only points in the surface are removed
|
||||
|
||||
**eq** - only points on the surface are removed
|
||||
**le** - all points in or on the surface are removed
|
||||
|
||||
FORMAT: **rmsurf**/surface_name/ioper
|
||||
|
||||
101
documentation/lagrit_manual/commands/rotateln.txt
Executable file
101
documentation/lagrit_manual/commands/rotateln.txt
Executable file
@@ -0,0 +1,101 @@
|
||||
.. _rotateln :
|
||||
|
||||
 _place_holder;
|
||||
|
||||
> **_ROTATELN_**
|
||||
|
||||
>
|
||||
|
||||
>> Rotates a point distribution (specified by ifirst,ilast,istride) about a
|
||||
line. The **copy** option allows the user to make a copy of the original
|
||||
points as well as the rotated points, while **nocopy** just keeps the rotated
|
||||
points themselves. The line of rotation defined by x1 through z2 needs to be
|
||||
defined such that the endpoints extend beyond the point distribution being
|
||||
rotated. theta (in degrees) is the angle of rotation whose positive direction
|
||||
is determined by the right-hand-rule, that is, if the thumb of your right hand
|
||||
points in the direction of the line (1 to 2), then your fingers will curl in
|
||||
the direction of rotation. xcen,ycen,zcen is the point where the line can be
|
||||
shifted to before rotation takes place.
|
||||
|
||||
If the **copy **option is chosen, the new points will have only coordinate
|
||||
values (**xic, yic**, **zic**); no values will be set for any other mesh
|
||||
object attribute for these points.
|
||||
|
||||
>>
|
||||
|
||||
>> Note: _place_holder; The end points of the _place_holder; line
|
||||
segment must extend well beyond the point set being rotated.
|
||||
|
||||
FORMAT: **rotateln** /ifirst,ilast,istride/ [**no**] **copy** /
|
||||
x1,y1,z1/x2,y2,z2/theta/xcen,ycen,zcen/
|
||||
|
||||
 _place_holder; EXAMPLE:
|
||||
|
||||
> * input.cylrot use rotateln and trans to move cylinder
|
||||
|
||||
* create a cylinder centered around _place_holder; x=.5,z=.5, radius = .1
|
||||
* the cylinder is aligned parallel to the y-axis.
|
||||
* inside a box of width =2 , length=2 ,height=1
|
||||
* the regions are air for the cylinder - solid outside the cyl.
|
||||
* points are spread by surrounding the whole object with
|
||||
* a cylinder shell of points and then creating rays between
|
||||
* these points and the major axis of the cylinder. _place_holder; Points
|
||||
* are distributed along these rays inside the cylindrical region.
|
||||
* a background rectangular grid of points is spread outside the
|
||||
* cylinder.
|
||||
cmo/create/3dmesh
|
||||
|
||||
surface/box1/reflect /box/-1.0,-1.0,0.0/ 1.0, 1.0, 1.0/
|
||||
|
||||
surface/h1/intrface /cylinder/ 0.5, -1.,0.5/ 0.5, 1.0, 0.5/.1/
|
||||
|
||||
region/H1/ le box1 and le h1 /
|
||||
|
||||
region/Fill/ le box1 and gt h1 /
|
||||
|
||||
mregion/Air/ le box1 and lt h1 /
|
||||
|
||||
mregion/Solid/Fill
|
||||
|
||||
createpts/xyz/11,11,1/-1.,-1.,1.1/1.0,1.0,1.1/,1,1,0/
|
||||
|
||||
pset/rays/seq/1,0,0/
|
||||
|
||||
regnpts/Fill/11/pset,get,rays/xyz/ 0.0,0.0,-0.1/1.0,1.0,-0.1/ &
|
||||
|
||||
0.0,1.0,-0.1/0,0/
|
||||
|
||||
* the rz command always distributes points with the z-axis as
|
||||
* the axis of symmetry
|
||||
* use the rotateln and trans commands to move the point
|
||||
* distribution after it is created.
|
||||
createpts/rtz/1,13,11/5.,0.,-1./5.,360.,1./0,1,1/0,0,0/
|
||||
|
||||
pset/ray1/seq/0,0,0/
|
||||
|
||||
rotateln/pset,get,ray1/nocopy/-100.,0.,0./100.,0.,0./-90./0.,0.,0./
|
||||
|
||||
trans/pset,get,ray1/0.,0.,0./0.5,0.,0.5/
|
||||
|
||||
regnpts/H1/3/pset,get,ray1/rtz/0.5,-1.1,0.5/0.5,1.1,0.5/0,0/
|
||||
|
||||
filter/1,0,0/
|
||||
|
||||
cmo/setatt//itp1/pset,get,rays/21
|
||||
|
||||
cmo/setatt//itp1/pset,get,ray1/21
|
||||
|
||||
setpts
|
||||
|
||||
connect
|
||||
|
||||
settets
|
||||
|
||||
dump/gmv/gmv.cylrot/3dmesh
|
||||
|
||||
finish
|
||||
|
||||
>
|
||||
|
||||
> [click here for image](../new_html/image/cylrot.gif)
|
||||
|
||||
23
documentation/lagrit_manual/commands/rotatept .txt
Executable file
23
documentation/lagrit_manual/commands/rotatept .txt
Executable file
@@ -0,0 +1,23 @@
|
||||
.. _rotatept :
|
||||
|
||||
 _place_holder;
|
||||
|
||||
> **_ROTATEPT_**
|
||||
|
||||
>
|
||||
|
||||
>> Rotates a point distribution (defined by** **ifirst,ilast,istride) about a
|
||||
point xcen,ycen,zcen. phi (in degrees) is the angle of rotation of the XY
|
||||
plane around the Z-axis, where positive phi is measured from the positive
|
||||
x-axis toward the positive y-axis. theta (in degrees) is the angle of rotation
|
||||
toward the negative z-axis. The (**no**) **copy** options are as described in
|
||||
the **rotateln** command.
|
||||
|
||||
FORMAT: **rotatept** /ifirst,ilast,istride/ [**no**] **copy** /
|
||||
xcen,ycen,zcen/theta/phi
|
||||
|
||||
 _place_holder;
|
||||
|
||||
 _place_holder; [Click here for
|
||||
demos](../demos/rotatept/test/html/main_rotatept.html)
|
||||
|
||||
70
documentation/lagrit_manual/commands/rz.txt
Executable file
70
documentation/lagrit_manual/commands/rz.txt
Executable file
@@ -0,0 +1,70 @@
|
||||
.. _rz :
|
||||
|
||||
**** _place_holder;
|
||||
|
||||
> **_RZ_**
|
||||
|
||||
>
|
||||
|
||||
>> This command adds points to the mesh. It can distribute points evenly or
|
||||
according to a ratio zoning method.
|
||||
|
||||
**xyz **specifies Cartesian coordinates.
|
||||
**rtz **specifies cylindrical coordinates.
|
||||
**rtp** specifies spherical coordinates.
|
||||
**line **this option implies xyz and will distribute n1 nodes from (xmin,ymin,zmin) to (xmax,ymax,zmaz)
|
||||
When using the rtz or rtp coordinate systems the center is at **(**0,0,0). Use
|
||||
a **trans** command to move the center. For the **rtz **command, minimum and
|
||||
maximum coordinates are the triplets: radius from the cylinder's axis, angle
|
||||
in the xy-plane measured from the x-axis and height along the z-axis. For the
|
||||
**rtp **command minimum and maximum coordinates are the triplets: radius from
|
||||
the center of the sphere axis, angle in the zy-plane measured from the
|
||||
positive z-axis and the angle in the xy-plane measured from the positive
|
||||
x-axis (see II.a.11). Note that the **rtz **always results in a (partial)
|
||||
cylinder of points centered around the z axis. Use the **rotateln **command to
|
||||
orient the cylinder. For example, to center the cylinder around the y axis,
|
||||
specify the x axis as the line of rotation in the **rotateln **command.
|
||||
|
||||
>>
|
||||
|
||||
>> ni,nj,nk number of points to be created in each direction.
|
||||
|
||||
xmin,ymin,zmin minimums for coordinates.
|
||||
|
||||
xmax,ymax,zmax maximums for coordinates.
|
||||
|
||||
iiz,ijz,ikz if =0 then mins and maxs are used as cell centers
|
||||
|
||||
if =1 then mins and maxs are used as cell vertices
|
||||
|
||||
iirat,ijrat,ikrat ratio zoning switches (0=off,1=on)
|
||||
|
||||
xrz,yrz,zrz ratio zoning value - distance is multiplied by this value for each
|
||||
subsequent point.
|
||||
|
||||
 _place_holder;
|
||||
|
||||
>
|
||||
|
||||
> FORMAT:
|
||||
**rz**/**xyz**|**rtz**|**rtp**|ni,nj,nk/xmin,ymin,zmin/xmax,ymax,zmax/
|
||||
|
||||
iiz,ijz,ikz/[iirat,ijrat,ikrat/xrz,yrz,zrz/]
|
||||
|
||||
**rz/line**/np///xmin,ymin,zmin,xmax,ymax,zmax/iiz,ijz,ikz/
|
||||
 _place_holder; EXAMPLES:
|
||||
**rz**/**xyz**/**5,3,10**/**0.,2.,0.**/**5.,6.,2.**/**1,1,1**/
|
||||
|
||||
This results in a set of 150 points, five across from x=0. to x=5., 3 deep
|
||||
from y=2. to y=6. and 10 high from z=0. to z=2.
|
||||
|
||||
**rz/rtz/4,6,11**/**0.,0.,0.**/**3.,360.,10.**/**1,0,1**/
|
||||
This results in 264 points arranged around the z- axis. There are 3 rings of
|
||||
points at distances r=1., r=2. and r=3. from the z-axis. There are 11 sets of
|
||||
these three rings of points and heights z=0., z=1., z=2.,...,z=10. In each
|
||||
ring there are 6 points where each pair of points is separated by 60°; note
|
||||
that ijz=0 requests that points be placed at cell centers, hence the first
|
||||
point will be at 30° not at 0°. Corresponding to r=0, there will be 6
|
||||
identical points at 11 intervals along the z-axis at heights z=0., z=1.,
|
||||
z=2.,...z=10. **Filter** should be used to remove these duplicate points.
|
||||
|
||||
117
documentation/lagrit_manual/commands/rzamr.txt
Executable file
117
documentation/lagrit_manual/commands/rzamr.txt
Executable file
@@ -0,0 +1,117 @@
|
||||
.. _rzamr :
|
||||
|
||||
**_RZAMR_**
|
||||
|
||||
> **RZAMR **uses an octree type refinement applied to an existing hexahedral
|
||||
mesh to all nodes in a specified region. _place_holder; No additional
|
||||
elements are kept, _place_holder; the intention is that the resulting node
|
||||
distribution will be passed to** **connect to generate a tetrahedra mesh.
|
||||
|
||||
>
|
||||
|
||||
> FORMAT:
|
||||
|
||||
>
|
||||
|
||||
>> **rzamr**/region_name/number_of_levels
|
||||
|
||||
* _place_holder; region_name _place_holder; _place_holder; _place_holder; name of region to refine. _place_holder; If blank, _place_holder; all regions will be refined. _place_holder; An element will be refined if any node of the element is in the specified region.
|
||||
* _place_holder; number_of_levels _place_holder; _place_holder; _place_holder; is the number of times the refinement will be performed. _place_holder; After each level, the code will determine which of the new nodes are in the specified region and will refine the associated elements. _place_holder; Default is 1.
|
||||
 _place_holder;
|
||||
|
||||
>
|
||||
|
||||
> EXAMPLES:
|
||||
|
||||
>
|
||||
|
||||
>> **rzamr** _place_holder; _place_holder; _place_holder; refine
|
||||
the entire mesh
|
||||
|
||||
**rzamr** /r1/3 _place_holder; _place_holder; _place_holder; refine elements with nodes in the region r1 three times
|
||||
>>
|
||||
|
||||
>> examples of use of **rzamr**:
|
||||
|
||||
>>
|
||||
|
||||
>> *create the hex mesh
|
||||
|
||||
cmo/create/cmo///hex
|
||||
|
||||
* define geometry
|
||||
surface/inside/reflect/box/0,0,0/1,1,1
|
||||
|
||||
surface/diag/intrface/plane/0,0,0/1,0,1/1,1,1
|
||||
|
||||
region/lin/ le inside and ge diag /
|
||||
|
||||
region/rin/ le inside and lt diag /
|
||||
|
||||
mregion/mlin/ le inside and gt diag /
|
||||
|
||||
mregion/mrin/ le inside and lt diag /
|
||||
|
||||
* distribute nodes
|
||||
quadxyz/2,2,2/0.,0.,0./1.,0.,0./1.,1.,0./0.,1.,0./ &
|
||||
|
||||
0.,0.,1./1.,0.,1./1.,1.,1./0.,1.,1./
|
||||
|
||||
* set node types and materials
|
||||
setpts
|
||||
|
||||
* connect up the hex mesh
|
||||
rzbrick/xyz/2,2,2/1,0,0/connect
|
||||
|
||||
* refine the hex mesh
|
||||
rzamr/lin/1
|
||||
|
||||
rzamr/rin/3
|
||||
|
||||
* create the tet mesh
|
||||
cmo/create/cmot///tet
|
||||
|
||||
* define geometry again for tet mesh
|
||||
surface/inside/reflect/box/0,0,0/1,1,1
|
||||
|
||||
surface/diag/intrface/plane/0,0,0/1,0,1/1,1,1
|
||||
|
||||
region/lin/ le inside and ge diag /
|
||||
|
||||
region/rin/ le inside and lt diag /
|
||||
|
||||
mregion/mlin/ le inside and gt diag /
|
||||
|
||||
mregion/mrin/ le inside and lt diag /
|
||||
|
||||
* copy in the nodes from the hex mesh to the tet mesh
|
||||
copypts/cmot/cmo
|
||||
|
||||
cmo/select/cmot
|
||||
|
||||
cmo/release/cmo
|
||||
|
||||
* reset node types and materials so that setpts will use
|
||||
* geometry to figure out the correct values
|
||||
cmo/setatt/cmot/itp/1,0,0/0
|
||||
|
||||
cmo/setatt/cmot/imt/1,0,0/0
|
||||
|
||||
* set node types and materials
|
||||
setpts
|
||||
|
||||
* connect up the tet mesh
|
||||
connect
|
||||
|
||||
* set element materials
|
||||
* and create parent/child nodes on interfaces
|
||||
settets
|
||||
|
||||
dump/gmv/gmvtet
|
||||
|
||||
finish
|
||||
|
||||
 _place_holder;
|
||||
|
||||
 _place_holder;
|
||||
|
||||
67
documentation/lagrit_manual/commands/rzbrick.txt
Executable file
67
documentation/lagrit_manual/commands/rzbrick.txt
Executable file
@@ -0,0 +1,67 @@
|
||||
.. _rzbrick :
|
||||
|
||||
 _place_holder;
|
||||
|
||||
> **_RZBRICK_**
|
||||
|
||||
Builds a brick mesh and generates a nearest neighbor connectivity matrix. This
|
||||
command is similar to the rz command format except here we have symmetry flags
|
||||
to input. A second format specifies that a mesh be created and connected.
|
||||
|
||||
**xyz **specifies Cartesian coordinates.
|
||||
**rtz **specifies cylindrical coordinates.
|
||||
**rtp **specifies spherical coordinates.
|
||||
ni,nj,nk number of points to be created in each direction.
|
||||
|
||||
xmin,ymin,zmin minimums for coordinates.
|
||||
|
||||
xmax,ymax,zmax maximums for coordinates.
|
||||
|
||||
iiz,ijz,ikz _place_holder; if =0 then mins and maxs are used as cell
|
||||
centers if =1 then mins and maxs are used as cell vertices iirat,ijrat,ikrat
|
||||
ratio zoning switches (0=off,1=on)
|
||||
|
||||
xrz,yrz,zrz ratio zoning value - distance is multiplied by the value for each
|
||||
subsequent point.
|
||||
|
||||
name name of pset containing starting point number
|
||||
|
||||
isym,jsym,ksym symmetry flags - not documented
|
||||
|
||||
Warning: _place_holder; This command does not create a 2D grid, it has mem
|
||||
errors. _place_holder; **rzbrick**/**xyz/**5,10,1/0. 0. 0./10. 20. 0.
|
||||
/1,1,1
|
||||
|
||||
for 2D this will work:
|
||||
|
||||
 _place_holder; **cmo create **cmo1///quad
|
||||
|
||||
 _place_holder; **quadxy **5 5/ 0. 0. 0. / 20. 0. 0./20. 20. 0. / 0. 20.
|
||||
0.
|
||||
|
||||
 _place_holder; **rzbrick**/**xyz/**5,5,1/1,0,0/**connect**
|
||||
|
||||
 _place_holder; **dump gmv **quad5x5.gmv
|
||||
|
||||
 _place_holder;
|
||||
|
||||
 _place_holder; FORMAT:
|
||||
**rzbrick**/**xyz**|**rtz**|**rtp**/ni,nj,nk/xmin,ymin,zmin/xmax,ymax,zmax/
|
||||
|
||||
iiz,ijz,ikz/[iirat,ijrat,ikrat/xrz,yrz,zrz/isym,jsym,ksym]
|
||||
|
||||
or
|
||||
|
||||
**rzbrick/xyz|rtz|rtp/**ni,nj,nk/**pset,get,**name/**connect/**
|
||||
Use this option with** quadxyz **to connect logically rectangular grids.
|
||||
EXAMPLE: **rzbrick/xyz**/3,2,3/0.,0.,0./1.,1.,1./1,1,1
|
||||
|
||||
creates a hex grid 2x1x2 cells in the unit cube
|
||||
|
||||
**quadxyz**/5,7,5/0.,0.,0./1.,0.,0./1.5,0.5,2.0/.5,.2,2.5/
|
||||
-1.,1.5,0./2.0,0.,0.0/2.1,1.9,2.4/-0.2,1.8,2.3/
|
||||
**setpts**
|
||||
**rzbrick/xyz**/5,7,5/1,0,0/**connect**
|
||||
creates a hex grid inside the** **hexahedral specified by the 8 corners passed
|
||||
to** quadxyz**
|
||||
|
||||
185
documentation/lagrit_manual/commands/rzran.txt
Executable file
185
documentation/lagrit_manual/commands/rzran.txt
Executable file
@@ -0,0 +1,185 @@
|
||||
.. _rzran :
|
||||
|
||||
**** _place_holder;
|
||||
|
||||
> **_RZRAN_**
|
||||
|
||||
>
|
||||
|
||||
>> This routine is used to add random points with a given target spacing to
|
||||
the region of space defined by the input minimum and maximum coordinate values
|
||||
using the specified geometry (xyz, rtz, or rtp), and the given local origin
|
||||
(specified in xyz coordinates). Within the bounding geometry, the points are
|
||||
distributed uniformly in space, with the average separation targeted at the
|
||||
input value of the spacing. _place_holder; Near the boundaries of the
|
||||
geometry, the uniform distribution is modified slightly in order to create a
|
||||
well defined outer boundary. _place_holder; Points are added separately on
|
||||
the corners, edges, and surfaces of the bounding geometry, uniformly randomly
|
||||
distributed with the same target spacing on each of these boundary objects.
|
||||
Points in the interior are offset by the sepcified edge protection distance
|
||||
from the exterior. _place_holder; This separation helps LaGriT's connect
|
||||
algorithm avoid creating artificial "pits" in the interface surfaces.
|
||||
|
||||
 _place_holder;
|
||||
|
||||
> FORMAT
|
||||
|
||||
> > **rzran** / **cgeom **/ **spacing** / rmin1,rmin2,rmin3 /
|
||||
rmax1,rmax2,rmax3 _place_holder; & [/ xoff,yoff,zoff / edgedist /
|
||||
ranseed1,ranseed2 ]
|
||||
|
||||
>>
|
||||
|
||||
>> while only **rzran** is required (will result in a single point at the
|
||||
origin), it is recommended that you use as the minimal command:** rzran** /
|
||||
**cgeom **/ spacing / _place_holder; rmin1,rmin2,rmin3 / rmax1,rmax2,rmax3
|
||||
|
||||
>>
|
||||
|
||||
>> **cgeom**
|
||||
|
||||
 _place_holder; _place_holder; geometry label (same convention as for
|
||||
rz)
|
||||
|
||||
 _place_holder; _place_holder; allowed values: xyz|rtp|rtz
|
||||
|
||||
 _place_holder; _place_holder; default: _xyz _if not present, error
|
||||
return if not allowed
|
||||
|
||||
>>
|
||||
|
||||
>> **spacing**
|
||||
|
||||
 _place_holder; _place_holder; target separation between the random
|
||||
points
|
||||
|
||||
 _place_holder; _place_holder; allowed values: spacing>0
|
||||
|
||||
 _place_holder; _place_holder; default: spacing=1
|
||||
|
||||
>>
|
||||
|
||||
>> rmin1,rmin2,rmin3 / rmax1,rmax2,rmax3
|
||||
|
||||
 _place_holder; _place_holder; minimum and maximum coordinate values
|
||||
|
||||
 _place_holder; _place_holder; allowed values:
|
||||
|
||||
 _place_holder; _place_holder; _place_holder; _place_holder;&n
|
||||
bsp_place_holder; all geometries: rmax.ge.rmin
|
||||
|
||||
 _place_holder; _place_holder; _place_holder; _place_holder;&n
|
||||
bsp_place_holder; **rtz:** rmin1.ge.0, rmax2-rmin2.le.360
|
||||
|
||||
 _place_holder; _place_holder; _place_holder; _place_holder;&n
|
||||
bsp_place_holder; **rtp**: rmin1.ge.0, rmin2.ge.0, rmax2.le.180,
|
||||
rmax3-rmin3.le.360
|
||||
|
||||
 _place_holder; _place_holder; _place_holder; defaults: rmin=0,
|
||||
rmax=rmin
|
||||
|
||||
>>
|
||||
|
||||
>> xoff,yoff,zoff (specified in xyz coordinate system)
|
||||
|
||||
 _place_holder; _place_holder; local origin shift
|
||||
|
||||
 _place_holder; _place_holder; defaults: 0
|
||||
|
||||
>>
|
||||
|
||||
>> edgedist
|
||||
|
||||
 _place_holder; _place_holder; edge protection distance aka interior-
|
||||
exterior offset
|
||||
|
||||
 _place_holder; _place_holder; default: spacing/2
|
||||
|
||||
 _place_holder; _place_holder; recommended value: spacing/2
|
||||
|
||||
>>
|
||||
|
||||
>> ranseed1,ranseed2
|
||||
|
||||
 _place_holder; _place_holder; seeds for the random number generator
|
||||
|
||||
 _place_holder; _place_holder; defaults: -1 (do not re-seed,
|
||||
recommended)
|
||||
|
||||
 _place_holder; _place_holder; _place_holder; _place_holder;&n
|
||||
bsp_place_holder; if either seed is .le. zero, the seeds are ignored
|
||||
|
||||
 _place_holder; _place_holder; recommended values if reseed:
|
||||
|
||||
 _place_holder; _place_holder; _place_holder; _place_holder;&n
|
||||
bsp_place_holder; large-ish integers, ranseed1>ranseed2>0, ranseed2 odd.
|
||||
|
||||
 _place_holder; _place_holder; No initial seeds are needed, and
|
||||
repeating the command
|
||||
|
||||
 _place_holder; _place_holder; with the identical parameters and seeds
|
||||
should result
|
||||
|
||||
 _place_holder; _place_holder; in the identical point distribution.
|
||||
Repeating the
|
||||
|
||||
 _place_holder; _place_holder; command with no seeds specified should
|
||||
result in
|
||||
|
||||
 _place_holder; _place_holder; different point locations with the same
|
||||
distribution.
|
||||
|
||||
 _place_holder;
|
||||
|
||||
> EXAMPLES
|
||||
|
||||
>
|
||||
|
||||
>> **rzran** / **xyz** / .1 / 0 0 0 / 1 1 1 /
|
||||
|
||||
 _place_holder; _place_holder; random points with target spacing 0.1
|
||||
in a 1x1x1 box
|
||||
|
||||
>>
|
||||
|
||||
>> **rzran**/** rtz** / .1 / _place_holder; 0,0,0 / 1,180,360 / 2,3,4 /
|
||||
0.2
|
||||
|
||||
 _place_holder; _place_holder; random points with target spacing 0.1
|
||||
in a cylinder
|
||||
|
||||
 _place_holder; _place_holder; of radius 1 centered at xyz=(2,3,4) and
|
||||
with an
|
||||
|
||||
 _place_holder; _place_holder; edge protection distance of 0.2
|
||||
|
||||
>>
|
||||
|
||||
>> **rzran/ rtp** / .5 / _place_holder; 5,0,0 / 5,180,360
|
||||
/ _place_holder; , , _place_holder; / _place_holder; / 98765 4321/
|
||||
|
||||
 _place_holder; _place_holder; random points with target spacing 0.5
|
||||
on the surface
|
||||
|
||||
 _place_holder; _place_holder; of a sphere of radius 5 centered at the
|
||||
origin
|
||||
|
||||
 _place_holder; _place_holder; with new random seeds
|
||||
|
||||
>
|
||||
|
||||
> CAVEATS
|
||||
|
||||
>
|
||||
|
||||
>> Filter should be used afterwards to remove possibly duplicate points. The
|
||||
algorithm to insure the points are uniformly distributed in space is not
|
||||
clever about handling values outside the allowed range for** rtz** and **rtp
|
||||
**geometries and so it simply truncates them to the allowed range if possible
|
||||
or aborts. Most importantly, angles are in degrees and theta for the rtp
|
||||
geometry runs from 0 to 180 degrees, with 0 degrees being the +z axis. It does
|
||||
know about the angular periodicity and there should be only the "corner" point
|
||||
artifacts of, eg, the +x axis being the origin of phi (rtp) or theta (rtz) if
|
||||
a full 360 degrees for these two variables in their respective coordinate
|
||||
systems is used.
|
||||
|
||||
58
documentation/lagrit_manual/commands/rzs.txt
Executable file
58
documentation/lagrit_manual/commands/rzs.txt
Executable file
@@ -0,0 +1,58 @@
|
||||
.. _rzs :
|
||||
|
||||
> **_RZS_**
|
||||
|
||||
Builds a sphere by generating coordinates of points and also modifies zoning
|
||||
by ratio-zoning point distributions. See the** rz **command for more details.
|
||||
The** **itype flag defines what type of sphere will be generated.
|
||||
|
||||
itype=1 generates a sphere by gridding the faces of a cube and then projecting
|
||||
the vertices onto a sphere. The number of nodes per shell is of the form
|
||||
6*i**2.
|
||||
|
||||
itype=2 generates a sphere by subdividing an icosahedron placed on the surface
|
||||
of a sphere.
|
||||
|
||||
Icosahedralm gridding is made up of 10 diamonds per shell. Each diamond is
|
||||
made up of n**2 nodes (where n must be of the form 2**i+1). There are 2 nodes
|
||||
(the poles of the sphere) at which 5 diamonds meet and 10 nodes where 3
|
||||
diamonds meet; hence there are a minimum of 12 nodes per shell. The number of
|
||||
nodes per shell can be 12, 42, 162, 642,...
|
||||
|
||||
itype= 1 or 2 or diamond distributes points only, call **connect** to generate
|
||||
connectivity information.
|
||||
|
||||
nr is the number of radial shells
|
||||
|
||||
npt is the upper limit of the number of points in a shell
|
||||
|
||||
itype=8 generates a hexahedral icosahedron grid. This option distributes
|
||||
points and generates the grid connectivity data structures.
|
||||
|
||||
xirad,xorad are the inner and outer radii of the sphere. For itype=8 reverse
|
||||
inner and outer radii.
|
||||
|
||||
xcen,ycen,zcen are the coordinates of the center of the sphere
|
||||
|
||||
iz _place_holder; if =0 then mins and maxs are used as cell centers
|
||||
|
||||
 _place_holder; _place_holder; _place_holder; _place_holder;&n
|
||||
bsp_place_holder; _place_holder; _place_holder; _place_holder; if
|
||||
=1 then mins and maxs are used as cell vertices
|
||||
|
||||
irat is ratio zoning switch (0=off,1=on)
|
||||
|
||||
rz is ratio zoning value - distance is multiplied by the value for each
|
||||
subsequent point.
|
||||
|
||||
itype = diamond generates the points for one diamond of the icosahedron
|
||||
|
||||
 _place_holder; FORMAT:
|
||||
**rzs/**itype/nr,npt,xirad,xorad/xcen,ycen,zcen/iz/irat,rz/
|
||||
|
||||
 _place_holder; EXAMPLES: **rzs**/8/5/162/1.0,0.5/0.,0.,0./1,0,0.0/
|
||||
|
||||
rzs/2/5/162/0.5,1.0/0.,0.,0./1,0,0.0/
|
||||
|
||||
rzs/diamond/5/162/1,.5/0,0,0/1,0,0/
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user