Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • gmsh/gmsh
  • lrp/gmsh
  • nschloe/gmsh
  • romin.tomasetti/gmsh
4 results
Show changes
Commits on Source (8530)
Showing with 3546 additions and 6132 deletions
---
BasedOnStyle: None
AccessModifierOffset: -2
AlignAfterOpenBracket: Align
AlignConsecutiveAssignments: false
AlignConsecutiveDeclarations: false
AlignEscapedNewlines: Right
AlignOperands: true
AlignTrailingComments: false
AllowAllParametersOfDeclarationOnNextLine: true
AllowAllArgumentsOnNextLine: true
AllowShortBlocksOnASingleLine: true
AllowShortCaseLabelsOnASingleLine: true
AllowShortFunctionsOnASingleLine: All
AllowShortIfStatementsOnASingleLine: true
AllowShortLoopsOnASingleLine: true
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: false
BinPackArguments: true
BinPackParameters: true
BraceWrapping:
AfterClass: false
AfterControlStatement: false
AfterEnum: false
AfterFunction: true
AfterNamespace: false
AfterObjCDeclaration: false
AfterStruct: false
AfterUnion: false
BeforeCatch: false
BeforeElse: true
IndentBraces: false
SplitEmptyFunction: true
SplitEmptyRecord: true
SplitEmptyNamespace: true
BreakBeforeBinaryOperators: None
BreakBeforeBraces: Custom
BreakBeforeInheritanceComma: true
BreakBeforeTernaryOperators: false
BreakConstructorInitializersBeforeComma: false
BreakAfterJavaFieldAnnotations: false
BreakStringLiterals: true
ColumnLimit: 80
CommentPragmas: '^ IWYU pragma:'
CompactNamespaces: false
ConstructorInitializerAllOnOneLineOrOnePerLine: false
ConstructorInitializerIndentWidth: 2
ContinuationIndentWidth: 2
Cpp11BracedListStyle: true
DerivePointerAlignment: false
DisableFormat: false
ExperimentalAutoDetectBinPacking: false
FixNamespaceComments: true
ForEachMacros:
- foreach
- Q_FOREACH
- BOOST_FOREACH
IncludeCategories:
- Regex: '^"(llvm|llvm-c|clang|clang-c)/'
Priority: 2
- Regex: '^(<|"(gtest|gmock|isl|json)/)'
Priority: 3
- Regex: '.*'
Priority: 1
IncludeIsMainRegex: '(Test)?$'
IndentCaseLabels: false
IndentWidth: 2
IndentWrappedFunctionNames: false
JavaScriptQuotes: Leave
JavaScriptWrapImports: true
KeepEmptyLinesAtTheStartOfBlocks: false
MacroBlockBegin: ''
MacroBlockEnd: ''
MaxEmptyLinesToKeep: 1
NamespaceIndentation: All
ObjCBlockIndentWidth: 2
ObjCSpaceAfterProperty: true
ObjCSpaceBeforeProtocolList: true
PenaltyBreakAssignment: 2
PenaltyBreakBeforeFirstCallParameter: 19
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakString: 1000
PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 60
PointerAlignment: Right
ReflowComments: true
SortIncludes: false
SortUsingDeclarations: true
SpaceAfterCStyleCast: false
SpaceAfterTemplateKeyword: true
SpaceBeforeAssignmentOperators: true
SpaceBeforeParens: false
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 1
SpacesInAngles: false
SpacesInContainerLiterals: true
SpacesInCStyleCastParentheses: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: Cpp11
TabWidth: 4
UseTab: Never
...
---
Checks: 'clang-diagnostic-*,clang-analyzer-*,modernize-use-auto,modernize-use-nullptr'
CheckOptions:
- key: modernize-use-auto.MinTypeNameLength
value: 40
...
*.geo gitlab-language=cpp
bin*/
lib*/
build*/
install/
contrib/mobile/frameworks_*
contrib/3M
contrib/Parasolid
*.db
doc/cookbook/book
doc/doxygen/html
.DS_Store
*~
*.so
*.so.*
*.mod
*#
*.pyc
## CLion directories
.idea
cmake-build-*
# VS Code directories
.vscode/
# Python virtual environment
venv/
.venv/
# Gmsh - Copyright (C) 1997-2024 C. Geuzaine, J.-F. Remacle
#
# See the LICENSE.txt file in the Gmsh root directory for license information.
# Please report all issues on https://gitlab.onelab.info/gmsh/gmsh/issues.
variables:
EXTRA_OPTION: ""
.ssh_config: &ssh_config
before_script:
- echo "$SSH_TOKEN" > ~/.ssh/id_rsa
- echo "Host *" > ~/.ssh/config
- echo "StrictHostKeyChecking no" >> ~/.ssh/config
- chmod 700 ~/.ssh/id_rsa ~/.ssh/config
# ----------------------------------------------
# Continuous integration builds for all branches
# ----------------------------------------------
linux_ci:
image: onelab/ubuntu20.04
script:
- mkdir build
- cd build
- export CXXFLAGS=-Werror
- cmake ..
- make -j 8
- make doc
- ctest -j 8 --output-on-failure
- valgrind --leak-check=full --show-leak-kinds=definite,indirect --error-exitcode=0 ./gmsh ../tutorials/t5.geo -3
tags:
- linux64
- docker
except:
- tags
linux_compatibility_ci:
image: onelab/ubuntu20.04
script:
- mkdir build
- cd build
- cmake -DDEFAULT=0 ..
- make -j 8
- cmake -DENABLE_PARSER=1 ..
- make -j 8
- cmake -DENABLE_POST=1 ..
- make -j 8
- cmake -DENABLE_MESH=1 -DENABLE_BUILD_DYNAMIC=1 -DENABLE_PRIVATE_API=1 -DENABLE_EIGEN=0 -DENABLE_WRAP_PYTHON=1 -DENABLE_PETSC=1 ..
- make -j 8
tags:
- linux64
- docker
except:
- tags
windows_ci:
script:
- md build
- cd build
- c:\cygwin64\bin\bash -c "/usr/bin/cmake -DCMAKE_PREFIX_PATH='/usr/local/opencascade;/usr/local;/usr/x86_64-w64-mingw32/sys-root/mingw' -DCMAKE_C_COMPILER=/usr/bin/x86_64-w64-mingw32-gcc.exe -DCMAKE_CXX_COMPILER=/usr/bin/x86_64-w64-mingw32-g++.exe -DCMAKE_RC_COMPILER=/usr/bin/x86_64-w64-mingw32-windres.exe -DENABLE_OS_SPECIFIC_INSTALL=1 .. && ls"
- c:\cygwin64\bin\bash -c "/usr/bin/make -j 8"
- c:\cygwin64\bin\bash -c "/usr/bin/ctest -j 8 --output-on-failure && ls"
tags:
- windows64
- shared
except:
- tags
windows_msvc_ci:
script:
- md build
- cd build
- cmake -DENABLE_OPENMP=0 ..
- msbuild package.vcxproj
tags:
- windows64
- shared
except:
- tags
# ------------------------------------------
# Official Linux builds (master branch only)
# ------------------------------------------
.linux_official: &linux_official
only:
- master@gmsh/gmsh
<<: *ssh_config
script:
- mkdir build
- cd build
- cmake -DGMSH_HOST=gmsh.info -DENABLE_PETSC=1 -DPETSC_ARCH=real_mumps_seq -DPETSC_DIR=/petsc-3.14.4 ${EXTRA_OPTION} ..
- make package -j 8
- PKG=`ls gmsh-*.tar*`
- scp ${PKG} geuzaine@gmsh.info:.wwwgmsh/bin/Linux/${PKG/\.tar\.gz/\.tgz}
- ctest -j 8 --output-on-failure
tags:
- linux64
- docker
linux_official_snapshot:
image: onelab/debian.stretch.64bit
variables:
EXTRA_OPTION: "-DCMAKE_EXE_LINKER_FLAGS=-static-libstdc++"
<<: *linux_official
except:
- tags
linux_official_release:
image: onelab/debian.stretch.64bit
variables:
EXTRA_OPTION: "-DGMSH_RELEASE=1 -DCMAKE_EXE_LINKER_FLAGS=-static-libstdc++"
<<: *linux_official
only:
- /^gmsh_.*$/
linux-sdk_official_snapshot:
image: onelab/debian.stretch.64bit
variables:
EXTRA_OPTION: "-DENABLE_BUILD_DYNAMIC=1 -DINSTALL_SDK_README=1"
<<: *linux_official
except:
- tags
artifacts:
paths:
- build/_CPack_Packages/
- build/version.txt
expire_in: 1day
linux-sdk_official_release:
image: onelab/debian.stretch.64bit
variables:
EXTRA_OPTION: "-DGMSH_RELEASE=1 -DENABLE_BUILD_DYNAMIC=1 -DINSTALL_SDK_README=1"
<<: *linux_official
only:
- /^gmsh_.*$/
artifacts:
paths:
- build/_CPack_Packages/
- build/version.txt
expire_in: 1day
linux-nox-sdk_official_snapshot:
image: onelab/debian.stretch.64bit
variables:
EXTRA_OPTION: "-DGMSH_EXTRA_VERSION=-nox -DENABLE_FLTK=0 -DENABLE_OCC_CAF=0 -DENABLE_BUILD_DYNAMIC=1 -DINSTALL_SDK_README=1"
<<: *linux_official
except:
- tags
artifacts:
paths:
- build/_CPack_Packages/
expire_in: 1day
# --------------------------------------------
# Official Windows builds (master branch only)
# --------------------------------------------
.windows_official: &windows_official
only:
- master@gmsh/gmsh
script:
- md build
- cd build
- c:\cygwin64\bin\bash -c "/usr/bin/cmake -DGMSH_HOST=gmsh.info -DCMAKE_PREFIX_PATH='/usr/local;/usr/x86_64-w64-mingw32/sys-root/mingw' -DCMAKE_C_COMPILER=/usr/bin/x86_64-w64-mingw32-gcc.exe -DCMAKE_CXX_COMPILER=/usr/bin/x86_64-w64-mingw32-g++.exe -DCMAKE_Fortran_COMPILER=/usr/bin/x86_64-w64-mingw32-gfortran.exe -DCMAKE_RC_COMPILER=/usr/bin/x86_64-w64-mingw32-windres.exe -DENABLE_OS_SPECIFIC_INSTALL=1 -DENABLE_PETSC=1 -DPETSC_ARCH=real_mumps_seq -DPETSC_DIR=/home/geuzaine/src/petsc ${EXTRA_OPTION} .."
- c:\cygwin64\bin\bash -c "/usr/bin/make package -j 4"
- c:\cygwin64\bin\bash -c "/usr/bin/scp -o StrictHostKeyChecking=no -i /home/geuzaine/.ssh/id_rsa gmsh-*.zip geuzaine@gmsh.info:.wwwgmsh/bin/Windows/"
- c:\cygwin64\bin\bash -c "/usr/bin/ctest -j 4 --output-on-failure"
windows_official_snapshot:
<<: *windows_official
tags:
- windows64
- official
except:
- tags
windows_official_release:
variables:
EXTRA_OPTION: "-DGMSH_RELEASE=1"
<<: *windows_official
tags:
- windows64
- official
only:
- /^gmsh_.*$/
windows-sdk_official_snapshot:
variables:
EXTRA_OPTION: "-DENABLE_OS_SPECIFIC_INSTALL=0 -DENABLE_BUILD_DYNAMIC=1 -DINSTALL_SDK_README=1"
<<: *windows_official
tags:
- windows64
- official
except:
- tags
artifacts:
paths:
- build/_CPack_Packages/
expire_in: 1day
windows-sdk_official_release:
variables:
EXTRA_OPTION: "-DGMSH_RELEASE=1 -DENABLE_OS_SPECIFIC_INSTALL=0 -DENABLE_BUILD_DYNAMIC=1 -DINSTALL_SDK_README=1"
<<: *windows_official
tags:
- windows64
- official
only:
- /^gmsh_.*$/
artifacts:
paths:
- build/_CPack_Packages/
expire_in: 1day
# ------------------------------------------
# Official macOS builds (master branch only)
# ------------------------------------------
.macos_official: &macos_official
only:
- master@gmsh/gmsh
script:
- mkdir build
- cd build
- cmake -DGMSH_HOST=gmsh.info -DENABLE_CAIRO=0 -DENABLE_OS_SPECIFIC_INSTALL=1 -DENABLE_PETSC=1 -DPETSC_ARCH=real_mumps_seq -DPETSC_DIR=/Users/geuzaine/src/petsc ${EXTRA_OPTION} ..
- make package -j 4
- PKG=`ls gmsh-*.[dt][ma][gr]*`
- '[[ ${PKG} == *.dmg ]] && xcrun notarytool submit ${PKG} --key /Users/geuzaine/AuthKey_4R6P5NYF3T.p8 --key-id 4R6P5NYF3T --issuer 69a6de7c-0b3a-47e3-e053-5b8c7c11a4d1 --wait'
- '[[ ${PKG} == *.dmg ]] && xcrun stapler staple ${PKG}'
- scp ${PKG} geuzaine@gmsh.info:.wwwgmsh/bin/macOS/${PKG/\.tar\.gz/\.tgz}
- ctest -j 4 --output-on-failure
macosx_official_snapshot:
<<: *macos_official
tags:
- macos64
- official
except:
- tags
macosx_official_release:
variables:
EXTRA_OPTION: "-DGMSH_RELEASE=1"
<<: *macos_official
tags:
- macos64
- official
only:
- /^gmsh_.*$/
macosx-sdk_official_snapshot:
variables:
EXTRA_OPTION: "-DENABLE_OS_SPECIFIC_INSTALL=0 -DENABLE_BUILD_DYNAMIC=1 -DINSTALL_SDK_README=1"
<<: *macos_official
tags:
- macos64
- official
except:
- tags
artifacts:
paths:
- build/_CPack_Packages/
expire_in: 1day
macosx-sdk_official_release:
variables:
EXTRA_OPTION: "-DGMSH_RELEASE=1 -DENABLE_OS_SPECIFIC_INSTALL=0 -DENABLE_BUILD_DYNAMIC=1 -DINSTALL_SDK_README=1"
<<: *macos_official
tags:
- macos64
- official
only:
- /^gmsh_.*$/
artifacts:
paths:
- build/_CPack_Packages/
expire_in: 1day
macosarm_official_snapshot:
<<: *macos_official
tags:
- macos64arm
- official
except:
- tags
macosarm_official_release:
variables:
EXTRA_OPTION: "-DGMSH_RELEASE=1"
<<: *macos_official
tags:
- macos64arm
- official
only:
- /^gmsh_.*$/
macosarm-sdk_official_snapshot:
variables:
EXTRA_OPTION: "-DENABLE_OS_SPECIFIC_INSTALL=0 -DENABLE_BUILD_DYNAMIC=1 -DINSTALL_SDK_README=1"
<<: *macos_official
tags:
- macos64arm
- official
except:
- tags
artifacts:
paths:
- build/_CPack_Packages/
expire_in: 1day
macosarm-sdk_official_release:
variables:
EXTRA_OPTION: "-DGMSH_RELEASE=1 -DENABLE_OS_SPECIFIC_INSTALL=0 -DENABLE_BUILD_DYNAMIC=1 -DINSTALL_SDK_README=1"
<<: *macos_official
tags:
- macos64arm
- official
only:
- /^gmsh_.*$/
artifacts:
paths:
- build/_CPack_Packages/
expire_in: 1day
# ----------------------------------------------
# Official source snapshots (master branch only)
# ----------------------------------------------
.source_official: &source_official
only:
- master@gmsh/gmsh
<<: *ssh_config
script:
- mkdir build_src
- cd build_src
- cmake ${EXTRA_OPTION} ..
- make package_source
- PKG=`ls gmsh-*.tar*`
- scp ${PKG} geuzaine@gmsh.info:.wwwgmsh/src/${PKG/\.tar\.gz/\.tgz}
tags:
- linux64
- docker
source_official_snapshot:
image: onelab/ubuntu20.04
<<: *source_official
except:
- tags
source_official_release:
image: onelab/ubuntu20.04
variables:
EXTRA_OPTION: "-DGMSH_RELEASE=1"
<<: *source_official
only:
- /^gmsh_.*$/
# ----------------------------------------------
# Official documentation (master branch only)
# ----------------------------------------------
doc_official_snapshot:
stage: .post
image: onelab/ubuntu20.04
only:
- master@gmsh/gmsh
<<: *ssh_config
script:
- mkdir build_doc
- cd build_doc
- cmake ..
- make doc
- scp gmsh-*-doc.tgz geuzaine@gmsh.info:.wwwgmsh/doc.tgz
- ssh geuzaine@gmsh.info "cd .wwwgmsh/dev && tar zxvf ../doc.tgz"
tags:
- linux64
- docker
except:
- tags
doc_official_release:
stage: .post
image: onelab/ubuntu20.04
only:
- master@gmsh/gmsh
<<: *ssh_config
script:
- mkdir build_doc
- cd build_doc
- cmake -DGMSH_RELEASE=1 ..
- make doc
- scp gmsh-*-doc.tgz geuzaine@gmsh.info:.wwwgmsh/doc.tgz
- ssh geuzaine@gmsh.info "cd .wwwgmsh && tar zxvf doc.tgz"
- scp ../doc/gmsh.html geuzaine@gmsh.info:.wwwgmsh/
tags:
- linux64
- docker
only:
- /^gmsh_.*$/
# ----------------------------------------------
# Cookbook
# ----------------------------------------------
doc_cookbook:
stage: .post
image: onelab/ubuntu20.04
only:
- gmsh/gmsh
<<: *ssh_config
script:
- mdbook build doc/cookbook
- scp -r doc/cookbook/book geuzaine@gmsh.info:.wwwgmsh/doc/cookbook
tags:
- linux64
- docker
# ----------------------------------------------
# PyPi package
# ----------------------------------------------
pypi_official_snapshot:
stage: .post
image: onelab/ubuntu20.04
only:
- master@gmsh/gmsh
<<: *ssh_config
dependencies:
- linux-sdk_official_snapshot
- linux-nox-sdk_official_snapshot
- windows-sdk_official_snapshot
- macosx-sdk_official_snapshot
- macosarm-sdk_official_snapshot
script:
- cd build
- python3 ../utils/pypi/sdktowheel.py _CPack_Packages/Linux/TGZ/gmsh-git-Linux64-sdk/ manylinux_2_24_x86_64
- python3 ../utils/pypi/sdktowheel.py _CPack_Packages/Linux/TGZ/gmsh-nox-git-Linux64-sdk/ manylinux_2_24_x86_64
- python3 ../utils/pypi/sdktowheel.py _CPack_Packages/CYGWIN/ZIP/gmsh-git-Windows64-sdk/ win_amd64
- python3 ../utils/pypi/sdktowheel.py _CPack_Packages/Darwin/TGZ/gmsh-git-MacOSX-sdk/ macosx_10_15_x86_64
- python3 ../utils/pypi/sdktowheel.py _CPack_Packages/Darwin/TGZ/gmsh-git-MacOSARM-sdk/ macosx_12_0_arm64
- scp gmsh-*.dev1+nox*.whl geuzaine@gmsh.info:.wwwgmsh/python-packages-dev-nox/gmsh/
- scp gmsh-*.dev1-*.whl geuzaine@gmsh.info:.wwwgmsh/python-packages-dev/gmsh/
tags:
- linux64
- docker
except:
- tags
pypi_official_release:
stage: .post
image: onelab/ubuntu20.04
only:
- master@gmsh/gmsh
<<: *ssh_config
dependencies:
- linux-sdk_official_release
- windows-sdk_official_release
- macosx-sdk_official_release
- macosarm-sdk_official_release
script:
- echo "[distutils]" > ~/.pypirc
- echo "index-servers = pypi" >> ~/.pypirc
- echo "[pypi]" >> ~/.pypirc
- echo "username = __token__" >> ~/.pypirc
- echo "password = $PYPI_TOKEN" >> ~/.pypirc
- cd build
- VERSION=`cat version.txt`
- python3 ../utils/pypi/sdktowheel.py _CPack_Packages/Linux/TGZ/gmsh-${VERSION}-Linux64-sdk/ manylinux_2_24_x86_64
- python3 ../utils/pypi/sdktowheel.py _CPack_Packages/CYGWIN/ZIP/gmsh-${VERSION}-Windows64-sdk/ win_amd64
- python3 ../utils/pypi/sdktowheel.py _CPack_Packages/Darwin/TGZ/gmsh-${VERSION}-MacOSX-sdk/ macosx_10_15_x86_64
- python3 ../utils/pypi/sdktowheel.py _CPack_Packages/Darwin/TGZ/gmsh-${VERSION}-MacOSARM-sdk/ macosx_12_0_arm64
- scp gmsh*.whl geuzaine@gmsh.info:.wwwgmsh/python-packages/gmsh/
- twine upload gmsh*.whl
- ssh geuzaine@gmsh.info "cd .wwwgmsh/bin/Linux && rm -f gmsh-stable-Linux64* && ln -s gmsh-${VERSION}-Linux64.tgz gmsh-stable-Linux64.tgz && ln -s gmsh-${VERSION}-Linux64-sdk.tgz gmsh-stable-Linux64-sdk.tgz"
- ssh geuzaine@gmsh.info "cd .wwwgmsh/bin/Windows && rm -f gmsh-stable-Windows64* && ln -s gmsh-${VERSION}-Windows64.zip gmsh-stable-Windows64.zip && ln -s gmsh-${VERSION}-Windows64-sdk.zip gmsh-stable-Windows64-sdk.zip"
- ssh geuzaine@gmsh.info "cd .wwwgmsh/bin/macOS && rm -f gmsh-stable-MacOSX* && ln -s gmsh-${VERSION}-MacOSX.dmg gmsh-stable-MacOSX.dmg && ln -s gmsh-${VERSION}-MacOSX-sdk.tgz gmsh-stable-MacOSX-sdk.tgz"
- ssh geuzaine@gmsh.info "cd .wwwgmsh/bin/macOS && rm -f gmsh-stable-MacOSARM* && ln -s gmsh-${VERSION}-MacOSARM.dmg gmsh-stable-MacOSARM.dmg && ln -s gmsh-${VERSION}-MacOSARM-sdk.tgz gmsh-stable-MacOSARM-sdk.tgz"
- ssh geuzaine@gmsh.info "cd .wwwgmsh/src && rm -f gmsh-stable-source.tgz && ln -s gmsh-${VERSION}-source.tgz gmsh-stable-source.tgz"
tags:
- linux64
- docker
only:
- /^gmsh_.*$/
This diff is collapsed.
This diff is collapsed.
Gmsh is copyright (C) 1997-2024
Christophe Geuzaine
<cgeuzaine at uliege.be>
and
Jean-Francois Remacle
<jean-francois.remacle at uclouvain.be>
Code contributions to Gmsh have been provided by David Colignon (colormaps),
Emilie Marchandise (old compound geometrical entities), Gaetan Bricteux (Gauss
integration and levelsets), Jacques Lechelle (DIFFPACK export), Jonathan
Lambrechts (mesh size fields, solver, Python wrappers), Jozef Vesely (old Tetgen
integration), Koen Hillewaert (high order elements, generalized periodic
meshes), Laurent Stainier (eigenvalue solvers, tensor display and help with
macOS port), Marc Ume (original list and tree code), Mark van Doesburg (old
OpenCASCADE face connection), Matt Gundry (Plot3d export), Matti Pellikka (cell
complex and homology solver), Nicolas Tardieu (help with Netgen integration),
Pascale Noyret (MED mesh IO), Pierre Badel (root finding and minimization), Ruth
Sabariego (pyramids), Stephen Guzik (old CGNS IO, old partitioning code),
Bastien Gorissen (parallel remote post-processing), Eric Bechet (solver), Gilles
Marckmann (camera and stero mode, X3D export), Ashish Negi (Netgen CAD healing),
Trevor Strickler (hybrid structured mesh coupling with pyramids), Amaury Johnen
(Bezier code, high-order element validity), Benjamin Ruard (old Java wrappers),
Maxime Graulich (iOS/Android port), Francois Henrotte (ONELAB metamodels),
Sebastian Eiser (PGF export), Alexis Salzman (compressed IO), Hang Si (TetGen/BR
boundary recovery code), Fernando Lorenzo (Tochnog export), Larry Price (Gambit
export), Anthony Royer (new partitioning code, MSH4 IO), Darcy Beurle (code
cleanup and performance improvements), Celestin Marot (HXT/tetMesh),
Pierre-Alexandre Beaufort (HXT/reparam), Zhidong Han (LSDYNA export), Ismail
Badia (hierarchical basis functions), Jeremy Theler (X3D export), Thomas
Toulorge (high order mesh optimizer, new CGNS IO), Max Orok (binary PLY), Marek
Wojciechowski (PyPi packaging), Maxence Reberol (automatic transfinite, quad
meshing tools), Michael Ermakov (Gambit IO, Fortran API, TransfiniteTri,
boundary layer fans), Alex Krasner (X3D export), Giannis Nikiteas (Fortran API),
Paul Sharp (Radioss export), Marco Failla (2D fillet/offset and API
additions). See comments in the sources for more information. If we forgot to
list your contributions please send us an email!
Thanks to the following folks who have contributed by providing fresh ideas on
theoretical or programming topics, who have sent patches, requests for changes
or improvements, or who gave us access to exotic machines for testing Gmsh: Juan
Abanto, Olivier Adam, Guillaume Alleon, Laurent Champaney, Pascal Dupuis,
Patrick Dular, Philippe Geuzaine, Johan Gyselinck, Francois Henrotte, Benoit
Meys, Nicolas Moes, Osamu Nakamura, Chad Schmutzer, Jean-Luc Fl'ejou, Xavier
Dardenne, Christophe Prud'homme, Sebastien Clerc, Jose Miguel Pasini, Philippe
Lussou, Jacques Kools, Bayram Yenikaya, Peter Hornby, Krishna Mohan Gundu,
Christopher Stott, Timmy Schumacher, Carl Osterwisch, Bruno Frackowiak, Philip
Kelleners, Romuald Conty, Renaud Sizaire, Michel Benhamou, Tom De Vuyst, Kris
Van den Abeele, Simon Vun, Simon Corbin, Thomas De-Soza, Marcus Drosson, Antoine
Dechaume, Jose Paulo Moitinho de Almeida, Thomas Pinchard, Corrado Chisari, Axel
Hackbarth, Peter Wainwright, Jiri Hnidek, Thierry Thomas, Konstantinos Poulios,
Laurent Van Miegroet, Shahrokh Ghavamian, Geordie McBain, Jose Paulo Moitinho de
Almeida, Guillaume Demesy, Wendy Merks-Swolfs, Cosmin Stefan Deaconu, Nigel
Nunn, Serban Georgescu, Julien Troufflard, Michele Mocciola, Matthijs Sypkens
Smit, Sauli Ruuska, Romain Boman, Fredrik Ekre, Mark Burton, Max Orok, Paul
Cristini, Isuru Fernando, Jose Paulo Moitinho de Almeida, Sophie Le Bras,
Alberto Escrig, Samy Mukadi, Peter Johnston, Bruno de Sousa Alves, Stefan
Bruens, Luca Verzeroli, Tristan Seidlhofer, Ding Jiaming, Joost Gevaert, Marcus
Calhoun-Lopez, Michel Zou, Sir Sunsheep, Mariano Forti, Walter Steffe, Nico
Schloemer, Simon Tournier, Alexandru Dadalau, Thomas Ulrich, Matthias Diener,
Jamie Border, Kenneth Jansen, Steven Masfaraud, Sai Sumanth Moturu, Arie
Westland, Andreas Farley, Mahesh Madhav, Zoltan Csati, Thierry Hocquellet,
Christophe Bourcier, Mattéo Couplet, Giuseppe Musacchio, Romin Tomasetti, Lin Qi
Chen, Tim Furlan, Matthias Lang, Tim Gabriel, Julien Chapelat, Boris Martin,
Thomas Pirottin, Kazuyoshi Furutaka, Mariusz Wozniak, Christophe Friebel,
Thierry Thomas, Joonas Haapsaari, Jani V"alimaa, Erik Schaubelt, Louis Denis,
Francis Franklin, Florian Blachère, Aleksandr Artemyev.
Special thanks to Bill Spitzak, Michael Sweet, Matthias Melcher, Greg Ercolano
and others for the Fast Light Tool Kit on which Gmsh's GUI is based. See
http://www.fltk.org for more info on this excellent object-oriented,
cross-platform toolkit. Special thanks also to EDF for funding the original
OpenCASCADE and MED integration in 2006-2007. Gmsh development was also
financially supported by the PRACE project funded in part by the EU's Horizon
2020 Research and Innovation programme (2014-2020) under grant agreement 823767.
The TetGen/BR code (src/mesh/tetgenBR.{cpp,h}) is copyright (c) 2016 Hang Si,
Weierstrass Institute for Applied Analysis and Stochatics. It is relicensed
under the terms of LICENSE.txt for use in Gmsh thanks to a Software License
Agreement between Weierstrass Institute for Applied Analysis and Stochastics and
GMESH SPRL.
The AVL tree code (src/common/avl.{cpp,h}) and the YUV image code
(src/graphics/gl2yuv.{cpp,h}) are copyright (C) 1988-1993, 1995 The Regents of
the University of California. Permission to use, copy, modify, and distribute
this software and its documentation for any purpose and without fee is hereby
granted, provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in supporting
documentation, and that the name of the University of California not be used in
advertising or publicity pertaining to distribution of the software without
specific, written prior permission. The University of California makes no
representations about the suitability of this software for any purpose. It is
provided "as is" without express or implied warranty.
The picojson code (src/common/picojson.h) is Copyright 2009-2010 Cybozu Labs,
Inc., Copyright 2011-2014 Kazuho Oku, All rights reserved. Redistribution and
use in source and binary forms, with or without modification, are permitted
provided that the following conditions are met: 1. Redistributions of source
code must retain the above copyright notice, this list of conditions and the
following disclaimer. 2. 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. 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 HOLDER 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 nanoflann code (src/numeric/nanoflann.hpp) is Copyright 2008-2009 Marius
Muja, 2008-2009 David G. Lowe, 2011-2016 Jose Luis Blanco. Redistribution and
use in source and binary forms, with or without modification, are permitted
provided that the following conditions are met: 1. Redistributions of source
code must retain the above copyright notice, this list of conditions and the
following disclaimer. 2. 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. THIS
SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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 trackball code (src/graphics/Trackball.{cpp.h}) is copyright (C) 1993, 1994,
Silicon Graphics, Inc. ALL RIGHTS RESERVED. Permission to use, copy, modify, and
distribute this software for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that both the
copyright notice and this permission notice appear in supporting documentation,
and that the name of Silicon Graphics, Inc. not be used in advertising or
publicity pertaining to distribution of the software without specific, written
prior permission.
The GIF and PPM routines (src/graphics/gl2gif.cpp) are based on code copyright
(C) 1989, 1991, Jef Poskanzer. Permission to use, copy, modify, and distribute
this software and its documentation for any purpose and without fee is hereby
granted, provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in supporting
documentation. This software is provided "as is" without express or implied
warranty.
The colorbar widget (src/fltk/colorbarWindow.cpp) was inspired by code from the
Vis5d program for visualizing five dimensional gridded data sets, copyright (C)
1990-1995, Bill Hibbard, Brian Paul, Dave Santek, and Andre Battaiola.
The libOL code (src/common/libol1.{c,h}) is Copyright 2012-2018 - by Loïc
Maréchal / INRIA. This program is a free software. You can redistribute it
and/or modify it under the terms of the MIT License as published by the Open
Source Initiative.
The Fast & memory efficient hashtable based on robin hood hashing
(src/common/robin_hood.h) is Copyright (c) 2018-2020 Martin Ankerl and is
licensed under the MIT License.
In addition, this version of Gmsh may contain the following contributed,
optional codes in the contrib/ directory, each governed by their own license:
* contrib/ANN copyright (C) 1997-2010 University of Maryland and Sunil Arya and
David Mount;
* contrib/gmm copyright (C) 2002-2008 Yves Renard;
* contrib/hxt - Copyright (C) 2017-2020 - Universite catholique de Louvain;
* contrib/kbipack copyright (C) 2005 Saku Suuriniemi;
* contrib/MathEx based in part on the work of the SSCILIB Library, copyright (C)
2000-2003 Sadao Massago;
* contrib/metis written by George Karypis (karypis at cs.umn.edu), copyright (C)
1995-2013 Regents of the University of Minnesota;
* contrib/mpeg_encode copyright (c) 1995 The Regents of the University of
California;
* contrib/Netgen copyright (C) 1994-2004 Joachim Sch"oberl;
* contrib/bamg from Freefem++ copyright (C) Frederic Hecht;
* contrib/ALGLIB (C) Sergey Bochkanov (ALGLIB project);
* contrib/blossom copyright (C) 1995-1997 Bill Cook et al.;
* contrib/bamg from Freefem++ copyright (C) Frederic Hecht;
* contrib/tinyxml2 from Lee Thomason;
* contrib/voro++ from Voro++ Copyright (c) 2008, The Regents of the University
of California, through Lawrence Berkeley National Laboratory (subject to
receipt of any required approvals from the U.S. Dept. of Energy). All rights
reserved;
* contrib/zipper from MiniZip - Copyright (c) 1998-2010 - by Gilles Vollant -
version 1.1 64 bits from Mathias Svensson.
Check the configuration options to see which have been enabled.
# Gmsh - Copyright (C) 1997-2016 C. Geuzaine, J.-F. Remacle
#
# See the LICENSE.txt file for license information. Please report all
# bugs and problems to the public mailing list <gmsh@onelab.info>.
set(CTEST_PROJECT_NAME ${CUSTOM_DROP_PROJECT})
set(CTEST_DROP_METHOD "http")
set(CTEST_DROP_SITE_CDASH TRUE)
set(CTEST_DROP_SITE ${CUSTOM_DROP_SITE})
set(CTEST_DROP_LOCATION ${CUSTOM_DROP_LOCATION})
set(CTEST_TRIGGER_SITE "")
set(SITE ${GMSH_HOST})
set(BUILDNAME "${GMSH_OS}-${GMSH_PACKAGER}")
set(CTEST_CUSTOM_MAXIMUM_NUMBER_OF_WARNINGS "1000")
set(CTEST_CUSTOM_MAXIMUM_NUMBER_OF_ERRORS "1000")
# Gmsh - Copyright (C) 1997-2016 C. Geuzaine, J.-F. Remacle
#
# See the LICENSE.txt file for license information. Please report all
# bugs and problems to the public mailing list <gmsh@onelab.info>.
set(SRC
Gmsh.cpp
GmshMessage.cpp
gmshPopplerWrapper.cpp
Context.cpp
Options.cpp
CommandLine.cpp
OS.cpp
OpenFile.cpp
CreateFile.cpp
VertexArray.cpp
SmoothData.cpp
Octree.cpp
OctreeInternals.cpp
StringUtils.cpp
ListUtils.cpp
TreeUtils.cpp avl.cpp
MallocUtils.cpp
onelabUtils.cpp
GamePad.cpp
GmshRemote.cpp
)
if(ENABLE_ONELAB AND NOT ENABLE_ONELAB2)
set(SRC
${SRC}
gmshLocalNetworkClient.cpp)
endif(ENABLE_ONELAB AND NOT ENABLE_ONELAB2)
file(GLOB HDR RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.h)
append_gmsh_src(Common "${SRC};${HDR}")
This diff is collapsed.
// Gmsh - Copyright (C) 1997-2016 C. Geuzaine, J.-F. Remacle
//
// See the LICENSE.txt file for license information. Please report all
// bugs and problems to the public mailing list <gmsh@onelab.info>.
#ifndef _COMMAND_LINE_H_
#define _COMMAND_LINE_H_
#include <string>
int GetGmshMajorVersion();
int GetGmshMinorVersion();
int GetGmshPatchVersion();
const char *GetGmshExtraVersion();
const char *GetGmshVersion();
const char *GetGmshBuildDate();
const char *GetGmshBuildHost();
const char *GetGmshPackager();
const char *GetGmshBuildOS();
const char *GetGmshShortLicense();
const char *GetGmshBuildOptions();
std::vector<std::pair<std::string, std::string> > GetUsage();
std::vector<std::pair<std::string, std::string> > GetShortcutsUsage(const std::string &ctrl="");
std::vector<std::pair<std::string, std::string> > GetMouseUsage();
void PrintUsage(const std::string &name);
void GetOptions(int argc, char *argv[]);
#endif
// Gmsh - Copyright (C) 1997-2016 C. Geuzaine, J.-F. Remacle
//
// See the LICENSE.txt file for license information. Please report all
// bugs and problems to the public mailing list <gmsh@onelab.info>.
#ifndef _CONTEXT_H_
#define _CONTEXT_H_
#include <vector>
#include <map>
#include <string>
#include "CGNSOptions.h"
#include "meshPartitionOptions.h"
#define NUM_SOLVERS 10
class GamePad;
// The interface-independent context.
struct contextMeshOptions {
int draw, changed, light, lightTwoSide, lightLines, pointType;
int points, lines, triangles, quadrangles, tetrahedra, hexahedra, prisms, pyramids, trihedra;
int surfacesEdges, surfacesFaces, volumesEdges, volumesFaces, numSubEdges;
int pointsNum, linesNum, surfacesNum, volumesNum, qualityType, labelType;
int optimize, optimizeNetgen, optimizeLloyd, smoothCrossField, refineSteps;
double normals, tangents, explode, angleSmoothNormals, allowSwapEdgeAngle;
double mshFileVersion, mshFilePartitioned, pointSize, lineWidth;
double qualityInf, qualitySup, radiusInf, radiusSup;
double scalingFactor, lcFactor, randFactor, lcIntegrationPrecision;
double lcMin, lcMax, toleranceEdgeLength, toleranceInitialDelaunay;
double anisoMax, smoothRatio;
int lcFromPoints, lcFromCurvature, lcExtendFromBoundary;
int dual, voronoi, drawSkinOnly, colorCarousel, labelSampling;
int fileFormat, nbSmoothing, algo2d, algo3d, algoSubdivide, oldRefinement;
int algoRecombine, recombineAll, recombine3DAll, recombine3DLevel, recombine3DConformity;
int flexibleTransfinite;
//-- for recombination test (amaury) --
int doRecombinationTest, recombinationTestStart;
int recombinationTestNoGreedyStrat, recombinationTestNewStrat;
int nProc, nbProc;
std::string recTestName;
//-------------------------------------
int remeshParam, remeshAlgo;
int order, secondOrderLinear, secondOrderIncomplete;
int secondOrderExperimental, meshOnlyVisible;
int minCircPoints, minCurvPoints;
int hoOptimize, hoNLayers, hoOptPrimSurfMesh;
double hoThresholdMin, hoThresholdMax, hoPoissonRatio;
int saveAll, saveTri, saveGroupsOfNodes, binary, bdfFieldFormat, saveParametric;
int smoothNormals, reverseAllNormals, zoneDefinition, clip;
int saveElementTagType;
int switchElementTags;
int multiplePasses;
int cgnsImportOrder;
std::map<int,int> algo2d_per_face;
std::map<int,int> curvature_control_per_face;
int ignorePartBound;
int NewtonConvergenceTestXYZ;
int preserveNumberingMsh2;
};
struct contextGeometryOptions {
int draw, light, lightTwoSide, points, lines, surfaces, volumes;
int pointsNum, linesNum, surfacesNum, volumesNum, labelType;
double pointSize, lineWidth, selectedPointSize, selectedLineWidth;
int pointType, lineType, surfaceType, numSubEdges;
int oldCircle, oldNewreg, oldRuledSurface;
int extrudeSplinePoints, extrudeReturnLateral;
double normals, tangents, scalingFactor;
int autoCoherence, highlightOrphans, clip, useTransform;
double tolerance, snap[3], transform[3][3], offset[3];
int occFixDegenerated, occFixSmallEdges, occFixSmallFaces;
int occSewFaces, occConnectFaces;
double occScaling;
int copyMeshingMethod, copyDisplayAttributes, exactExtrusion;
int matchGeomAndMesh;
int hideCompounds, orientedPhysicals, doubleClickedEntityTag;
std::string doubleClickedPointCommand, doubleClickedLineCommand;
std::string doubleClickedSurfaceCommand, doubleClickedVolumeCommand;
};
class CTX {
private:
static CTX *_instance;
public:
CTX();
~CTX();
static CTX *instance();
public:
// files on the command line and various file names
std::vector<std::string> files;
std::string bgmFileName, outputFileName, defaultFileName, tmpFileName;
std::string sessionFileName, optionsFileName, errorFileName;
std::string meshStatReportFileName;
// filename of the executable, with full path
std::string exeFileName;
// the home directory
std::string homeDir;
// file history
std::vector<std::string> recentFiles;
// create mesh statistics report (0: do nothing, 1: create, 2: append)
int createAppendMeshStatReport;
// should we launch a solver at startup?
int launchSolverAtStartup ;
// save session/option file on exit?
int sessionSave, optionsSave;
// ask confirmation when overwriting files?
int confirmOverwrite;
// forced display host:0.0 under X11
std::string display;
// FLTK theme
std::string guiTheme;
// FLTK color scheme
int guiColorScheme;
// print messages on to the terminal?
int terminal;
// number of graphical windows/tiles
int numWindows, numTiles;
// text editor command (with included '%s')
std::string editor;
// pattern of files to watch out for
std::string watchFilePattern;
// show tootips in the GUI?
int tooltips;
// position and size of various windows in the GUI
int glPosition[2], glSize[2], msgSize, menuPosition[2], menuSize[2], detachedMenu;
int optPosition[2], visPosition[2], hotPosition[2], clipPosition[2], manipPosition[2];
int statPosition[2], ctxPosition[2];
int pluginPosition[2], pluginSize[2], fieldPosition[2], fieldSize[2];
int fileChooserPosition[2], extraPosition[2], extraSize[2];
// use the system menu bar on Mac OS X?
int systemMenuBar;
// use high-resolution opengl graphics (retina Macs)
int highResolutionGraphics;
// batch mode (-4: lua session, -3: server daemon, -2: check coherence, -1: write
// geo, 0: full gfx, 1: 1D mesh, 2: 2D mesh, 3: 3D mesh, 4: adapt
// mesh, 5: refine mesh)
int batch;
// batch operations to apply after meshing (1: partition mesh)
int batchAfterMesh;
// mesh discrete faces / edges
int meshDiscrete;
// initial menu (0: automatic, 1: geom, 2: mesh, 3: solver, 4: post)
int initialContext;
// never popup dialogs in scripts (use default values instead)?
int noPopup;
// make all windows "non modal"?
int nonModalWindows;
// clipping plane distance factor
double clipFactor;
// display border factor (0 = model fits window size exactly)
double displayBorderFactor;
// do or do not use the trackball for rotations
int useTrackball, trackballHyperbolicSheet;
// gamepad controller
GamePad *gamepad;
// point around which to rotate the scene
double rotationCenter[3];
// rotate around the center of mass instead of rotationCenter[]
int rotationCenterCg;
// "overall" x, y and z min used for drawing and lc computation
double min[3], max[3];
// "center of mass" of the current geometry, used for graphics only
double cg[3];
// characteristic length for the whole problem (never used in mesh
// generation ->only for geo/post)
double lc;
// double buffer/antialias/stereo graphics?
int db, antialiasing, stereo, camera ;
bool fileread;
double eye_sep_ratio,focallength_ratio,camera_aperture;
// orthogonal projection?
int ortho;
// draw the bounding boxes and the rot center?
int drawBBox, drawRotationCenter;
// draw simplified model during user interaction?
int fastRedraw;
// small axes options
int smallAxes, smallAxesSize, smallAxesPos[2];
// large axes options
int axes, axesAutoPosition, axesMikado, axesForceValue;
double axesPosition[6], axesValue[6], axesTics[3];
std::string axesLabel[3], axesFormat[3];
// simple dynamic lock (should be a mutex)
int lock;
// enable alpha blending?
int alpha;
// mouse2 zoom coefficient
double zoomFactor;
// draw background gradient?
int bgGradient;
// draw background image?
std::string bgImageFileName;
double bgImagePosition[2], bgImageSize[2];
int bgImage3d, bgImagePage;
// fltk font size (and delta for palette windows)
int fontSize, deltaFontSize;
// font name, FLTK enum and size for opengl graphics
std::string glFont, glFontTitle, glFontEngine;
int glFontEnum, glFontEnumTitle, glFontSize, glFontSizeTitle;
// font size of messages
int msgFontSize;
// point/line widths
double pointSize, lineWidth;
double highResolutionPointSizeFactor;
// light options
int light[6];
double lightPosition[6][4], shine, shineExponent;
// clipping plane options
double clipPlane[6][4];
int clipWholeElements, clipOnlyDrawIntersectingVolume, clipOnlyVolume;
// polygon offset options
int polygonOffset, polygonOffsetAlways;
double polygonOffsetFactor, polygonOffsetUnits;
// color scheme
int colorScheme;
// number of subdivisions for gluQuadrics
int quadricSubdivisions;
// vector display type and options (for normals, etc.)
int vectorType;
double arrowRelHeadRadius, arrowRelStemRadius, arrowRelStemLength;
// records cpu times for 1-D, 2-D and 3-D mesh generation
double meshTimer[3];
// dynamic variable tracking if the bbox is currently imposed
int forcedBBox;
// enable selection/hover/picking using the mouse
int mouseSelection, mouseHoverMeshes, pickElements;
// disable some warnings for expert users?
int expertMode;
// dynamic: equal to 1 while gmsh is printing
int printing;
// hide all unselected entities?
int hideUnselected;
// temporary storage of rotation, translation, scale (until the GUI
// is ready)
double tmpRotation[3], tmpTranslation[3], tmpScale[3], tmpQuaternion[4];
// geometry options
contextGeometryOptions geom;
// mesh options
contextMeshOptions mesh;
// FIXME: putting these in the mesh struct (where they belong) causes
// an LNK1179 error ("duplicate COMDAT") with MSVC...
meshPartitionOptions partitionOptions;
CGNSOptions cgnsOptions;
// post processing options
struct{
int draw, link, horizontalScales;
int smooth, animCycle, animStep, combineTime, combineRemoveOrig;
int fileFormat, plugins, forceNodeData, forceElementData;
double animDelay;
std::string doubleClickedGraphPointCommand;
double doubleClickedGraphPointX, doubleClickedGraphPointY;
int doubleClickedView;
}post;
// solver options
struct{
int plugins, listen;
double timeout;
std::string socketName, pythonInterpreter, octaveInterpreter;
std::string name[NUM_SOLVERS], extension[NUM_SOLVERS];
std::string executable[NUM_SOLVERS], remoteLogin[NUM_SOLVERS];
int autoSaveDatabase, autoLoadDatabase;
int autoArchiveOutputFiles, autoMesh, autoMergeFile;
int autoShowViews, autoShowLastStep, autoCheck, showInvisibleParameters;
}solver;
// print options
struct{
int fileFormat, epsQuality, epsCompress, epsPS3Shading;
int epsOcclusionCulling, epsBestRoot;
double epsLineWidthFactor, epsPointSizeFactor;
int jpegQuality, jpegSmoothing, geoLabels, geoOnlyPhysicals;
int text, texAsEquation;
int gifDither, gifSort, gifInterlace, gifTransparent;
int posElementary, posElement, posGamma, posEta, posRho, posDisto;
int compositeWindows, deleteTmpFiles, background;
int width, height;
double parameter, parameterFirst, parameterLast, parameterSteps;
int pgfTwoDim, pgfExportAxis, pgfHorizBar;
std::string parameterCommand;
int x3dCompatibility, x3dRemoveInnerBorders;
double x3dPrecision, x3dTransparency;
} print;
// color options
struct{
unsigned int bg, bgGrad, fg, text, axes, smallAxes;
unsigned int ambientLight[6], diffuseLight[6], specularLight[6];
struct{
unsigned int point, line, surface, volume;
unsigned int selection, highlight[3], projection;
unsigned int tangents, normals;
} geom;
struct{
unsigned int vertex, vertexSup, line, triangle, quadrangle;
unsigned int tetrahedron, hexahedron, prism, pyramid, trihedron;
unsigned int carousel[20];
unsigned int tangents, normals;
} mesh;
} color;
// is the machine big-endian?
int bigEndian;
// how RGBA values are packed and unpacked into/from an unsigned integer to be
// fed to glColor4ubv (depends on machine byte ordering!):
unsigned int packColor(int R, int G, int B, int A);
int unpackRed(unsigned int X);
int unpackGreen(unsigned int X);
int unpackBlue(unsigned int X);
int unpackAlpha(unsigned int X);
};
#endif
This diff is collapsed.
// Gmsh - Copyright (C) 1997-2016 C. Geuzaine, J.-F. Remacle
//
// See the LICENSE.txt file for license information. Please report all
// bugs and problems to the public mailing list <gmsh@onelab.info>.
#ifndef _CREATE_FILE_H_
#define _CREATE_FILE_H_
#include <string>
int GetFileFormatFromExtension(const std::string &fileName);
int GuessFileFormatFromFileName(const std::string &fileName);
std::string GetDefaultFileName(int format);
void CreateOutputFile(const std::string &fileName, int format,
bool status=true, bool redraw=true);
#endif
This diff is collapsed.
// Gmsh - Copyright (C) 1997-2016 C. Geuzaine, J.-F. Remacle
//
// See the LICENSE.txt file for license information. Please report all
// bugs and problems to the public mailing list <gmsh@onelab.info>.
#include <string>
#include <time.h>
#include "GmshConfig.h"
#include "GmshVersion.h"
#include "GmshMessage.h"
#include "GmshDefines.h"
#include "GmshRemote.h"
#include "GModel.h"
#include "OpenFile.h"
#include "CreateFile.h"
#include "Options.h"
#if defined(HAVE_PARSER)
#include "Parser.h"
#endif
#include "CommandLine.h"
#include "OS.h"
#include "Context.h"
#include "robustPredicates.h"
#if defined(HAVE_POST)
#include "PView.h"
#include "PViewData.h"
#include "PViewOptions.h"
#endif
#if defined(HAVE_ONELAB)
#include "gmshLocalNetworkClient.h"
#endif
#if defined(HAVE_MESH)
#include "Generator.h"
#include "Field.h"
#include "meshPartition.h"
#endif
#if defined(HAVE_PLUGINS)
#include "PluginManager.h"
#endif
#if defined(HAVE_FLTK)
#include "FlGui.h"
#include "graphicWindow.h"
#include "drawContext.h"
#include "onelabGroup.h"
#endif
int GmshInitialize(int argc, char **argv)
{
static bool isInitialized = false;
if(isInitialized) return 1;
isInitialized = true;
#if defined(HAVE_FLTK)
RedirectIOToConsole();
#endif
// we need at least one model during option parsing
GModel *dummy = 0;
if(GModel::list.empty()) dummy = new GModel();
// Initialize messages (parallel stuff, etc.)
Msg::Init(argc, argv);
// Load default options
InitOptions(0);
// Read configuration files and command line options
GetOptions(argc, argv);
// Make sure we have enough resources (stack)
CheckResources();
#if defined(HAVE_PLUGINS)
// Initialize the default plugins
PluginManager::instance()->registerDefaultPlugins();
#endif
// Initialize robust predicates (no static filter for now, we do not know the size of the domain)
robustPredicates::exactinit(0,1.0,1.0,1.0);
if(dummy) delete dummy;
return 1;
}
int GmshSetMessageHandler(GmshMessage *callback)
{
Msg::SetCallback(callback);
return 1;
}
GmshMessage *GmshGetMessageHandler()
{
return Msg::GetCallback();
}
int GmshSetBoundingBox(double xmin, double xmax,
double ymin, double ymax,
double zmin, double zmax)
{
SetBoundingBox(xmin, xmax, ymin, ymax, zmin, zmax);
return 1;
}
int GmshSetOption(const std::string &category, const std::string &name,
std::string value, int index)
{
return StringOption(GMSH_SET|GMSH_GUI, category.c_str(), index, name.c_str(), value);
}
int GmshSetOption(const std::string &category, const std::string &name,
double value, int index)
{
return NumberOption(GMSH_SET|GMSH_GUI, category.c_str(), index, name.c_str(), value);
}
int GmshSetOption(const std::string &category, const std::string &name,
unsigned int value, int index)
{
return ColorOption(GMSH_SET|GMSH_GUI, category.c_str(), index, name.c_str(), value);
}
void GmshSetStringOption(const std::string &category, const std::string &name,
std::string value, int index)
{
StringOption(GMSH_SET|GMSH_GUI, category.c_str(), index, name.c_str(), value);
}
void GmshSetNumberOption(const std::string &category, const std::string &name,
double value, int index)
{
NumberOption(GMSH_SET|GMSH_GUI, category.c_str(), index, name.c_str(), value);
}
void GmshSetColorOption(const std::string &category, const std::string &name,
unsigned int value, int index)
{
ColorOption(GMSH_SET|GMSH_GUI, category.c_str(), index, name.c_str(), value);
}
int GmshGetOption(const std::string &category, const std::string &name,
std::string &value, int index)
{
return StringOption(GMSH_GET, category.c_str(), index, name.c_str(), value);
}
int GmshGetOption(const std::string &category, const std::string &name,
double &value, int index)
{
return NumberOption(GMSH_GET, category.c_str(), index, name.c_str(), value);
}
int GmshGetOption(const std::string &category, const std::string &name,
unsigned int &value, int index)
{
return ColorOption(GMSH_GET, category.c_str(), index, name.c_str(), value);
}
std::string GmshGetStringOption(const std::string &category, const std::string &name,
int index)
{
std::string value;
StringOption(GMSH_GET, category.c_str(), index, name.c_str(), value);
return value;
}
double GmshGetNumberOption(const std::string &category, const std::string &name,
int index)
{
double value;
NumberOption(GMSH_GET, category.c_str(), index, name.c_str(), value);
return value;
}
int GmshGetColorOption(const std::string &category, const std::string &name,
int index)
{
unsigned int value;
ColorOption(GMSH_GET, category.c_str(), index, name.c_str(), value);
return value;
}
int GmshRestoreDefaultOptions()
{
ReInitOptions(0);
InitOptionsGUI(0);
return 1;
}
int GmshOpenProject(const std::string &fileName)
{
OpenProject(fileName);
return 1;
}
int GmshClearProject()
{
ClearProject();
return 1;
}
int GmshMergeFile(const std::string &fileName)
{
return MergeFile(fileName, true);
}
int GmshMergePostProcessingFile(const std::string &fileName)
{
return MergePostProcessingFile(fileName, CTX::instance()->solver.autoShowViews,
CTX::instance()->solver.autoShowLastStep, true);
}
int GmshWriteFile(const std::string &fileName)
{
CreateOutputFile(fileName, FORMAT_AUTO);
return 1;
}
int GmshFinalize()
{
#if defined(HAVE_POST)
// Delete all PViewData stored in static list of PView class
for(unsigned int i = 0; i < PView::list.size(); i++) {
delete PView::list[i];
}
PView::list.clear();
// Delete static _interpolationSchemes of PViewData class
PViewData::removeAllInterpolationSchemes();
#endif
// Delete all Gmodels
for(unsigned int i = 0; i < GModel::list.size(); i++)
delete GModel::list[i];
GModel::list.clear();
return 1;
}
int GmshBatch()
{
Msg::Info("Running '%s' [Gmsh %s, %d node%s, max. %d thread%s]",
Msg::GetCommandLineArgs().c_str(), GMSH_VERSION,
Msg::GetCommSize(), Msg::GetCommSize() > 1 ? "s" : "",
Msg::GetMaxThreads(), Msg::GetMaxThreads() > 1 ? "s" : "");
Msg::Info("Started on %s", Msg::GetLaunchDate().c_str());
OpenProject(GModel::current()->getFileName());
bool open = false;
for(unsigned int i = 0; i < CTX::instance()->files.size(); i++){
if(i == 0 && CTX::instance()->files[0][0] != '-') continue;
if(CTX::instance()->files[i] == "-new")
new GModel();
else if(CTX::instance()->files[i] == "-merge")
open = false;
else if(CTX::instance()->files[i] == "-open")
open = true;
else if(open)
OpenProject(CTX::instance()->files[i]);
else
MergeFile(CTX::instance()->files[i]);
}
#if defined(HAVE_POST) && defined(HAVE_MESH)
if(!CTX::instance()->bgmFileName.empty()) {
MergePostProcessingFile(CTX::instance()->bgmFileName);
if(PView::list.size())
GModel::current()->getFields()->setBackgroundMesh(PView::list.size() - 1);
else
Msg::Error("Invalid background mesh (no view)");
}
#endif
if(CTX::instance()->batch == -3){
GmshRemote();
}
else if(CTX::instance()->batch == -2){
GModel::current()->checkMeshCoherence(CTX::instance()->geom.tolerance);
#if defined(HAVE_PARSER)
std::vector<std::string> s;
PrintParserSymbols(0, s);
for(unsigned int i = 0; i < s.size(); i++)
Msg::Direct("%s", s[i].c_str());
#endif
}
else if(CTX::instance()->batch == -1){
CreateOutputFile(CTX::instance()->outputFileName,
CTX::instance()->outputFileName.empty() ? FORMAT_GEO :
FORMAT_AUTO);
}
else if(CTX::instance()->batch > 0){
#if defined(HAVE_MESH)
if(CTX::instance()->batch < 4)
GModel::current()->mesh(CTX::instance()->batch);
else if(CTX::instance()->batch == 4)
AdaptMesh(GModel::current());
else if(CTX::instance()->batch == 5)
RefineMesh(GModel::current(), CTX::instance()->mesh.secondOrderLinear);
#if defined(HAVE_CHACO) || defined(HAVE_METIS)
if(CTX::instance()->batchAfterMesh == 1){
if (CTX::instance()->partitionOptions.num_partitions > 1)
PartitionMesh(GModel::current(), CTX::instance()->partitionOptions);
if (CTX::instance()->partitionOptions.renumber)
RenumberMesh(GModel::current(), CTX::instance()->partitionOptions);
}
#endif
#endif
std::string name = CTX::instance()->outputFileName;
if(name.empty()){
if(CTX::instance()->mesh.fileFormat == FORMAT_AUTO)
name = GetDefaultFileName(FORMAT_MSH);
else
name = GetDefaultFileName(CTX::instance()->mesh.fileFormat);
}
CreateOutputFile(name, CTX::instance()->mesh.fileFormat);
}
// launch solver (if requested)
#if defined(HAVE_ONELAB)
solver_batch_cb((void*)CTX::instance()->launchSolverAtStartup);
#endif
time_t now;
time(&now);
std::string currtime = ctime(&now);
currtime.resize(currtime.size() - 1);
Msg::Info("Stopped on %s", currtime.c_str());
return 1;
}
int GmshFLTK(int argc, char **argv)
{
#if defined(HAVE_FLTK) && defined(HAVE_POST)
// create the GUI
FlGui::instance(argc, argv);
// display GUI immediately for quick launch time
FlGui::instance()->check();
// open project file and merge all other input files
if(FlGui::getOpenedThroughMacFinder().empty()){
OpenProject(GModel::current()->getFileName());
bool open = false;
for(unsigned int i = 0; i < CTX::instance()->files.size(); i++){
if(i == 0 && CTX::instance()->files[0][0] != '-') continue;
if(CTX::instance()->files[i] == "-new"){
GModel::current()->setVisibility(0);
new GModel();
}
else if(CTX::instance()->files[i] == "-merge")
open = false;
else if(CTX::instance()->files[i] == "-open")
open = true;
else if(open)
OpenProject(CTX::instance()->files[i]);
else
MergeFile(CTX::instance()->files[i]);
}
}
else{
OpenProject(FlGui::getOpenedThroughMacFinder());
}
if(CTX::instance()->post.combineTime){
PView::combine(true, 2, CTX::instance()->post.combineRemoveOrig);
FlGui::instance()->updateViews(true, true);
}
// init first context
switch (CTX::instance()->initialContext) {
case 1: FlGui::instance()->openModule("Geometry"); break;
case 2: FlGui::instance()->openModule("Mesh"); break;
case 3: FlGui::instance()->openModule("Solver"); break;
case 4: FlGui::instance()->openModule("Post-processing"); break;
default: // automatic
if(PView::list.size()) FlGui::instance()->openModule("Post-processing");
break;
}
// read background mesh if any
if(!CTX::instance()->bgmFileName.empty()) {
MergePostProcessingFile(CTX::instance()->bgmFileName);
if(PView::list.size())
GModel::current()->getFields()->setBackgroundMesh(PView::list.size() - 1);
else
Msg::Error("Invalid background mesh (no view)");
}
// listen to external solvers
if(CTX::instance()->solver.listen){
gmshLocalNetworkClient *c = new gmshLocalNetworkClient("Listen", "");
c->run();
}
// launch solver (if requested) and fill onelab tree
solver_cb(0, (void*)CTX::instance()->launchSolverAtStartup);
// loop
return FlGui::instance()->run();
#else
Msg::Error("GmshFLTK unavailable: please recompile with FLTK support");
return 0;
#endif
}
// Gmsh - Copyright (C) 1997-2016 C. Geuzaine, J.-F. Remacle
//
// See the LICENSE.txt file for license information. Please report all
// bugs and problems to the public mailing list <gmsh@onelab.info>.
#ifndef _GMSH_H_
#define _GMSH_H_
#include <string>
#include "GmshMessage.h"
int GmshInitialize(int argc=0, char **argv=0);
int GmshSetMessageHandler(GmshMessage *callback);
GmshMessage *GmshGetMessageHandler();
int GmshSetBoundingBox(double xmin, double xmax,
double ymin, double ymax,
double zmin, double zmax);
int GmshSetOption(const std::string &category, const std::string &name,
std::string value, int index=0);
int GmshSetOption(const std::string &category, const std::string &name,
double value, int index=0);
int GmshSetOption(const std::string &category, const std::string &name,
unsigned int value, int index=0);
void GmshSetStringOption(const std::string &category, const std::string &name,
std::string value, int index=0);
void GmshSetNumberOption(const std::string &category, const std::string &name,
double value, int index=0);
void GmshSetColorOption(const std::string &category, const std::string &name,
unsigned int value, int index=0);
int GmshGetOption(const std::string &category, const std::string &name,
std::string &value, int index=0);
int GmshGetOption(const std::string &category, const std::string &name,
double &value, int index=0);
int GmshGetOption(const std::string &category, const std::string &name,
unsigned int &value, int index=0);
std::string GmshGetStringOption(const std::string &category, const std::string &name,
int index=0);
double GmshGetNumberOption(const std::string &category, const std::string &name,
int index=0);
unsigned int GmshGetColorOption(const std::string &category, const std::string &name,
int index=0);
int GmshRestoreDefaultOptions();
int GmshOpenProject(const std::string &fileName);
int GmshClearProject();
int GmshMergeFile(const std::string &fileName);
int GmshMergePostProcessingFile(const std::string &fileName);
int GmshWriteFile(const std::string &fileName);
int GmshFinalize();
int GmshBatch();
int GmshFLTK(int argc=0, char **argv=0);
#endif
// Gmsh - Copyright (C) 1997-2016 C. Geuzaine, J.-F. Remacle
//
// See the LICENSE.txt file for license information. Please report all
// bugs and problems to the public mailing list <gmsh@onelab.info>.
#ifndef _GMSH_CONFIG_H_
#define _GMSH_CONFIG_H_
#cmakedefine HAVE_3M
#cmakedefine HAVE_ACIS
#cmakedefine HAVE_ANN
#cmakedefine HAVE_BAMG
#cmakedefine HAVE_BFGS
#cmakedefine HAVE_BLAS
#cmakedefine HAVE_BLOSSOM
#cmakedefine HAVE_CAIRO
#cmakedefine HAVE_CHACO
#cmakedefine HAVE_COMPRESSED_IO
#cmakedefine HAVE_DLOPEN
#cmakedefine HAVE_DINTEGRATION
#cmakedefine HAVE_FLTK
#cmakedefine HAVE_FOURIER_MODEL
#cmakedefine HAVE_GMM
#cmakedefine HAVE_GMP
#cmakedefine HAVE_KBIPACK
#cmakedefine HAVE_LAPACK
#cmakedefine HAVE_LIBCGNS
#cmakedefine HAVE_LIBJPEG
#cmakedefine HAVE_LIBPNG
#cmakedefine HAVE_LIBZ
#cmakedefine HAVE_LINUX_JOYSTICK
#cmakedefine HAVE_MATHEX
#cmakedefine HAVE_MED
#cmakedefine HAVE_MESH
#cmakedefine HAVE_METIS
#cmakedefine HAVE_MMG3D
#cmakedefine HAVE_MPEG_ENCODE
#cmakedefine HAVE_MPI
#cmakedefine HAVE_MUMPS
#cmakedefine HAVE_NATIVE_FILE_CHOOSER
#cmakedefine HAVE_NETGEN
#cmakedefine HAVE_NUMPY
#cmakedefine HAVE_NO_INTPTR_T
#cmakedefine HAVE_NO_SOCKLEN_T
#cmakedefine HAVE_NO_STDINT_H
#cmakedefine HAVE_NO_VSNPRINTF
#cmakedefine HAVE_OCC
#cmakedefine HAVE_ONELAB
#cmakedefine HAVE_ONELAB2
#cmakedefine HAVE_ONELAB_METAMODEL
#cmakedefine HAVE_UDT
#cmakedefine HAVE_OPENGL
#cmakedefine HAVE_OPTHOM
#cmakedefine HAVE_OSMESA
#cmakedefine HAVE_PARSER
#cmakedefine HAVE_PETSC
#cmakedefine HAVE_PETSC4PY
#cmakedefine HAVE_PLUGINS
#cmakedefine HAVE_POST
#cmakedefine HAVE_POPPLER
#cmakedefine HAVE_QT
#cmakedefine HAVE_REVOROPT
#cmakedefine HAVE_SALOME
#cmakedefine HAVE_SGEOM
#cmakedefine HAVE_SLEPC
#cmakedefine HAVE_SOLVER
#cmakedefine HAVE_TAUCS
#cmakedefine HAVE_TETGEN
#cmakedefine HAVE_VORO3D
#cmakedefine HAVE_ZIPPER
#define GMSH_CONFIG_OPTIONS "${GMSH_CONFIG_OPTIONS}"
${GMSH_CONFIG_PRAGMAS}
#endif
// Gmsh - Copyright (C) 1997-2016 C. Geuzaine, J.-F. Remacle
//
// See the LICENSE.txt file for license information. Please report all
// bugs and problems to the public mailing list <gmsh@onelab.info>.
#ifndef _GMSH_DEFINES_H_
#define _GMSH_DEFINES_H_
// IO file formats (numbers should not be changed)
#define FORMAT_MSH 1
#define FORMAT_UNV 2
#define FORMAT_GREF 3
#define FORMAT_XPM 4
#define FORMAT_PS 5
#define FORMAT_BMP 6
#define FORMAT_GIF 7
#define FORMAT_GEO 8
#define FORMAT_JPEG 9
#define FORMAT_AUTO 10
#define FORMAT_PPM 11
#define FORMAT_YUV 12
#define FORMAT_DMG 13
#define FORMAT_SMS 14
#define FORMAT_OPT 15
#define FORMAT_VTK 16
#define FORMAT_MPEG 17
#define FORMAT_TEX 18
#define FORMAT_VRML 19
#define FORMAT_EPS 20
#define FORMAT_MAIL 21
#define FORMAT_PNG 22
#define FORMAT_TXT 23
#define FORMAT_PDF 24
#define FORMAT_RMED 25
#define FORMAT_POS 26
#define FORMAT_STL 27
#define FORMAT_P3D 28
#define FORMAT_SVG 29
#define FORMAT_MESH 30
#define FORMAT_BDF 31
#define FORMAT_CGNS 32
#define FORMAT_MED 33
#define FORMAT_DIFF 34
#define FORMAT_BREP 35
#define FORMAT_STEP 36
#define FORMAT_IGES 37
#define FORMAT_IR3 38
#define FORMAT_INP 39
#define FORMAT_PLY2 40
#define FORMAT_CELUM 41
#define FORMAT_SU2 42
#define FORMAT_MPEG_PREVIEW 43
#define FORMAT_PGF 44
#define FORMAT_PVTU 45
#define FORMAT_X3D 46
// Element types
#define TYPE_PNT 1
#define TYPE_LIN 2
#define TYPE_TRI 3
#define TYPE_QUA 4
#define TYPE_TET 5
#define TYPE_PYR 6
#define TYPE_PRI 7
#define TYPE_HEX 8
#define TYPE_POLYG 9
#define TYPE_POLYH 10
#define TYPE_XFEM 11
#define TYPE_MINI 12
#define TYPE_TRIH 13
// Element types in .msh file format (numbers should not be changed)
#define MSH_LIN_2 1
#define MSH_TRI_3 2
#define MSH_QUA_4 3
#define MSH_TET_4 4
#define MSH_HEX_8 5
#define MSH_PRI_6 6
#define MSH_PYR_5 7
#define MSH_LIN_3 8
#define MSH_TRI_6 9
#define MSH_QUA_9 10
#define MSH_TET_10 11
#define MSH_HEX_27 12
#define MSH_PRI_18 13
#define MSH_PYR_14 14
#define MSH_PNT 15
#define MSH_QUA_8 16
#define MSH_HEX_20 17
#define MSH_PRI_15 18
#define MSH_PYR_13 19
#define MSH_TRI_9 20
#define MSH_TRI_10 21
#define MSH_TRI_12 22
#define MSH_TRI_15 23
#define MSH_TRI_15I 24
#define MSH_TRI_21 25
#define MSH_LIN_4 26
#define MSH_LIN_5 27
#define MSH_LIN_6 28
#define MSH_TET_20 29
#define MSH_TET_35 30
#define MSH_TET_56 31
#define MSH_TET_22 32
#define MSH_TET_28 33
#define MSH_POLYG_ 34
#define MSH_POLYH_ 35
#define MSH_QUA_16 36
#define MSH_QUA_25 37
#define MSH_QUA_36 38
#define MSH_QUA_12 39
#define MSH_QUA_16I 40
#define MSH_QUA_20 41
#define MSH_TRI_28 42
#define MSH_TRI_36 43
#define MSH_TRI_45 44
#define MSH_TRI_55 45
#define MSH_TRI_66 46
#define MSH_QUA_49 47
#define MSH_QUA_64 48
#define MSH_QUA_81 49
#define MSH_QUA_100 50
#define MSH_QUA_121 51
#define MSH_TRI_18 52
#define MSH_TRI_21I 53
#define MSH_TRI_24 54
#define MSH_TRI_27 55
#define MSH_TRI_30 56
#define MSH_QUA_24 57
#define MSH_QUA_28 58
#define MSH_QUA_32 59
#define MSH_QUA_36I 60
#define MSH_QUA_40 61
#define MSH_LIN_7 62
#define MSH_LIN_8 63
#define MSH_LIN_9 64
#define MSH_LIN_10 65
#define MSH_LIN_11 66
#define MSH_LIN_B 67
#define MSH_TRI_B 68
#define MSH_POLYG_B 69
#define MSH_LIN_C 70
// TETS COMPLETE (6->10)
#define MSH_TET_84 71
#define MSH_TET_120 72
#define MSH_TET_165 73
#define MSH_TET_220 74
#define MSH_TET_286 75
// TETS INCOMPLETE (6->10)
#define MSH_TET_34 79
#define MSH_TET_40 80
#define MSH_TET_46 81
#define MSH_TET_52 82
#define MSH_TET_58 83
//
#define MSH_LIN_1 84
#define MSH_TRI_1 85
#define MSH_QUA_1 86
#define MSH_TET_1 87
#define MSH_HEX_1 88
#define MSH_PRI_1 89
#define MSH_PRI_40 90
#define MSH_PRI_75 91
// HEXES COMPLETE (3->9)
#define MSH_HEX_64 92
#define MSH_HEX_125 93
#define MSH_HEX_216 94
#define MSH_HEX_343 95
#define MSH_HEX_512 96
#define MSH_HEX_729 97
#define MSH_HEX_1000 98
// HEXES INCOMPLETE (3->9)
#define MSH_HEX_32 99
#define MSH_HEX_44 100
#define MSH_HEX_56 101
#define MSH_HEX_68 102
#define MSH_HEX_80 103
#define MSH_HEX_92 104
#define MSH_HEX_104 105
// PRISMS COMPLETE (5->9)
#define MSH_PRI_126 106
#define MSH_PRI_196 107
#define MSH_PRI_288 108
#define MSH_PRI_405 109
#define MSH_PRI_550 110
// PRISMS INCOMPLETE (3->9)
#define MSH_PRI_24 111
#define MSH_PRI_33 112
#define MSH_PRI_42 113
#define MSH_PRI_51 114
#define MSH_PRI_60 115
#define MSH_PRI_69 116
#define MSH_PRI_78 117
// PYRAMIDS COMPLETE (3->9)
#define MSH_PYR_30 118
#define MSH_PYR_55 119
#define MSH_PYR_91 120
#define MSH_PYR_140 121
#define MSH_PYR_204 122
#define MSH_PYR_285 123
#define MSH_PYR_385 124
// PYRAMIDS INCOMPLETE (3->9)
#define MSH_PYR_21 125
#define MSH_PYR_29 126
#define MSH_PYR_37 127
#define MSH_PYR_45 128
#define MSH_PYR_53 129
#define MSH_PYR_61 130
#define MSH_PYR_69 131
// Additional types
#define MSH_PYR_1 132
#define MSH_PNT_SUB 133
#define MSH_LIN_SUB 134
#define MSH_TRI_SUB 135
#define MSH_TET_SUB 136
#define MSH_TET_16 137
#define MSH_TRI_MINI 138
#define MSH_TET_MINI 139
#define MSH_TRIH_4 140
#define MSH_NUM_TYPE 140
// Geometric entities
#define ENT_NONE 0
#define ENT_POINT (1<<0)
#define ENT_LINE (1<<1)
#define ENT_SURFACE (1<<2)
#define ENT_VOLUME (1<<3)
#define ENT_ALL (ENT_POINT | ENT_LINE | ENT_SURFACE | ENT_VOLUME)
// 2D meshing algorithms (numbers should not be changed)
#define ALGO_2D_MESHADAPT 1
#define ALGO_2D_AUTO 2
#define ALGO_2D_MESHADAPT_OLD 4
#define ALGO_2D_DELAUNAY 5
#define ALGO_2D_FRONTAL 6
#define ALGO_2D_BAMG 7
#define ALGO_2D_FRONTAL_QUAD 8
#define ALGO_2D_PACK_PRLGRMS 9
#define ALGO_2D_PACK_PRLGRMS_CSTR 10
// 3D meshing algorithms (numbers should not be changed)
#define ALGO_3D_DELAUNAY 1
#define ALGO_3D_DELAUNAY_NEW 2
#define ALGO_3D_FRONTAL 4
#define ALGO_3D_FRONTAL_DEL 5
#define ALGO_3D_FRONTAL_HEX 6
#define ALGO_3D_MMG3D 7
#define ALGO_3D_RTREE 9
// Meshing methods
#define MESH_NONE 0
#define MESH_TRANSFINITE 1
#define MESH_UNSTRUCTURED 2
// QuadTri options (structured/unstructured coupling with pyramids)
#define NO_QUADTRI 0
#define QUADTRI_ADDVERTS_1 1
#define QUADTRI_ADDVERTS_1_RECOMB 2
#define QUADTRI_NOVERTS_1 3
#define QUADTRI_NOVERTS_1_RECOMB 4
#define TRANSFINITE_QUADTRI_1 5
#endif