diff --git a/.clang-format b/.clang-format index 47c7544a3..2806623cf 100644 --- a/.clang-format +++ b/.clang-format @@ -1,48 +1,204 @@ --- -Language: Cpp BasedOnStyle: LLVM AccessModifierOffset: -4 -AlignOperands: false -AllowShortBlocksOnASingleLine: true -AllowShortIfStatementsOnASingleLine: true +AlignAfterOpenBracket: BlockIndent +AlignArrayOfStructures: None +AlignConsecutiveAssignments: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + PadOperators: true +AlignConsecutiveBitFields: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + PadOperators: false +AlignConsecutiveDeclarations: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + PadOperators: false +AlignConsecutiveMacros: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + PadOperators: false +AlignEscapedNewlines: Right +AlignOperands: Align +AlignTrailingComments: + Kind: Always + OverEmptyLines: 0 +AllowAllArgumentsOnNextLine: true +AllowAllParametersOfDeclarationOnNextLine: true +AllowShortBlocksOnASingleLine: Always +AllowShortCaseLabelsOnASingleLine: true +AllowShortEnumsOnASingleLine: true +AllowShortFunctionsOnASingleLine: All +AllowShortIfStatementsOnASingleLine: AllIfsAndElse +AllowShortLambdasOnASingleLine: All AllowShortLoopsOnASingleLine: true -AlwaysBreakAfterDefinitionReturnType: false +AlwaysBreakAfterDefinitionReturnType: None +AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: false AlwaysBreakTemplateDeclarations: No -BraceWrapping: +AttributeMacros: + - __capability +BinPackArguments: false +BinPackParameters: false +BitFieldColonSpacing: Both +BraceWrapping: AfterCaseLabel: false AfterClass: false - AfterControlStatement: false + AfterControlStatement: Never AfterEnum: false AfterFunction: false AfterNamespace: false + AfterObjCDeclaration: false AfterStruct: false AfterUnion: false AfterExternBlock: false BeforeCatch: true BeforeElse: true BeforeLambdaBody: false - BeforeWhile: true + BeforeWhile: false + IndentBraces: false SplitEmptyFunction: false SplitEmptyRecord: false SplitEmptyNamespace: false +BreakAfterAttributes: Never +BreakAfterJavaFieldAnnotations: false +BreakArrays: true +BreakBeforeBinaryOperators: None BreakBeforeBraces: Custom +BreakBeforeConceptDeclarations: Never +BreakBeforeInlineASMColon: OnlyMultiline +BreakBeforeTernaryOperators: false BreakConstructorInitializers: BeforeComma +BreakStringLiterals: true ColumnLimit: 0 -ConstructorInitializerAllOnOneLineOrOnePerLine: true -IncludeCategories: - - Regex: '^<.*' - Priority: 1 - - Regex: '^".*' +CommentPragmas: "^ IWYU pragma:" +CompactNamespaces: false +ConstructorInitializerIndentWidth: 4 +ContinuationIndentWidth: 4 +Cpp11BracedListStyle: true +DerivePointerAlignment: false +DisableFormat: false +EmptyLineAfterAccessModifier: Never +EmptyLineBeforeAccessModifier: LogicalBlock +ExperimentalAutoDetectBinPacking: false +FixNamespaceComments: true +IncludeBlocks: Regroup +IncludeCategories: + - Regex: ^"(llvm|llvm-c|clang|clang-c)/ Priority: 2 - - Regex: '.*' + SortPriority: 0 + CaseSensitive: false + - Regex: ^(<|"(gtest|gmock|isl|json)/) Priority: 3 -IncludeIsMainRegex: '([-_](test|unittest))?$' + SortPriority: 0 + CaseSensitive: false + - Regex: .* + Priority: 1 + SortPriority: 0 + CaseSensitive: false +IncludeIsMainRegex: (Test)?$ +IncludeIsMainSourceRegex: "" +IndentAccessModifiers: false +IndentCaseBlocks: false +IndentCaseLabels: false +IndentExternBlock: AfterExternBlock +IndentGotoLabels: true +IndentPPDirectives: None +IndentRequiresClause: true IndentWidth: 4 -MacroBlockBegin: '' -MacroBlockEnd: '' +IndentWrappedFunctionNames: false +InsertBraces: false +InsertNewlineAtEOF: false +InsertTrailingCommas: None +IntegerLiteralSeparator: + Binary: 0 + BinaryMinDigits: 0 + Decimal: 0 + DecimalMinDigits: 0 + Hex: 0 + HexMinDigits: 0 +JavaScriptQuotes: Leave +JavaScriptWrapImports: true +KeepEmptyLinesAtTheStartOfBlocks: false +LambdaBodyIndentation: Signature +Language: Cpp +LineEnding: DeriveLF +MacroBlockBegin: "" +MacroBlockEnd: "" +MaxEmptyLinesToKeep: 1 NamespaceIndentation: All +ObjCBinPackProtocolList: Auto +ObjCBlockIndentWidth: 2 +ObjCBreakBeforeNestedBlockParam: true +ObjCSpaceAfterProperty: false +ObjCSpaceBeforeProtocolList: true +PPIndentWidth: -1 +PackConstructorInitializers: Never +PenaltyBreakAssignment: 2 +PenaltyBreakBeforeFirstCallParameter: 19 +PenaltyBreakComment: 300 +PenaltyBreakFirstLessLess: 120 +PenaltyBreakOpenParenthesis: 0 +PenaltyBreakString: 1000 +PenaltyBreakTemplateDeclaration: 10 +PenaltyExcessCharacter: 1000000 +PenaltyIndentedWhitespace: 0 +PenaltyReturnTypeOnItsOwnLine: 60 PointerAlignment: Left +QualifierAlignment: Leave +ReferenceAlignment: Pointer +ReflowComments: true +RemoveBracesLLVM: false +RemoveSemicolon: false +RequiresClausePosition: OwnLine +RequiresExpressionIndentation: OuterScope +SeparateDefinitionBlocks: Leave +ShortNamespaceLines: 1 +SortIncludes: CaseSensitive +SortJavaStaticImport: Before +SortUsingDeclarations: LexicographicNumeric +SpaceAfterCStyleCast: false +SpaceAfterLogicalNot: false SpaceAfterTemplateKeyword: false +SpaceAroundPointerQualifiers: Default +SpaceBeforeAssignmentOperators: true +SpaceBeforeCaseColon: false +SpaceBeforeCpp11BracedList: false +SpaceBeforeCtorInitializerColon: true +SpaceBeforeInheritanceColon: true SpaceBeforeParens: Never +SpaceBeforeRangeBasedForLoopColon: true +SpaceBeforeSquareBrackets: false +SpaceInEmptyBlock: false +SpaceInEmptyParentheses: false +SpacesBeforeTrailingComments: 1 +SpacesInAngles: Never +SpacesInCStyleCastParentheses: false +SpacesInConditionalStatement: false +SpacesInContainerLiterals: true +SpacesInLineCommentPrefix: + Minimum: 1 + Maximum: -1 +SpacesInParentheses: false +SpacesInSquareBrackets: false +Standard: Latest +StatementAttributeLikeMacros: + - Q_EMIT +StatementMacros: + - suanpan_info + - suanpan_debug + - suanpan_warning + - suanpan_error + - suanpan_fatal TabWidth: 4 -... +UseTab: Never +AllowAllConstructorInitializersOnNextLine: true \ No newline at end of file diff --git a/.github/workflows/dev-all.yml b/.github/workflows/dev-all.yml new file mode 100644 index 000000000..d0cae4b60 --- /dev/null +++ b/.github/workflows/dev-all.yml @@ -0,0 +1,254 @@ +name: Develop +on: + push: + branches: [ dev ] + pull_request: + branches: [ dev ] +jobs: + ubuntu-dev: + if: "!contains(github.event.head_commit.message, '[skip]')" + runs-on: ubuntu-22.04 + timeout-minutes: 60 + strategy: + matrix: + build: [ RelWithDebInfo, Debug ] + compiler: [ { c: gcc, cpp: g++, fortran: gfortran }, { c: icx, cpp: icpx, fortran: ifx } ] + avx: [ ON, OFF ] + vtk: [ ON, OFF ] + mkl: [ ON, OFF ] + exclude: + - build: Debug + mkl: ON + - build: Debug + avx: ON + - compiler: { c: icx, cpp: icpx, fortran: ifx } + mkl: OFF + steps: + - name: Clone + uses: actions/checkout@v4 + - name: Golang + uses: actions/setup-go@v4 + with: + cache: false + - name: VTK + if: matrix.vtk == 'ON' + run: | + wget -q https://github.com/TLCFEM/prebuilds/releases/download/latest/VTK-9.2.6-linux.tar.gz + tar xf VTK-9.2.6-linux.tar.gz + - name: MKL + run: | + if [ "${{ matrix.mkl }}" == "ON" ] || [ "${{ matrix.compiler.c }}" == "icx" ]; then + wget -O- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | gpg --dearmor | sudo tee /usr/share/keyrings/oneapi-archive-keyring.gpg > /dev/null + echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list + fi + if [ "${{ matrix.mkl }}" == "ON" ]; then + sudo apt-get update && sudo apt-get install intel-oneapi-mkl-devel + fi + if [ "${{ matrix.compiler.c }}" == "icx" ]; then + sudo apt-get update && sudo apt-get install intel-oneapi-compiler-dpcpp-cpp intel-oneapi-compiler-fortran + echo "IOMP=ON" >> "$GITHUB_ENV" + else + echo "IOMP=OFF" >> "$GITHUB_ENV" + fi + - name: Dependency + run: | + sudo apt-get update && sudo apt-get install mesa-common-dev mesa-utils freeglut3-dev libglvnd-dev dpkg-dev xz-utils + echo "COVERAGE=OFF" >> "$GITHUB_ENV" + - name: Flag + if: | + matrix.build == 'Debug' && + matrix.compiler.c == 'gcc' && + matrix.avx == 'OFF' && + matrix.vtk == 'OFF' + run: | + echo "COVERAGE=ON" >> "$GITHUB_ENV" + - name: Compile + run: | + if [ "${{ matrix.compiler.c }}" == "icx" ]; then + source /opt/intel/oneapi/setvars.sh + fi + if [ "${{ matrix.build }}" == "Debug" ]; then + MT="OFF" + else + MT="ON" + fi + go build Checker/updater.go + mkdir build && cd build + cmake -DCMAKE_C_COMPILER=${{ matrix.compiler.c }} -DCMAKE_CXX_COMPILER=${{ matrix.compiler.cpp }} -DCMAKE_Fortran_COMPILER=${{ matrix.compiler.fortran }} -DCMAKE_BUILD_TYPE=${{ matrix.build }} -DTEST_COVERAGE=${{ env.COVERAGE }} -DUSE_AVX=${{ matrix.avx }} -DBUILD_MULTITHREAD=$MT -DUSE_VTK=${{ matrix.vtk }} -DVTK_DIR=/home/runner/work/suanPan/suanPan/lib/cmake/vtk-9.2/ -DUSE_MKL=${{ matrix.mkl }} -DMKLROOT=/opt/intel/oneapi/mkl/latest/ -DLINK_DYNAMIC_MKL=OFF -DUSE_INTEL_OPENMP=${{ env.IOMP }} -DCMAKE_INSTALL_PREFIX=dist .. + make install -j"$(nproc)" && make package + - name: Pack + run: | + cp updater build/dist/bin + file_name="suanPan-linux" + if [ "${{ matrix.build }}" == "Debug" ]; then + file_name+="-debug" + else + file_name+="-release" + fi + if [ "${{ matrix.compiler.c }}" == "gcc" ]; then + file_name+="-gcc" + else + file_name+="-intel" + fi + if [ "${{ matrix.avx }}" == "ON" ]; then + file_name+="-avx" + else + file_name+="-no-avx" + fi + if [ "${{ matrix.vtk }}" == "ON" ]; then + file_name+="-vtk" + fi + if [ "${{ matrix.mkl }}" == "ON" ]; then + file_name+="-mkl" + else + file_name+="-openblas" + fi + file_name+=".tar.gz" + echo "ARTIFACT=$file_name" >> "$GITHUB_ENV" + tar czf $file_name -C build/dist . + - name: Upload + uses: actions/upload-artifact@v3 + with: + name: ${{ env.ARTIFACT }} + path: ${{ env.ARTIFACT }} + - name: Test + run: | + export LD_LIBRARY_PATH=/home/runner/work/suanPan/suanPan/build/dist/lib + ./build/dist/bin/suanPan -v + - name: Coverage + if: env.COVERAGE == 'ON' + run: | + export LD_LIBRARY_PATH=/home/runner/work/suanPan/suanPan/build/dist/lib + cd build + bash ../Script/Coverage.sh . + for SRC in `find . | egrep '\.o'`; do gcov -n $SRC > /dev/null; done + - name: Report + if: env.COVERAGE == 'ON' + uses: codecov/codecov-action@v3 + with: + gcov: true + macos-dev: + if: "!contains(github.event.head_commit.message, '[skip]')" + runs-on: macos-11 + timeout-minutes: 100 + strategy: + matrix: + build: [ RelWithDebInfo, Debug ] + compiler: [ gcc, clang ] + vtk: [ ON, OFF ] + exclude: + - compiler: gcc + vtk: ON + steps: + - name: Clone + uses: actions/checkout@v4 + - name: Golang + uses: actions/setup-go@v4 + with: + cache: false + - name: VTK + if: matrix.vtk == 'ON' + run: | + wget -q https://github.com/TLCFEM/prebuilds/releases/download/latest/VTK-9.2.6-macos.tar.gz + tar xf VTK-9.2.6-macos.tar.gz + brew install glfw glew + - name: Compile + run: | + go build Checker/updater.go + mkdir build && cd build + if [ "${{ matrix.compiler }}" == "clang" ]; then + export CC=$(brew --prefix llvm@15)/bin/clang + export CXX=$(brew --prefix llvm@15)/bin/clang++ + export FC=gfortran-11 + cmake -DCMAKE_C_STANDARD_INCLUDE_DIRECTORIES=$(brew --prefix libomp)/include -DCMAKE_CXX_STANDARD_INCLUDE_DIRECTORIES=$(brew --prefix libomp)/include -DCMAKE_Fortran_STANDARD_INCLUDE_DIRECTORIES=$(brew --prefix libomp)/include -DCMAKE_BUILD_TYPE=${{ matrix.build }} -DUSE_VTK=${{ matrix.vtk }} -DVTK_DIR=/Users/runner/work/suanPan/suanPan/lib/cmake/vtk-9.2/ -DCMAKE_INSTALL_PREFIX=dist .. + else + export CC=gcc-11 + export CXX=g++-11 + export FC=gfortran-11 + cmake -DCMAKE_BUILD_TYPE=${{ matrix.build }} -DUSE_VTK=${{ matrix.vtk }} -DVTK_DIR=/Users/runner/work/suanPan/suanPan/lib/cmake/vtk-9.2/ -DCMAKE_INSTALL_PREFIX=dist .. + fi + make install -j4 + - name: Pack + run: | + cp updater build/dist/bin + file_name="suanPan-macos" + if [ "${{ matrix.build }}" == "Debug" ]; then + file_name+="-debug" + else + file_name+="-release" + fi + file_name+="-${{ matrix.compiler }}" + if [ "${{ matrix.vtk }}" == "ON" ]; then + file_name+="-vtk" + fi + file_name+=".tar.gz" + echo "ARTIFACT=$file_name" >> "$GITHUB_ENV" + tar czf $file_name -C build/dist . + - name: Test + run: | + export DYLD_LIBRARY_PATH=/Users/runner/work/suanPan/suanPan/build/dist/lib/ + ./build/dist/bin/suanPan -v + - name: Upload + uses: actions/upload-artifact@v3 + with: + name: ${{ env.ARTIFACT }} + path: ${{ env.ARTIFACT }} + windows-dev: + if: "!contains(github.event.head_commit.message, '[skip]')" + runs-on: windows-2022 + timeout-minutes: 100 + strategy: + matrix: + build: [ Release ] + compiler: [ "Visual Studio 17 2022" ] + vtk: [ ON, OFF ] + avx: [ ON, OFF ] + steps: + - name: Clone + uses: actions/checkout@v4 + - name: Golang + uses: actions/setup-go@v4 + with: + cache: false + - name: VTK + if: matrix.vtk == 'ON' + run: | + C:/msys64/usr/bin/wget.exe -q https://github.com/TLCFEM/prebuilds/releases/download/latest/VTK-9.2.6-win.7z + 7z x VTK-9.2.6-win.7z + - name: Compile + run: | + go build Checker/updater.go + mkdir build && cd build + cmake -G "${{ matrix.compiler }}" -DCMAKE_BUILD_TYPE=${{ matrix.build }} -DUSE_AVX=${{ matrix.avx }} -DUSE_VTK=${{ matrix.vtk }} -DVTK_DIR=D:/a/suanPan/suanPan/lib/cmake/vtk-9.2/ -DCMAKE_INSTALL_PREFIX=dist .. + cmake --build . --target install --config ${{ matrix.build }} -j 4 + - name: Pack + shell: bash + run: | + cp updater.exe build/dist/bin + file_name="suanPan-win" + if [ "${{ matrix.build }}" == "Debug" ]; then + file_name+="-debug" + else + file_name+="-release" + fi + file_name+="-openblas" + if [ "${{ matrix.avx }}" == "ON" ]; then + file_name+="-avx" + else + file_name+="-no-avx" + fi + if [ "${{ matrix.vtk }}" == "ON" ]; then + file_name+="-vtk" + fi + file_name+=".7z" + echo "ARTIFACT=$file_name" >> "$GITHUB_ENV" + cd build/dist/bin + 7z a ../../../$file_name ./* + - name: Test + run: | + build/dist/bin/suanPan.exe -v + - name: Upload + uses: actions/upload-artifact@v3 + with: + name: ${{ env.ARTIFACT }} + path: ${{ env.ARTIFACT }} diff --git a/.github/workflows/dev-mkl-vtk.yml b/.github/workflows/dev-mkl-vtk.yml deleted file mode 100644 index 1390f1db9..000000000 --- a/.github/workflows/dev-mkl-vtk.yml +++ /dev/null @@ -1,77 +0,0 @@ -name: Dev With MKL VTK -on: - push: - branches: [ dev ] - pull_request: - branches: [ dev ] -jobs: - ubuntu-mkl-vtk-dev: - runs-on: ubuntu-22.04 - timeout-minutes: 60 - steps: - - name: Clone - uses: actions/checkout@v3 - - name: Install VTK - run: | - wget -O- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | gpg --dearmor | sudo tee /usr/share/keyrings/oneapi-archive-keyring.gpg > /dev/null - echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list - wget https://github.com/TLCFEM/prebuilds/releases/download/latest/VTK-9.2.6-linux.tar.gz - tar xf VTK-9.2.6-linux.tar.gz - - name: Golang - uses: actions/setup-go@v3 - - name: Compile - run: | - go build Checker/updater.go - sudo apt-get update && sudo apt-get install mesa-common-dev mesa-utils freeglut3-dev libglvnd-dev dpkg-dev xz-utils intel-oneapi-mkl-devel-2023.0.0 intel-oneapi-compiler-dpcpp-cpp-2023.0.0 intel-oneapi-compiler-fortran-2023.0.0 - source /opt/intel/oneapi/setvars.sh - cmake -DCMAKE_C_COMPILER=icx -DCMAKE_CXX_COMPILER=icpx -DCMAKE_Fortran_COMPILER=ifx -DCMAKE_BUILD_TYPE=Debug -DBUILD_MULTITHREAD=ON -DUSE_HDF5=ON -DUSE_EXTERNAL_VTK=ON -DVTK_DIR=./lib/cmake/vtk-9.2/ -DUSE_MKL=ON -DMKLROOT=/opt/intel/oneapi/mkl/latest/ -DLINK_DYNAMIC_MKL=OFF -DCMAKE_INSTALL_PREFIX=suanPan-linux-mkl-vtk . - make install -j"$(nproc)" - make package - - name: Test - run: | - export LD_LIBRARY_PATH=/home/runner/work/suanPan/suanPan/suanPan-linux-mkl-vtk/lib - ./suanPan-linux-mkl-vtk/bin/suanPan -v - - uses: actions/upload-artifact@v3 - with: - name: suanPan-3.1.0-1.x86_64.deb - path: suanPan-3.1.0-1.x86_64.deb - fedora-mkl-vtk-dev: - runs-on: ubuntu-22.04 - timeout-minutes: 60 - container: fedora:36 - steps: - - name: Setup - run: | - tee > oneAPI.repo << EOF - [oneAPI] - name=Intel oneAPI repository - baseurl=https://yum.repos.intel.com/oneapi - enabled=1 - gpgcheck=1 - repo_gpgcheck=1 - gpgkey=https://yum.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB - EOF - mv oneAPI.repo /etc/yum.repos.d/ - dnf upgrade --refresh -y - dnf install libglvnd-devel gcc g++ gfortran rpm-build rpm-devel rpmdevtools cmake wget intel-oneapi-mkl-devel intel-oneapi-compiler-dpcpp-cpp intel-oneapi-compiler-fortran git procps -y - git config --global --add safe.directory /__w/suanPan/suanPan - - name: Clone - uses: actions/checkout@v3 - - name: Install MKL VTK - run: | - wget https://github.com/TLCFEM/prebuilds/releases/download/latest/VTK-9.2.6-linux.tar.gz - tar xf VTK-9.2.6-linux.tar.gz - - name: Compile - run: | - source /opt/intel/oneapi/setvars.sh - cmake -DCMAKE_C_COMPILER=icx -DCMAKE_CXX_COMPILER=icpx -DCMAKE_Fortran_COMPILER=ifx -DCMAKE_BUILD_TYPE=Debug -DBUILD_MULTITHREAD=ON -DUSE_HDF5=ON -DUSE_EXTERNAL_VTK=ON -DVTK_DIR=./lib/cmake/vtk-9.2/ -DUSE_MKL=ON -DMKLROOT=/opt/intel/oneapi/mkl/latest/ -DLINK_DYNAMIC_MKL=OFF . - make package -j"$(nproc)" - - name: Test - run: | - dnf install ./suanPan-3.1.0-1.x86_64.rpm -y - suanPan -v - - name: Upload - uses: actions/upload-artifact@v3 - with: - name: suanPan-3.1.0-1.x86_64.rpm - path: suanPan-3.1.0-1.x86_64.rpm diff --git a/.github/workflows/dev-vtk.yml b/.github/workflows/dev-vtk.yml deleted file mode 100644 index aedc73f6d..000000000 --- a/.github/workflows/dev-vtk.yml +++ /dev/null @@ -1,84 +0,0 @@ -name: Dev With VTK -on: - push: - branches: [ dev ] - pull_request: - branches: [ dev ] -jobs: - ubuntu-openblas-vtk-dev: - runs-on: ubuntu-22.04 - timeout-minutes: 60 - steps: - - name: Clone - uses: actions/checkout@v3 - - name: Install VTK - run: | - wget https://github.com/TLCFEM/prebuilds/releases/download/latest/VTK-9.2.6-linux.tar.gz - tar xf VTK-9.2.6-linux.tar.gz - - name: Golang - uses: actions/setup-go@v3 - - name: Compile - run: | - go build Checker/updater.go - sudo apt-get update && sudo apt-get install mesa-common-dev mesa-utils freeglut3-dev libglvnd-dev dpkg-dev xz-utils - cmake -DCMAKE_BUILD_TYPE=Debug -DBUILD_MULTITHREAD=ON -DUSE_HDF5=ON -DUSE_EXTERNAL_VTK=ON -DVTK_DIR=./lib/cmake/vtk-9.2/ -DCMAKE_INSTALL_PREFIX=suanPan-linux-openblas-vtk . - make install -j"$(nproc)" - make package - - name: Test - run: | - export LD_LIBRARY_PATH=/home/runner/work/suanPan/suanPan/suanPan-linux-openblas-vtk/lib - ./suanPan-linux-openblas-vtk/bin/suanPan -v - - uses: actions/upload-artifact@v3 - with: - name: suanPan-3.1.0-1.x86_64.deb - path: suanPan-3.1.0-1.x86_64.deb - macos-openblas-vtk-dev: - runs-on: macos-11 - timeout-minutes: 100 - steps: - - name: Clone - uses: actions/checkout@v3 - - name: Install VTK - run: | - wget https://github.com/TLCFEM/prebuilds/releases/download/latest/VTK-9.2.6-macos.tar.gz - tar xf VTK-9.2.6-macos.tar.gz - - name: Golang - uses: actions/setup-go@v3 - - name: Compile - run: | - export CC=$(brew --prefix llvm@15)/bin/clang && export CXX=$(brew --prefix llvm@15)/bin/clang++ && export FC=gfortran-11 - go build Checker/updater.go - brew install glfw glew - cmake -DCMAKE_C_STANDARD_INCLUDE_DIRECTORIES=$(brew --prefix libomp)/include -DCMAKE_CXX_STANDARD_INCLUDE_DIRECTORIES=$(brew --prefix libomp)/include -DCMAKE_Fortran_STANDARD_INCLUDE_DIRECTORIES=$(brew --prefix libomp)/include -DCMAKE_BUILD_TYPE=Debug -DBUILD_MULTITHREAD=ON -DUSE_HDF5=ON -DUSE_EXTERNAL_VTK=ON -DVTK_DIR=./lib/cmake/vtk-9.2/ -DCMAKE_INSTALL_PREFIX=suanPan-macos-openblas-vtk . - make install -j4 - - name: Test - run: | - export DYLD_LIBRARY_PATH=/Users/runner/work/suanPan/suanPan/suanPan-macos-openblas-vtk/lib/ - ./suanPan-macos-openblas-vtk/bin/suanPan -v - windows-openblas-vtk-dev: - runs-on: windows-2022 - timeout-minutes: 100 - steps: - - name: Clone - uses: actions/checkout@v3 - - name: Install VTK - run: | - C:/msys64/usr/bin/wget.exe https://github.com/TLCFEM/prebuilds/releases/download/latest/VTK-9.2.6-win.7z - 7z x VTK-9.2.6-win.7z - - name: Golang - uses: actions/setup-go@v3 - - name: Compile - run: | - go build Checker/updater.go - cmake -DCMAKE_BUILD_TYPE=Debug -DBUILD_MULTITHREAD=ON -DUSE_HDF5=ON -DUSE_EXTERNAL_VTK=ON -DVTK_DIR=D:/a/suanPan/suanPan/lib/cmake/vtk-9.2/ -DCMAKE_INSTALL_PREFIX=suanPan-win-openblas-vtk . - cmake --build . --target INSTALL --config Release -j 4 - - name: Pack - run: | - cp updater.exe suanPan-win-openblas-vtk/bin - cd suanPan-win-openblas-vtk/bin - 7z a ../../suanPan-win-openblas-vtk.7z ./* - ./suanPan.exe -v - - uses: actions/upload-artifact@v3 - with: - name: suanPan-win-openblas-vtk.7z - path: suanPan-win-openblas-vtk.7z diff --git a/.github/workflows/dev.yml b/.github/workflows/dev.yml deleted file mode 100644 index b475247f1..000000000 --- a/.github/workflows/dev.yml +++ /dev/null @@ -1,45 +0,0 @@ -name: Dev -on: - push: - branches: [ dev ] - pull_request: - branches: [ dev ] -jobs: - ubuntu-dev: - runs-on: ubuntu-22.04 - timeout-minutes: 60 - steps: - - name: Clone - uses: actions/checkout@v3 - - name: Golang - uses: actions/setup-go@v3 - - name: Compile - run: | - go build Checker/updater.go - mkdir cmake-build-debug && cd cmake-build-debug - cmake -DCMAKE_BUILD_TYPE=Debug -DTEST_COVERAGE=ON -DUSE_HDF5=ON ../ - make -j"$(nproc)" - chmod +x ../Script/Coverage.sh - ../Script/Coverage.sh . - for SRC in `find . | egrep '\.o'`; do gcov -n $SRC > /dev/null; done - cd .. - - name: Upload - uses: codecov/codecov-action@v3 - with: - gcov: true - macos-dev: - runs-on: macos-11 - timeout-minutes: 100 - steps: - - name: Clone - uses: actions/checkout@v3 - - name: Golang - uses: actions/setup-go@v3 - - name: Compile - run: | - export CC=gcc-11 && export CXX=g++-11 && export FC=gfortran-11 - go build Checker/updater.go - cmake -DCMAKE_BUILD_TYPE=Debug -DUSE_HDF5=ON . - make -j4 - export DYLD_LIBRARY_PATH=Libs/mac/ - ./suanPan -v diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml new file mode 100644 index 000000000..ff928a264 --- /dev/null +++ b/.github/workflows/docker.yml @@ -0,0 +1,28 @@ +name: Docker +on: + push: + branches: [ dev ] + pull_request: + branches: [ dev ] +jobs: + ubuntu-dev: + if: "!contains(github.event.head_commit.message, '[skip]')" + runs-on: ubuntu-22.04 + timeout-minutes: 60 + steps: + - name: Clone + uses: actions/checkout@v4 + - name: Login + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Buildx + uses: docker/setup-buildx-action@v3 + - name: Build + uses: docker/build-push-action@v5 + with: + context: . + file: ./Script/Rocky.Dockerfile + push: true + tags: ${{ secrets.DOCKERHUB_USERNAME }}/suanpan:latest diff --git a/.github/workflows/master-all.yml b/.github/workflows/master-all.yml new file mode 100644 index 000000000..822cbc300 --- /dev/null +++ b/.github/workflows/master-all.yml @@ -0,0 +1,189 @@ +name: Stable +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] +jobs: + ubuntu-master: + runs-on: ubuntu-22.04 + timeout-minutes: 60 + strategy: + matrix: + avx: [ ON, OFF ] + vtk: [ ON, OFF ] + mkl: [ ON, OFF ] + steps: + - name: Clone + uses: actions/checkout@v4 + - name: Golang + uses: actions/setup-go@v4 + with: + cache: false + - name: Prepare + run: | + echo "SP_TIME=daily-$(date +''%y%m%d'')" >> $GITHUB_ENV + - name: VTK + if: matrix.vtk == 'ON' + run: | + wget -q https://github.com/TLCFEM/prebuilds/releases/download/latest/VTK-9.2.6-linux.tar.gz + tar xf VTK-9.2.6-linux.tar.gz + - name: MKL + if: matrix.mkl == 'ON' + run: | + wget -O- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | gpg --dearmor | sudo tee /usr/share/keyrings/oneapi-archive-keyring.gpg > /dev/null + echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list + sudo apt-get update && sudo apt-get install intel-oneapi-mkl-devel + - name: Dependency + run: | + sudo apt-get update && sudo apt-get install mesa-common-dev mesa-utils freeglut3-dev libglvnd-dev dpkg-dev xz-utils + - name: Compile + run: | + go build Checker/updater.go + mkdir build && cd build + cmake -DCMAKE_BUILD_TYPE=Release -DUSE_AVX=${{ matrix.avx }} -DBUILD_MULTITHREAD=ON -DUSE_VTK=${{ matrix.vtk }} -DVTK_DIR=/home/runner/work/suanPan/suanPan/lib/cmake/vtk-9.2/ -DUSE_MKL=${{ matrix.mkl }} -DMKLROOT=/opt/intel/oneapi/mkl/latest/ -DLINK_DYNAMIC_MKL=OFF -DUSE_INTEL_OPENMP=OFF -DCMAKE_INSTALL_PREFIX=dist .. + make install -j"$(nproc)" && make package + - name: Pack + run: | + cp updater build/dist/bin + file_name="suanPan-linux" + if [ "${{ matrix.mkl }}" == "ON" ]; then + file_name+="-mkl" + else + file_name+="-openblas" + fi + if [ "${{ matrix.vtk }}" == "ON" ]; then + file_name+="-vtk" + fi + if [ "${{ matrix.avx }}" == "OFF" ]; then + file_name+="-no-avx" + fi + file_name+=".tar.gz" + echo "ARTIFACT=$file_name" >> "$GITHUB_ENV" + tar czf $file_name -C build/dist . + - name: Upload + uses: actions/upload-artifact@v3 + with: + name: ${{ env.ARTIFACT }} + path: ${{ env.ARTIFACT }} + - name: Release + uses: svenstaro/upload-release-action@v2 + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: ${{ env.ARTIFACT }} + asset_name: ${{ env.ARTIFACT }} + tag: ${{ env.SP_TIME }} + prerelease: true + overwrite: true + macos-master: + runs-on: macos-11 + timeout-minutes: 100 + strategy: + matrix: + vtk: [ ON, OFF ] + steps: + - name: Clone + uses: actions/checkout@v4 + - name: Golang + uses: actions/setup-go@v4 + with: + cache: false + - name: Prepare + run: | + echo "SP_TIME=daily-$(date +''%y%m%d'')" >> $GITHUB_ENV + - name: VTK + if: matrix.vtk == 'ON' + run: | + wget -q https://github.com/TLCFEM/prebuilds/releases/download/latest/VTK-9.2.6-macos.tar.gz + tar xf VTK-9.2.6-macos.tar.gz + brew install glfw glew + - name: Compile + run: | + go build Checker/updater.go + mkdir build && cd build + export CC=$(brew --prefix llvm@15)/bin/clang + export CXX=$(brew --prefix llvm@15)/bin/clang++ + export FC=gfortran-11 + cmake -DCMAKE_C_STANDARD_INCLUDE_DIRECTORIES=$(brew --prefix libomp)/include -DCMAKE_CXX_STANDARD_INCLUDE_DIRECTORIES=$(brew --prefix libomp)/include -DCMAKE_Fortran_STANDARD_INCLUDE_DIRECTORIES=$(brew --prefix libomp)/include -DCMAKE_BUILD_TYPE=Release -DUSE_VTK=${{ matrix.vtk }} -DBUILD_MULTITHREAD=ON -DVTK_DIR=/Users/runner/work/suanPan/suanPan/lib/cmake/vtk-9.2/ -DCMAKE_INSTALL_PREFIX=dist .. + make install -j4 + - name: Pack + run: | + cp updater build/dist/bin + file_name="suanPan-macos-openblas" + if [ "${{ matrix.vtk }}" == "ON" ]; then + file_name+="-vtk" + fi + file_name+=".tar.gz" + echo "ARTIFACT=$file_name" >> "$GITHUB_ENV" + tar czf $file_name -C build/dist . + - name: Upload + uses: actions/upload-artifact@v3 + with: + name: ${{ env.ARTIFACT }} + path: ${{ env.ARTIFACT }} + - name: Release + uses: svenstaro/upload-release-action@v2 + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: ${{ env.ARTIFACT }} + asset_name: ${{ env.ARTIFACT }} + tag: ${{ env.SP_TIME }} + prerelease: true + overwrite: true + windows-master: + runs-on: windows-2022 + timeout-minutes: 120 + strategy: + matrix: + avx: [ ON, OFF ] + vtk: [ ON, OFF ] + steps: + - name: Clone + uses: actions/checkout@v4 + - name: Golang + uses: actions/setup-go@v4 + with: + cache: false + - name: Prepare + run: | + echo ("SP_TIME=daily-"+(get-date -format "yyMMdd")) >> $env:GITHUB_ENV + - name: VTK + if: matrix.vtk == 'ON' + run: | + C:/msys64/usr/bin/wget.exe -q https://github.com/TLCFEM/prebuilds/releases/download/latest/VTK-9.2.6-win.7z + 7z x VTK-9.2.6-win.7z + - name: Compile + run: | + go build Checker/updater.go + mkdir build && cd build + cmake -DCMAKE_BUILD_TYPE=Release -DUSE_AVX=${{ matrix.avx }} -DBUILD_MULTITHREAD=ON -DUSE_VTK=${{ matrix.vtk }} -DVTK_DIR=D:/a/suanPan/suanPan/lib/cmake/vtk-9.2/ -DCMAKE_INSTALL_PREFIX=dist .. + cmake --build . --target install --config Release -j 4 + - name: Pack + shell: bash + run: | + cp updater.exe build/dist/bin + file_name="suanPan-win-openblas" + if [ "${{ matrix.vtk }}" == "ON" ]; then + file_name+="-vtk" + fi + if [ "${{ matrix.avx }}" == "OFF" ]; then + file_name+="-no-avx" + fi + file_name+=".7z" + echo "ARTIFACT=$file_name" >> "$GITHUB_ENV" + cd build/dist/bin + 7z a ../../../$file_name ./* + - name: Upload + uses: actions/upload-artifact@v3 + with: + name: ${{ env.ARTIFACT }} + path: ${{ env.ARTIFACT }} + - name: Release + uses: svenstaro/upload-release-action@v2 + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: ${{ env.ARTIFACT }} + asset_name: ${{ env.ARTIFACT }} + tag: ${{ env.SP_TIME }} + prerelease: true + overwrite: true diff --git a/.github/workflows/master-mkl-vtk.yml b/.github/workflows/master-mkl-vtk.yml deleted file mode 100644 index fb150db72..000000000 --- a/.github/workflows/master-mkl-vtk.yml +++ /dev/null @@ -1,137 +0,0 @@ -name: Release With MKL VTK -on: - push: - branches: [ master ] - pull_request: - branches: [ master ] -jobs: - ubuntu-mkl-vtk: - runs-on: ubuntu-22.04 - timeout-minutes: 60 - steps: - - name: Clone - uses: actions/checkout@v3 - - name: Install MKL VTK - run: | - echo "SP_TIME=daily-$(date +''%Y%m%d%H'')" >> $GITHUB_ENV - wget -O- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | gpg --dearmor | sudo tee /usr/share/keyrings/oneapi-archive-keyring.gpg > /dev/null - echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list - wget https://github.com/TLCFEM/prebuilds/releases/download/latest/VTK-9.2.6-linux.tar.gz - tar xf VTK-9.2.6-linux.tar.gz - - name: Golang - uses: actions/setup-go@v3 - - name: Compile - run: | - go build Checker/updater.go - sudo apt-get update && sudo apt-get install mesa-common-dev mesa-utils freeglut3-dev libglvnd-dev intel-oneapi-mkl-devel dpkg-dev - cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_MULTITHREAD=ON -DUSE_HDF5=ON -DUSE_MIMALLOC=ON -DUSE_EXTERNAL_VTK=ON -DVTK_DIR=./lib/cmake/vtk-9.2/ -DUSE_MKL=ON -DMKLROOT=/opt/intel/oneapi/mkl/latest/ -DUSE_INTEL_OPENMP=OFF -DLINK_DYNAMIC_MKL=OFF -DCMAKE_INSTALL_PREFIX=suanPan-linux-mkl-vtk . - make install -j"$(nproc)" - make package - - name: Pack - run: | - cp updater suanPan-linux-mkl-vtk/bin - tar czf suanPan-linux-mkl-vtk.tar.gz suanPan-linux-mkl-vtk - - name: Test - run: | - sudo apt-get install ./suanPan-3.1.0-1.x86_64.deb -y - suanPan -v - export LD_LIBRARY_PATH=/home/runner/work/suanPan/suanPan/suanPan-linux-mkl-vtk/lib - cd suanPan-linux-mkl-vtk/bin - ./suanPan -v - - name: Release - uses: svenstaro/upload-release-action@v2 - with: - repo_token: ${{ secrets.GITHUB_TOKEN }} - file: suanPan-linux-mkl-vtk.tar.gz - asset_name: suanPan-linux-mkl-vtk.tar.gz - tag: ${{ env.SP_TIME }} - prerelease: true - overwrite: true - - name: DEB - uses: svenstaro/upload-release-action@v2 - with: - repo_token: ${{ secrets.GITHUB_TOKEN }} - file: suanPan-3.1.0-1.x86_64.deb - asset_name: suanPan-3.1.0-1.x86_64.deb - tag: ${{ env.SP_TIME }} - prerelease: true - overwrite: true - ubuntu-mkl-vtk-no-avx: - runs-on: ubuntu-22.04 - timeout-minutes: 60 - steps: - - name: Clone - uses: actions/checkout@v3 - - name: Install MKL VTK - run: | - echo "SP_TIME=daily-$(date +''%Y%m%d%H'')" >> $GITHUB_ENV - wget -O- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | gpg --dearmor | sudo tee /usr/share/keyrings/oneapi-archive-keyring.gpg > /dev/null - echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list - wget https://github.com/TLCFEM/prebuilds/releases/download/latest/VTK-9.2.6-linux.tar.gz - tar xf VTK-9.2.6-linux.tar.gz - - name: Golang - uses: actions/setup-go@v3 - - name: Compile - run: | - go build Checker/updater.go - sudo apt-get update && sudo apt-get install mesa-common-dev mesa-utils freeglut3-dev libglvnd-dev intel-oneapi-mkl-devel dpkg-dev - cmake -DCMAKE_BUILD_TYPE=Release -DUSE_AVX=OFF -DBUILD_MULTITHREAD=ON -DUSE_HDF5=ON -DUSE_MIMALLOC=ON -DUSE_EXTERNAL_VTK=ON -DVTK_DIR=./lib/cmake/vtk-9.2/ -DUSE_MKL=ON -DMKLROOT=/opt/intel/oneapi/mkl/latest/ -DUSE_INTEL_OPENMP=OFF -DLINK_DYNAMIC_MKL=OFF -DCMAKE_INSTALL_PREFIX=suanPan-linux-mkl-vtk-no-avx . - make install -j"$(nproc)" - make package - - name: Pack - run: | - cp updater suanPan-linux-mkl-vtk-no-avx/bin - tar czf suanPan-linux-mkl-vtk-no-avx.tar.gz suanPan-linux-mkl-vtk-no-avx - - name: Release - uses: svenstaro/upload-release-action@v2 - with: - repo_token: ${{ secrets.GITHUB_TOKEN }} - file: suanPan-linux-mkl-vtk-no-avx.tar.gz - asset_name: suanPan-linux-mkl-vtk-no-avx.tar.gz - tag: ${{ env.SP_TIME }} - prerelease: true - overwrite: true - fedora-mkl-vtk: - runs-on: ubuntu-22.04 - timeout-minutes: 60 - container: fedora:36 - steps: - - name: Setup - run: | - echo "SP_TIME=daily-$(date +''%Y%m%d%H'')" >> $GITHUB_ENV - tee > oneAPI.repo << EOF - [oneAPI] - name=Intel oneAPI repository - baseurl=https://yum.repos.intel.com/oneapi - enabled=1 - gpgcheck=1 - repo_gpgcheck=1 - gpgkey=https://yum.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB - EOF - mv oneAPI.repo /etc/yum.repos.d/ - dnf upgrade --refresh -y - dnf install libglvnd-devel gcc g++ gfortran rpm-build rpm-devel rpmdevtools cmake wget intel-oneapi-mkl-devel git -y - git config --global --add safe.directory /__w/suanPan/suanPan - - name: Clone - uses: actions/checkout@v3 - - name: Install MKL VTK - run: | - wget https://github.com/TLCFEM/prebuilds/releases/download/latest/VTK-9.2.6-linux.tar.gz - tar xf VTK-9.2.6-linux.tar.gz - - name: Compile - run: | - cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_MULTITHREAD=ON -DUSE_HDF5=ON -DUSE_EXTERNAL_VTK=ON -DVTK_DIR=./lib/cmake/vtk-9.2/ -DUSE_MKL=ON -DMKLROOT=/opt/intel/oneapi/mkl/latest/ -DUSE_INTEL_OPENMP=OFF -DLINK_DYNAMIC_MKL=OFF . - make package -j"$(nproc)" - - name: Test - run: | - dnf install ./suanPan-3.1.0-1.x86_64.rpm -y - suanPan -v - - name: RPM - uses: svenstaro/upload-release-action@v2 - with: - repo_token: ${{ secrets.GITHUB_TOKEN }} - file: suanPan-3.1.0-1.x86_64.rpm - asset_name: suanPan-3.1.0-1.x86_64.rpm - tag: ${{ env.SP_TIME }} - prerelease: true - overwrite: true diff --git a/.github/workflows/master-mkl.yml b/.github/workflows/master-mkl.yml deleted file mode 100644 index 2233ceded..000000000 --- a/.github/workflows/master-mkl.yml +++ /dev/null @@ -1,42 +0,0 @@ -name: Release With MKL -on: - push: - branches: [ master ] - pull_request: - branches: [ master ] -jobs: - ubuntu-mkl: - runs-on: ubuntu-22.04 - timeout-minutes: 60 - steps: - - name: Clone - uses: actions/checkout@v3 - - name: Install MKL - run: | - echo "SP_TIME=daily-$(date +''%Y%m%d%H'')" >> $GITHUB_ENV - wget -O- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | gpg --dearmor | sudo tee /usr/share/keyrings/oneapi-archive-keyring.gpg > /dev/null - echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list - - name: Golang - uses: actions/setup-go@v3 - - name: Compile - run: | - go build Checker/updater.go - sudo apt-get update && sudo apt-get install intel-oneapi-mkl-devel - cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_MULTITHREAD=ON -DUSE_HDF5=ON -DUSE_MIMALLOC=ON -DUSE_MKL=ON -DMKLROOT=/opt/intel/oneapi/mkl/latest/ -DUSE_INTEL_OPENMP=OFF -DLINK_DYNAMIC_MKL=OFF -DCMAKE_INSTALL_PREFIX=suanPan-linux-mkl . - make install -j"$(nproc)" - - name: Pack - run: | - cp updater suanPan-linux-mkl/bin - tar czf suanPan-linux-mkl.tar.gz suanPan-linux-mkl - export LD_LIBRARY_PATH=/home/runner/work/suanPan/suanPan/suanPan-linux-mkl/lib - cd suanPan-linux-mkl/bin - ./suanPan -v - - name: Release - uses: svenstaro/upload-release-action@v2 - with: - repo_token: ${{ secrets.GITHUB_TOKEN }} - file: suanPan-linux-mkl.tar.gz - asset_name: suanPan-linux-mkl.tar.gz - tag: ${{ env.SP_TIME }} - prerelease: true - overwrite: true diff --git a/.github/workflows/master-vtk.yml b/.github/workflows/master-vtk.yml deleted file mode 100644 index edf18380d..000000000 --- a/.github/workflows/master-vtk.yml +++ /dev/null @@ -1,178 +0,0 @@ -name: Release With VTK -on: - push: - branches: [ master ] - pull_request: - branches: [ master ] -jobs: - ubuntu-openblas-vtk: - runs-on: ubuntu-22.04 - timeout-minutes: 60 - steps: - - name: Clone - uses: actions/checkout@v3 - - name: Install VTK - run: | - echo "SP_TIME=daily-$(date +''%Y%m%d%H'')" >> $GITHUB_ENV - wget https://github.com/TLCFEM/prebuilds/releases/download/latest/VTK-9.2.6-linux.tar.gz - tar xf VTK-9.2.6-linux.tar.gz - - name: Golang - uses: actions/setup-go@v3 - - name: Compile - run: | - go build Checker/updater.go - sudo apt-get update && sudo apt-get install mesa-common-dev mesa-utils freeglut3-dev libglvnd-dev - cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_MULTITHREAD=ON -DUSE_HDF5=ON -DUSE_MIMALLOC=ON -DUSE_EXTERNAL_VTK=ON -DVTK_DIR=./lib/cmake/vtk-9.2/ -DCMAKE_INSTALL_PREFIX=suanPan-linux-openblas-vtk . - make install -j"$(nproc)" - - name: Pack - run: | - cp updater suanPan-linux-openblas-vtk/bin - tar cvzf suanPan-linux-openblas-vtk.tar.gz suanPan-linux-openblas-vtk - export LD_LIBRARY_PATH=/home/runner/work/suanPan/suanPan/suanPan-linux-openblas-vtk/lib - ./suanPan-linux-openblas-vtk/bin/suanPan -v - - name: Release - uses: svenstaro/upload-release-action@v2 - with: - repo_token: ${{ secrets.GITHUB_TOKEN }} - file: suanPan-linux-openblas-vtk.tar.gz - asset_name: suanPan-linux-openblas-vtk.tar.gz - tag: ${{ env.SP_TIME }} - prerelease: true - overwrite: true - macos-openblas-vtk: - runs-on: macos-11 - timeout-minutes: 100 - steps: - - name: Clone - uses: actions/checkout@v3 - - name: Install VTK - run: | - echo "SP_TIME=daily-$(date +''%Y%m%d%H'')" >> $GITHUB_ENV - wget https://github.com/TLCFEM/prebuilds/releases/download/latest/VTK-9.2.6-macos.tar.gz - tar xf VTK-9.2.6-macos.tar.gz - - name: Golang - uses: actions/setup-go@v3 - - name: Compile - run: | - export CC=$(brew --prefix llvm@15)/bin/clang && export CXX=$(brew --prefix llvm@15)/bin/clang++ && export FC=gfortran-11 - go build Checker/updater.go - brew install glfw glew - cmake -DCMAKE_C_STANDARD_INCLUDE_DIRECTORIES=$(brew --prefix libomp)/include -DCMAKE_CXX_STANDARD_INCLUDE_DIRECTORIES=$(brew --prefix libomp)/include -DCMAKE_Fortran_STANDARD_INCLUDE_DIRECTORIES=$(brew --prefix libomp)/include -DCMAKE_BUILD_TYPE=Release -DBUILD_MULTITHREAD=ON -DUSE_HDF5=ON -DUSE_EXTERNAL_VTK=ON -DVTK_DIR=./lib/cmake/vtk-9.2/ -DCMAKE_INSTALL_PREFIX=suanPan-macos-openblas-vtk . - make install -j4 - - name: Pack - run: | - cp updater suanPan-macos-openblas-vtk/bin - tar czf suanPan-macos-openblas-vtk.tar.gz suanPan-macos-openblas-vtk - export DYLD_LIBRARY_PATH=/Users/runner/work/suanPan/suanPan/suanPan-macos-openblas-vtk/lib/ - cd suanPan-macos-openblas-vtk/bin - ./suanPan -v - - name: Release - uses: svenstaro/upload-release-action@v2 - with: - repo_token: ${{ secrets.GITHUB_TOKEN }} - file: suanPan-macos-openblas-vtk.tar.gz - asset_name: suanPan-macos-openblas-vtk.tar.gz - tag: ${{ env.SP_TIME }} - prerelease: true - overwrite: true - macos-openblas-vtk-no-avx: - runs-on: macos-11 - timeout-minutes: 100 - steps: - - name: Clone - uses: actions/checkout@v3 - - name: Install VTK - run: | - echo "SP_TIME=daily-$(date +''%Y%m%d%H'')" >> $GITHUB_ENV - wget https://github.com/TLCFEM/prebuilds/releases/download/latest/VTK-9.2.6-macos.tar.gz - tar xf VTK-9.2.6-macos.tar.gz - - name: Golang - uses: actions/setup-go@v3 - - name: Compile - run: | - export CC=$(brew --prefix llvm@15)/bin/clang && export CXX=$(brew --prefix llvm@15)/bin/clang++ && export FC=gfortran-11 - go build Checker/updater.go - brew install glfw glew - cmake -DCMAKE_C_STANDARD_INCLUDE_DIRECTORIES=$(brew --prefix libomp)/include -DCMAKE_CXX_STANDARD_INCLUDE_DIRECTORIES=$(brew --prefix libomp)/include -DCMAKE_Fortran_STANDARD_INCLUDE_DIRECTORIES=$(brew --prefix libomp)/include -DCMAKE_BUILD_TYPE=Release -DUSE_AVX=OFF -DBUILD_MULTITHREAD=ON -DUSE_HDF5=ON -DUSE_EXTERNAL_VTK=ON -DVTK_DIR=./lib/cmake/vtk-9.2/ -DCMAKE_INSTALL_PREFIX=suanPan-macos-openblas-vtk-no-avx . - make install -j4 - - name: Pack - run: | - cp updater suanPan-macos-openblas-vtk-no-avx/bin - tar czf suanPan-macos-openblas-vtk-no-avx.tar.gz suanPan-macos-openblas-vtk-no-avx - export DYLD_LIBRARY_PATH=/Users/runner/work/suanPan/suanPan/suanPan-macos-openblas-vtk-no-avx/lib/ - cd suanPan-macos-openblas-vtk-no-avx/bin - ./suanPan -v - - name: Release - uses: svenstaro/upload-release-action@v2 - with: - repo_token: ${{ secrets.GITHUB_TOKEN }} - file: suanPan-macos-openblas-vtk-no-avx.tar.gz - asset_name: suanPan-macos-openblas-vtk-no-avx.tar.gz - tag: ${{ env.SP_TIME }} - prerelease: true - overwrite: true - windows-openblas-vtk: - runs-on: windows-2022 - timeout-minutes: 100 - steps: - - name: Clone - uses: actions/checkout@v3 - - name: Install VTK - run: | - echo ("SP_TIME=daily-"+(get-date -format "yyyyMMddHH")) >> $env:GITHUB_ENV - C:/msys64/usr/bin/wget.exe https://github.com/TLCFEM/prebuilds/releases/download/latest/VTK-9.2.6-win.7z - 7z x VTK-9.2.6-win.7z - - name: Golang - uses: actions/setup-go@v3 - - name: Compile - run: | - go build Checker/updater.go - cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_MULTITHREAD=ON -DUSE_HDF5=ON -DUSE_EXTERNAL_VTK=ON -DVTK_DIR=D:/a/suanPan/suanPan/lib/cmake/vtk-9.2/ -DCMAKE_INSTALL_PREFIX=suanPan-win-openblas-vtk . - cmake --build . --target INSTALL --config Release - - name: Pack - run: | - cp updater.exe suanPan-win-openblas-vtk/bin - cd suanPan-win-openblas-vtk/bin - 7z a ../../suanPan-win-openblas-vtk.7z ./* - ./suanPan.exe -v - - name: Release - uses: svenstaro/upload-release-action@v2 - with: - repo_token: ${{ secrets.GITHUB_TOKEN }} - file: suanPan-win-openblas-vtk.7z - asset_name: suanPan-win-openblas-vtk.7z - tag: ${{ env.SP_TIME }} - prerelease: true - overwrite: true - windows-openblas-vtk-no-avx: - runs-on: windows-2022 - timeout-minutes: 100 - steps: - - name: Clone - uses: actions/checkout@v3 - - name: Install VTK - run: | - echo ("SP_TIME=daily-"+(get-date -format "yyyyMMddHH")) >> $env:GITHUB_ENV - C:/msys64/usr/bin/wget.exe https://github.com/TLCFEM/prebuilds/releases/download/latest/VTK-9.2.6-win.7z - 7z x VTK-9.2.6-win.7z - - name: Golang - uses: actions/setup-go@v3 - - name: Compile - run: | - go build Checker/updater.go - cmake -DCMAKE_BUILD_TYPE=Release -DUSE_AVX=OFF -DBUILD_MULTITHREAD=ON -DUSE_HDF5=ON -DUSE_EXTERNAL_VTK=ON -DVTK_DIR=D:/a/suanPan/suanPan/lib/cmake/vtk-9.2/ -DCMAKE_INSTALL_PREFIX=suanPan-win-openblas-vtk-no-avx . - cmake --build . --target INSTALL --config Release - - name: Pack - run: | - cp updater.exe suanPan-win-openblas-vtk-no-avx/bin - cd suanPan-win-openblas-vtk-no-avx/bin - 7z a ../../suanPan-win-openblas-vtk-no-avx.7z ./* - - name: Release - uses: svenstaro/upload-release-action@v2 - with: - repo_token: ${{ secrets.GITHUB_TOKEN }} - file: suanPan-win-openblas-vtk-no-avx.7z - asset_name: suanPan-win-openblas-vtk-no-avx.7z - tag: ${{ env.SP_TIME }} - prerelease: true - overwrite: true diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml deleted file mode 100644 index be12d3579..000000000 --- a/.github/workflows/master.yml +++ /dev/null @@ -1,67 +0,0 @@ -name: Release -on: - push: - branches: [ master ] - pull_request: - branches: [ master ] -jobs: - ubuntu-openblas: - runs-on: ubuntu-22.04 - timeout-minutes: 60 - steps: - - name: Clone - uses: actions/checkout@v3 - - name: Golang - uses: actions/setup-go@v3 - - name: Compile - run: | - go build Checker/updater.go - echo "SP_TIME=daily-$(date +''%Y%m%d%H'')" >> $GITHUB_ENV - cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_MULTITHREAD=ON -DUSE_HDF5=ON -DUSE_MIMALLOC=ON -DCMAKE_INSTALL_PREFIX=suanPan-linux-openblas . - make install -j"$(nproc)" - - name: Pack - run: | - cp updater suanPan-linux-openblas/bin - tar czf suanPan-linux-openblas.tar.gz suanPan-linux-openblas - export LD_LIBRARY_PATH=/home/runner/work/suanPan/suanPan/suanPan-linux-openblas/lib - ./suanPan-linux-openblas/bin/suanPan -v - - name: Release - uses: svenstaro/upload-release-action@v2 - with: - repo_token: ${{ secrets.GITHUB_TOKEN }} - file: suanPan-linux-openblas.tar.gz - asset_name: suanPan-linux-openblas.tar.gz - tag: ${{ env.SP_TIME }} - prerelease: true - overwrite: true - macos-openblas: - runs-on: macos-11 - timeout-minutes: 100 - steps: - - name: Clone - uses: actions/checkout@v3 - - name: Golang - uses: actions/setup-go@v3 - - name: Compile - run: | - export CC=gcc-11 && export CXX=g++-11 && export FC=gfortran-11 - go build Checker/updater.go - echo "SP_TIME=daily-$(date +''%Y%m%d%H'')" >> $GITHUB_ENV - cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_MULTITHREAD=ON -DUSE_HDF5=ON -DCMAKE_INSTALL_PREFIX=suanPan-macos-openblas . - make install -j4 - - name: Pack - run: | - cp updater suanPan-macos-openblas/bin - tar czf suanPan-macos-openblas.tar.gz suanPan-macos-openblas - export DYLD_LIBRARY_PATH=/Users/runner/work/suanPan/suanPan/suanPan-macos-openblas/lib/ - cd suanPan-macos-openblas/bin - ./suanPan -v - - name: Release - uses: svenstaro/upload-release-action@v2 - with: - repo_token: ${{ secrets.GITHUB_TOKEN }} - file: suanPan-macos-openblas.tar.gz - asset_name: suanPan-macos-openblas.tar.gz - tag: ${{ env.SP_TIME }} - prerelease: true - overwrite: true diff --git a/CHANGELOG.md b/CHANGELOG.md index e3c749b30..67dc02d2a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,9 +3,22 @@ ## known issues 1. The `MKL` includes outdated `FEAST`, the external names in `FEAST` library are modified to avoid linking error. -2. The `SPIKE` solver may occasionally hang, to circumvent, try to avoid mixing compilers from different vendors. +2. The `SPIKE` solver may occasionally freeze, to circumvent, try to avoid mixing compilers from different vendors. 3. The `MUMPS` solver throws segfaults with large matrices. +## version 3.2 + +1. revise uniaxial universal damage models [#153](https://github.com/TLCFEM/suanPan/pull/153) +2. update `OpenBLAS` to version `0.3.24` +3. add a new uniaxial concrete model `ConcreteK4` [#155](https://github.com/TLCFEM/suanPan/pull/155) +4. add beam element for arbitrary thin-/thick-walled open/close section with torsion and warping `B31OS` [#159](https://github.com/TLCFEM/suanPan/pull/159) +5. better local iteration convergence criterion [#161](https://github.com/TLCFEM/suanPan/pull/161) +6. `B31OS` and `EB31OS` associated transformations `B3DOSL`, `B3DOSC`; sections, `Fibre3DOS`, `Cell3DOS`; material wrappers `OS146`, `OS146S` +7. add elemental damping using Lee's model +8. support Lode angle in CDPM2 [#163](https://github.com/TLCFEM/suanPan/pull/163) +9. add `AICN` cubic Newton solver [#165](https://github.com/TLCFEM/suanPan/pull/165) +10. remove `Bilinear2D` material, use `PlaneStress`/`PlaneStrain` wrapper and `BilinearJ2` 3D model instead + ## version 3.1 1. iterative solvers by the Lis library [#145](https://github.com/TLCFEM/suanPan/pull/145) @@ -27,7 +40,7 @@ ## version 2.9 -1. matrix optimsation +1. matrix optimisation 2. update `Catch2` to version `3.3.1` 3. update `TBB` to version `2021.8.0` 4. add mixed precision algorithm for `MUMPS` solver [#119](https://github.com/TLCFEM/suanPan/pull/119) diff --git a/CITATION.cff b/CITATION.cff index bb273ea56..449902d07 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -28,5 +28,5 @@ keywords: - IGA - Solid Mechanics license: GPL-3.0 -version: '3.0' -date-released: '2023-05-13' +version: '3.2' +date-released: '2023-11-06' diff --git a/CMakeLists.txt b/CMakeLists.txt index 18b429a4d..a41c35f1a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -179,7 +179,7 @@ elseif (COMPILER_IDENTIFIER MATCHES "win") elseif (COMPILER_IDENTIFIER MATCHES "vs") if (USE_MKL) set(DSUFIX "") - if (BUILD_SHARED) + if (LINK_DYNAMIC_MKL) set(DSUFIX "_dll") endif () set(MKL_LIBS mkl_intel_lp64${DSUFIX} mkl_tbb_thread${DSUFIX} mkl_core${DSUFIX} libiomp5md libifcore svml_disp) @@ -274,6 +274,12 @@ if (COMPILER_IDENTIFIER MATCHES "(linux|mac)") ) install(PROGRAMS ${ONEAPI_FILES} DESTINATION lib) endif () + if (USE_MAGMA) + file(GLOB MAGMA_FILES ${MAGMAROOT}/lib/libmagma*.so) + if (MAGMA_FILES) + install(PROGRAMS ${MAGMA_FILES} DESTINATION lib) + endif () + endif () elseif (COMPILER_IDENTIFIER MATCHES "win") install(FILES Enhancement/AddAssociation.bat DESTINATION bin) if (BUILD_MULTITHREAD) @@ -317,10 +323,14 @@ elseif (COMPILER_IDENTIFIER MATCHES "vs") endif () endif () if (USE_INTEL_OPENMP) - install(FILES ${MKLROOT}/../../compiler/latest/windows/redist/intel64_win/compiler/libifcoremd.dll DESTINATION bin) - install(FILES ${MKLROOT}/../../compiler/latest/windows/redist/intel64_win/compiler/libiomp5md.dll DESTINATION bin) - install(FILES ${MKLROOT}/../../compiler/latest/windows/redist/intel64_win/compiler/libmmd.dll DESTINATION bin) - install(FILES ${MKLROOT}/../../compiler/latest/windows/redist/intel64_win/compiler/svml_dispmd.dll DESTINATION bin) + find_file(libifcoremd libifcoremd.dll PATHS ${MKLROOT}/../../) + install(FILES ${libifcoremd} DESTINATION bin) + find_file(libiomp5md libiomp5md.dll PATHS ${MKLROOT}/../../) + install(FILES ${libiomp5md} DESTINATION bin) + find_file(libmmd libmmd.dll PATHS ${MKLROOT}/../../) + install(FILES ${libmmd} DESTINATION bin) + find_file(svml_dispmd svml_dispmd.dll PATHS ${MKLROOT}/../../) + install(FILES ${svml_dispmd} DESTINATION bin) endif () else () file(GLOB DLL_FILES Libs/win/lib*.dll) @@ -385,7 +395,7 @@ if (CMAKE_SYSTEM_NAME MATCHES "Linux") set(CPACK_PACKAGE_ICON ${ROOT}/Resource/suanPan-ua.svg) set(CPACK_PACKAGE_RELEASE 1) set(CPACK_PACKAGE_VENDOR "tlcfem") - set(CPACK_PACKAGE_VERSION "3.1.0") + set(CPACK_PACKAGE_VERSION "3.2.0") set(CPACK_PACKAGE_DESCRIPTION "An Open Source, Parallel and Heterogeneous Finite Element Analysis Framework") set(CPACK_PACKAGE_HOMEPAGE_URL "https://github.com/TLCFEM/suanPan") diff --git a/Checker/updater.go b/Checker/updater.go index 3b92ae5ca..152e36640 100644 --- a/Checker/updater.go +++ b/Checker/updater.go @@ -97,35 +97,37 @@ func downloadLatestVersion(versionString string) error { fmt.Printf(" For CPUs that do not support AVX, please use this version.\n") fmt.Printf("\nDownload the new version:\n") - regex, _ := regexp.Compile(`suanPan-v(\d)\.(\d)\.?(\d?)`) - - number := regex.FindStringSubmatch(versionString) - - newMajor, _ := strconv.Atoi(number[1]) - newMinor, _ := strconv.Atoi(number[2]) - newPatch := 0 - - if len(number) == 3 { - newPatch, _ = strconv.Atoi(number[3]) - } + var package_array []string if cos == "windows" { - fmt.Printf(" [0] suanPan-win-mkl-vtk.exe (Installer)\n") - fmt.Printf(" [1] suanPan-win-mkl-vtk.zip (Portable Archive)\n") - fmt.Printf(" [2] suanPan-win-openblas-vtk.7z (Portable Archive)\n") - fmt.Printf(" [3] suanPan-win-openblas-vtk-no-avx.7z (Portable Archive)\n") + package_array = []string{ + "suanPan-win-mkl-vtk.exe", + "suanPan-win-mkl-vtk.zip", + "suanPan-win-openblas.7z", + "suanPan-win-openblas-vtk.7z", + "suanPan-win-openblas-no-avx.7z", + "suanPan-win-openblas-vtk-no-avx.7z", + } } else if cos == "linux" { - fmt.Printf(" [0] suanPan-linux-mkl-vtk.tar.gz (Portable Archive)\n") - fmt.Printf(" [1] suanPan-linux-mkl-vtk-no-avx.tar.gz (Portable Archive)\n") - fmt.Printf(" [2] suanPan-linux-mkl.tar.gz (Portable Archive)\n") - fmt.Printf(" [3] suanPan-linux-openblas-vtk.tar.gz (Portable Archive)\n") - fmt.Printf(" [4] suanPan-linux-openblas.tar.gz (Portable Archive)\n") - fmt.Printf(" [5] suanPan-%d.%d.%d-1.x86_64.deb (Debian Installer)\n", newMajor, newMinor, newPatch) - fmt.Printf(" [6] suanPan-%d.%d.%d-1.x86_64.rpm (Red Hat Installer)\n", newMajor, newMinor, newPatch) + package_array = []string{ + "suanPan-linux-mkl.tar.gz", + "suanPan-linux-mkl-vtk.tar.gz", + "suanPan-linux-openblas.tar.gz", + "suanPan-linux-openblas-vtk.tar.gz", + "suanPan-linux-mkl-no-avx.tar.gz", + "suanPan-linux-mkl-vtk-no-avx.tar.gz", + "suanPan-linux-openblas-no-avx.tar.gz", + "suanPan-linux-openblas-vtk-no-avx.tar.gz", + } } else if cos == "darwin" { - fmt.Printf(" [0] suanPan-macos-openblas-vtk.tar.gz (Portable Archive)\n") - fmt.Printf(" [1] suanPan-macos-openblas-vtk-no-avx.tar.gz (Portable Archive)\n") - fmt.Printf(" [2] suanPan-macos-openblas.tar.gz (Portable Archive)\n") + package_array = []string{ + "suanPan-macos-openblas.tar.gz", + "suanPan-macos-openblas-vtk.tar.gz", + } + } + + for i, v := range package_array { + fmt.Printf(" [%d] %s\n", i, v) } fmt.Printf("\nPlease select the version you want to download (leave empty to exit): ") @@ -137,40 +139,8 @@ func downloadLatestVersion(versionString string) error { link := URL + "/download/" + versionString fileName := "" - if cos == "windows" { - if 0 == downloadOption { - fileName = "suanPan-win-mkl-vtk.exe" - } else if 1 == downloadOption { - fileName = "suanPan-win-mkl-vtk.zip" - } else if 2 == downloadOption { - fileName = "suanPan-win-openblas-vtk.7z" - } else if 3 == downloadOption { - fileName = "suanPan-win-openblas-vtk-no-avx.7z" - } - } else if cos == "linux" { - if 0 == downloadOption { - fileName = "suanPan-linux-mkl-vtk.tar.gz" - } else if 1 == downloadOption { - fileName = "suanPan-linux-mkl-vtk-no-avx.tar.gz" - } else if 2 == downloadOption { - fileName = "suanPan-linux-mkl.tar.gz" - } else if 3 == downloadOption { - fileName = "suanPan-linux-openblas-vtk.tar.gz" - } else if 4 == downloadOption { - fileName = "suanPan-linux-openblas.tar.gz" - } else if 5 == downloadOption { - fileName = fmt.Sprintf("suanPan-%d.%d.%d-1.x86_64.deb", newMajor, newMinor, newPatch) - } else if 6 == downloadOption { - fileName = fmt.Sprintf("suanPan-%d.%d.%d-1.x86_64.rpm", newMajor, newMinor, newPatch) - } - } else if cos == "darwin" { - if 0 == downloadOption { - fileName = "suanPan-macos-openblas-vtk.tar.gz" - } else if 1 == downloadOption { - fileName = "suanPan-macos-openblas-vtk-no-avx.tar.gz" - } else if 2 == downloadOption { - fileName = "suanPan-macos-openblas.tar.gz" - } + if downloadOption < len(package_array) && downloadOption >= 0 { + fileName = package_array[downloadOption] } if fileName == "" { diff --git a/Checker/updater.py b/Checker/updater.py index ccf8d29ce..1701bcebe 100644 --- a/Checker/updater.py +++ b/Checker/updater.py @@ -1,6 +1,7 @@ import re import sys import urllib.request +from os.path import abspath def check_version(_major: int, _minor: int, _patch: int): @@ -21,7 +22,7 @@ def check_version(_major: int, _minor: int, _patch: int): url = f'https://github.com/TLCFEM/suanPan/releases/download/{version.group(0)}/' - result = input(f'New version {version.group(0)} available, download now? [Y/n] ') + result = input(f'New version {version.group(0)} available, download now? [y/N] ') if result == '' or result[0] != 'y' and result[0] != 'Y': return @@ -29,26 +30,34 @@ def check_version(_major: int, _minor: int, _patch: int): print('\nDownload the new version:') version_list = [] - if sys.platform.startswith('win32'): - version_list.append(('suanPan-win-mkl-vtk.exe', '(Installer)')) - version_list.append(('suanPan-win-mkl-vtk.zip', '(Portable Archive)')) - version_list.append(('suanPan-win-openblas-vtk.7z', '(Portable Archive)')) - version_list.append(('suanPan-win-openblas-vtk-no-avx.7z', '(Portable Archive)')) + version_list = [ + "suanPan-win-mkl-vtk.exe", + "suanPan-win-mkl-vtk.zip", + "suanPan-win-openblas.7z", + "suanPan-win-openblas-vtk.7z", + "suanPan-win-openblas-no-avx.7z", + "suanPan-win-openblas-vtk-no-avx.7z" + ] elif sys.platform.startswith('linux'): - version_list.append(('suanPan-linux-mkl-vtk.tar.gz', '(Portable Archive)')) - version_list.append(('suanPan-linux-mkl-vtk-no-avx.tar.gz', '(Portable Archive)')) - version_list.append(('suanPan-linux-mkl.tar.gz', '(Portable Archive)')) - version_list.append(('suanPan-linux-openblas.tar.gz', '(Portable Archive)')) - version_list.append((f'suanPan-{new_major}.{new_minor}.{new_patch}-1.x86_64.deb', '(Debian Installer)')) - version_list.append((f'suanPan-{new_major}.{new_minor}.{new_patch}-1.x86_64.rpm', '(Red Hat Installer)')) + version_list = [ + "suanPan-linux-mkl.tar.gz", + "suanPan-linux-mkl-vtk.tar.gz", + "suanPan-linux-openblas.tar.gz", + "suanPan-linux-openblas-vtk.tar.gz", + "suanPan-linux-mkl-no-avx.tar.gz", + "suanPan-linux-mkl-vtk-no-avx.tar.gz", + "suanPan-linux-openblas-no-avx.tar.gz", + "suanPan-linux-openblas-vtk-no-avx.tar.gz" + ] elif sys.platform.startswith('darwin'): - version_list.append(('suanPan-macos-openblas-vtk.tar.gz', '(Portable Archive)')) - version_list.append(('suanPan-macos-openblas-vtk-no-avx.tar.gz', '(Portable Archive)')) - version_list.append(('suanPan-macos-openblas.tar.gz', '(Portable Archive)')) + version_list = [ + "suanPan-macos-openblas.tar.gz", + "suanPan-macos-openblas-vtk.tar.gz" + ] for index, item in enumerate(version_list): - print(f' [{index}] {item[0]} {item[1]}') + print(f' [{index}] {item}') result = input("\nPlease select the version you want to download (leave empty to exit): ") @@ -60,11 +69,11 @@ def check_version(_major: int, _minor: int, _patch: int): if result < 0 or result >= len(version_list): return - file_name = version_list[result][0] + file_name = version_list[result] urllib.request.urlretrieve(url + file_name, file_name) - print(f"\nDownloaded {file_name}") + print(f"\nDownloaded {abspath(file_name)}") print("You can manually extract the archive to overwrite the existing folder.") diff --git a/Constraint/BC/BC b/Constraint/BC/BC index 257f5f2c9..c20905757 100644 --- a/Constraint/BC/BC +++ b/Constraint/BC/BC @@ -1,4 +1,4 @@ #include "GroupMultiplierBC.h" #include "GroupPenaltyBC.h" #include "MultiplierBC.h" -#include "PenaltyBC.h" \ No newline at end of file +#include "PenaltyBC.h" diff --git a/Constraint/BC/CMakeLists.txt b/Constraint/BC/CMakeLists.txt index d4b1b8541..7d5055a09 100644 --- a/Constraint/BC/CMakeLists.txt +++ b/Constraint/BC/CMakeLists.txt @@ -3,4 +3,4 @@ target_sources(${PROJECT_NAME} PRIVATE MultiplierBC.cpp GroupPenaltyBC.cpp GroupMultiplierBC.cpp - ) +) diff --git a/Constraint/BC/MultiplierBC.cpp b/Constraint/BC/MultiplierBC.cpp index f71352a92..77cf9b0e5 100644 --- a/Constraint/BC/MultiplierBC.cpp +++ b/Constraint/BC/MultiplierBC.cpp @@ -52,6 +52,10 @@ int MultiplierBC::process(const shared_ptr& D) { std::scoped_lock lock(W->get_damping_mutex()); for(const auto I : dof_encoding) t_damping->nullify(I); } + if(auto& t_nonviscous = W->get_nonviscous(); nullptr != t_nonviscous) { + std::scoped_lock lock(W->get_nonviscous_mutex()); + for(const auto I : dof_encoding) t_nonviscous->nullify(I); + } if(auto& t_geometry = W->get_geometry(); nullptr != t_geometry) { std::scoped_lock lock(W->get_geometry_mutex()); for(const auto I : dof_encoding) t_geometry->nullify(I); diff --git a/Constraint/BC/PenaltyBC.cpp b/Constraint/BC/PenaltyBC.cpp index 49fe43068..171d398db 100644 --- a/Constraint/BC/PenaltyBC.cpp +++ b/Constraint/BC/PenaltyBC.cpp @@ -50,6 +50,7 @@ PenaltyBC::PenaltyBC(const unsigned T, const unsigned S, uvec&& N, const char TP else if(is_equal(TP, '4')) dof_reference = uvec{4}; else if(is_equal(TP, '5')) dof_reference = uvec{5}; else if(is_equal(TP, '6')) dof_reference = uvec{6}; + else if(is_equal(TP, '7')) dof_reference = uvec{7}; dof_reference -= 1; } diff --git a/Constraint/CMakeLists.txt b/Constraint/CMakeLists.txt index dc7398312..dc445705c 100644 --- a/Constraint/CMakeLists.txt +++ b/Constraint/CMakeLists.txt @@ -14,7 +14,7 @@ target_sources(${PROJECT_NAME} PRIVATE RestitutionWallPenalty.cpp RigidWallMultiplier.cpp RigidWallPenalty.cpp - ) +) add_subdirectory(BC) add_subdirectory(Criterion) diff --git a/Constraint/Constraint b/Constraint/Constraint index 9cfd7d673..f24dea434 100644 --- a/Constraint/Constraint +++ b/Constraint/Constraint @@ -4,14 +4,14 @@ #include "Constraint.h" #include "Embed.h" #include "FixedLength.h" +#include "LinearSpring2D.h" +#include "LJPotential2D.h" #include "MPC.h" #include "NodeFacet.h" #include "NodeLine.h" #include "ParticleCollision.h" #include "ParticleCollision2D.h" -#include "LJPotential2D.h" -#include "LinearSpring2D.h" #include "ParticleCollision3D.h" #include "RestitutionWallPenalty.h" #include "RigidWallMultiplier.h" -#include "RigidWallPenalty.h" \ No newline at end of file +#include "RigidWallPenalty.h" diff --git a/Constraint/Constraint.h b/Constraint/Constraint.h index 1090559f2..08d329ec3 100644 --- a/Constraint/Constraint.h +++ b/Constraint/Constraint.h @@ -52,12 +52,13 @@ class Constraint : public ConditionalModifier { friend void set_constraint_multiplier(double); public: - Constraint(unsigned, // tag - unsigned, // step tag - unsigned, // amplitude tag - uvec&&, // node tags - uvec&&, // dof tags - unsigned // size of multiplier + Constraint( + unsigned, // tag + unsigned, // step tag + unsigned, // amplitude tag + uvec&&, // node tags + uvec&&, // dof tags + unsigned // size of multiplier ); Constraint(const Constraint&) = delete; // copy forbidden Constraint(Constraint&&) = delete; // move forbidden diff --git a/Constraint/ConstraintParser.cpp b/Constraint/ConstraintParser.cpp index 5c3fdbef5..59e7d261f 100644 --- a/Constraint/ConstraintParser.cpp +++ b/Constraint/ConstraintParser.cpp @@ -36,7 +36,7 @@ void new_bc(unique_ptr& return_obj, istringstream& command, const bo const auto bc_type = suanpan::to_lower(dof_id[0]); - if(!is_equal(bc_type, 'p') && !is_equal(bc_type, 'e') && !is_equal(bc_type, 'x') && !is_equal(bc_type, 'y') && !is_equal(bc_type, 'z') && !is_equal(bc_type, '1') && !is_equal(bc_type, '2') && !is_equal(bc_type, '3') && !is_equal(bc_type, '4') && !is_equal(bc_type, '5') && !is_equal(bc_type, '6')) { + if(!is_equal(bc_type, 'p') && !is_equal(bc_type, 'e') && !is_equal(bc_type, 'x') && !is_equal(bc_type, 'y') && !is_equal(bc_type, 'z') && !is_equal(bc_type, '1') && !is_equal(bc_type, '2') && !is_equal(bc_type, '3') && !is_equal(bc_type, '4') && !is_equal(bc_type, '5') && !is_equal(bc_type, '6') && !is_equal(bc_type, '7')) { suanpan_error("A valid dof identifier is required.\n"); return; } @@ -356,8 +356,7 @@ void new_rigidwall(unique_ptr& return_obj, istringstream& command, c if(penalty) return_obj = make_unique(tag, 0, 0, vec{p[0], p[1], p[2]}, vec{p[3], p[4], p[5]}, vec{p[6], p[7], p[8]}, p[9]); else return_obj = make_unique(tag, 0, 0, vec{p[0], p[1], p[2]}, vec{p[3], p[4], p[5]}, vec{p[6], p[7], p[8]}, p[9]); break; - default: - suanpan_error("A valid number of parameters is required.\n"); + default: suanpan_error("A valid number of parameters is required.\n"); } } @@ -413,8 +412,7 @@ void new_restitutionwall(unique_ptr& return_obj, istringstream& comm // 3D origin edge edge restitution multiplier return_obj = make_unique(tag, 0, 0, vec{p[0], p[1], p[2]}, vec{p[3], p[4], p[5]}, vec{p[6], p[7], p[8]}, p[9], p[10]); break; - default: - suanpan_error("A valid number of parameters is required.\n"); + default: suanpan_error("A valid number of parameters is required.\n"); } } @@ -504,7 +502,7 @@ int create_new_criterion(const shared_ptr& domain, istringstream& co return SUANPAN_SUCCESS; } - domain->insert(make_shared(tag, step_tag, to_list(type.c_str()), limit)); + domain->insert(make_shared(tag, step_tag, to_token(type), limit)); return SUANPAN_SUCCESS; } @@ -546,31 +544,31 @@ int create_new_constraint(const shared_ptr& domain, istringstream& c if(is_equal(constraint_id, "Embed2D")) new_embed(new_constraint, command, 2); else if(is_equal(constraint_id, "Embed3D")) new_embed(new_constraint, command, 3); + else if(is_equal(constraint_id, "FiniteRestitutionWall") || is_equal(constraint_id, "FiniteRestitutionWallPenalty")) new_restitutionwall(new_constraint, command, false); + else if(is_equal(constraint_id, "FiniteRigidWall") || is_equal(constraint_id, "FiniteRigidWallPenalty")) new_rigidwall(new_constraint, command, true, true); + else if(is_equal(constraint_id, "FiniteRigidWallMultiplier")) new_rigidwall(new_constraint, command, true, false); + else if(is_equal(constraint_id, "Fix") || is_equal(constraint_id, "PenaltyBC")) new_bc(new_constraint, command, true, false); + else if(is_equal(constraint_id, "Fix2") || is_equal(constraint_id, "MultiplierBC")) new_bc(new_constraint, command, false, false); else if(is_equal(constraint_id, "FixedLength2D") || is_equal(constraint_id, "R2D2")) new_fixedlength(new_constraint, command, 2); else if(is_equal(constraint_id, "FixedLength3D") || is_equal(constraint_id, "R3D2")) new_fixedlength(new_constraint, command, 3); - else if(is_equal(constraint_id, "MinimumGap2D") || is_equal(constraint_id, "MinGap2D")) new_minimumgap(new_constraint, command, 2); - else if(is_equal(constraint_id, "MinimumGap3D") || is_equal(constraint_id, "MinGap3D")) new_minimumgap(new_constraint, command, 3); + else if(is_equal(constraint_id, "GroupMultiplierBC")) new_bc(new_constraint, command, false, true); + else if(is_equal(constraint_id, "GroupPenaltyBC")) new_bc(new_constraint, command, true, true); + else if(is_equal(constraint_id, "LinearSpring2D")) new_linearspring(new_constraint, command, 2); + else if(is_equal(constraint_id, "LJPotential2D")) new_ljpotential(new_constraint, command, 2); else if(is_equal(constraint_id, "MaximumGap2D") || is_equal(constraint_id, "MaxGap2D")) new_maximumgap(new_constraint, command, 2); else if(is_equal(constraint_id, "MaximumGap3D") || is_equal(constraint_id, "MaxGap3D")) new_maximumgap(new_constraint, command, 3); - else if(is_equal(constraint_id, "Sleeve2D")) new_sleeve(new_constraint, command, 2); - else if(is_equal(constraint_id, "Sleeve3D")) new_sleeve(new_constraint, command, 3); + else if(is_equal(constraint_id, "MinimumGap2D") || is_equal(constraint_id, "MinGap2D")) new_minimumgap(new_constraint, command, 2); + else if(is_equal(constraint_id, "MinimumGap3D") || is_equal(constraint_id, "MinGap3D")) new_minimumgap(new_constraint, command, 3); else if(is_equal(constraint_id, "MPC")) new_mpc(new_constraint, command); - else if(is_equal(constraint_id, "NodeLine")) new_nodeline(new_constraint, command); else if(is_equal(constraint_id, "NodeFacet")) new_nodefacet(new_constraint, command); + else if(is_equal(constraint_id, "NodeLine")) new_nodeline(new_constraint, command); else if(is_equal(constraint_id, "ParticleCollision2D")) new_particlecollision(new_constraint, command, 2); else if(is_equal(constraint_id, "ParticleCollision3D")) new_particlecollision(new_constraint, command, 3); - else if(is_equal(constraint_id, "LJPotential2D")) new_ljpotential(new_constraint, command, 2); - else if(is_equal(constraint_id, "LinearSpring2D")) new_linearspring(new_constraint, command, 2); - else if(is_equal(constraint_id, "RigidWallMultiplier")) new_rigidwall(new_constraint, command, false, false); - else if(is_equal(constraint_id, "RigidWall") || is_equal(constraint_id, "RigidWallPenalty")) new_rigidwall(new_constraint, command, false, true); - else if(is_equal(constraint_id, "FiniteRigidWallMultiplier")) new_rigidwall(new_constraint, command, true, false); - else if(is_equal(constraint_id, "FiniteRigidWall") || is_equal(constraint_id, "FiniteRigidWallPenalty")) new_rigidwall(new_constraint, command, true, true); else if(is_equal(constraint_id, "RestitutionWall") || is_equal(constraint_id, "RestitutionWallPenalty")) new_restitutionwall(new_constraint, command, false); - else if(is_equal(constraint_id, "FiniteRestitutionWall") || is_equal(constraint_id, "FiniteRestitutionWallPenalty")) new_restitutionwall(new_constraint, command, false); - else if(is_equal(constraint_id, "Fix") || is_equal(constraint_id, "PenaltyBC")) new_bc(new_constraint, command, true, false); - else if(is_equal(constraint_id, "GroupPenaltyBC")) new_bc(new_constraint, command, true, true); - else if(is_equal(constraint_id, "Fix2") || is_equal(constraint_id, "MultiplierBC")) new_bc(new_constraint, command, false, false); - else if(is_equal(constraint_id, "GroupMultiplierBC")) new_bc(new_constraint, command, false, true); + else if(is_equal(constraint_id, "RigidWall") || is_equal(constraint_id, "RigidWallPenalty")) new_rigidwall(new_constraint, command, false, true); + else if(is_equal(constraint_id, "RigidWallMultiplier")) new_rigidwall(new_constraint, command, false, false); + else if(is_equal(constraint_id, "Sleeve2D")) new_sleeve(new_constraint, command, 2); + else if(is_equal(constraint_id, "Sleeve3D")) new_sleeve(new_constraint, command, 3); else load::object(new_constraint, domain, constraint_id, command); if(new_constraint != nullptr) new_constraint->set_start_step(domain->get_current_step_tag()); diff --git a/Constraint/Criterion/CMakeLists.txt b/Constraint/Criterion/CMakeLists.txt index a2718b6b8..0d51e8be2 100644 --- a/Constraint/Criterion/CMakeLists.txt +++ b/Constraint/Criterion/CMakeLists.txt @@ -10,4 +10,4 @@ target_sources(${PROJECT_NAME} PRIVATE StrainEnergyEvolution.cpp ComplementaryEnergyEvolution.cpp EnergyEvolution.cpp - ) +) diff --git a/Constraint/Criterion/ComplementaryEnergyEvolution.h b/Constraint/Criterion/ComplementaryEnergyEvolution.h index 5263fd83c..93f3f979c 100644 --- a/Constraint/Criterion/ComplementaryEnergyEvolution.h +++ b/Constraint/Criterion/ComplementaryEnergyEvolution.h @@ -35,15 +35,16 @@ class ComplementaryEnergyEvolution final : public EnergyEvolution { public: - ComplementaryEnergyEvolution(unsigned, // tag - unsigned, // step tag - unsigned, // incre level - unsigned, // final level - double = 1., // centre weight - unsigned = 2, // propagation iteration - unsigned = 10, // reactivation ratio - double = .5, // propagation weight - double = 1E-5 // tolerance + ComplementaryEnergyEvolution( + unsigned, // tag + unsigned, // step tag + unsigned, // incre level + unsigned, // final level + double = 1., // centre weight + unsigned = 2, // propagation iteration + unsigned = 10, // reactivation ratio + double = .5, // propagation weight + double = 1E-5 // tolerance ); unique_ptr get_copy() override; diff --git a/Constraint/Criterion/Criterion b/Constraint/Criterion/Criterion index 384b79c28..af385dd0d 100644 --- a/Constraint/Criterion/Criterion +++ b/Constraint/Criterion/Criterion @@ -9,4 +9,4 @@ #include "MinDisplacement.h" #include "MinResistance.h" #include "NodeBasedCriterion.h" -#include "StrainEnergyEvolution.h" \ No newline at end of file +#include "StrainEnergyEvolution.h" diff --git a/Constraint/Criterion/EnergyEvolution.h b/Constraint/Criterion/EnergyEvolution.h index 2c34979f8..f9cf95e57 100644 --- a/Constraint/Criterion/EnergyEvolution.h +++ b/Constraint/Criterion/EnergyEvolution.h @@ -60,15 +60,16 @@ class EnergyEvolution : public Criterion { std::function get_energy; public: - EnergyEvolution(unsigned, // tag - unsigned, // step tag - unsigned, // incre level - unsigned, // final level - double = 1., // centre weight - unsigned = 2, // propagation iteration - unsigned = 10, // reactivation ratio - double = .5, // propagation weight - double = 1E-5 // tolerance + EnergyEvolution( + unsigned, // tag + unsigned, // step tag + unsigned, // incre level + unsigned, // final level + double = 1., // centre weight + unsigned = 2, // propagation iteration + unsigned = 10, // reactivation ratio + double = .5, // propagation weight + double = 1E-5 // tolerance ); int initialize(const shared_ptr&) override; diff --git a/Constraint/Criterion/MaxHistory.h b/Constraint/Criterion/MaxHistory.h index d11c862e4..351457239 100644 --- a/Constraint/Criterion/MaxHistory.h +++ b/Constraint/Criterion/MaxHistory.h @@ -40,10 +40,11 @@ class MaxHistory final : public Criterion { const double max_history; public: - MaxHistory(unsigned, // tag - unsigned, // step tag - OutputType, // history type - double // maximum history + MaxHistory( + unsigned, // tag + unsigned, // step tag + OutputType, // history type + double // maximum history ); unique_ptr get_copy() override; diff --git a/Constraint/Criterion/NodeBasedCriterion.h b/Constraint/Criterion/NodeBasedCriterion.h index 950e3eb47..854208ddd 100644 --- a/Constraint/Criterion/NodeBasedCriterion.h +++ b/Constraint/Criterion/NodeBasedCriterion.h @@ -39,11 +39,12 @@ class NodeBasedCriterion : public Criterion { const double limit; public: - explicit NodeBasedCriterion(unsigned = 0, // tag - unsigned = 0, // step tag - unsigned = 0, // node tag - unsigned = 0, // dof tag - double = 0. // limit + explicit NodeBasedCriterion( + unsigned = 0, // tag + unsigned = 0, // step tag + unsigned = 0, // node tag + unsigned = 0, // dof tag + double = 0. // limit ); int initialize(const shared_ptr&) override; diff --git a/Constraint/Criterion/StrainEnergyEvolution.h b/Constraint/Criterion/StrainEnergyEvolution.h index dbe4bada9..707d251d4 100644 --- a/Constraint/Criterion/StrainEnergyEvolution.h +++ b/Constraint/Criterion/StrainEnergyEvolution.h @@ -35,15 +35,16 @@ class StrainEnergyEvolution final : public EnergyEvolution { public: - StrainEnergyEvolution(unsigned, // tag - unsigned, // step tag - unsigned, // incre level - unsigned, // final level - double = 1., // centre weight - unsigned = 2, // propagation iteration - unsigned = 10, // reactivation ratio - double = .5, // propagation weight - double = 1E-5 // tolerance + StrainEnergyEvolution( + unsigned, // tag + unsigned, // step tag + unsigned, // incre level + unsigned, // final level + double = 1., // centre weight + unsigned = 2, // propagation iteration + unsigned = 10, // reactivation ratio + double = .5, // propagation weight + double = 1E-5 // tolerance ); unique_ptr get_copy() override; diff --git a/Constraint/Embed.cpp b/Constraint/Embed.cpp index efcdb2750..31aa8fe03 100644 --- a/Constraint/Embed.cpp +++ b/Constraint/Embed.cpp @@ -39,12 +39,12 @@ int Embed::initialize(const shared_ptr& D) { rowvec n; - unsigned counter = 0; + auto counter = 0u; while(true) { if(max_iteration == ++counter) return SUANPAN_FAIL; const vec incre = solve((t_element->compute_shape_function(t_para, 1) * t_coor).t(), n_coor - ((n = t_element->compute_shape_function(t_para, 0)) * t_coor).t()); - if(norm(incre) < 1E-14) break; + if(inf_norm(incre) < 1E-14) break; t_para += incre; } diff --git a/Constraint/Embed.h b/Constraint/Embed.h index 4df8b2571..4df7774e3 100644 --- a/Constraint/Embed.h +++ b/Constraint/Embed.h @@ -32,16 +32,17 @@ #include "Constraint.h" class Embed : public Constraint { - static constexpr unsigned max_iteration = 20; + static constexpr unsigned max_iteration = 20u; const unsigned element_tag; public: - Embed(unsigned, // unique constraint tag - unsigned, // step tag - unsigned, // element tag - unsigned, // node tag - unsigned // dimension + Embed( + unsigned, // unique constraint tag + unsigned, // step tag + unsigned, // element tag + unsigned, // node tag + unsigned // dimension ); int initialize(const shared_ptr&) override; diff --git a/Converger/AbsDisp.cpp b/Converger/AbsDisp.cpp index a43790412..0e57c0089 100644 --- a/Converger/AbsDisp.cpp +++ b/Converger/AbsDisp.cpp @@ -34,7 +34,7 @@ unique_ptr AbsDisp::get_copy() { return make_unique(*this); bool AbsDisp::is_converged(unsigned) { auto& W = get_domain().lock()->get_factory(); - set_error(norm(W->get_incre_displacement() + W->get_ninja()) / static_cast(W->get_size())); + set_error(inf_norm(W->get_incre_displacement() + W->get_ninja())); set_conv_flag(get_tolerance() > get_error()); if(is_print()) diff --git a/Converger/AbsError.cpp b/Converger/AbsError.cpp index 8770056ff..84b920068 100644 --- a/Converger/AbsError.cpp +++ b/Converger/AbsError.cpp @@ -38,7 +38,7 @@ unique_ptr AbsError::get_copy() { return make_unique(*this) bool AbsError::is_converged(unsigned) { auto& W = get_domain().lock()->get_factory(); - set_error(fabs(W->get_error()) / static_cast(W->get_size())); + set_error(fabs(W->get_error())); set_conv_flag(get_tolerance() > get_error()); if(is_print()) diff --git a/Converger/AbsIncreAcc.cpp b/Converger/AbsIncreAcc.cpp index 1cea54426..e3b13eede 100644 --- a/Converger/AbsIncreAcc.cpp +++ b/Converger/AbsIncreAcc.cpp @@ -38,7 +38,7 @@ unique_ptr AbsIncreAcc::get_copy() { return make_unique( bool AbsIncreAcc::is_converged(unsigned) { auto& W = get_domain().lock()->get_factory(); - set_error(norm(W->get_ninja()) / static_cast(W->get_size())); + set_error(inf_norm(W->get_ninja())); set_conv_flag(get_tolerance() > get_error()); if(is_print()) diff --git a/Converger/AbsIncreDisp.cpp b/Converger/AbsIncreDisp.cpp index 0ee7664ee..ad03179ae 100644 --- a/Converger/AbsIncreDisp.cpp +++ b/Converger/AbsIncreDisp.cpp @@ -38,7 +38,7 @@ unique_ptr AbsIncreDisp::get_copy() { return make_uniqueget_factory(); - set_error(norm(W->get_ninja()) / static_cast(W->get_size())); + set_error(inf_norm(W->get_ninja())); set_conv_flag(get_tolerance() > get_error()); if(is_print()) diff --git a/Converger/AbsIncreEnergy.cpp b/Converger/AbsIncreEnergy.cpp index 01cacdf3a..ef58f2c54 100644 --- a/Converger/AbsIncreEnergy.cpp +++ b/Converger/AbsIncreEnergy.cpp @@ -34,7 +34,7 @@ unique_ptr AbsIncreEnergy::get_copy() { return make_uniqueget_factory(); - set_error(fabs(dot(W->get_ninja(), get_residual())) / static_cast(W->get_size())); + set_error(fabs(dot(W->get_ninja(), get_residual()))); set_conv_flag(get_tolerance() > get_error()); if(is_print()) diff --git a/Converger/AbsResidual.cpp b/Converger/AbsResidual.cpp index c01803874..0f41dca8c 100644 --- a/Converger/AbsResidual.cpp +++ b/Converger/AbsResidual.cpp @@ -16,8 +16,6 @@ ******************************************************************************/ #include "AbsResidual.h" -#include -#include AbsResidual::AbsResidual(const unsigned T, const double E, const unsigned M, const bool P) : Converger(T, E, M, P) {} @@ -25,9 +23,7 @@ AbsResidual::AbsResidual(const unsigned T, const double E, const unsigned M, con unique_ptr AbsResidual::get_copy() { return make_unique(*this); } bool AbsResidual::is_converged(unsigned) { - auto& W = get_domain().lock()->get_factory(); - - set_error(norm(get_residual()) / static_cast(W->get_size())); + set_error(inf_norm(get_residual())); set_conv_flag(get_tolerance() > get_error()); if(is_print()) diff --git a/Converger/CMakeLists.txt b/Converger/CMakeLists.txt index 98848034e..5d3aa4dd1 100644 --- a/Converger/CMakeLists.txt +++ b/Converger/CMakeLists.txt @@ -15,4 +15,4 @@ target_sources(${PROJECT_NAME} PRIVATE RelIncreAcc.cpp RelIncreEnergy.cpp RelResidual.cpp - ) +) diff --git a/Converger/Converger b/Converger/Converger index c19a286dd..1619f0cbd 100644 --- a/Converger/Converger +++ b/Converger/Converger @@ -2,15 +2,15 @@ #include "AbsDisp.h" #include "AbsError.h" -#include "AbsIncreDisp.h" #include "AbsIncreAcc.h" +#include "AbsIncreDisp.h" #include "AbsIncreEnergy.h" #include "AbsResidual.h" #include "FixedNumber.h" #include "LogicConverger.h" #include "RelDisp.h" #include "RelError.h" -#include "RelIncreDisp.h" #include "RelIncreAcc.h" +#include "RelIncreDisp.h" #include "RelIncreEnergy.h" -#include "RelResidual.h" \ No newline at end of file +#include "RelResidual.h" diff --git a/Converger/Converger.cpp b/Converger/Converger.cpp index a1a82ba49..af3b379cb 100644 --- a/Converger/Converger.cpp +++ b/Converger/Converger.cpp @@ -94,7 +94,7 @@ void Converger::set_conv_flag(const bool C) { conv_flag = C; } bool Converger::get_conv_flag() const { return conv_flag; } vec Converger::get_residual() const { - const auto& D = get_domain().lock(); + const auto D = get_domain().lock(); auto& W = D->get_factory(); vec residual = W->get_trial_load() - W->get_sushi(); diff --git a/Converger/RelDisp.cpp b/Converger/RelDisp.cpp index d0b174b48..fd9163f17 100644 --- a/Converger/RelDisp.cpp +++ b/Converger/RelDisp.cpp @@ -27,7 +27,7 @@ unique_ptr RelDisp::get_copy() { return make_unique(*this); bool RelDisp::is_converged(unsigned) { auto& W = get_domain().lock()->get_factory(); - const auto rel_disp = norm(W->get_incre_displacement() + W->get_ninja()) / norm(W->get_trial_displacement()); + const auto rel_disp = inf_norm(W->get_incre_displacement() + W->get_ninja()) / inf_norm(W->get_trial_displacement()); set_error(std::isfinite(rel_disp) ? rel_disp : 1.); set_conv_flag(get_tolerance() > get_error()); diff --git a/Converger/RelError.cpp b/Converger/RelError.cpp index b23057c90..dcaae81c7 100644 --- a/Converger/RelError.cpp +++ b/Converger/RelError.cpp @@ -38,7 +38,7 @@ unique_ptr RelError::get_copy() { return make_unique(*this) bool RelError::is_converged(unsigned) { auto& W = get_domain().lock()->get_factory(); - const auto rel_error = fabs(W->get_error()) / norm(W->get_trial_displacement()); + const auto rel_error = fabs(W->get_error()) / inf_norm(W->get_trial_displacement()); set_error(std::isfinite(rel_error) ? rel_error : 1.); set_conv_flag(get_tolerance() > get_error()); diff --git a/Converger/RelIncreAcc.cpp b/Converger/RelIncreAcc.cpp index 946118c7d..dc675ca9b 100644 --- a/Converger/RelIncreAcc.cpp +++ b/Converger/RelIncreAcc.cpp @@ -27,7 +27,7 @@ unique_ptr RelIncreAcc::get_copy() { return make_unique( bool RelIncreAcc::is_converged(unsigned) { auto& W = get_domain().lock()->get_factory(); - const auto rel_incre_disp = norm(W->get_ninja()) / norm(W->get_incre_acceleration() + W->get_ninja()); + const auto rel_incre_disp = inf_norm(W->get_ninja()) / inf_norm(W->get_incre_acceleration() + W->get_ninja()); set_error(std::isfinite(rel_incre_disp) ? rel_incre_disp : 1.); set_conv_flag(get_tolerance() > get_error()); diff --git a/Converger/RelIncreDisp.cpp b/Converger/RelIncreDisp.cpp index 1bd3a6e85..9b3119216 100644 --- a/Converger/RelIncreDisp.cpp +++ b/Converger/RelIncreDisp.cpp @@ -27,7 +27,7 @@ unique_ptr RelIncreDisp::get_copy() { return make_uniqueget_factory(); - const auto rel_incre_disp = norm(W->get_ninja()) / norm(W->get_incre_displacement() + W->get_ninja()); + const auto rel_incre_disp = inf_norm(W->get_ninja()) / inf_norm(W->get_incre_displacement() + W->get_ninja()); set_error(std::isfinite(rel_incre_disp) ? rel_incre_disp : 1.); set_conv_flag(get_tolerance() > get_error()); diff --git a/Converger/RelIncreEnergy.cpp b/Converger/RelIncreEnergy.cpp index d9de01587..9aced02cf 100644 --- a/Converger/RelIncreEnergy.cpp +++ b/Converger/RelIncreEnergy.cpp @@ -32,7 +32,7 @@ RelIncreEnergy::RelIncreEnergy(const unsigned T, const double E, const unsigned unique_ptr RelIncreEnergy::get_copy() { return make_unique(*this); } bool RelIncreEnergy::is_converged(const unsigned counter) { - const auto& D = get_domain().lock(); + const auto D = get_domain().lock(); auto& W = D->get_factory(); const auto energy = fabs(dot(W->get_ninja(), get_residual())); diff --git a/Converger/RelResidual.cpp b/Converger/RelResidual.cpp index e2826edfe..6ac694fdf 100644 --- a/Converger/RelResidual.cpp +++ b/Converger/RelResidual.cpp @@ -23,7 +23,7 @@ RelResidual::RelResidual(const unsigned T, const double E, const unsigned M, con unique_ptr RelResidual::get_copy() { return make_unique(*this); } bool RelResidual::is_converged(const unsigned counter) { - const auto residual = norm(get_residual()); + const auto residual = inf_norm(get_residual()); if(0u == counter) ref_residual = residual; set_error(residual / ref_residual); set_conv_flag(get_tolerance() > get_error()); diff --git a/Database/CMakeLists.txt b/Database/CMakeLists.txt index dbe13a0f5..2b2198599 100644 --- a/Database/CMakeLists.txt +++ b/Database/CMakeLists.txt @@ -1,4 +1,4 @@ target_sources(${PROJECT_NAME} PRIVATE Database.cpp HDF.cpp - ) +) diff --git a/Developer/Element/CMakeLists.txt b/Developer/Element/CMakeLists.txt index 71e515f0f..b5168881f 100644 --- a/Developer/Element/CMakeLists.txt +++ b/Developer/Element/CMakeLists.txt @@ -32,6 +32,6 @@ add_library(${PROJECT_NAME} SHARED ../../Material/Material.cpp ../../Section/Section.cpp ../../Include/fmt/src/format.cc - ) +) message(STATUS "ElementExample CXX_FLAGS: ${CMAKE_CXX_FLAGS}") diff --git a/Developer/Element/ElementExample.cpp b/Developer/Element/ElementExample.cpp index 743cbf39e..acdae3526 100644 --- a/Developer/Element/ElementExample.cpp +++ b/Developer/Element/ElementExample.cpp @@ -76,7 +76,7 @@ int ElementExample::initialize(const shared_ptr& D) { initial_mass.zeros(m_size, m_size); const rowvec n = mean(ele_coor) * inv_coor; - const mat t_mass = n.t() * n * area * thickness * m_material->get_parameter(ParameterType::DENSITY); + const mat t_mass = n.t() * n * area * thickness * m_material->get_density(); initial_mass(uvec{1, 3, 5}, uvec{1, 3, 5}) = t_mass; initial_mass(uvec{0, 2, 4}, uvec{0, 2, 4}) = t_mass; diff --git a/Developer/Material/CMakeLists.txt b/Developer/Material/CMakeLists.txt index 50eb3ac80..a26d44c94 100644 --- a/Developer/Material/CMakeLists.txt +++ b/Developer/Material/CMakeLists.txt @@ -29,6 +29,6 @@ add_library(${PROJECT_NAME} SHARED ../../Domain/Tag.cpp ../../Material/Material.cpp ../../Include/fmt/src/format.cc - ) +) message(STATUS "MaterialExample CXX_FLAGS: ${CMAKE_CXX_FLAGS}") diff --git a/Developer/Material/MaterialExample.cpp b/Developer/Material/MaterialExample.cpp index 2e7b581c7..fcaf1084f 100644 --- a/Developer/Material/MaterialExample.cpp +++ b/Developer/Material/MaterialExample.cpp @@ -144,7 +144,7 @@ int MaterialExample::update_trial_status(const vec& t_strain) { trial_strain = t_strain; incre_strain = trial_strain - current_strain; - if(fabs(incre_strain(0)) <= tolerance) return 0; + if(fabs(incre_strain(0)) <= datum::eps) return 0; trial_back_stress = current_back_stress; trial_plastic_strain = current_plastic_strain; diff --git a/Developer/Modifier/CMakeLists.txt b/Developer/Modifier/CMakeLists.txt index fab91abeb..921845dc2 100644 --- a/Developer/Modifier/CMakeLists.txt +++ b/Developer/Modifier/CMakeLists.txt @@ -33,6 +33,6 @@ add_library(${PROJECT_NAME} SHARED ../../Material/Material.cpp ../../Section/Section.cpp ../../Include/fmt/src/format.cc - ) +) message(STATUS "ModifierExample CXX_FLAGS: ${CMAKE_CXX_FLAGS}") diff --git a/Developer/ModuleBundle/CMakeLists.txt b/Developer/ModuleBundle/CMakeLists.txt index e15339885..36f96bfbb 100644 --- a/Developer/ModuleBundle/CMakeLists.txt +++ b/Developer/ModuleBundle/CMakeLists.txt @@ -39,6 +39,6 @@ add_library(${PROJECT_NAME} SHARED ../Material/ElasticExternal.cpp ../Section/SectionExample.cpp ../../Include/fmt/src/format.cc - ) +) message(STATUS "ModuleBundle CXX_FLAGS: ${CMAKE_CXX_FLAGS}") diff --git a/Developer/Section/CMakeLists.txt b/Developer/Section/CMakeLists.txt index bc4ed992a..2e112304d 100644 --- a/Developer/Section/CMakeLists.txt +++ b/Developer/Section/CMakeLists.txt @@ -29,6 +29,6 @@ add_library(${PROJECT_NAME} SHARED ../../Material/Material.cpp ../../Section/Section.cpp ../../Include/fmt/src/format.cc - ) +) message(STATUS "SectionExample CXX_FLAGS: ${CMAKE_CXX_FLAGS}") diff --git a/Domain/CMakeLists.txt b/Domain/CMakeLists.txt index 4242c7d82..5294636c4 100644 --- a/Domain/CMakeLists.txt +++ b/Domain/CMakeLists.txt @@ -5,12 +5,13 @@ target_sources(${PROJECT_NAME} PRIVATE DomainState.cpp ExternalModule.cpp Factory.hpp + Group/CustomNodeGroup.cpp Group/ElementGroup.cpp Group/Group.cpp Group/GroupGroup.cpp + Group/GroupParser.cpp Group/NodeGroup.cpp - Group/CustomNodeGroup.cpp Node.cpp Storage.hpp Tag.cpp - ) +) diff --git a/Domain/ConditionalModifier.h b/Domain/ConditionalModifier.h index 8a07bddcf..288e08099 100644 --- a/Domain/ConditionalModifier.h +++ b/Domain/ConditionalModifier.h @@ -66,11 +66,12 @@ class ConditionalModifier : public Tag { uvec get_all_nodal_active_dof(const shared_ptr&); public: - ConditionalModifier(unsigned, // tag - unsigned, // step tag - unsigned, // amplitude tag - uvec&&, // node tag - uvec&& // dof tag + ConditionalModifier( + unsigned, // tag + unsigned, // step tag + unsigned, // amplitude tag + uvec&&, // node tag + uvec&& // dof tag ); virtual int initialize(const shared_ptr&); diff --git a/Domain/DOF.h b/Domain/DOF.h index 7081ccd62..7baa65759 100644 --- a/Domain/DOF.h +++ b/Domain/DOF.h @@ -44,7 +44,9 @@ enum class DOF : unsigned short { //damage P, // pressure - T // temperature + T, + // temperature + WARP // warping }; #endif // DOF_H diff --git a/Domain/Domain.cpp b/Domain/Domain.cpp index dc3deae6e..eced08e97 100644 --- a/Domain/Domain.cpp +++ b/Domain/Domain.cpp @@ -33,7 +33,7 @@ #include
#include #include -#include +#include #include #include #include @@ -707,6 +707,20 @@ const shared_ptr& Domain::get_current_integrator() const { return ge const shared_ptr& Domain::get_current_solver() const { return get_solver(current_solver_tag); } +unique_ptr Domain::initialized_material_copy(const uword T) { + if(!find(T)) return nullptr; + + auto copy = get(T)->get_copy(); + + if(copy->is_initialized()) return copy; + + if(SUANPAN_SUCCESS != copy->initialize_base(shared_from_this()) || SUANPAN_SUCCESS != copy->initialize(shared_from_this())) return nullptr; + + copy->set_initialized(true); + + return copy; +} + /** * \brief concurrently safe insertion method */ @@ -984,16 +998,18 @@ int Domain::initialize() { return SUANPAN_FAIL; } - // set some factory properties for later initialisation - factory->set_nlgeom(nlgeom); - // initialize modifier based on updated element pool - suanpan::for_all(modifier_pond, [&](const std::pair>& t_modifier) { t_modifier.second->initialize(shared_from_this()); }); + bool nonviscous = false; + suanpan::for_all(modifier_pond, [&](const std::pair>& t_modifier) { if(SUANPAN_SUCCESS == t_modifier.second->initialize(shared_from_this()) && t_modifier.second->has_nonviscous()) nonviscous = true; }); modifier_pond.update(); // sort to ensure lower performs first if(auto& t_modifier_pool = access::rw(modifier_pond.get()); t_modifier_pool.size() > 1) suanpan_sort(t_modifier_pool.begin(), t_modifier_pool.end(), [&](const shared_ptr& a, const shared_ptr& b) { return a->get_tag() < b->get_tag(); }); + // set some factory properties for later initialisation + factory->set_nlgeom(nlgeom); + factory->set_nonviscous(nonviscous); + // recorder may depend on groups, nodes, elements, etc. suanpan::for_all(recorder_pond, [&](const std::pair>& t_recorder) { t_recorder.second->initialize(shared_from_this()); }); recorder_pond.update(); @@ -1094,6 +1110,9 @@ int Domain::process_load(const bool full) { auto& trial_settlement = factory->modify_trial_settlement(); if(!trial_settlement.empty()) trial_settlement.zeros(); + auto reference_load = factory->get_reference_load(); + if(!reference_load.empty()) reference_load.zeros(); + const auto process_handler = full ? std::mem_fn(&Load::process) : std::mem_fn(&Load::process_resistance); std::atomic_int code = 0; @@ -1105,19 +1124,27 @@ int Domain::process_load(const bool full) { #else code += std::invoke(process_handler, t_load, shared_from_this()); #endif - if(!t_load->get_trial_load().empty()) { + if(!t_load->get_trial_load().empty() && !trial_load.empty()) { std::scoped_lock trial_load_lock(factory->get_trial_load_mutex()); trial_load += t_load->get_trial_load(); } - if(!t_load->get_trial_settlement().empty()) { + if(!t_load->get_trial_settlement().empty() && !trial_settlement.empty()) { std::scoped_lock trial_settlement_lock(factory->get_trial_settlement_mutex()); trial_settlement += t_load->get_trial_settlement(); } + if(!t_load->get_reference_load().empty() && !reference_load.empty()) { + std::scoped_lock reference_load_lock(factory->get_reference_load_mutex()); + reference_load += t_load->get_reference_load(); + } }); factory->update_trial_load(trial_load); factory->update_trial_settlement(trial_settlement); + // only consider custom reference load pattern in arc-length method + // otherwise, the reference load is automatically updated + if(std::dynamic_pointer_cast(get_current_step())) factory->set_reference_load(reference_load); + return code; } diff --git a/Domain/Domain.h b/Domain/Domain.h index 55af6964b..fa45dd848 100644 --- a/Domain/Domain.h +++ b/Domain/Domain.h @@ -304,6 +304,8 @@ class Domain final : public DomainBase, public std::enable_shared_from_this& get_current_integrator() const override; const shared_ptr& get_current_solver() const override; + unique_ptr initialized_material_copy(uword) override; + void insert_loaded_dof(const uvec&) override; void insert_restrained_dof(const uvec&) override; void insert_constrained_dof(const uvec&) override; @@ -341,7 +343,7 @@ class Domain final : public DomainBase, public std::enable_shared_from_this& get_current_integrator() const = 0; [[nodiscard]] virtual const shared_ptr& get_current_solver() const = 0; + virtual unique_ptr initialized_material_copy(uword) = 0; + /** * \brief concurrently safe insertion method */ @@ -380,10 +382,12 @@ class DomainBase : public Tag { virtual void update_current_resistance() const = 0; virtual void update_current_damping_force() const = 0; + virtual void update_current_nonviscous_force() const = 0; virtual void update_current_inertial_force() const = 0; virtual void assemble_resistance() const = 0; virtual void assemble_damping_force() const = 0; + virtual void assemble_nonviscous_force() const = 0; virtual void assemble_inertial_force() const = 0; virtual void assemble_initial_mass() const = 0; @@ -392,6 +396,9 @@ class DomainBase : public Tag { virtual void assemble_initial_damping() const = 0; virtual void assemble_current_damping() const = 0; virtual void assemble_trial_damping() const = 0; + virtual void assemble_initial_nonviscous() const = 0; + virtual void assemble_current_nonviscous() const = 0; + virtual void assemble_trial_nonviscous() const = 0; virtual void assemble_initial_stiffness() const = 0; virtual void assemble_current_stiffness() const = 0; virtual void assemble_trial_stiffness() const = 0; diff --git a/Domain/DomainState.cpp b/Domain/DomainState.cpp index b31ea465e..49215be48 100644 --- a/Domain/DomainState.cpp +++ b/Domain/DomainState.cpp @@ -49,6 +49,19 @@ void Domain::update_current_damping_force() const { factory->commit_damping_force(); } +void Domain::update_current_nonviscous_force() const { + factory->modify_trial_nonviscous_force().zeros(); + if(color_map.empty()) for(const auto& I : element_pond.get()) factory->assemble_nonviscous_force(real(sum(I->get_current_nonviscous_force(), 1)), I->get_dof_encoding()); + else + std::ranges::for_each(color_map, [&](const std::vector& color) { + suanpan::for_all(color, [&](const unsigned tag) { + const auto& I = get_element(tag); + factory->assemble_nonviscous_force(real(sum(I->get_current_nonviscous_force(), 1)), I->get_dof_encoding()); + }); + }); + factory->commit_nonviscous_force(); +} + void Domain::update_current_inertial_force() const { factory->modify_trial_inertial_force().zeros(); if(color_map.empty()) for(const auto& I : element_pond.get()) factory->assemble_inertial_force(I->get_current_inertial_force(), I->get_dof_encoding()); @@ -96,6 +109,23 @@ void Domain::assemble_damping_force() const { factory->update_trial_damping_force(trial_damping_force); } +void Domain::assemble_nonviscous_force() const { + auto& trial_nonviscous_force = factory->modify_trial_nonviscous_force().zeros(); + if(color_map.empty()) for(const auto& I : element_pond.get()) factory->assemble_nonviscous_force(real(sum(I->get_trial_nonviscous_force(), 1)), I->get_dof_encoding()); + else + std::ranges::for_each(color_map, [&](const std::vector& color) { + suanpan::for_all(color, [&](const unsigned tag) { + const auto& I = get_element(tag); + factory->assemble_nonviscous_force(real(sum(I->get_trial_nonviscous_force(), 1)), I->get_dof_encoding()); + }); + }); + + suanpan::for_all(node_pond.get(), [&](const shared_ptr& t_node) { t_node->update_trial_nonviscous_force(trial_nonviscous_force(t_node->get_reordered_dof())); }); + + // update to sync incre_nonviscous_force + factory->update_trial_nonviscous_force(trial_nonviscous_force); +} + void Domain::assemble_inertial_force() const { auto& trial_inertial_force = factory->modify_trial_inertial_force().zeros(); if(color_map.empty()) for(const auto& I : element_pond.get()) factory->assemble_inertial_force(I->get_trial_inertial_force(), I->get_dof_encoding()); @@ -197,6 +227,51 @@ void Domain::assemble_trial_damping() const { factory->get_damping()->csc_condense(); } +void Domain::assemble_initial_nonviscous() const { + if(!factory->is_nonviscous()) return; + factory->clear_nonviscous(); + if(color_map.empty() || is_sparse()) for(const auto& I : element_pond.get()) factory->assemble_nonviscous(I->get_initial_nonviscous(), I->get_dof_encoding(), I->get_dof_mapping()); + else + std::ranges::for_each(color_map, [&](const std::vector& color) { + suanpan::for_all(color, [&](const unsigned tag) { + const auto& I = get_element(tag); + factory->assemble_nonviscous(I->get_initial_nonviscous(), I->get_dof_encoding(), I->get_dof_mapping()); + }); + }); + + factory->get_nonviscous()->csc_condense(); +} + +void Domain::assemble_current_nonviscous() const { + if(!factory->is_nonviscous()) return; + factory->clear_nonviscous(); + if(color_map.empty() || is_sparse()) for(const auto& I : element_pond.get()) factory->assemble_nonviscous(I->get_current_nonviscous(), I->get_dof_encoding(), I->get_dof_mapping()); + else + std::ranges::for_each(color_map, [&](const std::vector& color) { + suanpan::for_all(color, [&](const unsigned tag) { + const auto& I = get_element(tag); + factory->assemble_nonviscous(I->get_current_nonviscous(), I->get_dof_encoding(), I->get_dof_mapping()); + }); + }); + + factory->get_nonviscous()->csc_condense(); +} + +void Domain::assemble_trial_nonviscous() const { + if(!factory->is_nonviscous()) return; + factory->clear_nonviscous(); + if(color_map.empty() || is_sparse()) for(const auto& I : element_pond.get()) factory->assemble_nonviscous(I->get_trial_nonviscous(), I->get_dof_encoding(), I->get_dof_mapping()); + else + std::ranges::for_each(color_map, [&](const std::vector& color) { + suanpan::for_all(color, [&](const unsigned tag) { + const auto& I = get_element(tag); + factory->assemble_nonviscous(I->get_trial_nonviscous(), I->get_dof_encoding(), I->get_dof_mapping()); + }); + }); + + factory->get_nonviscous()->csc_condense(); +} + void Domain::assemble_initial_stiffness() const { factory->clear_stiffness(); if(color_map.empty() || is_sparse()) for(const auto& I : element_pond.get()) factory->assemble_stiffness(I->get_initial_stiffness(), I->get_dof_encoding(), I->get_dof_mapping()); diff --git a/Domain/Factory.hpp b/Domain/Factory.hpp index b06e87884..65adf444d 100644 --- a/Domain/Factory.hpp +++ b/Domain/Factory.hpp @@ -87,11 +87,12 @@ template class Factory final { #endif bool nlgeom = false; + bool nonviscous = false; SolverType solver = SolverType::LAPACK; SolverSetting setting{}; - T error = 0.; // error produced by certain solvers + T error = T(0); // error produced by certain solvers Col ninja; // the result from A*X=B Col sushi; // modified right-hand side B @@ -116,57 +117,63 @@ template class Factory final { T strain_energy = T(0); T kinetic_energy = T(0); T viscous_energy = T(0); + T nonviscous_energy = T(0); T complementary_energy = T(0); Col momentum; - Col trial_load_factor; // global trial load factor - Col trial_load; // global trial load vector - Col trial_settlement; // global trial displacement load vector - Col trial_resistance; // global trial resistance vector - Col trial_damping_force; // global trial damping force vector - Col trial_inertial_force; // global trial inertial force vector - Col trial_displacement; // global trial displacement vector - Col trial_velocity; // global trial velocity vector - Col trial_acceleration; // global trial acceleration vector - Col trial_temperature; // global trial temperature vector - - Col incre_load_factor; // global incremental load vector - Col incre_load; // global incremental load vector - Col incre_settlement; // global incremental displacement load vector - Col incre_resistance; // global incremental resistance vector - Col incre_damping_force; // global incremental damping force vector - Col incre_inertial_force; // global incremental inertial force vector - Col incre_displacement; // global incremental displacement vector - Col incre_velocity; // global incremental velocity vector - Col incre_acceleration; // global incremental acceleration vector - Col incre_temperature; // global incremental temperature vector - - Col current_load_factor; // global current load vector - Col current_load; // global current load vector - Col current_settlement; // global current displacement load vector - Col current_resistance; // global current resistance vector - Col current_damping_force; // global current damping force vector - Col current_inertial_force; // global current inertial force vector - Col current_displacement; // global current displacement vector - Col current_velocity; // global current velocity vector - Col current_acceleration; // global current acceleration vector - Col current_temperature; // global current temperature vector - - Col pre_load_factor; // global previous load vector - Col pre_load; // global previous load vector - Col pre_settlement; // global previous displacement load vector - Col pre_resistance; // global previous resistance vector - Col pre_damping_force; // global previous damping force vector - Col pre_inertial_force; // global previous inertial force vector - Col pre_displacement; // global previous displacement vector - Col pre_velocity; // global previous velocity vector - Col pre_acceleration; // global previous acceleration vector - Col pre_temperature; // global previous temperature vector - - shared_ptr> global_mass = nullptr; // global mass matrix - shared_ptr> global_damping = nullptr; // global damping matrix - shared_ptr> global_stiffness = nullptr; // global stiffness matrix - shared_ptr> global_geometry = nullptr; // global geometry matrix + Col trial_load_factor; // global trial load factor + Col trial_load; // global trial load vector + Col trial_settlement; // global trial displacement load vector + Col trial_resistance; // global trial resistance vector + Col trial_damping_force; // global trial damping force vector + Col trial_nonviscous_force; // global trial nonviscous damping force vector + Col trial_inertial_force; // global trial inertial force vector + Col trial_displacement; // global trial displacement vector + Col trial_velocity; // global trial velocity vector + Col trial_acceleration; // global trial acceleration vector + Col trial_temperature; // global trial temperature vector + + Col incre_load_factor; // global incremental load vector + Col incre_load; // global incremental load vector + Col incre_settlement; // global incremental displacement load vector + Col incre_resistance; // global incremental resistance vector + Col incre_damping_force; // global incremental damping force vector + Col incre_nonviscous_force; // global incremental nonviscous damping force vector + Col incre_inertial_force; // global incremental inertial force vector + Col incre_displacement; // global incremental displacement vector + Col incre_velocity; // global incremental velocity vector + Col incre_acceleration; // global incremental acceleration vector + Col incre_temperature; // global incremental temperature vector + + Col current_load_factor; // global current load vector + Col current_load; // global current load vector + Col current_settlement; // global current displacement load vector + Col current_resistance; // global current resistance vector + Col current_damping_force; // global current damping force vector + Col current_nonviscous_force; // global current nonviscous damping force vector + Col current_inertial_force; // global current inertial force vector + Col current_displacement; // global current displacement vector + Col current_velocity; // global current velocity vector + Col current_acceleration; // global current acceleration vector + Col current_temperature; // global current temperature vector + + Col pre_load_factor; // global previous load vector + Col pre_load; // global previous load vector + Col pre_settlement; // global previous displacement load vector + Col pre_resistance; // global previous resistance vector + Col pre_damping_force; // global previous damping force vector + Col pre_nonviscous_force; // global previous nonviscous damping force vector + Col pre_inertial_force; // global previous inertial force vector + Col pre_displacement; // global previous displacement vector + Col pre_velocity; // global previous velocity vector + Col pre_acceleration; // global previous acceleration vector + Col pre_temperature; // global previous temperature vector + + shared_ptr> global_mass = nullptr; // global mass matrix + shared_ptr> global_damping = nullptr; // global damping matrix + shared_ptr> global_nonviscous = nullptr; // global nonviscous damping matrix + shared_ptr> global_stiffness = nullptr; // global stiffness matrix + shared_ptr> global_geometry = nullptr; // global geometry matrix std::vector global_mutex = std::vector(20); @@ -193,6 +200,9 @@ template class Factory final { void set_nlgeom(bool); [[nodiscard]] bool is_nlgeom() const; + void set_nonviscous(bool); + [[nodiscard]] bool is_nonviscous() const; + void set_solver_type(SolverType); [[nodiscard]] SolverType get_solver_type() const; @@ -236,6 +246,7 @@ template class Factory final { void initialize_settlement(); void initialize_resistance(); void initialize_damping_force(); + void initialize_nonviscous_force(); void initialize_inertial_force(); void initialize_displacement(); void initialize_velocity(); @@ -245,6 +256,7 @@ template class Factory final { void initialize_mass(); void initialize_damping(); + void initialize_nonviscous(); void initialize_stiffness(); void initialize_geometry(); void initialize_eigen(); @@ -266,6 +278,7 @@ template class Factory final { void set_trial_settlement(const Col&); void set_trial_resistance(const Col&); void set_trial_damping_force(const Col&); + void set_trial_nonviscous_force(const Col&); void set_trial_inertial_force(const Col&); void set_trial_displacement(const Col&); void set_trial_velocity(const Col&); @@ -278,6 +291,7 @@ template class Factory final { void set_incre_settlement(const Col&); void set_incre_resistance(const Col&); void set_incre_damping_force(const Col&); + void set_incre_nonviscous_force(const Col&); void set_incre_inertial_force(const Col&); void set_incre_displacement(const Col&); void set_incre_velocity(const Col&); @@ -290,6 +304,7 @@ template class Factory final { void set_current_settlement(const Col&); void set_current_resistance(const Col&); void set_current_damping_force(const Col&); + void set_current_nonviscous_force(const Col&); void set_current_inertial_force(const Col&); void set_current_displacement(const Col&); void set_current_velocity(const Col&); @@ -302,6 +317,7 @@ template class Factory final { void set_pre_settlement(const Col&); void set_pre_resistance(const Col&); void set_pre_damping_force(const Col&); + void set_pre_nonviscous_force(const Col&); void set_pre_inertial_force(const Col&); void set_pre_displacement(const Col&); void set_pre_velocity(const Col&); @@ -310,6 +326,7 @@ template class Factory final { void set_mass(const shared_ptr>&); void set_damping(const shared_ptr>&); + void set_nonviscous(const shared_ptr>&); void set_stiffness(const shared_ptr>&); void set_geometry(const shared_ptr>&); @@ -337,6 +354,7 @@ template class Factory final { T get_strain_energy(); T get_kinetic_energy(); T get_viscous_energy(); + T get_nonviscous_energy(); T get_complementary_energy(); const Col& get_momentum(); @@ -346,6 +364,7 @@ template class Factory final { const Col& get_trial_settlement() const; const Col& get_trial_resistance() const; const Col& get_trial_damping_force() const; + const Col& get_trial_nonviscous_force() const; const Col& get_trial_inertial_force() const; const Col& get_trial_displacement() const; const Col& get_trial_velocity() const; @@ -358,6 +377,7 @@ template class Factory final { const Col& get_incre_settlement() const; const Col& get_incre_resistance() const; const Col& get_incre_damping_force() const; + const Col& get_incre_nonviscous_force() const; const Col& get_incre_inertial_force() const; const Col& get_incre_displacement() const; const Col& get_incre_velocity() const; @@ -370,6 +390,7 @@ template class Factory final { const Col& get_current_settlement() const; const Col& get_current_resistance() const; const Col& get_current_damping_force() const; + const Col& get_current_nonviscous_force() const; const Col& get_current_inertial_force() const; const Col& get_current_displacement() const; const Col& get_current_velocity() const; @@ -382,6 +403,7 @@ template class Factory final { const Col& get_pre_settlement() const; const Col& get_pre_resistance() const; const Col& get_pre_damping_force() const; + const Col& get_pre_nonviscous_force() const; const Col& get_pre_inertial_force() const; const Col& get_pre_displacement() const; const Col& get_pre_velocity() const; @@ -390,6 +412,7 @@ template class Factory final { const shared_ptr>& get_mass() const; const shared_ptr>& get_damping() const; + const shared_ptr>& get_nonviscous() const; const shared_ptr>& get_stiffness() const; const shared_ptr>& get_geometry() const; @@ -402,9 +425,11 @@ template class Factory final { std::mutex& get_trial_load_mutex(); std::mutex& get_trial_settlement_mutex(); + std::mutex& get_reference_load_mutex(); std::mutex& get_mass_mutex(); std::mutex& get_damping_mutex(); + std::mutex& get_nonviscous_mutex(); std::mutex& get_stiffness_mutex(); std::mutex& get_geometry_mutex(); @@ -419,6 +444,7 @@ template class Factory final { void update_trial_settlement(const Col&); void update_trial_resistance(const Col&); void update_trial_damping_force(const Col&); + void update_trial_nonviscous_force(const Col&); void update_trial_inertial_force(const Col&); void update_trial_displacement(const Col&); void update_trial_velocity(const Col&); @@ -431,6 +457,7 @@ template class Factory final { void update_incre_settlement(const Col&); void update_incre_resistance(const Col&); void update_incre_damping_force(const Col&); + void update_incre_nonviscous_force(const Col&); void update_incre_inertial_force(const Col&); void update_incre_displacement(const Col&); void update_incre_velocity(const Col&); @@ -443,6 +470,7 @@ template class Factory final { void update_current_settlement(const Col&); void update_current_resistance(const Col&); void update_current_damping_force(const Col&); + void update_current_nonviscous_force(const Col&); void update_current_inertial_force(const Col&); void update_current_displacement(const Col&); void update_current_velocity(const Col&); @@ -455,6 +483,7 @@ template class Factory final { void update_trial_settlement_by(const Col&); void update_trial_resistance_by(const Col&); void update_trial_damping_force_by(const Col&); + void update_trial_nonviscous_force_by(const Col&); void update_trial_inertial_force_by(const Col&); void update_trial_displacement_by(const Col&); void update_trial_velocity_by(const Col&); @@ -467,6 +496,7 @@ template class Factory final { void update_incre_settlement_by(const Col&); void update_incre_resistance_by(const Col&); void update_incre_damping_force_by(const Col&); + void update_incre_nonviscous_force_by(const Col&); void update_incre_inertial_force_by(const Col&); void update_incre_displacement_by(const Col&); void update_incre_velocity_by(const Col&); @@ -479,6 +509,7 @@ template class Factory final { void update_current_settlement_by(const Col&); void update_current_resistance_by(const Col&); void update_current_damping_force_by(const Col&); + void update_current_nonviscous_force_by(const Col&); void update_current_inertial_force_by(const Col&); void update_current_displacement_by(const Col&); void update_current_velocity_by(const Col&); @@ -508,6 +539,7 @@ template class Factory final { Col& modify_trial_settlement(); Col& modify_trial_resistance(); Col& modify_trial_damping_force(); + Col& modify_trial_nonviscous_force(); Col& modify_trial_inertial_force(); Col& modify_trial_displacement(); Col& modify_trial_velocity(); @@ -520,6 +552,7 @@ template class Factory final { Col& modify_incre_settlement(); Col& modify_incre_resistance(); Col& modify_incre_damping_force(); + Col& modify_incre_nonviscous_force(); Col& modify_incre_inertial_force(); Col& modify_incre_displacement(); Col& modify_incre_velocity(); @@ -532,6 +565,7 @@ template class Factory final { Col& modify_current_settlement(); Col& modify_current_resistance(); Col& modify_current_damping_force(); + Col& modify_current_nonviscous_force(); Col& modify_current_inertial_force(); Col& modify_current_displacement(); Col& modify_current_velocity(); @@ -544,6 +578,7 @@ template class Factory final { Col& modify_pre_settlement(); Col& modify_pre_resistance(); Col& modify_pre_damping_force(); + Col& modify_pre_nonviscous_force(); Col& modify_pre_inertial_force(); Col& modify_pre_displacement(); Col& modify_pre_velocity(); @@ -552,6 +587,7 @@ template class Factory final { shared_ptr>& modify_mass(); shared_ptr>& modify_damping(); + shared_ptr>& modify_nonviscous(); shared_ptr>& modify_stiffness(); shared_ptr>& modify_geometry(); @@ -570,6 +606,7 @@ template class Factory final { void commit_settlement(); void commit_resistance(); void commit_damping_force(); + void commit_nonviscous_force(); void commit_inertial_force(); void commit_displacement(); void commit_velocity(); @@ -584,6 +621,7 @@ template class Factory final { void commit_pre_settlement(); void commit_pre_resistance(); void commit_pre_damping_force(); + void commit_pre_nonviscous_force(); void commit_pre_inertial_force(); void commit_pre_displacement(); void commit_pre_velocity(); @@ -597,6 +635,7 @@ template class Factory final { void clear_settlement(); void clear_resistance(); void clear_damping_force(); + void clear_nonviscous_force(); void clear_inertial_force(); void clear_displacement(); void clear_velocity(); @@ -611,6 +650,7 @@ template class Factory final { void reset_settlement(); void reset_resistance(); void reset_damping_force(); + void reset_nonviscous_force(); void reset_inertial_force(); void reset_displacement(); void reset_velocity(); @@ -621,6 +661,7 @@ template class Factory final { void clear_eigen(); void clear_mass(); void clear_damping(); + void clear_nonviscous(); void clear_stiffness(); void clear_geometry(); void clear_auxiliary(); @@ -631,10 +672,12 @@ template class Factory final { void assemble_resistance(const Mat&, const uvec&); void assemble_damping_force(const Mat&, const uvec&); + void assemble_nonviscous_force(const Mat&, const uvec&); void assemble_inertial_force(const Mat&, const uvec&); void assemble_mass(const Mat&, const uvec&, const std::vector&); void assemble_damping(const Mat&, const uvec&, const std::vector&); + void assemble_nonviscous(const Mat&, const uvec&, const std::vector&); void assemble_stiffness(const Mat&, const uvec&, const std::vector&); void assemble_geometry(const Mat&, const uvec&, const std::vector&); @@ -673,6 +716,14 @@ template void Factory::set_nlgeom(const bool B) { template bool Factory::is_nlgeom() const { return nlgeom; } +template void Factory::set_nonviscous(const bool B) { + if(B == nonviscous) return; + nonviscous = B; + access::rw(initialized) = false; +} + +template bool Factory::is_nonviscous() const { return nonviscous; } + template void Factory::set_solver_type(const SolverType E) { solver = E; } template SolverType Factory::get_solver_type() const { return solver; } @@ -762,12 +813,14 @@ template int Factory::initialize() { initialize_load(); initialize_resistance(); initialize_damping_force(); + initialize_nonviscous_force(); initialize_inertial_force(); initialize_displacement(); initialize_velocity(); initialize_acceleration(); initialize_mass(); initialize_damping(); + initialize_nonviscous(); initialize_stiffness(); initialize_geometry(); break; @@ -816,6 +869,12 @@ template void Factory::initialize_damping_force() { current_damping_force.zeros(n_size); } +template void Factory::initialize_nonviscous_force() { + trial_nonviscous_force.zeros(n_size); + incre_nonviscous_force.zeros(n_size); + current_nonviscous_force.zeros(n_size); +} + template void Factory::initialize_inertial_force() { trial_inertial_force.zeros(n_size); incre_inertial_force.zeros(n_size); @@ -855,6 +914,12 @@ template void Factory::initialize_mass() { global_mass = get_matrix_c template void Factory::initialize_damping() { global_damping = get_matrix_container(); } +template void Factory::initialize_nonviscous() { + if(!nonviscous) return; + + global_nonviscous = get_matrix_container(); +} + template void Factory::initialize_stiffness() { global_stiffness = get_matrix_container(); } template void Factory::initialize_geometry() { @@ -888,6 +953,8 @@ template void Factory::set_mass(const shared_ptr>& M) { gl template void Factory::set_damping(const shared_ptr>& C) { global_damping = C; } +template void Factory::set_nonviscous(const shared_ptr>& C) { global_nonviscous = C; } + template void Factory::set_stiffness(const shared_ptr>& K) { global_stiffness = K; } template void Factory::set_geometry(const shared_ptr>& G) { global_geometry = G; } @@ -924,6 +991,8 @@ template T Factory::get_kinetic_energy() { return kinetic_energy; } template T Factory::get_viscous_energy() { return viscous_energy; } +template T Factory::get_nonviscous_energy() { return nonviscous_energy; } + template T Factory::get_complementary_energy() { return complementary_energy; } template const Col& Factory::get_momentum() { return momentum; } @@ -932,6 +1001,8 @@ template const shared_ptr>& Factory::get_mass() const { re template const shared_ptr>& Factory::get_damping() const { return global_damping; } +template const shared_ptr>& Factory::get_nonviscous() const { return global_nonviscous; } + template const shared_ptr>& Factory::get_stiffness() const { return global_stiffness; } template const shared_ptr>& Factory::get_geometry() const { return global_geometry; } @@ -950,13 +1021,17 @@ template std::mutex& Factory::get_trial_load_mutex() { return global_ template std::mutex& Factory::get_trial_settlement_mutex() { return global_mutex.at(6); } -template std::mutex& Factory::get_mass_mutex() { return global_mutex.at(7); } +template std::mutex& Factory::get_reference_load_mutex() { return global_mutex.at(7); } -template std::mutex& Factory::get_damping_mutex() { return global_mutex.at(8); } +template std::mutex& Factory::get_mass_mutex() { return global_mutex.at(8); } -template std::mutex& Factory::get_stiffness_mutex() { return global_mutex.at(9); } +template std::mutex& Factory::get_damping_mutex() { return global_mutex.at(9); } -template std::mutex& Factory::get_geometry_mutex() { return global_mutex.at(10); } +template std::mutex& Factory::get_nonviscous_mutex() { return global_mutex.at(10); } + +template std::mutex& Factory::get_stiffness_mutex() { return global_mutex.at(11); } + +template std::mutex& Factory::get_geometry_mutex() { return global_mutex.at(12); } template const Col& Factory::get_eigenvalue() const { return eigenvalue; } @@ -966,12 +1041,14 @@ template void Factory::commit_energy() { auto se = std::async([&] { if(!trial_resistance.empty() && !incre_displacement.empty()) strain_energy += .5 * dot(trial_resistance + current_resistance, incre_displacement); }); auto ke = std::async([&] { if(!trial_inertial_force.empty() && !trial_velocity.empty()) kinetic_energy = .5 * dot(global_mass * trial_velocity, trial_velocity); }); auto ve = std::async([&] { if(!trial_damping_force.empty() && !incre_displacement.empty()) viscous_energy += .5 * dot(trial_damping_force + current_damping_force, incre_displacement); }); + auto ne = std::async([&] { if(!trial_nonviscous_force.empty() && !incre_displacement.empty()) nonviscous_energy += .5 * dot(trial_nonviscous_force + current_nonviscous_force, incre_displacement); }); auto ce = std::async([&] { if(!trial_displacement.empty() && !incre_resistance.empty()) complementary_energy += .5 * dot(trial_displacement + current_displacement, incre_resistance); }); auto mm = std::async([&] { if(!trial_inertial_force.empty() && !trial_velocity.empty()) momentum = global_mass * trial_velocity; }); se.get(); ke.get(); ve.get(); + ne.get(); ce.get(); mm.get(); } @@ -980,6 +1057,7 @@ template void Factory::clear_energy() { strain_energy = T(0); kinetic_energy = T(0); viscous_energy = T(0); + nonviscous_energy = T(0); complementary_energy = T(0); momentum.zeros(); } @@ -995,6 +1073,7 @@ template void Factory::commit_status() { commit_settlement(); commit_resistance(); commit_damping_force(); + commit_nonviscous_force(); commit_inertial_force(); commit_displacement(); commit_velocity(); @@ -1038,6 +1117,12 @@ template void Factory::commit_damping_force() { incre_damping_force.zeros(); } +template void Factory::commit_nonviscous_force() { + if(trial_nonviscous_force.is_empty()) return; + current_nonviscous_force = trial_nonviscous_force; + incre_nonviscous_force.zeros(); +} + template void Factory::commit_inertial_force() { if(trial_inertial_force.is_empty()) return; current_inertial_force = trial_inertial_force; @@ -1080,6 +1165,7 @@ template void Factory::commit_pre_status() { commit_pre_settlement(); commit_pre_resistance(); commit_pre_damping_force(); + commit_pre_nonviscous_force(); commit_pre_inertial_force(); commit_pre_displacement(); commit_pre_velocity(); @@ -1099,6 +1185,8 @@ template void Factory::commit_pre_resistance() { if(!current_resistan template void Factory::commit_pre_damping_force() { if(!current_damping_force.is_empty()) pre_damping_force = current_damping_force; } +template void Factory::commit_pre_nonviscous_force() { if(!current_nonviscous_force.is_empty()) pre_nonviscous_force = current_nonviscous_force; } + template void Factory::commit_pre_inertial_force() { if(!current_inertial_force.is_empty()) pre_inertial_force = current_inertial_force; } template void Factory::commit_pre_displacement() { if(!current_displacement.is_empty()) pre_displacement = current_displacement; } @@ -1122,6 +1210,7 @@ template void Factory::clear_status() { clear_settlement(); clear_resistance(); clear_damping_force(); + clear_nonviscous_force(); clear_inertial_force(); clear_displacement(); clear_velocity(); @@ -1167,6 +1256,13 @@ template void Factory::clear_damping_force() { if(!current_damping_force.is_empty()) current_damping_force.zeros(); } +template void Factory::clear_nonviscous_force() { + if(!pre_nonviscous_force.is_empty()) pre_nonviscous_force.zeros(); + if(!trial_nonviscous_force.is_empty()) trial_nonviscous_force.zeros(); + if(!incre_nonviscous_force.is_empty()) incre_nonviscous_force.zeros(); + if(!current_nonviscous_force.is_empty()) current_nonviscous_force.zeros(); +} + template void Factory::clear_inertial_force() { if(!pre_inertial_force.is_empty()) pre_inertial_force.zeros(); if(!trial_inertial_force.is_empty()) trial_inertial_force.zeros(); @@ -1216,6 +1312,7 @@ template void Factory::reset_status() { reset_settlement(); reset_resistance(); reset_damping_force(); + reset_nonviscous_force(); reset_inertial_force(); reset_displacement(); reset_velocity(); @@ -1259,6 +1356,12 @@ template void Factory::reset_damping_force() { incre_damping_force.zeros(); } +template void Factory::reset_nonviscous_force() { + if(trial_nonviscous_force.is_empty()) return; + trial_nonviscous_force = current_nonviscous_force; + incre_nonviscous_force.zeros(); +} + template void Factory::reset_inertial_force() { if(trial_inertial_force.is_empty()) return; trial_inertial_force = current_inertial_force; @@ -1303,6 +1406,8 @@ template void Factory::clear_mass() { if(global_mass != nullptr) glob template void Factory::clear_damping() { if(global_damping != nullptr) global_damping->zeros(); } +template void Factory::clear_nonviscous() { if(global_nonviscous != nullptr) global_nonviscous->zeros(); } + template void Factory::clear_stiffness() { if(global_stiffness != nullptr) global_stiffness->zeros(); } template void Factory::clear_geometry() { if(global_geometry != nullptr) global_geometry->zeros(); } @@ -1318,6 +1423,7 @@ template void Factory::clear_auxiliary() { template void Factory::reset() { global_mass = nullptr; global_damping = nullptr; + global_nonviscous = nullptr; global_stiffness = nullptr; global_geometry = nullptr; } @@ -1332,6 +1438,11 @@ template void Factory::assemble_damping_force(const Mat& ER, const for(auto I = 0llu; I < EI.n_elem; ++I) trial_damping_force(EI(I)) += ER(I); } +template void Factory::assemble_nonviscous_force(const Mat& ER, const uvec& EI) { + if(ER.is_empty()) return; + for(auto I = 0llu; I < EI.n_elem; ++I) trial_nonviscous_force(EI(I)) += ER(I); +} + template void Factory::assemble_inertial_force(const Mat& ER, const uvec& EI) { if(ER.is_empty()) return; for(auto I = 0llu; I < EI.n_elem; ++I) trial_inertial_force(EI(I)) += ER(I); @@ -1348,6 +1459,8 @@ template void Factory::assemble_mass(const Mat& EM, const uvec& EI template void Factory::assemble_damping(const Mat& EC, const uvec& EI, const std::vector& MAP) { this->assemble_matrix_helper(global_damping, EC, EI, MAP); } +template void Factory::assemble_nonviscous(const Mat& EC, const uvec& EI, const std::vector& MAP) { this->assemble_matrix_helper(global_nonviscous, EC, EI, MAP); } + template void Factory::assemble_stiffness(const Mat& EK, const uvec& EI, const std::vector& MAP) { this->assemble_matrix_helper(global_stiffness, EK, EI, MAP); } template void Factory::assemble_geometry(const Mat& EG, const uvec& EI, const std::vector& MAP) { this->assemble_matrix_helper(global_geometry, EG, EI, MAP); } @@ -1412,6 +1525,8 @@ template shared_ptr>& Factory::modify_mass() { return glob template shared_ptr>& Factory::modify_damping() { return global_damping; } +template shared_ptr>& Factory::modify_nonviscous() { return global_nonviscous; } + template shared_ptr>& Factory::modify_stiffness() { return global_stiffness; } template shared_ptr>& Factory::modify_geometry() { return global_geometry; } @@ -1454,6 +1569,8 @@ template void Factory::set_trial_resistance(const Col& R) { trial_ template void Factory::set_trial_damping_force(const Col& R) { trial_damping_force = R; } +template void Factory::set_trial_nonviscous_force(const Col& R) { trial_nonviscous_force = R; } + template void Factory::set_trial_inertial_force(const Col& R) { trial_inertial_force = R; } template void Factory::set_trial_displacement(const Col& D) { trial_displacement = D; } @@ -1476,6 +1593,8 @@ template void Factory::set_incre_resistance(const Col& R) { incre_ template void Factory::set_incre_damping_force(const Col& R) { incre_damping_force = R; } +template void Factory::set_incre_nonviscous_force(const Col& R) { incre_nonviscous_force = R; } + template void Factory::set_incre_inertial_force(const Col& R) { incre_inertial_force = R; } template void Factory::set_incre_displacement(const Col& D) { incre_displacement = D; } @@ -1498,6 +1617,8 @@ template void Factory::set_current_resistance(const Col& R) { curr template void Factory::set_current_damping_force(const Col& R) { current_damping_force = R; } +template void Factory::set_current_nonviscous_force(const Col& R) { current_nonviscous_force = R; } + template void Factory::set_current_inertial_force(const Col& R) { current_inertial_force = R; } template void Factory::set_current_displacement(const Col& D) { current_displacement = D; } @@ -1520,6 +1641,8 @@ template void Factory::set_pre_resistance(const Col& R) { pre_resi template void Factory::set_pre_damping_force(const Col& R) { pre_damping_force = R; } +template void Factory::set_pre_nonviscous_force(const Col& R) { pre_nonviscous_force = R; } + template void Factory::set_pre_inertial_force(const Col& R) { pre_inertial_force = R; } template void Factory::set_pre_displacement(const Col& D) { pre_displacement = D; } @@ -1542,6 +1665,8 @@ template const Col& Factory::get_trial_resistance() const { return template const Col& Factory::get_trial_damping_force() const { return trial_damping_force; } +template const Col& Factory::get_trial_nonviscous_force() const { return trial_nonviscous_force; } + template const Col& Factory::get_trial_inertial_force() const { return trial_inertial_force; } template const Col& Factory::get_trial_displacement() const { return trial_displacement; } @@ -1564,6 +1689,8 @@ template const Col& Factory::get_incre_resistance() const { return template const Col& Factory::get_incre_damping_force() const { return incre_damping_force; } +template const Col& Factory::get_incre_nonviscous_force() const { return incre_nonviscous_force; } + template const Col& Factory::get_incre_inertial_force() const { return incre_inertial_force; } template const Col& Factory::get_incre_displacement() const { return incre_displacement; } @@ -1586,6 +1713,8 @@ template const Col& Factory::get_current_resistance() const { retu template const Col& Factory::get_current_damping_force() const { return current_damping_force; } +template const Col& Factory::get_current_nonviscous_force() const { return current_nonviscous_force; } + template const Col& Factory::get_current_inertial_force() const { return current_inertial_force; } template const Col& Factory::get_current_displacement() const { return current_displacement; } @@ -1608,6 +1737,8 @@ template const Col& Factory::get_pre_resistance() const { return p template const Col& Factory::get_pre_damping_force() const { return pre_damping_force; } +template const Col& Factory::get_pre_nonviscous_force() const { return pre_nonviscous_force; } + template const Col& Factory::get_pre_inertial_force() const { return pre_inertial_force; } template const Col& Factory::get_pre_displacement() const { return pre_displacement; } @@ -1630,6 +1761,8 @@ template Col& Factory::modify_trial_resistance() { return trial_re template Col& Factory::modify_trial_damping_force() { return trial_damping_force; } +template Col& Factory::modify_trial_nonviscous_force() { return trial_nonviscous_force; } + template Col& Factory::modify_trial_inertial_force() { return trial_inertial_force; } template Col& Factory::modify_trial_displacement() { return trial_displacement; } @@ -1652,6 +1785,8 @@ template Col& Factory::modify_incre_resistance() { return incre_re template Col& Factory::modify_incre_damping_force() { return incre_damping_force; } +template Col& Factory::modify_incre_nonviscous_force() { return incre_nonviscous_force; } + template Col& Factory::modify_incre_inertial_force() { return incre_inertial_force; } template Col& Factory::modify_incre_displacement() { return incre_displacement; } @@ -1674,6 +1809,8 @@ template Col& Factory::modify_current_resistance() { return curren template Col& Factory::modify_current_damping_force() { return current_damping_force; } +template Col& Factory::modify_current_nonviscous_force() { return current_nonviscous_force; } + template Col& Factory::modify_current_inertial_force() { return current_inertial_force; } template Col& Factory::modify_current_displacement() { return current_displacement; } @@ -1696,6 +1833,8 @@ template Col& Factory::modify_pre_resistance() { return pre_resist template Col& Factory::modify_pre_damping_force() { return pre_damping_force; } +template Col& Factory::modify_pre_nonviscous_force() { return pre_nonviscous_force; } + template Col& Factory::modify_pre_inertial_force() { return pre_inertial_force; } template Col& Factory::modify_pre_displacement() { return pre_displacement; } @@ -1736,6 +1875,11 @@ template void Factory::update_trial_damping_force(const Col& R) { incre_damping_force = trial_damping_force - current_damping_force; } +template void Factory::update_trial_nonviscous_force(const Col& R) { + trial_nonviscous_force = R; + incre_nonviscous_force = trial_nonviscous_force - current_nonviscous_force; +} + template void Factory::update_trial_inertial_force(const Col& R) { trial_inertial_force = R; incre_inertial_force = trial_inertial_force - current_inertial_force; @@ -1791,6 +1935,11 @@ template void Factory::update_incre_damping_force(const Col& R) { trial_damping_force = current_damping_force + incre_damping_force; } +template void Factory::update_incre_nonviscous_force(const Col& R) { + incre_nonviscous_force = R; + trial_nonviscous_force = current_nonviscous_force + incre_nonviscous_force; +} + template void Factory::update_incre_inertial_force(const Col& R) { incre_inertial_force = R; trial_inertial_force = current_inertial_force + incre_inertial_force; @@ -1846,6 +1995,11 @@ template void Factory::update_current_damping_force(const Col& R) incre_damping_force.zeros(); } +template void Factory::update_current_nonviscous_force(const Col& R) { + trial_nonviscous_force = current_nonviscous_force = R; + incre_nonviscous_force.zeros(); +} + template void Factory::update_current_inertial_force(const Col& R) { trial_inertial_force = current_inertial_force = R; incre_inertial_force.zeros(); @@ -1901,6 +2055,11 @@ template void Factory::update_trial_damping_force_by(const Col& R) incre_damping_force = trial_damping_force - current_damping_force; } +template void Factory::update_trial_nonviscous_force_by(const Col& R) { + trial_nonviscous_force += R; + incre_nonviscous_force = trial_nonviscous_force - current_nonviscous_force; +} + template void Factory::update_trial_inertial_force_by(const Col& R) { trial_inertial_force += R; incre_inertial_force = trial_inertial_force - current_inertial_force; @@ -1956,6 +2115,11 @@ template void Factory::update_incre_damping_force_by(const Col& R) trial_damping_force = current_damping_force + incre_damping_force; } +template void Factory::update_incre_nonviscous_force_by(const Col& R) { + incre_nonviscous_force += R; + trial_nonviscous_force = current_nonviscous_force + incre_nonviscous_force; +} + template void Factory::update_incre_inertial_force_by(const Col& R) { incre_inertial_force += R; trial_inertial_force = current_inertial_force + incre_inertial_force; @@ -2011,6 +2175,11 @@ template void Factory::update_current_damping_force_by(const Col& incre_damping_force.zeros(); } +template void Factory::update_current_nonviscous_force_by(const Col& R) { + trial_nonviscous_force = current_nonviscous_force += R; + incre_nonviscous_force.zeros(); +} + template void Factory::update_current_inertial_force_by(const Col& R) { trial_inertial_force = current_inertial_force += R; incre_inertial_force.zeros(); diff --git a/Domain/Group/GroupGroup.cpp b/Domain/Group/GroupGroup.cpp index e954bfa87..89bf2eb07 100644 --- a/Domain/Group/GroupGroup.cpp +++ b/Domain/Group/GroupGroup.cpp @@ -20,7 +20,8 @@ #include GroupGroup::GroupGroup(const unsigned T, uvec&& GT) - : Group(T, std::forward(GT)) {} + : Group(T) + , group_tag(std::forward(GT)) {} void GroupGroup::initialize(const shared_ptr& D) { uword size = 0; diff --git a/Domain/Group/GroupParser.cpp b/Domain/Group/GroupParser.cpp new file mode 100644 index 000000000..ebf926db4 --- /dev/null +++ b/Domain/Group/GroupParser.cpp @@ -0,0 +1,213 @@ +/******************************************************************************* + * Copyright (C) 2017-2023 Theodore Chang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + ******************************************************************************/ + +#include "GroupParser.h" +#include +#include +#include +#include +#include +#include + +using std::vector; + +void new_nodegroup(unique_ptr& return_obj, istringstream& command) { + unsigned tag; + if(!get_input(command, tag)) { + suanpan_error("A valid tag is required.\n"); + return; + } + + vector pool; + get_input(command, pool); + + return_obj = make_unique(tag, pool); +} + +void new_customnodegroup(unique_ptr& return_obj, istringstream& command) { + unsigned tag, expression; + if(!get_input(command, tag, expression)) { + suanpan_error("A valid tag is required.\n"); + return; + } + + return_obj = make_unique(tag, expression); +} + +void new_elementgroup(unique_ptr& return_obj, istringstream& command) { + unsigned tag; + if(!get_input(command, tag)) { + suanpan_error("A valid tag is required.\n"); + return; + } + + vector pool; + get_input(command, pool); + + return_obj = make_unique(tag, pool); +} + +void new_generate(unique_ptr& return_obj, istringstream& command) { + string type; + if(!get_input(command, type)) { + suanpan_error("A valid type is required.\n"); + return; + } + + unsigned tag; + if(!get_input(command, tag)) { + suanpan_error("A valid tag is required.\n"); + return; + } + + int start, interval, end; + if(!get_input(command, start)) { + suanpan_error("A valid tag is required.\n"); + return; + } + + if(!get_input(command, interval)) { + interval = 1; + end = start; + } + else if(!get_input(command, end)) { + end = interval; + interval = end > start ? 1 : -1; + } + + if(0 == interval) interval = 1; + + if(start == end) interval = 1; + else if(start < end && interval < 0 || start > end && interval > 0) interval = -interval; + + vector tag_pool; + + tag_pool.reserve(std::max(1, (end - start) / interval + 1)); + + while(start <= end) { + tag_pool.emplace_back(start); + start += interval; + } + + return_obj = make_unique(tag, tag_pool); + + if(is_equal(type, "nodegroup")) return_obj = make_unique(tag, tag_pool); + else if(is_equal(type, "elementgroup")) return_obj = make_unique(tag, tag_pool); +} + +void new_generatebyrule(unique_ptr& return_obj, istringstream& command) { + if(string type; !get_input(command, type) || !is_equal(type, "nodegroup")) { + suanpan_error("A valid type is required.\n"); + return; + } + + unsigned tag; + if(!get_input(command, tag)) { + suanpan_error("A valid tag is required.\n"); + return; + } + + unsigned dof; + if(!get_input(command, dof)) { + suanpan_error("A valid dof identifier is required.\n"); + return; + } + + vector pool; + get_input(command, pool); + + return_obj = make_unique(tag, dof, pool); +} + +void new_generatebyplane(unique_ptr& return_obj, istringstream& command) { + if(string type; !get_input(command, type) || !is_equal(type, "nodegroup")) { + suanpan_error("A valid type is required.\n"); + return; + } + + unsigned tag; + if(!get_input(command, tag)) { + suanpan_error("A valid tag is required.\n"); + return; + } + + vector pool; + get_input(command, pool); + + if(pool.empty()) return; + + return_obj = make_unique(tag, pool); +} + +void new_generatebypoint(unique_ptr& return_obj, istringstream& command) { + if(string type; !get_input(command, type) || !is_equal(type, "nodegroup")) { + suanpan_error("A valid type is required.\n"); + return; + } + + unsigned tag; + if(!get_input(command, tag)) { + suanpan_error("A valid tag is required.\n"); + return; + } + + vector pool; + get_input(command, pool); + + if(pool.size() % 2 != 0) return; + + const auto size = static_cast(pool.size()) / 2; + + return_obj = make_unique(tag, vector(pool.begin(), pool.begin() + size), vector(pool.end() - size, pool.end())); +} + +void new_groupgroup(unique_ptr& return_obj, istringstream& command) { + unsigned tag; + if(!get_input(command, tag)) { + suanpan_error("A valid tag is required.\n"); + return; + } + + vector pool; + get_input(command, pool); + + return_obj = make_unique(tag, pool); +} + +int create_new_group(const shared_ptr& domain, istringstream& command) { + string group_id; + if(!get_input(command, group_id)) { + suanpan_error("A valid group type is required.\n"); + return SUANPAN_SUCCESS; + } + + unique_ptr new_group = nullptr; + + if(is_equal(group_id, "nodegroup")) new_nodegroup(new_group, command); + else if(is_equal(group_id, "customnodegroup")) new_customnodegroup(new_group, command); + else if(is_equal(group_id, "elementgroup")) new_elementgroup(new_group, command); + else if(is_equal(group_id, "groupgroup")) new_groupgroup(new_group, command); + else if(is_equal(group_id, "generate")) new_generate(new_group, command); + else if(is_equal(group_id, "generatebyrule")) new_generatebyrule(new_group, command); + else if(is_equal(group_id, "generatebypoint")) new_generatebypoint(new_group, command); + else if(is_equal(group_id, "generatebyplane")) new_generatebyplane(new_group, command); + + if(new_group == nullptr || !domain->insert(std::move(new_group))) + suanpan_error("Fail to create new group via \"{}\".\n", command.str()); + + return SUANPAN_SUCCESS; +} diff --git a/Section/ParameterType.h b/Domain/Group/GroupParser.h similarity index 75% rename from Section/ParameterType.h rename to Domain/Group/GroupParser.h index 1100505f4..09d441c68 100644 --- a/Section/ParameterType.h +++ b/Domain/Group/GroupParser.h @@ -15,24 +15,13 @@ * along with this program. If not, see . ******************************************************************************/ -#ifndef PARAMETERTYPE_H -#define PARAMETERTYPE_H +#ifndef GROUPPARSER_H +#define GROUPPARSER_H -enum class ParameterType { - NONE, - DENSITY, - LINEARDENSITY, - POISSONSRATIO, - AREA, - YOUNGSMODULUS, - ELASTICMODULUS, - E, - SHEARMODULUS, - G, - PEAKSTRAIN, - CRACKSTRAIN, - PLANETYPE, - BULKMODULUS -}; +#include + +class DomainBase; + +int create_new_group(const std::shared_ptr&, std::istringstream&); #endif diff --git a/Domain/MetaMat/operator_times.hpp b/Domain/MetaMat/operator_times.hpp index 17a6b1fed..f2b7394c7 100644 --- a/Domain/MetaMat/operator_times.hpp +++ b/Domain/MetaMat/operator_times.hpp @@ -18,15 +18,11 @@ #ifndef OPERATOR_TIMES_HPP #define OPERATOR_TIMES_HPP -#include "FullMat.hpp" -#include "SymmPackMat.hpp" - -template unique_ptr> operator*(const T value, const unique_ptr>& M) { +template unique_ptr> operator*(const T value, unique_ptr>&& M) { if(nullptr == M) return nullptr; - auto N = M->make_copy(); - N->operator*=(value); - return N; + M->operator*=(value); + return std::forward>>(M); } template unique_ptr> operator*(const T value, const shared_ptr>& M) { @@ -37,134 +33,48 @@ template unique_ptr> operator*(const T value, const shared_pt return N; } -template const shared_ptr>& operator*=(const shared_ptr>& M, const T value) { - M->operator*=(value); - return M; -} +template Mat operator*(const shared_ptr>& M, const Mat& A) { return M->operator*(A); } -template const unique_ptr>& operator*=(const unique_ptr>& M, const T value) { - M->operator*=(value); - return M; -} - -template const shared_ptr>& operator+=(const shared_ptr>& M, const shared_ptr>& A) { - M->operator+=(A); - return M; -} +template Mat operator*(const unique_ptr>& M, const Mat& A) { return M->operator*(A); } -template const unique_ptr>& operator+=(const unique_ptr>& M, const shared_ptr>& A) { - M->operator+=(A); +template const shared_ptr>& operator*=(const shared_ptr>& M, const T value) { + M->operator*=(value); return M; } -template const unique_ptr>& operator+=(const unique_ptr>& M, const triplet_form& A) { +template unique_ptr> operator+(const shared_ptr>& A, const shared_ptr>& B) { + auto M = B->make_copy(); M->operator+=(A); return M; } -template const shared_ptr>& operator+=(const shared_ptr>& M, unique_ptr>&& A) { - M->operator+=(std::forward>>(A)); - return M; -} - -template unique_ptr> operator+(unique_ptr>&& A, unique_ptr>&& B) { - if(nullptr == A && nullptr == B) return nullptr; - - if(nullptr != A) { - A->operator+=(std::forward>>(B)); - return std::forward>>(A); - } - - return std::forward>>(B); -} - template unique_ptr> operator+(const shared_ptr>& A, unique_ptr>&& B) { B->operator+=(A); return std::forward>>(B); } -template unique_ptr> operator+(unique_ptr>&& B, const shared_ptr>& A) { - B->operator+=(A); - return std::forward>>(B); +template unique_ptr> operator+(unique_ptr>&& A, unique_ptr>&& B) { + A->operator+=(std::forward>>(B)); + return std::forward>>(A); } -template const shared_ptr>& operator-=(const shared_ptr>& M, const shared_ptr>& A) { - M->operator-=(A); +template const shared_ptr>& operator+=(const shared_ptr>& M, const shared_ptr>& A) { + M->operator+=(A); return M; } -template const shared_ptr>& operator-=(const shared_ptr>& M, unique_ptr>&& A) { - M->operator-=(std::forward>>(A)); +template const shared_ptr>& operator+=(const shared_ptr>& M, unique_ptr>&& A) { + M->operator+=(std::forward>>(A)); return M; } -template unique_ptr> operator-(unique_ptr>&& A, unique_ptr>&& B) { - if(nullptr == A && nullptr == B) return nullptr; - - if(nullptr != A) { - A->operator-=(std::forward>>(B)); - return std::forward>>(A); - } - - return std::forward>>(B); -} - -template unique_ptr> operator-(const shared_ptr>& A, unique_ptr>&& B) { - B->operator-=(A); - return std::forward>>(B); -} - -template unique_ptr> operator-(unique_ptr>&& B, const shared_ptr>& A) { - B->operator-=(A); - return std::forward>>(B); -} - -template Mat operator*(const shared_ptr>& M, const Mat& A) { - if(nullptr == M) return nullptr; - - return M->operator*(A); -} - -template Mat operator*(const unique_ptr>& M, const Mat& A) { - if(nullptr == M) return nullptr; - - return M->operator*(A); -} - -template Mat operator*(const Mat& A, const FullMat& B) { - Mat C(A.n_rows, A.n_cols); - - constexpr auto TRAN = 'N'; - - const auto M = static_cast(A.n_rows); - const auto N = static_cast(B.n_cols); - const auto K = static_cast(A.n_cols); - T ALPHA = 1.; - const auto LDA = M; - const auto LDB = K; - T BETA = 0.; - const auto LDC = M; - - if(std::is_same_v) { - using E = float; - arma_fortran(arma_sgemm)(&TRAN, &TRAN, &M, &N, &K, (E*)&ALPHA, (E*)A.memptr(), &LDA, (E*)B.memptr(), &LDB, (E*)&BETA, (E*)C.memptr(), &LDC); - } - else if(std::is_same_v) { - using E = double; - arma_fortran(arma_dgemm)(&TRAN, &TRAN, &M, &N, &K, (E*)&ALPHA, (E*)A.memptr(), &LDA, (E*)B.memptr(), &LDB, (E*)&BETA, (E*)C.memptr(), &LDC); - } - - return C; -} - -template triplet_form operator*(const T value, const triplet_form& M) { - auto N = M; - N *= value; - return N; +template const unique_ptr>& operator+=(const unique_ptr>& M, const shared_ptr>& A) { + M->operator+=(A); + return M; } -template triplet_form operator*(const T value, triplet_form&& M) { - M *= value; +template const unique_ptr>& operator+=(const unique_ptr>& M, const triplet_form& A) { + M->operator+=(A); return M; } diff --git a/Domain/MetaMat/triplet_form.hpp b/Domain/MetaMat/triplet_form.hpp index 1aa40fcb1..3a9c35fb8 100644 --- a/Domain/MetaMat/triplet_form.hpp +++ b/Domain/MetaMat/triplet_form.hpp @@ -118,8 +118,8 @@ template class triplet_form final { } public: - typedef data_t data_type; - typedef index_t index_type; + using data_type = data_t; + using index_type = index_t; template friend class csc_form; template friend class csr_form; diff --git a/Domain/Node.cpp b/Domain/Node.cpp index 8efaccb3c..42e33c108 100644 --- a/Domain/Node.cpp +++ b/Domain/Node.cpp @@ -150,6 +150,8 @@ void Node::set_current_resistance(const vec& R) { current_resistance = R; } void Node::set_current_damping_force(const vec& R) { current_damping_force = R; } +void Node::set_current_nonviscous_force(const vec& R) { current_nonviscous_force = R; } + void Node::set_current_inertial_force(const vec& R) { current_inertial_force = R; } void Node::set_current_displacement(const vec& D) { current_displacement = D; } @@ -162,6 +164,8 @@ void Node::set_incre_resistance(const vec& R) { incre_resistance = R; } void Node::set_incre_damping_force(const vec& R) { incre_damping_force = R; } +void Node::set_incre_nonviscous_force(const vec& R) { incre_nonviscous_force = R; } + void Node::set_incre_inertial_force(const vec& R) { incre_inertial_force = R; } void Node::set_incre_displacement(const vec& D) { incre_displacement = D; } @@ -174,6 +178,8 @@ void Node::set_trial_resistance(const vec& R) { trial_resistance = R; } void Node::set_trial_damping_force(const vec& R) { trial_damping_force = R; } +void Node::set_trial_nonviscous_force(const vec& R) { trial_nonviscous_force = R; } + void Node::set_trial_inertial_force(const vec& R) { trial_inertial_force = R; } void Node::set_trial_displacement(const vec& D) { trial_displacement = D; } @@ -186,6 +192,8 @@ const vec& Node::get_current_resistance() const { return current_resistance; } const vec& Node::get_current_damping_force() const { return current_damping_force; } +const vec& Node::get_current_nonviscous_force() const { return current_nonviscous_force; } + const vec& Node::get_current_inertial_force() const { return current_inertial_force; } const vec& Node::get_current_displacement() const { return current_displacement; } @@ -198,6 +206,8 @@ const vec& Node::get_incre_resistance() const { return incre_resistance; } const vec& Node::get_incre_damping_force() const { return incre_damping_force; } +const vec& Node::get_incre_nonviscous_force() const { return incre_nonviscous_force; } + const vec& Node::get_incre_inertial_force() const { return incre_inertial_force; } const vec& Node::get_incre_displacement() const { return incre_displacement; } @@ -210,6 +220,8 @@ const vec& Node::get_trial_resistance() const { return trial_resistance; } const vec& Node::get_trial_damping_force() const { return trial_damping_force; } +const vec& Node::get_trial_nonviscous_force() const { return trial_nonviscous_force; } + const vec& Node::get_trial_inertial_force() const { return trial_inertial_force; } const vec& Node::get_trial_displacement() const { return trial_displacement; } @@ -228,6 +240,11 @@ void Node::update_current_damping_force(const vec& R) { incre_damping_force.zeros(R.size()); } +void Node::update_current_nonviscous_force(const vec& R) { + trial_nonviscous_force = current_nonviscous_force = R; + incre_nonviscous_force.zeros(R.size()); +} + void Node::update_current_inertial_force(const vec& R) { trial_inertial_force = current_inertial_force = R; incre_inertial_force.zeros(R.size()); @@ -262,6 +279,13 @@ void Node::update_incre_damping_force(const vec& R) { trial_damping_force = current_damping_force + incre_damping_force; } +void Node::update_incre_nonviscous_force(const vec& R) { + incre_nonviscous_force = R; + if(current_nonviscous_force.empty()) current_nonviscous_force.zeros(R.size()); + else current_nonviscous_force.resize(R.size()); + trial_nonviscous_force = current_nonviscous_force + incre_nonviscous_force; +} + void Node::update_incre_inertial_force(const vec& R) { incre_inertial_force = R; if(current_inertial_force.empty()) current_inertial_force.zeros(R.size()); @@ -304,6 +328,13 @@ void Node::update_trial_damping_force(const vec& R) { incre_damping_force = trial_damping_force - current_damping_force; } +void Node::update_trial_nonviscous_force(const vec& R) { + trial_nonviscous_force = R; + if(current_nonviscous_force.empty()) current_nonviscous_force.zeros(R.size()); + else current_nonviscous_force.resize(R.size()); + incre_nonviscous_force = trial_nonviscous_force - current_nonviscous_force; +} + void Node::update_trial_inertial_force(const vec& R) { trial_inertial_force = R; if(current_inertial_force.empty()) current_inertial_force.zeros(R.size()); @@ -404,6 +435,10 @@ void Node::commit_status() { current_damping_force = trial_damping_force; incre_damping_force.zeros(); } + if(!trial_nonviscous_force.is_empty()) { + current_nonviscous_force = trial_nonviscous_force; + incre_nonviscous_force.zeros(); + } if(!trial_inertial_force.is_empty()) { current_inertial_force = trial_inertial_force; incre_inertial_force.zeros(); @@ -431,6 +466,10 @@ void Node::reset_status() { trial_damping_force = current_damping_force; incre_damping_force.zeros(); } + if(!current_nonviscous_force.is_empty()) { + trial_nonviscous_force = current_nonviscous_force; + incre_nonviscous_force.zeros(); + } if(!current_inertial_force.is_empty()) { trial_inertial_force = current_inertial_force; incre_inertial_force.zeros(); @@ -460,6 +499,11 @@ void Node::clear_status() { incre_damping_force.zeros(); trial_damping_force.zeros(); } + if(!current_nonviscous_force.is_empty()) { + current_nonviscous_force.zeros(); + incre_nonviscous_force.zeros(); + trial_nonviscous_force.zeros(); + } if(!current_inertial_force.is_empty()) { current_inertial_force.zeros(); incre_inertial_force.zeros(); @@ -493,24 +537,6 @@ std::vector Node::record(const OutputType L) const { else if(L == OutputType::U) data.push_back(current_displacement); else if(L == OutputType::V) data.push_back(current_velocity); else if(L == OutputType::A) data.push_back(current_acceleration); - else if(L == OutputType::U1) data.emplace_back(vec{current_displacement.n_elem >= 1 ? current_displacement(0) : 0.}); - else if(L == OutputType::U2) data.emplace_back(vec{current_displacement.n_elem >= 2 ? current_displacement(1) : 0.}); - else if(L == OutputType::U3) data.emplace_back(vec{current_displacement.n_elem >= 3 ? current_displacement(2) : 0.}); - else if(L == OutputType::U4 || L == OutputType::UR1) data.emplace_back(vec{current_displacement.n_elem >= 4 ? current_displacement(3) : 0.}); - else if(L == OutputType::U5 || L == OutputType::UR2) data.emplace_back(vec{current_displacement.n_elem >= 5 ? current_displacement(4) : 0.}); - else if(L == OutputType::U6 || L == OutputType::UR3) data.emplace_back(vec{current_displacement.n_elem >= 6 ? current_displacement(5) : 0.}); - else if(L == OutputType::V1) data.emplace_back(vec{current_velocity.n_elem >= 1 ? current_velocity(0) : 0.}); - else if(L == OutputType::V2) data.emplace_back(vec{current_velocity.n_elem >= 2 ? current_velocity(1) : 0.}); - else if(L == OutputType::V3) data.emplace_back(vec{current_velocity.n_elem >= 3 ? current_velocity(2) : 0.}); - else if(L == OutputType::V4 || L == OutputType::VR1) data.emplace_back(vec{current_velocity.n_elem >= 4 ? current_velocity(3) : 0.}); - else if(L == OutputType::V5 || L == OutputType::VR2) data.emplace_back(vec{current_velocity.n_elem >= 5 ? current_velocity(4) : 0.}); - else if(L == OutputType::V6 || L == OutputType::VR3) data.emplace_back(vec{current_velocity.n_elem >= 6 ? current_velocity(5) : 0.}); - else if(L == OutputType::A1) data.emplace_back(vec{current_acceleration.n_elem >= 1 ? current_acceleration(0) : 0.}); - else if(L == OutputType::A2) data.emplace_back(vec{current_acceleration.n_elem >= 2 ? current_acceleration(1) : 0.}); - else if(L == OutputType::A3) data.emplace_back(vec{current_acceleration.n_elem >= 3 ? current_acceleration(2) : 0.}); - else if(L == OutputType::A4 || L == OutputType::AR1) data.emplace_back(vec{current_acceleration.n_elem >= 4 ? current_acceleration(3) : 0.}); - else if(L == OutputType::A5 || L == OutputType::AR2) data.emplace_back(vec{current_acceleration.n_elem >= 5 ? current_acceleration(4) : 0.}); - else if(L == OutputType::A6 || L == OutputType::AR3) data.emplace_back(vec{current_acceleration.n_elem >= 6 ? current_acceleration(5) : 0.}); else if(L == OutputType::RF1) data.emplace_back(vec{current_resistance.n_elem >= 1 ? current_resistance(0) : 0.}); else if(L == OutputType::RF2) data.emplace_back(vec{current_resistance.n_elem >= 2 ? current_resistance(1) : 0.}); else if(L == OutputType::RF3) data.emplace_back(vec{current_resistance.n_elem >= 3 ? current_resistance(2) : 0.}); @@ -529,6 +555,24 @@ std::vector Node::record(const OutputType L) const { else if(L == OutputType::IF4 || L == OutputType::IM1) data.emplace_back(vec{current_inertial_force.n_elem >= 4 ? current_inertial_force(3) : 0.}); else if(L == OutputType::IF5 || L == OutputType::IM2) data.emplace_back(vec{current_inertial_force.n_elem >= 5 ? current_inertial_force(4) : 0.}); else if(L == OutputType::IF6 || L == OutputType::IM3) data.emplace_back(vec{current_inertial_force.n_elem >= 6 ? current_inertial_force(5) : 0.}); + else if(L == OutputType::U1) data.emplace_back(vec{current_displacement.n_elem >= 1 ? current_displacement(0) : 0.}); + else if(L == OutputType::U2) data.emplace_back(vec{current_displacement.n_elem >= 2 ? current_displacement(1) : 0.}); + else if(L == OutputType::U3) data.emplace_back(vec{current_displacement.n_elem >= 3 ? current_displacement(2) : 0.}); + else if(L == OutputType::U4 || L == OutputType::UR1) data.emplace_back(vec{current_displacement.n_elem >= 4 ? current_displacement(3) : 0.}); + else if(L == OutputType::U5 || L == OutputType::UR2) data.emplace_back(vec{current_displacement.n_elem >= 5 ? current_displacement(4) : 0.}); + else if(L == OutputType::U6 || L == OutputType::UR3) data.emplace_back(vec{current_displacement.n_elem >= 6 ? current_displacement(5) : 0.}); + else if(L == OutputType::V1) data.emplace_back(vec{current_velocity.n_elem >= 1 ? current_velocity(0) : 0.}); + else if(L == OutputType::V2) data.emplace_back(vec{current_velocity.n_elem >= 2 ? current_velocity(1) : 0.}); + else if(L == OutputType::V3) data.emplace_back(vec{current_velocity.n_elem >= 3 ? current_velocity(2) : 0.}); + else if(L == OutputType::V4 || L == OutputType::VR1) data.emplace_back(vec{current_velocity.n_elem >= 4 ? current_velocity(3) : 0.}); + else if(L == OutputType::V5 || L == OutputType::VR2) data.emplace_back(vec{current_velocity.n_elem >= 5 ? current_velocity(4) : 0.}); + else if(L == OutputType::V6 || L == OutputType::VR3) data.emplace_back(vec{current_velocity.n_elem >= 6 ? current_velocity(5) : 0.}); + else if(L == OutputType::A1) data.emplace_back(vec{current_acceleration.n_elem >= 1 ? current_acceleration(0) : 0.}); + else if(L == OutputType::A2) data.emplace_back(vec{current_acceleration.n_elem >= 2 ? current_acceleration(1) : 0.}); + else if(L == OutputType::A3) data.emplace_back(vec{current_acceleration.n_elem >= 3 ? current_acceleration(2) : 0.}); + else if(L == OutputType::A4 || L == OutputType::AR1) data.emplace_back(vec{current_acceleration.n_elem >= 4 ? current_acceleration(3) : 0.}); + else if(L == OutputType::A5 || L == OutputType::AR2) data.emplace_back(vec{current_acceleration.n_elem >= 5 ? current_acceleration(4) : 0.}); + else if(L == OutputType::A6 || L == OutputType::AR3) data.emplace_back(vec{current_acceleration.n_elem >= 6 ? current_acceleration(5) : 0.}); return data; } diff --git a/Domain/Node.h b/Domain/Node.h index 5a842c25a..0c503408f 100644 --- a/Domain/Node.h +++ b/Domain/Node.h @@ -52,26 +52,29 @@ struct NodeData { uvec original_dof; // original indices uvec reordered_dof; // renumbered indices - vec current_resistance; // current resistance - vec current_damping_force; // current damping force - vec current_inertial_force; // current inertial force - vec current_displacement; // current displacement - vec current_velocity; // current velocity - vec current_acceleration; // current acceleration - - vec incre_resistance; // incremental resistance - vec incre_damping_force; // incremental damping force - vec incre_inertial_force; // incremental inertial force - vec incre_displacement; // incremental displacement - vec incre_velocity; // incremental velocity - vec incre_acceleration; // incremental acceleration - - vec trial_resistance; // trial resistance - vec trial_damping_force; // trial damping force - vec trial_inertial_force; // trial inertial force - vec trial_displacement; // trial displacement - vec trial_velocity; // trial velocity - vec trial_acceleration; // trial acceleration + vec current_resistance; // current resistance + vec current_damping_force; // current damping force + vec current_nonviscous_force; // current damping force + vec current_inertial_force; // current inertial force + vec current_displacement; // current displacement + vec current_velocity; // current velocity + vec current_acceleration; // current acceleration + + vec incre_resistance; // incremental resistance + vec incre_damping_force; // incremental damping force + vec incre_nonviscous_force; // incremental damping force + vec incre_inertial_force; // incremental inertial force + vec incre_displacement; // incremental displacement + vec incre_velocity; // incremental velocity + vec incre_acceleration; // incremental acceleration + + vec trial_resistance; // trial resistance + vec trial_damping_force; // trial damping force + vec trial_nonviscous_force; // trial damping force + vec trial_inertial_force; // trial inertial force + vec trial_displacement; // trial displacement + vec trial_velocity; // trial velocity + vec trial_acceleration; // trial acceleration }; class Node final : protected NodeData, public Tag { @@ -115,6 +118,7 @@ class Node final : protected NodeData, public Tag { void set_current_resistance(const vec&); void set_current_damping_force(const vec&); + void set_current_nonviscous_force(const vec&); void set_current_inertial_force(const vec&); void set_current_displacement(const vec&); void set_current_velocity(const vec&); @@ -122,6 +126,7 @@ class Node final : protected NodeData, public Tag { void set_incre_resistance(const vec&); void set_incre_damping_force(const vec&); + void set_incre_nonviscous_force(const vec&); void set_incre_inertial_force(const vec&); void set_incre_displacement(const vec&); void set_incre_velocity(const vec&); @@ -129,6 +134,7 @@ class Node final : protected NodeData, public Tag { void set_trial_resistance(const vec&); void set_trial_damping_force(const vec&); + void set_trial_nonviscous_force(const vec&); void set_trial_inertial_force(const vec&); void set_trial_displacement(const vec&); void set_trial_velocity(const vec&); @@ -136,6 +142,7 @@ class Node final : protected NodeData, public Tag { [[nodiscard]] const vec& get_current_resistance() const; [[nodiscard]] const vec& get_current_damping_force() const; + [[nodiscard]] const vec& get_current_nonviscous_force() const; [[nodiscard]] const vec& get_current_inertial_force() const; [[nodiscard]] const vec& get_current_displacement() const; [[nodiscard]] const vec& get_current_velocity() const; @@ -143,6 +150,7 @@ class Node final : protected NodeData, public Tag { [[nodiscard]] const vec& get_incre_resistance() const; [[nodiscard]] const vec& get_incre_damping_force() const; + [[nodiscard]] const vec& get_incre_nonviscous_force() const; [[nodiscard]] const vec& get_incre_inertial_force() const; [[nodiscard]] const vec& get_incre_displacement() const; [[nodiscard]] const vec& get_incre_velocity() const; @@ -150,6 +158,7 @@ class Node final : protected NodeData, public Tag { [[nodiscard]] const vec& get_trial_resistance() const; [[nodiscard]] const vec& get_trial_damping_force() const; + [[nodiscard]] const vec& get_trial_nonviscous_force() const; [[nodiscard]] const vec& get_trial_inertial_force() const; [[nodiscard]] const vec& get_trial_displacement() const; [[nodiscard]] const vec& get_trial_velocity() const; @@ -157,6 +166,7 @@ class Node final : protected NodeData, public Tag { void update_current_resistance(const vec&); void update_current_damping_force(const vec&); + void update_current_nonviscous_force(const vec&); void update_current_inertial_force(const vec&); void update_current_displacement(const vec&); void update_current_velocity(const vec&); @@ -164,6 +174,7 @@ class Node final : protected NodeData, public Tag { void update_incre_resistance(const vec&); void update_incre_damping_force(const vec&); + void update_incre_nonviscous_force(const vec&); void update_incre_inertial_force(const vec&); void update_incre_displacement(const vec&); void update_incre_velocity(const vec&); @@ -171,6 +182,7 @@ class Node final : protected NodeData, public Tag { void update_trial_resistance(const vec&); void update_trial_damping_force(const vec&); + void update_trial_nonviscous_force(const vec&); void update_trial_inertial_force(const vec&); void update_trial_displacement(const vec&); void update_trial_velocity(const vec&); diff --git a/Domain/Storage.hpp b/Domain/Storage.hpp index 3dfc02860..bc5dcd2aa 100644 --- a/Domain/Storage.hpp +++ b/Domain/Storage.hpp @@ -103,7 +103,7 @@ template class Storage : public std::enable_shared_from_this> pond; /**< data storage */ public: - typedef T object_type; + using object_type = T; Storage() = default; Storage(const Storage&) = delete; diff --git a/Driver.cmake b/Driver.cmake index b6a96549f..f06ac3949 100644 --- a/Driver.cmake +++ b/Driver.cmake @@ -44,8 +44,8 @@ else () else () # MSVC COMPILER if (USE_MPI) link_libraries(mkl_scalapack_lp64 mkl_blacs_intelmpi_lp64) - else() + else () link_libraries(libopenblas) - endif() + endif () endif () endif () diff --git a/Element/Beam/B21.cpp b/Element/Beam/B21.cpp index 6894932dd..77555a55e 100644 --- a/Element/Beam/B21.cpp +++ b/Element/Beam/B21.cpp @@ -25,7 +25,11 @@ B21::IntegrationPoint::IntegrationPoint(const double C, const double W, unique_p : coor(C) , weight(W) , b_section(std::forward>(M)) - , strain_mat(2, 3, fill::zeros) {} + , strain_mat(2, 3, fill::zeros) { + strain_mat(0, 0) = 1.; + strain_mat(1, 1) = 3. * coor - 1.; + strain_mat(1, 2) = 3. * coor + 1.; +} B21::B21(const unsigned T, uvec&& N, const unsigned S, const unsigned P, const bool F) : SectionElement2D(T, b_node, b_dof, std::forward(N), uvec{S}, F) @@ -46,15 +50,13 @@ int B21::initialize(const shared_ptr& D) { int_pt.reserve(int_pt_num); for(unsigned I = 0; I < int_pt_num; ++I) { int_pt.emplace_back(plan(I, 0), .5 * plan(I, 1), section_proto->get_copy()); - int_pt[I].strain_mat(0, 0) = 1.; - int_pt[I].strain_mat(1, 1) = 3. * plan(I, 0) - 1.; - int_pt[I].strain_mat(1, 2) = 3. * plan(I, 0) + 1.; + int_pt[I].b_section->set_characteristic_length(int_pt[I].weight * length); local_stiffness += int_pt[I].strain_mat.t() * int_pt[I].b_section->get_initial_stiffness() * int_pt[I].strain_mat * int_pt[I].weight / length; } trial_stiffness = current_stiffness = initial_stiffness = b_trans->to_global_stiffness_mat(local_stiffness); - if(const auto linear_density = section_proto->get_parameter(ParameterType::LINEARDENSITY); linear_density > 0.) trial_mass = current_mass = initial_mass = b_trans->to_global_mass_mat(linear_density); + if(const auto linear_density = section_proto->get_linear_density(); linear_density > 0.) trial_mass = current_mass = initial_mass = b_trans->to_global_mass_mat(linear_density); return SUANPAN_SUCCESS; } @@ -107,9 +109,9 @@ int B21::reset_status() { } vector B21::record(const OutputType P) { - vector output; - for(const auto& I : int_pt) for(const auto& J : I.b_section->record(P)) output.emplace_back(J); - return output; + vector data; + for(const auto& I : int_pt) append_to(data, I.b_section->record(P)); + return data; } void B21::print() { diff --git a/Element/Beam/B21.h b/Element/Beam/B21.h index ceda5a3eb..2b6bb583a 100644 --- a/Element/Beam/B21.h +++ b/Element/Beam/B21.h @@ -53,7 +53,8 @@ class B21 : public SectionElement2D { unique_ptr b_trans; public: - B21(unsigned, // tag + B21( + unsigned, // tag uvec&&, // node tags unsigned, // section tag unsigned = 6, // integration points diff --git a/Element/Beam/B21E.cpp b/Element/Beam/B21E.cpp index ced27ade8..7372f9e03 100644 --- a/Element/Beam/B21E.cpp +++ b/Element/Beam/B21E.cpp @@ -20,9 +20,6 @@ #include #include
-constexpr unsigned B21E::max_iteration = 20; -constexpr double B21E::tolerance = 1E-13; - B21E::B21E(const unsigned T, const unsigned W, uvec&& N, const unsigned S, const unsigned P, const bool F) : B21(T, std::forward(N), S, P, F) , a{1u == W ? 1llu : 2llu} @@ -38,9 +35,10 @@ int B21E::update_status() { vec local_resistance(3); auto counter = 0u; + auto ref_error = 1.; while(true) { - if(++counter > max_iteration) { - suanpan_error("Element {} fails to converge to {:.2E}.\n", get_tag(), tolerance); + if(max_iteration == ++counter) { + suanpan_error("Element {} fails to converge.\n", get_tag()); return SUANPAN_FAIL; } @@ -53,11 +51,12 @@ int B21E::update_status() { local_resistance += I.strain_mat.t() * I.b_section->get_trial_resistance() * I.weight; } - const auto error = norm(local_resistance(a)); const vec incre = solve(local_stiffness(a, a), local_resistance(a)); + const auto error = inf_norm(incre); + if(1u == counter) ref_error = error; suanpan_debug("Local iteration error: {:.5E}.\n", error); - if(error < tolerance && norm(incre) < tolerance) { + if(error < tolerance * ref_error || inf_norm(local_resistance(a)) < tolerance) { const mat t_mat = local_stiffness(b, b) - local_stiffness(b, a) * solve(local_stiffness(a, a), local_stiffness(a, b)); local_stiffness.zeros(); diff --git a/Element/Beam/B21E.h b/Element/Beam/B21E.h index 3147e5bb5..733ba81e1 100644 --- a/Element/Beam/B21E.h +++ b/Element/Beam/B21E.h @@ -32,8 +32,8 @@ #include "B21.h" class B21E final : public B21 { - static const unsigned max_iteration; - static const double tolerance; + static constexpr unsigned max_iteration = 20u; + static constexpr double tolerance = 1E-14; const uvec a, b; @@ -41,12 +41,13 @@ class B21E final : public B21 { vec current_rotation = zeros(a.n_elem); public: - B21E(unsigned, // tag - unsigned, // which - uvec&&, // node tags - unsigned, // section tag - unsigned = 6, // integration points - bool = false // nonlinear geometry switch + B21E( + unsigned, // tag + unsigned, // which + uvec&&, // node tags + unsigned, // section tag + unsigned = 6, // integration points + bool = false // nonlinear geometry switch ); int update_status() override; diff --git a/Element/Beam/B21H.cpp b/Element/Beam/B21H.cpp index 1396138fc..4ca100f3c 100644 --- a/Element/Beam/B21H.cpp +++ b/Element/Beam/B21H.cpp @@ -24,7 +24,11 @@ B21H::IntegrationPoint::IntegrationPoint(const double C, const double W, unique_ : coor(C) , weight(W) , b_section(std::forward>(M)) - , strain_mat(2, 3, fill::zeros) {} + , strain_mat(2, 3, fill::zeros) { + strain_mat(0, 0) = 1.; + strain_mat(1, 1) = 3. * coor - 1.; + strain_mat(1, 2) = 3. * coor + 1.; +} B21H::B21H(const unsigned T, uvec&& N, const unsigned S, const double L, const bool F) : SectionElement2D(T, b_node, b_dof, std::forward(N), uvec{S}, F) @@ -56,23 +60,13 @@ int B21H::initialize(const shared_ptr& D) { const auto& elastic_section_stiffness = section_proto->get_initial_stiffness(); // elastic part will be reused in computation elastic_local_stiffness.zeros(3, 3); - for(auto& I : elastic_int_pt) { - I.strain_mat(0, 0) = 1.; - I.strain_mat(1, 1) = 3. * I.coor - 1.; - I.strain_mat(1, 2) = 3. * I.coor + 1.; - elastic_local_stiffness += I.strain_mat.t() * elastic_section_stiffness * I.strain_mat * I.weight / length; - } + for(auto& I : elastic_int_pt) elastic_local_stiffness += I.strain_mat.t() * elastic_section_stiffness * I.strain_mat * I.weight / length; auto local_stiffness = elastic_local_stiffness; - for(auto& I : int_pt) { - I.strain_mat(0, 0) = 1.; - I.strain_mat(1, 1) = 3. * I.coor - 1.; - I.strain_mat(1, 2) = 3. * I.coor + 1.; - local_stiffness += I.strain_mat.t() * I.b_section->get_initial_stiffness() * I.strain_mat * I.weight / length; - } + for(auto& I : int_pt) local_stiffness += I.strain_mat.t() * I.b_section->get_initial_stiffness() * I.strain_mat * I.weight / length; trial_stiffness = current_stiffness = initial_stiffness = b_trans->to_global_stiffness_mat(local_stiffness); - if(const auto linear_density = section_proto->get_parameter(ParameterType::LINEARDENSITY); linear_density > 0.) trial_mass = current_mass = initial_mass = b_trans->to_global_mass_mat(linear_density); + if(const auto linear_density = section_proto->get_linear_density(); linear_density > 0.) trial_mass = current_mass = initial_mass = b_trans->to_global_mass_mat(linear_density); return SUANPAN_SUCCESS; } @@ -125,13 +119,13 @@ int B21H::reset_status() { } vector B21H::record(const OutputType P) { - vector output; - for(const auto& I : int_pt[0].b_section->record(P)) output.emplace_back(I); - for(const auto& I : int_pt[1].b_section->record(P)) output.emplace_back(I); - for(const auto& I : elastic_int_pt) for(const auto& J : I.b_section->record(P)) output.emplace_back(J); - for(const auto& I : int_pt[2].b_section->record(P)) output.emplace_back(I); - for(const auto& I : int_pt[3].b_section->record(P)) output.emplace_back(I); - return output; + vector data; + append_to(data, int_pt[0].b_section->record(P)); + append_to(data, int_pt[1].b_section->record(P)); + for(const auto& I : elastic_int_pt) append_to(data, I.b_section->record(P)); + append_to(data, int_pt[2].b_section->record(P)); + append_to(data, int_pt[3].b_section->record(P)); + return data; } void B21H::print() { diff --git a/Element/Beam/B21H.h b/Element/Beam/B21H.h index beb82ccd8..7c8f95b53 100644 --- a/Element/Beam/B21H.h +++ b/Element/Beam/B21H.h @@ -53,11 +53,12 @@ class B21H final : public SectionElement2D { mat elastic_local_stiffness; public: - B21H(unsigned, // tag - uvec&&, // node tags - unsigned, // section tag - double = .2, // hinge length - bool = false // nonlinear geometry switch + B21H( + unsigned, // tag + uvec&&, // node tags + unsigned, // section tag + double = .2, // hinge length + bool = false // nonlinear geometry switch ); int initialize(const shared_ptr&) override; diff --git a/Element/Beam/B31.cpp b/Element/Beam/B31.cpp index 28a30621e..d383bc2e5 100644 --- a/Element/Beam/B31.cpp +++ b/Element/Beam/B31.cpp @@ -26,7 +26,11 @@ B31::IntegrationPoint::IntegrationPoint(const double C, const double W, unique_p : coor(C) , weight(W) , b_section(std::forward>(M)) - , strain_mat(3, 6, fill::zeros) {} + , strain_mat(3, 6, fill::zeros) { + strain_mat(0, 0) = 1.; + strain_mat(1, 1) = strain_mat(2, 3) = 3. * coor - 1.; + strain_mat(1, 2) = strain_mat(2, 4) = 3. * coor + 1.; +} B31::B31(const unsigned T, uvec&& N, const unsigned S, const unsigned O, const unsigned P, const bool F) : SectionElement3D(T, b_node, b_dof, std::forward(N), uvec{S}, F) @@ -34,9 +38,7 @@ B31::B31(const unsigned T, uvec&& N, const unsigned S, const unsigned O, const u , int_pt_num(P > 20 ? 20 : P) {} int B31::initialize(const shared_ptr& D) { - auto& sec_proto = D->get
(section_tag(0)); - - const mat sec_stiff = sec_proto->get_initial_stiffness()(b_span, b_span); + auto& section_proto = D->get
(section_tag(0)); if(!D->find_orientation(orientation_tag)) { suanpan_warning("Element {} cannot find the assigned transformation {}.\n", get_tag(), orientation_tag); @@ -49,6 +51,10 @@ int B31::initialize(const shared_ptr& D) { suanpan_warning("Element {} is assigned with an inconsistent transformation {}.\n", get_tag(), orientation_tag); return SUANPAN_FAIL; } + if(OrientationType::B3D != b_trans->get_orientation_type()) { + suanpan_warning("Element {} is assigned with an inconsistent transformation {}, use B3DL or B3DC only.\n", get_tag(), orientation_tag); + return SUANPAN_FAIL; + } b_trans->set_element_ptr(this); @@ -56,22 +62,22 @@ int B31::initialize(const shared_ptr& D) { const IntegrationPlan plan(1, int_pt_num, IntegrationType::LOBATTO); + const mat section_stiffness = section_proto->get_initial_stiffness()(b_span, b_span); + mat local_stiffness(6, 6, fill::zeros); int_pt.clear(); int_pt.reserve(int_pt_num); for(unsigned I = 0; I < int_pt_num; ++I) { - int_pt.emplace_back(plan(I, 0), .5 * plan(I, 1), sec_proto->get_copy()); - int_pt[I].strain_mat(0, 0) = 1.; - int_pt[I].strain_mat(1, 1) = int_pt[I].strain_mat(2, 3) = 3. * plan(I, 0) - 1.; - int_pt[I].strain_mat(1, 2) = int_pt[I].strain_mat(2, 4) = 3. * plan(I, 0) + 1.; - local_stiffness += int_pt[I].strain_mat.t() * sec_stiff * int_pt[I].strain_mat * int_pt[I].weight / length; + int_pt.emplace_back(plan(I, 0), .5 * plan(I, 1), section_proto->get_copy()); + int_pt[I].b_section->set_characteristic_length(int_pt[I].weight * length); + local_stiffness += int_pt[I].strain_mat.t() * section_stiffness * int_pt[I].strain_mat * int_pt[I].weight / length; } access::rw(torsion_stiff) = 1E3 * local_stiffness.max(); local_stiffness(5, 5) = torsion_stiff; trial_stiffness = current_stiffness = initial_stiffness = b_trans->to_global_stiffness_mat(local_stiffness); - if(const auto linear_density = sec_proto->get_parameter(ParameterType::LINEARDENSITY); linear_density > 0.) trial_mass = current_mass = initial_mass = b_trans->to_global_mass_mat(linear_density); + if(const auto linear_density = section_proto->get_linear_density(); linear_density > 0.) trial_mass = current_mass = initial_mass = b_trans->to_global_mass_mat(linear_density); return SUANPAN_SUCCESS; } @@ -123,9 +129,9 @@ int B31::reset_status() { } vector B31::record(const OutputType P) { - vector output; - for(const auto& I : int_pt) for(const auto& J : I.b_section->record(P)) output.emplace_back(J); - return output; + vector data; + for(const auto& I : int_pt) append_to(data, I.b_section->record(P)); + return data; } void B31::print() { diff --git a/Element/Beam/B31.h b/Element/Beam/B31.h index a7fa3a9e7..6c8322f5b 100644 --- a/Element/Beam/B31.h +++ b/Element/Beam/B31.h @@ -36,7 +36,7 @@ class B31 final : public SectionElement3D { struct IntegrationPoint final { double coor, weight; unique_ptr
b_section; - mat strain_mat; + mat strain_mat; // axial strain, curvature about the z-axis (major), curvature about the y-axis (minor) IntegrationPoint(double, double, unique_ptr
&&); }; @@ -53,7 +53,8 @@ class B31 final : public SectionElement3D { unique_ptr b_trans; public: - B31(unsigned, // tag + B31( + unsigned, // tag uvec&&, // node tags unsigned, // section tag unsigned, // orientation tag diff --git a/Element/Beam/B31OS.cpp b/Element/Beam/B31OS.cpp new file mode 100644 index 000000000..16a20c990 --- /dev/null +++ b/Element/Beam/B31OS.cpp @@ -0,0 +1,232 @@ +/******************************************************************************* + * Copyright (C) 2017-2023 Theodore Chang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + ******************************************************************************/ + +#include "B31OS.h" +#include +#include
+#include + +B31OS::IntegrationPoint::IntegrationPoint(const double C, const double W, const double L, unique_ptr
&& M) + : coor(C) + , weight(W) + , b_section(std::forward>(M)) { + const auto xp = coor + 1., xm = coor - 1.; + const auto x3p = 3. * coor + 1., x3m = 3. * coor - 1.; + + // nv1=nw1=nf2 + // nv2=nw2=nf4 + + const auto dnu = 1. / L; + + const auto nf1 = .25 * (2. + coor) * xm * xm; + const auto nf2 = .125 * L * xm * xm * xp; + const auto nf3 = .25 * (2. - coor) * xp * xp; + const auto nf4 = .125 * L * xm * xp * xp; + + const auto dnf1 = 1.5 * xm * xp / L; + const auto dnf2 = .25 * xm * x3p; + const auto dnf3 = -dnf1; + const auto dnf4 = .25 * xp * x3m; + + const auto ddnf1 = 6. * coor / L / L; + const auto ddnf2 = x3m / L; + const auto ddnf3 = -ddnf1; + const auto ddnf4 = x3p / L; + + strain_mat.zeros(static_cast(SectionType::OS3D), 9); + // u' + strain_mat(0, 0) = dnu; + // v' + strain_mat(1, 1) = dnf2; + strain_mat(1, 2) = dnf4; + // w' + strain_mat(2, 3) = dnf2; + strain_mat(2, 4) = dnf4; + // v'' + strain_mat(3, 1) = ddnf2; + strain_mat(3, 2) = ddnf4; + // w'' + strain_mat(4, 3) = ddnf2; + strain_mat(4, 4) = ddnf4; + // f + strain_mat(5, 5) = nf1; + strain_mat(5, 7) = nf2; + strain_mat(5, 6) = nf3; + strain_mat(5, 8) = nf4; + // f' + strain_mat(6, 5) = dnf1; + strain_mat(6, 7) = dnf2; + strain_mat(6, 6) = dnf3; + strain_mat(6, 8) = dnf4; + // f'' + strain_mat(7, 5) = ddnf1; + strain_mat(7, 7) = ddnf2; + strain_mat(7, 6) = ddnf3; + strain_mat(7, 8) = ddnf4; + // theta_zi, theta_zj, theta_yi, theta_yj + strain_mat(8, 1) = strain_mat(9, 2) = strain_mat(10, 3) = strain_mat(11, 4) = 1.; +} + +B31OS::B31OS(const unsigned T, uvec&& N, const unsigned S, const unsigned O, const unsigned P, const bool F) + : SectionOSElement3D(T, b_node, b_dof, std::forward(N), uvec{S}, F) + , orientation_tag(O) + , int_pt_num(P > 20 ? 20 : P) {} + +int B31OS::initialize(const shared_ptr& D) { + auto& section_proto = D->get
(section_tag(0)); + + if(!D->find_orientation(orientation_tag)) { + suanpan_warning("Element {} cannot find the assigned transformation {}.\n", get_tag(), orientation_tag); + return SUANPAN_FAIL; + } + + b_trans = D->get_orientation(orientation_tag)->get_copy(); + + if(b_trans->is_nlgeom() != is_nlgeom()) { + suanpan_warning("Element {} is assigned with an inconsistent transformation {}.\n", get_tag(), orientation_tag); + return SUANPAN_FAIL; + } + if(OrientationType::B3DOS != b_trans->get_orientation_type()) { + suanpan_warning("Element {} is assigned with an inconsistent transformation {}, use B3DOSL or B3DOSC only.\n", get_tag(), orientation_tag); + return SUANPAN_FAIL; + } + + b_trans->set_element_ptr(this); + + access::rw(length) = b_trans->get_length(); + + const IntegrationPlan plan(1, int_pt_num, IntegrationType::LOBATTO); + + const mat& section_stiffness = section_proto->get_initial_stiffness(); + + mat local_stiffness(9, 9, fill::zeros); + int_pt.clear(); + int_pt.reserve(int_pt_num); + for(unsigned I = 0; I < int_pt_num; ++I) { + int_pt.emplace_back(plan(I, 0), .5 * plan(I, 1), length, section_proto->get_copy()); + int_pt[I].b_section->set_characteristic_length(int_pt[I].weight * length); + local_stiffness += int_pt[I].strain_mat.t() * section_stiffness * int_pt[I].strain_mat * int_pt[I].weight * length; + } + + trial_stiffness = current_stiffness = initial_stiffness = b_trans->to_global_stiffness_mat(local_stiffness); + + if(const auto linear_density = section_proto->get_linear_density(); linear_density > 0.) trial_mass = current_mass = initial_mass = b_trans->to_global_mass_mat(linear_density); + + return SUANPAN_SUCCESS; +} + +int B31OS::update_status() { + b_trans->update_status(); + + // [0]: uniform axial + // [1]: strong axis bending near node + // [2]: strong axis bending far node + // [3]: weak axis bending near node + // [4]: weak axis bending far node + // [5]: torsion near node + // [6]: torsion far node + // [7]: warping near node + // [8]: warping far node + const auto local_deformation = b_trans->to_local_vec(get_trial_displacement()); + + mat local_stiffness(9, 9, fill::zeros), local_geometry(9, 9, fill::zeros); + vec local_resistance(9, fill::zeros); + + for(const auto& I : int_pt) { + if(I.b_section->update_trial_status(I.strain_mat * local_deformation) != SUANPAN_SUCCESS) return SUANPAN_FAIL; + local_stiffness += I.strain_mat.t() * I.b_section->get_trial_stiffness() * I.strain_mat * I.weight * length; + local_geometry += I.strain_mat.t() * I.b_section->get_trial_geometry() * I.strain_mat * I.weight * length; + local_resistance += I.strain_mat.t() * I.b_section->get_trial_resistance() * I.weight * length; + } + + trial_resistance = b_trans->to_global_vec(local_resistance); + + if(nlgeom) { + trial_stiffness = b_trans->to_global_stiffness_mat(local_stiffness); + // the geometry matrix from the section is added to elemental geometry matrix if it is a nonlinear geometry analysis + trial_geometry = b_trans->to_global_geometry_mat(local_resistance) + b_trans->to_global_stiffness_mat(local_geometry); + } + else trial_stiffness = b_trans->to_global_stiffness_mat(local_stiffness + local_geometry); + + return SUANPAN_SUCCESS; +} + +int B31OS::commit_status() { + b_trans->commit_status(); + + auto code = 0; + for(const auto& I : int_pt) code += I.b_section->commit_status(); + return code; +} + +int B31OS::clear_status() { + b_trans->clear_status(); + + auto code = 0; + for(const auto& I : int_pt) code += I.b_section->clear_status(); + return code; +} + +int B31OS::reset_status() { + b_trans->reset_status(); + + auto code = 0; + for(const auto& I : int_pt) code += I.b_section->reset_status(); + return code; +} + +vector B31OS::record(const OutputType P) { + vector data; + for(const auto& I : int_pt) append_to(data, I.b_section->record(P)); + return data; +} + +void B31OS::print() { + suanpan_info("A spatial beam element.\n"); + for(const auto& I : int_pt) I.b_section->print(); +} + +#ifdef SUANPAN_VTK +#include + +void B31OS::Setup() { + vtk_cell = vtkSmartPointer::New(); + const auto ele_coor = get_coordinate(3); + for(unsigned I = 0; I < b_node; ++I) { + vtk_cell->GetPointIds()->SetId(I, static_cast(node_encoding(I))); + vtk_cell->GetPoints()->SetPoint(I, ele_coor(I, 0), ele_coor(I, 1), ele_coor(I, 2)); + } +} + +void B31OS::GetData(vtkSmartPointer& arrays, const OutputType type) { + mat t_disp(6, b_node, fill::zeros); + + if(OutputType::A == type) t_disp = reshape(get_current_acceleration(), b_dof, b_node); + else if(OutputType::V == type) t_disp = reshape(get_current_velocity(), b_dof, b_node); + else if(OutputType::U == type) t_disp = reshape(get_current_displacement(), b_dof, b_node); + + t_disp = t_disp.head_rows(6); + + for(unsigned I = 0; I < b_node; ++I) arrays->SetTuple(static_cast(node_encoding(I)), t_disp.colptr(I)); +} + +void B31OS::SetDeformation(vtkSmartPointer& nodes, const double amplifier) { + const mat ele_disp = get_coordinate(3) + amplifier * mat(reshape(get_current_displacement(), b_dof, b_node)).rows(0, 2).t(); + for(unsigned I = 0; I < b_node; ++I) nodes->SetPoint(static_cast(node_encoding(I)), ele_disp(I, 0), ele_disp(I, 1), ele_disp(I, 2)); +} + +#endif diff --git a/Element/Beam/B31OS.h b/Element/Beam/B31OS.h new file mode 100644 index 000000000..f3386bdf0 --- /dev/null +++ b/Element/Beam/B31OS.h @@ -0,0 +1,88 @@ +/******************************************************************************* + * Copyright (C) 2017-2023 Theodore Chang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + ******************************************************************************/ +/** + * @class B31OS + * @brief The B31OS class. + * + * Reference: + * 1. Distributed plasticity analysis of steel building structural systems + * + * @author tlc + * @date 15/09/2023 + * @version 0.1.0 + * @file B31OS.h + * @addtogroup Beam + * @ingroup Element + * @{ + */ + +#ifndef B31OS_H +#define B31OS_H + +#include +#include + +class B31OS final : public SectionOSElement3D { + struct IntegrationPoint final { + double coor, weight; + unique_ptr
b_section; + sp_mat strain_mat; + IntegrationPoint(double, double, double, unique_ptr
&&); + }; + + static constexpr unsigned b_node = 2, b_dof = 7, b_size = b_dof * b_node; + + const unsigned orientation_tag, int_pt_num; + + const double length{0.}; + + vector int_pt; + + unique_ptr b_trans; + +public: + B31OS( + unsigned, // tag + uvec&&, // node tags + unsigned, // section tag + unsigned, // orientation tag + unsigned = 6, // integration points + bool = false // nonlinear geometry switch + ); + + int initialize(const shared_ptr&) override; + + int update_status() override; + + int commit_status() override; + int clear_status() override; + int reset_status() override; + + vector record(OutputType) override; + + void print() override; + +#ifdef SUANPAN_VTK + void Setup() override; + void GetData(vtkSmartPointer&, OutputType) override; + void SetDeformation(vtkSmartPointer&, double) override; +#endif +}; + +#endif + +//! @} diff --git a/Element/Beam/Beam b/Element/Beam/Beam index 97a3c5a18..0a7fa4a71 100644 --- a/Element/Beam/Beam +++ b/Element/Beam/Beam @@ -2,11 +2,13 @@ #include "B21E.h" #include "B21H.h" #include "B31.h" +#include "B31OS.h" #include "EB21.h" +#include "EB31OS.h" #include "F21.h" #include "F21H.h" #include "F31.h" #include "MVLEM.h" #include "NMB21.h" #include "NMB21E.h" -#include "NMB31.h" \ No newline at end of file +#include "NMB31.h" diff --git a/Element/Beam/CMakeLists.txt b/Element/Beam/CMakeLists.txt index 6b26906ac..5a3b2388c 100644 --- a/Element/Beam/CMakeLists.txt +++ b/Element/Beam/CMakeLists.txt @@ -3,6 +3,8 @@ set(Beam Beam/B21E.cpp Beam/B21H.cpp Beam/B31.cpp + Beam/B31OS.cpp + Beam/EB31OS.cpp Beam/EB21.cpp Beam/F21.cpp Beam/F21H.cpp @@ -11,4 +13,4 @@ set(Beam Beam/NMB21.cpp Beam/NMB21E.cpp Beam/NMB31.cpp - ) +) diff --git a/Element/Beam/EB21.cpp b/Element/Beam/EB21.cpp index 33f0a099c..a4deadc59 100644 --- a/Element/Beam/EB21.cpp +++ b/Element/Beam/EB21.cpp @@ -41,7 +41,7 @@ int EB21::initialize(const shared_ptr& D) { trial_stiffness = current_stiffness = initial_stiffness = b_trans->to_global_stiffness_mat(local_stiff); - if(b_material->get_parameter(ParameterType::DENSITY) > 0.) initial_mass = b_trans->to_global_mass_mat(b_material->get_parameter(ParameterType::DENSITY) * area); + if(b_material->get_density() > 0.) initial_mass = b_trans->to_global_mass_mat(b_material->get_density() * area); ConstantMass(this); diff --git a/Element/Beam/EB21.h b/Element/Beam/EB21.h index f85f53bf2..bae05c4a5 100644 --- a/Element/Beam/EB21.h +++ b/Element/Beam/EB21.h @@ -43,12 +43,13 @@ class EB21 final : public MaterialElement1D { mat local_stiff; public: - EB21(unsigned, // tag - uvec&&, // node tag - double, // area - double, // moment of inertia - unsigned, // material tags - bool = false // nonlinear geometry switch + EB21( + unsigned, // tag + uvec&&, // node tag + double, // area + double, // moment of inertia + unsigned, // material tags + bool = false // nonlinear geometry switch ); int initialize(const shared_ptr&) override; diff --git a/Element/Beam/EB31OS.cpp b/Element/Beam/EB31OS.cpp new file mode 100644 index 000000000..d5035fb52 --- /dev/null +++ b/Element/Beam/EB31OS.cpp @@ -0,0 +1,170 @@ +/******************************************************************************* + * Copyright (C) 2017-2023 Theodore Chang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + ******************************************************************************/ + +#include "EB31OS.h" +#include +#include + +EB31OS::EB31OS(const unsigned T, uvec&& N, vec&& P, const unsigned O, const bool F) + : SectionOSElement3D(T, b_node, b_dof, std::forward(N), uvec{}, F) + , orientation_tag(O) + , property(std::forward(P)) {} + +int EB31OS::initialize(const shared_ptr& D) { + if(!D->find_orientation(orientation_tag)) { + suanpan_warning("Element {} cannot find the assigned transformation {}.\n", get_tag(), orientation_tag); + return SUANPAN_FAIL; + } + + b_trans = D->get_orientation(orientation_tag)->get_copy(); + + if(b_trans->is_nlgeom() != is_nlgeom()) { + suanpan_warning("Element {} is assigned with an inconsistent transformation {}.\n", get_tag(), orientation_tag); + return SUANPAN_FAIL; + } + if(OrientationType::B3DOS != b_trans->get_orientation_type()) { + suanpan_warning("Element {} is assigned with an inconsistent transformation {}, use B3DOSL or B3DOSC only.\n", get_tag(), orientation_tag); + return SUANPAN_FAIL; + } + + b_trans->set_element_ptr(this); + + access::rw(length) = b_trans->get_length(); + + const auto& E = property(0); + const auto& G = property(1); + const auto& A = property(2); + const auto& IZ = property(3); + const auto& IY = property(4); + const auto& J = property(5); + const auto& IW = property(6); + + // uniform axial + // strong axis bending near node + // strong axis bending far node + // weak axis bending near node + // weak axis bending far node + // torsion near node + // torsion far node + // warping near node + // warping far node + + local_stiff.zeros(9, 9); + local_stiff(0, 0) = E * A / length; + + auto factor = 2. * E * IZ / length; + local_stiff(1, 2) = local_stiff(2, 1) = factor; + factor *= 2.; + local_stiff(1, 1) = local_stiff(2, 2) = factor; + + factor = 2. * E * IY / length; + local_stiff(3, 4) = local_stiff(4, 3) = factor; + factor *= 2.; + local_stiff(3, 3) = local_stiff(4, 4) = factor; + + factor = (12. * E * IW / length / length + 1.2 * G * J) / length; + local_stiff(5, 5) = local_stiff(6, 6) = factor; + local_stiff(5, 6) = local_stiff(6, 5) = -factor; + + factor = 6. * E * IW / length / length + .1 * G * J; + local_stiff(5, 7) = local_stiff(7, 5) = factor; + local_stiff(5, 8) = local_stiff(8, 5) = factor; + local_stiff(6, 7) = local_stiff(7, 6) = -factor; + local_stiff(6, 8) = local_stiff(8, 6) = -factor; + + factor = 2. * E * IW / length - G * J * length / 30.; + local_stiff(7, 8) = local_stiff(8, 7) = factor; + + factor = 4. * E * IW / length + 2. * G * J * length / 15.; + local_stiff(7, 7) = local_stiff(8, 8) = factor; + + trial_stiffness = current_stiffness = initial_stiffness = b_trans->to_global_stiffness_mat(local_stiff); + + ConstantStiffness(this); + + return SUANPAN_SUCCESS; +} + +int EB31OS::update_status() { + b_trans->update_status(); + + const vec local_force = local_stiff * b_trans->to_local_vec(get_trial_displacement()); + + trial_stiffness = b_trans->to_global_stiffness_mat(local_stiff); + trial_resistance = b_trans->to_global_vec(local_force); + + if(nlgeom) trial_geometry = b_trans->to_global_geometry_mat(local_force); + + return SUANPAN_SUCCESS; +} + +int EB31OS::commit_status() { + b_trans->commit_status(); + return SUANPAN_SUCCESS; +} + +int EB31OS::clear_status() { + b_trans->clear_status(); + return SUANPAN_SUCCESS; +} + +int EB31OS::reset_status() { + b_trans->reset_status(); + return SUANPAN_SUCCESS; +} + +vector EB31OS::record(const OutputType P) { + if(P == OutputType::BEAME) return {b_trans->to_local_vec(get_current_displacement())}; + if(P == OutputType::BEAMS) return {vec{local_stiff * b_trans->to_local_vec(get_current_displacement())}}; + + return {}; +} + +void EB31OS::print() { + suanpan_info("A spatial beam element with warping DoF.\n"); +} + +#ifdef SUANPAN_VTK +#include + +void EB31OS::Setup() { + vtk_cell = vtkSmartPointer::New(); + const auto ele_coor = get_coordinate(3); + for(unsigned I = 0; I < b_node; ++I) { + vtk_cell->GetPointIds()->SetId(I, static_cast(node_encoding(I))); + vtk_cell->GetPoints()->SetPoint(I, ele_coor(I, 0), ele_coor(I, 1), ele_coor(I, 2)); + } +} + +void EB31OS::GetData(vtkSmartPointer& arrays, const OutputType type) { + mat t_disp(6, b_node, fill::zeros); + + if(OutputType::A == type) t_disp = reshape(get_current_acceleration(), b_dof, b_node); + else if(OutputType::V == type) t_disp = reshape(get_current_velocity(), b_dof, b_node); + else if(OutputType::U == type) t_disp = reshape(get_current_displacement(), b_dof, b_node); + + t_disp = t_disp.head_rows(6); + + for(unsigned I = 0; I < b_node; ++I) arrays->SetTuple(static_cast(node_encoding(I)), t_disp.colptr(I)); +} + +void EB31OS::SetDeformation(vtkSmartPointer& nodes, const double amplifier) { + const mat ele_disp = get_coordinate(3) + amplifier * mat(reshape(get_current_displacement(), b_dof, b_node)).rows(0, 2).t(); + for(unsigned I = 0; I < b_node; ++I) nodes->SetPoint(static_cast(node_encoding(I)), ele_disp(I, 0), ele_disp(I, 1), ele_disp(I, 2)); +} + +#endif diff --git a/Element/Beam/EB31OS.h b/Element/Beam/EB31OS.h new file mode 100644 index 000000000..ed578a9a2 --- /dev/null +++ b/Element/Beam/EB31OS.h @@ -0,0 +1,81 @@ +/******************************************************************************* + * Copyright (C) 2017-2023 Theodore Chang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + ******************************************************************************/ +/** + * @class EB31OS + * @brief The EB31OS class. + * + * Elastic 3D beam element with additional warping DOFs. + * + * @author tlc + * @date 10/09/2023 + * @version 0.1.0 + * @file EB31OS.h + * @addtogroup Beam + * @ingroup Element + * @{ + */ + +#ifndef EB31OS_H +#define EB31OS_H + +#include +#include + +class EB31OS final : public SectionOSElement3D { + static constexpr unsigned b_node = 2u, b_dof = 7u, b_size = b_dof * b_node; + + const unsigned orientation_tag; + + const double length = 0.; + + unique_ptr b_trans; + + const vec property; // [E, G, A, IZ, IY, J, IW] + + mat local_stiff; + +public: + EB31OS( + unsigned, // tag + uvec&&, // node tags + vec&&, // properties + unsigned, // orientation tag + bool = false // nonlinear geometry switch + ); + + int initialize(const shared_ptr&) override; + + int update_status() override; + + int commit_status() override; + int clear_status() override; + int reset_status() override; + + vector record(OutputType) override; + + void print() override; + +#ifdef SUANPAN_VTK + void Setup() override; + void GetData(vtkSmartPointer&, OutputType) override; + void SetDeformation(vtkSmartPointer&, double) override; +#endif +}; + +#endif + +//! @} diff --git a/Element/Beam/F21.cpp b/Element/Beam/F21.cpp index ea892b393..0b8788ab4 100644 --- a/Element/Beam/F21.cpp +++ b/Element/Beam/F21.cpp @@ -25,7 +25,11 @@ F21::IntegrationPoint::IntegrationPoint(const double C, const double W, unique_p : coor(C) , weight(W) , b_section(std::forward>(M)) - , B(2, 3, fill::zeros) {} + , B(2, 3, fill::zeros) { + B(0, 0) = 1.; + B(1, 1) = .5 * (coor - 1.); + B(1, 2) = .5 * (coor + 1.); +} F21::F21(const unsigned T, uvec&& N, const unsigned S, const unsigned P, const bool F) : SectionElement2D(T, b_node, b_dof, std::forward(N), uvec{S}, F) @@ -48,9 +52,7 @@ int F21::initialize(const shared_ptr& D) { int_pt.reserve(int_pt_num); for(unsigned I = 0; I < int_pt_num; ++I) { int_pt.emplace_back(plan(I, 0), .5 * plan(I, 1), section_proto->get_copy()); - int_pt[I].B(0, 0) = 1.; - int_pt[I].B(1, 1) = .5 * (plan(I, 0) - 1.); - int_pt[I].B(1, 2) = .5 * (plan(I, 0) + 1.); + int_pt[I].b_section->set_characteristic_length(int_pt[I].weight * length); // factor .5 moved to weight initial_local_flexibility += int_pt[I].B.t() * t_flexibility * int_pt[I].B * int_pt[I].weight * length; } @@ -58,7 +60,7 @@ int F21::initialize(const shared_ptr& D) { trial_stiffness = current_stiffness = initial_stiffness = b_trans->to_global_stiffness_mat(inv(initial_local_flexibility)); - if(const auto linear_density = section_proto->get_parameter(ParameterType::LINEARDENSITY); linear_density > 0.) trial_mass = current_mass = initial_mass = b_trans->to_global_mass_mat(linear_density); + if(const auto linear_density = section_proto->get_linear_density(); linear_density > 0.) trial_mass = current_mass = initial_mass = b_trans->to_global_mass_mat(linear_density); trial_local_deformation = current_local_deformation.zeros(3); trial_local_resistance = current_local_resistance.zeros(3); @@ -138,9 +140,9 @@ vector F21::record(const OutputType P) { if(P == OutputType::BEAME) return {current_local_deformation}; if(P == OutputType::BEAMS) return {current_local_resistance}; - vector output; - for(const auto& I : int_pt) for(const auto& J : I.b_section->record(P)) output.emplace_back(J); - return output; + vector data; + for(const auto& I : int_pt) append_to(data, I.b_section->record(P)); + return data; } void F21::print() { diff --git a/Element/Beam/F21.h b/Element/Beam/F21.h index 0d00099d9..b0ddd6cd7 100644 --- a/Element/Beam/F21.h +++ b/Element/Beam/F21.h @@ -61,7 +61,8 @@ class F21 final : public SectionElement2D { vec current_local_resistance, trial_local_resistance; public: - F21(unsigned, // tag + F21( + unsigned, // tag uvec&&, // node tag unsigned, // section tags unsigned = 6, // integration points diff --git a/Element/Beam/F21H.cpp b/Element/Beam/F21H.cpp index d9e8f1291..40c9985b4 100644 --- a/Element/Beam/F21H.cpp +++ b/Element/Beam/F21H.cpp @@ -25,7 +25,11 @@ F21H::IntegrationPoint::IntegrationPoint(const double C, const double W, unique_ : coor(C) , weight(W) , b_section(std::forward>(M)) - , B(2, 3, fill::zeros) { B(0, 0) = 1.; } + , B(2, 3, fill::zeros) { + B(0, 0) = 1.; + B(1, 1) = .5 * (coor - 1.); + B(1, 2) = .5 * (coor + 1.); +} F21H::F21H(const unsigned T, uvec&& N, const unsigned S, const double L, const bool F) : SectionElement2D(T, b_node, b_dof, std::forward(N), uvec{S}, F) @@ -69,9 +73,6 @@ int F21H::initialize(const shared_ptr& D) { weight = .5 * plan(I - 1, 1) * elastic_length; } elastic_int_pt.emplace_back(coor, weight, section_proto->get_copy()); - // first element moved to ctor - elastic_int_pt[I].B(1, 1) = .5 * (coor - 1.); - elastic_int_pt[I].B(1, 2) = .5 * (coor + 1.); elastic_local_flexibility += elastic_int_pt[I].B.t() * elastic_section_flexibility * elastic_int_pt[I].B * weight * length; } @@ -81,17 +82,13 @@ int F21H::initialize(const shared_ptr& D) { int_pt.reserve(2); int_pt.emplace_back(-1., hinge_length, section_proto->get_copy()); int_pt.emplace_back(1., hinge_length, section_proto->get_copy()); - for(auto& I : int_pt) { - I.B(1, 1) = .5 * (I.coor - 1.); - I.B(1, 2) = .5 * (I.coor + 1.); - initial_local_flexibility += I.B.t() * elastic_section_flexibility * I.B * I.weight * length; - } + for(auto& I : int_pt) initial_local_flexibility += I.B.t() * elastic_section_flexibility * I.B * I.weight * length; trial_local_flexibility = current_local_flexibility = initial_local_flexibility; trial_stiffness = current_stiffness = initial_stiffness = b_trans->to_global_stiffness_mat(inv(initial_local_flexibility)); - if(const auto linear_density = section_proto->get_parameter(ParameterType::LINEARDENSITY); linear_density > 0.) trial_mass = current_mass = initial_mass = b_trans->to_global_mass_mat(linear_density); + if(const auto linear_density = section_proto->get_linear_density(); linear_density > 0.) trial_mass = current_mass = initial_mass = b_trans->to_global_mass_mat(linear_density); trial_local_deformation = current_local_deformation.zeros(3); trial_local_resistance = current_local_resistance.zeros(3); @@ -173,9 +170,9 @@ vector F21H::record(const OutputType P) { if(P == OutputType::BEAME) return {current_local_deformation}; if(P == OutputType::BEAMS) return {current_local_resistance}; - vector output; - for(const auto& I : int_pt) for(const auto& J : I.b_section->record(P)) output.emplace_back(J); - return output; + vector data; + for(const auto& I : int_pt) append_to(data, I.b_section->record(P)); + return data; } void F21H::print() { diff --git a/Element/Beam/F21H.h b/Element/Beam/F21H.h index 1f1c08c2f..9ae9ce7c0 100644 --- a/Element/Beam/F21H.h +++ b/Element/Beam/F21H.h @@ -57,11 +57,12 @@ class F21H final : public SectionElement2D { vec current_local_resistance, trial_local_resistance; public: - F21H(unsigned, // tag - uvec&&, // node tag - unsigned, // section tags - double = .2, // hinge length - bool = false // nonlinear geometry switch + F21H( + unsigned, // tag + uvec&&, // node tag + unsigned, // section tags + double = .2, // hinge length + bool = false // nonlinear geometry switch ); int initialize(const shared_ptr&) override; diff --git a/Element/Beam/F31.cpp b/Element/Beam/F31.cpp index f308481df..4813f49ee 100644 --- a/Element/Beam/F31.cpp +++ b/Element/Beam/F31.cpp @@ -27,7 +27,11 @@ F31::IntegrationPoint::IntegrationPoint(const double C, const double W, unique_p : coor(C) , weight(W) , b_section(std::forward>(M)) - , strain_mat(3, 6, fill::zeros) {} + , strain_mat(3, 6, fill::zeros) { + strain_mat(0, 0) = 1.; + strain_mat(1, 1) = strain_mat(2, 3) = .5 * coor - .5; + strain_mat(1, 2) = strain_mat(2, 4) = .5 * coor + .5; +} F31::F31(const unsigned T, uvec&& N, const unsigned S, const unsigned O, const unsigned P, const bool F) : SectionElement3D(T, b_node, b_dof, std::forward(N), uvec{S}, F) @@ -35,7 +39,7 @@ F31::F31(const unsigned T, uvec&& N, const unsigned S, const unsigned O, const u , orientation_tag(O) {} int F31::initialize(const shared_ptr& D) { - auto& sec_proto = D->get
(section_tag(0)); + auto& section_proto = D->get
(section_tag(0)); if(!D->find_orientation(orientation_tag)) { suanpan_warning("Element {} cannot find the assigned transformation {}.\n", get_tag(), orientation_tag); @@ -48,12 +52,16 @@ int F31::initialize(const shared_ptr& D) { suanpan_warning("Element {} is assigned with an inconsistent transformation {}.\n", get_tag(), orientation_tag); return SUANPAN_FAIL; } + if(OrientationType::B3D != b_trans->get_orientation_type()) { + suanpan_warning("Element {} is assigned with an inconsistent transformation {}, use B3DL or B3DC only.\n", get_tag(), orientation_tag); + return SUANPAN_FAIL; + } b_trans->set_element_ptr(this); access::rw(length) = b_trans->get_length(); - const mat sec_stiff = sec_proto->get_initial_stiffness()(b_span, b_span); + const mat section_stiffness = section_proto->get_initial_stiffness()(b_span, b_span); const IntegrationPlan plan(1, int_pt_num, IntegrationType::LOBATTO); @@ -61,12 +69,10 @@ int F31::initialize(const shared_ptr& D) { int_pt.clear(); int_pt.reserve(int_pt_num); for(unsigned I = 0; I < int_pt_num; ++I) { - int_pt.emplace_back(plan(I, 0), .5 * plan(I, 1), sec_proto->get_copy()); - int_pt[I].strain_mat(0, 0) = 1.; - int_pt[I].strain_mat(1, 1) = int_pt[I].strain_mat(2, 3) = .5 * plan(I, 0) - .5; - int_pt[I].strain_mat(1, 2) = int_pt[I].strain_mat(2, 4) = .5 * plan(I, 0) + .5; + int_pt.emplace_back(plan(I, 0), .5 * plan(I, 1), section_proto->get_copy()); + int_pt[I].b_section->set_characteristic_length(int_pt[I].weight * length); // factor .5 moved to weight - initial_local_flexibility += int_pt[I].strain_mat.t() * solve(sec_stiff, int_pt[I].strain_mat * int_pt[I].weight * length); + initial_local_flexibility += int_pt[I].strain_mat.t() * solve(section_stiffness, int_pt[I].strain_mat * int_pt[I].weight * length); } access::rw(torsion_stiff) = 1E-3 * vec(initial_local_flexibility.diag()).head(5).min(); initial_local_flexibility(5, 5) = torsion_stiff; @@ -74,7 +80,7 @@ int F31::initialize(const shared_ptr& D) { trial_stiffness = current_stiffness = initial_stiffness = b_trans->to_global_stiffness_mat(inv(initial_local_flexibility)); - if(const auto linear_density = sec_proto->get_parameter(ParameterType::LINEARDENSITY); linear_density > 0.) trial_mass = current_mass = initial_mass = b_trans->to_global_mass_mat(linear_density); + if(const auto linear_density = section_proto->get_linear_density(); linear_density > 0.) trial_mass = current_mass = initial_mass = b_trans->to_global_mass_mat(linear_density); trial_local_deformation = current_local_deformation.zeros(6); trial_local_resistance = current_local_resistance.zeros(6); @@ -154,13 +160,13 @@ vector F31::record(const OutputType P) { if(P == OutputType::BEAME) return {current_local_deformation}; if(P == OutputType::BEAMS) return {current_local_resistance}; - vector output; - for(const auto& I : int_pt) for(const auto& J : I.b_section->record(P)) output.emplace_back(J); - return output; + vector data; + for(const auto& I : int_pt) append_to(data, I.b_section->record(P)); + return data; } void F31::print() { - suanpan_info("A 2D force based beam element{}.\n", nlgeom ? " and corotational formulation" : ""); + suanpan_info("A 3D force based beam element{}.\n", nlgeom ? " and corotational formulation" : ""); suanpan_info("The element connects nodes:", node_encoding); if(!is_initialized()) return; suanpan_info("Section:\n"); @@ -177,7 +183,7 @@ void F31::print() { void F31::Setup() { vtk_cell = vtkSmartPointer::New(); const auto ele_coor = get_coordinate(3); - for(unsigned I = 0; I < b_node; ++I) { + for(auto I = 0u; I < b_node; ++I) { vtk_cell->GetPointIds()->SetId(I, static_cast(node_encoding(I))); vtk_cell->GetPoints()->SetPoint(I, ele_coor(I, 0), ele_coor(I, 1), ele_coor(I, 2)); } @@ -190,12 +196,12 @@ void F31::GetData(vtkSmartPointer& arrays, const OutputType type else if(OutputType::V == type) t_disp = reshape(get_current_velocity(), b_dof, b_node); else if(OutputType::U == type) t_disp = reshape(get_current_displacement(), b_dof, b_node); - for(unsigned I = 0; I < b_node; ++I) arrays->SetTuple(static_cast(node_encoding(I)), t_disp.colptr(I)); + for(auto I = 0u; I < b_node; ++I) arrays->SetTuple(static_cast(node_encoding(I)), t_disp.colptr(I)); } void F31::SetDeformation(vtkSmartPointer& nodes, const double amplifier) { const mat ele_disp = get_coordinate(3) + amplifier * mat(reshape(get_current_displacement(), b_dof, b_node)).rows(0, 2).t(); - for(unsigned I = 0; I < b_node; ++I) nodes->SetPoint(static_cast(node_encoding(I)), ele_disp(I, 0), ele_disp(I, 1), ele_disp(I, 2)); + for(auto I = 0u; I < b_node; ++I) nodes->SetPoint(static_cast(node_encoding(I)), ele_disp(I, 0), ele_disp(I, 1), ele_disp(I, 2)); } #endif diff --git a/Element/Beam/F31.h b/Element/Beam/F31.h index 1b26d4040..d89c63022 100644 --- a/Element/Beam/F31.h +++ b/Element/Beam/F31.h @@ -19,8 +19,8 @@ * @brief The F31 class. * * Reference: - * 1. https://doi.org/10.1016/0045-7949(95)00103-N - * 2. https://doi.org/10.1061/(ASCE)0733-9445(1997)123:7(958) + * 1. [https://doi.org/10.1016/0045-7949(95)00103-N] + * 2. [https://doi.org/10.1061/(ASCE)0733-9445(1997)123:7(958)] * * @author tlc * @date 12/05/2022 @@ -35,13 +35,13 @@ #define F31_H #include -#include +#include class F31 final : public SectionElement3D { struct IntegrationPoint final { double coor, weight; unique_ptr
b_section; - mat strain_mat; + mat strain_mat; // axial strain, curvature about the z-axis (major), curvature about the y-axis (minor) IntegrationPoint(double, double, unique_ptr
&&); }; @@ -63,7 +63,8 @@ class F31 final : public SectionElement3D { vec current_local_resistance, trial_local_resistance; public: - F31(unsigned, // tag + F31( + unsigned, // tag uvec&&, // node tag unsigned, // section tag unsigned, // orientation tag diff --git a/Element/Beam/MVLEM.cpp b/Element/Beam/MVLEM.cpp index 0c3e451ef..fa3fca2d9 100644 --- a/Element/Beam/MVLEM.cpp +++ b/Element/Beam/MVLEM.cpp @@ -206,12 +206,10 @@ int MVLEM::reset_status() { vector MVLEM::record(const OutputType P) { vector data; - for(const auto& I : axial_spring) { - for(const auto& J : I.c_material->record(P)) data.emplace_back(J); - for(const auto& J : I.s_material->record(P)) data.emplace_back(J); + append_to(data, I.c_material->record(P)); + append_to(data, I.s_material->record(P)); } - return data; } diff --git a/Element/Beam/MVLEM.h b/Element/Beam/MVLEM.h index ebe881f3b..ab9748cdc 100644 --- a/Element/Beam/MVLEM.h +++ b/Element/Beam/MVLEM.h @@ -55,15 +55,16 @@ class MVLEM final : public MaterialElement1D { unique_ptr shear_spring; public: - MVLEM(unsigned, // tag - uvec&&, // node tag - const vector&, // width - const vector&, // thickness - const vector&, // reinforcement ratio - uvec&&, // concrete material tags - uvec&&, // steel material tags - unsigned, // shear spring tag - double // shear spring height + MVLEM( + unsigned, // tag + uvec&&, // node tag + const vector&, // width + const vector&, // thickness + const vector&, // reinforcement ratio + uvec&&, // concrete material tags + uvec&&, // steel material tags + unsigned, // shear spring tag + double // shear spring height ); int initialize(const shared_ptr&) override; diff --git a/Element/Beam/NMB21.cpp b/Element/Beam/NMB21.cpp index a8a5a6562..cbc08d9d5 100644 --- a/Element/Beam/NMB21.cpp +++ b/Element/Beam/NMB21.cpp @@ -34,7 +34,7 @@ int NMB21::initialize(const shared_ptr& D) { trial_stiffness = current_stiffness = initial_stiffness = b_trans->to_global_stiffness_mat(b_section->get_initial_stiffness() / length); - if(const auto linear_density = b_section->get_parameter(ParameterType::LINEARDENSITY); linear_density > 0.) trial_mass = current_mass = initial_mass = b_trans->to_global_mass_mat(linear_density); + if(const auto linear_density = b_section->get_linear_density(); linear_density > 0.) trial_mass = current_mass = initial_mass = b_trans->to_global_mass_mat(linear_density); return SUANPAN_SUCCESS; } @@ -68,7 +68,7 @@ int NMB21::reset_status() { } vector NMB21::record(const OutputType P) { - if(P == OutputType::BEAME) return {b_trans->to_local_vec(get_current_displacement())}; + if(P == OutputType::BEAME) return {b_section->get_current_deformation() * length}; if(P == OutputType::BEAMS) return {b_section->get_current_resistance()}; return b_section->record(P); @@ -76,7 +76,7 @@ vector NMB21::record(const OutputType P) { void NMB21::print() { suanpan_info("A planar beam element using N-M interaction section.\n"); - b_section->print(); + if(b_section) b_section->print(); } #ifdef SUANPAN_VTK diff --git a/Element/Beam/NMB21.h b/Element/Beam/NMB21.h index 933dfbc24..e3ff25d8d 100644 --- a/Element/Beam/NMB21.h +++ b/Element/Beam/NMB21.h @@ -42,10 +42,11 @@ class NMB21 : public SectionNMElement2D { unique_ptr
b_section; public: - NMB21(unsigned, // tag - uvec&&, // node tags - unsigned, // section tag - bool = false // nonlinear geometry switch + NMB21( + unsigned, // tag + uvec&&, // node tags + unsigned, // section tag + bool = false // nonlinear geometry switch ); int initialize(const shared_ptr&) override; diff --git a/Element/Beam/NMB21E.cpp b/Element/Beam/NMB21E.cpp index ab6327057..879c0381d 100644 --- a/Element/Beam/NMB21E.cpp +++ b/Element/Beam/NMB21E.cpp @@ -26,11 +26,11 @@ NMB21E::NMB21E(const unsigned T, const unsigned W, uvec&& N, const unsigned S, c , b{1 == W ? uvec{0llu, 2llu} : uvec{0llu, 1llu}} {} int NMB21E::initialize(const shared_ptr& D) { - const auto code = NMB21::initialize(D); + if(SUANPAN_SUCCESS != NMB21::initialize(D)) return SUANPAN_FAIL; current_local_deformation = trial_local_deformation = b_trans->to_local_vec(get_current_displacement()); - return code; + return SUANPAN_SUCCESS; } int NMB21E::update_status() { diff --git a/Element/Beam/NMB21E.h b/Element/Beam/NMB21E.h index 8b7713ac1..aa69e4cf0 100644 --- a/Element/Beam/NMB21E.h +++ b/Element/Beam/NMB21E.h @@ -38,11 +38,12 @@ class NMB21E final : public NMB21 { vec current_local_deformation; public: - NMB21E(unsigned, // tag - unsigned, // which - uvec&&, // node tags - unsigned, // section tag - bool = false // nonlinear geometry switch + NMB21E( + unsigned, // tag + unsigned, // which + uvec&&, // node tags + unsigned, // section tag + bool = false // nonlinear geometry switch ); int initialize(const shared_ptr&) override; diff --git a/Element/Beam/NMB31.cpp b/Element/Beam/NMB31.cpp index 81d0c5372..7a2312c7d 100644 --- a/Element/Beam/NMB31.cpp +++ b/Element/Beam/NMB31.cpp @@ -37,6 +37,10 @@ int NMB31::initialize(const shared_ptr& D) { suanpan_warning("Element {} is assigned with an inconsistent transformation {}.\n", get_tag(), orientation_tag); return SUANPAN_FAIL; } + if(OrientationType::B3D != b_trans->get_orientation_type()) { + suanpan_warning("Element {} is assigned with an inconsistent transformation {}, use B3DL or B3DC only.\n", get_tag(), orientation_tag); + return SUANPAN_FAIL; + } b_trans->set_element_ptr(this); @@ -46,7 +50,7 @@ int NMB31::initialize(const shared_ptr& D) { trial_stiffness = current_stiffness = initial_stiffness = b_trans->to_global_stiffness_mat(b_section->get_initial_stiffness() / length); - if(const auto linear_density = b_section->get_parameter(ParameterType::LINEARDENSITY); linear_density > 0.) trial_mass = current_mass = initial_mass = b_trans->to_global_mass_mat(linear_density); + if(const auto linear_density = b_section->get_linear_density(); linear_density > 0.) trial_mass = current_mass = initial_mass = b_trans->to_global_mass_mat(linear_density); return SUANPAN_SUCCESS; } @@ -80,7 +84,7 @@ int NMB31::reset_status() { } vector NMB31::record(const OutputType P) { - if(P == OutputType::BEAME) return {b_trans->to_local_vec(get_current_displacement())}; + if(P == OutputType::BEAME) return {b_section->get_current_deformation() * length}; if(P == OutputType::BEAMS) return {b_section->get_current_resistance()}; return b_section->record(P); @@ -88,7 +92,7 @@ vector NMB31::record(const OutputType P) { void NMB31::print() { suanpan_info("A spatial beam element using N-M interaction section.\n"); - b_section->print(); + if(b_section) b_section->print(); } #ifdef SUANPAN_VTK diff --git a/Element/Beam/NMB31.h b/Element/Beam/NMB31.h index 3b05c8bc5..f2d0b6b03 100644 --- a/Element/Beam/NMB31.h +++ b/Element/Beam/NMB31.h @@ -43,11 +43,12 @@ class NMB31 final : public SectionNMElement3D { unique_ptr
b_section; public: - NMB31(unsigned, // tag - uvec&&, // node tags - unsigned, // section tag - unsigned, // orientation tag - bool // nlgeom + NMB31( + unsigned, // tag + uvec&&, // node tags + unsigned, // section tag + unsigned, // orientation tag + bool // nlgeom ); int initialize(const shared_ptr&) override; diff --git a/Element/CMakeLists.txt b/Element/CMakeLists.txt index f9bcfa9d9..906931e4c 100644 --- a/Element/CMakeLists.txt +++ b/Element/CMakeLists.txt @@ -33,7 +33,7 @@ add_library(${PROJECT_NAME} STATIC ${Utility} ${Visualisation} ${Patch} - ) +) if (HAVE_VTK) target_link_libraries(${PROJECT_NAME} ${VTK_LIBRARIES}) diff --git a/Element/Cube/C3D20.cpp b/Element/Cube/C3D20.cpp index b9fd66260..4c0bc0272 100644 --- a/Element/Cube/C3D20.cpp +++ b/Element/Cube/C3D20.cpp @@ -27,7 +27,13 @@ C3D20::IntegrationPoint::IntegrationPoint(vec&& C, const double W, unique_ptr>(M)) , pn_pxyz(std::forward(P)) - , strain_mat(6, c_size, fill::zeros) {} + , strain_mat(6, c_size) { + for(auto I = 0u, J = 0u, K = 1u, L = 2u; I < c_node; ++I, J += c_dof, K += c_dof, L += c_dof) { + strain_mat(0, J) = strain_mat(3, K) = strain_mat(5, L) = pn_pxyz(0, I); + strain_mat(3, J) = strain_mat(1, K) = strain_mat(4, L) = pn_pxyz(1, I); + strain_mat(5, J) = strain_mat(4, K) = strain_mat(2, L) = pn_pxyz(2, I); + } +} C3D20::C3D20(const unsigned T, uvec&& N, const unsigned M, const bool R, const bool F) : MaterialElement3D(T, c_node, c_dof, std::forward(N), uvec{M}, F) @@ -52,17 +58,12 @@ int C3D20::initialize(const shared_ptr& D) { const mat jacob = pn * ele_coor; int_pt.emplace_back(std::move(t_vec), plan(I, 3) * det(jacob), material_proto->get_copy(), solve(jacob, pn)); - auto& c_pt = int_pt.back(); - for(unsigned J = 0, K = 0, L = 1, M = 2; J < c_node; ++J, K += c_dof, L += c_dof, M += c_dof) { - c_pt.strain_mat(0, K) = c_pt.strain_mat(3, L) = c_pt.strain_mat(5, M) = c_pt.pn_pxyz(0, J); - c_pt.strain_mat(3, K) = c_pt.strain_mat(1, L) = c_pt.strain_mat(4, M) = c_pt.pn_pxyz(1, J); - c_pt.strain_mat(5, K) = c_pt.strain_mat(4, L) = c_pt.strain_mat(2, M) = c_pt.pn_pxyz(2, J); - } + const auto& c_pt = int_pt.back(); initial_stiffness += c_pt.weight * c_pt.strain_mat.t() * ini_stiffness * c_pt.strain_mat; } trial_stiffness = current_stiffness = initial_stiffness; - if(const auto t_density = material_proto->get_parameter(ParameterType::DENSITY); t_density > 0.) { + if(const auto t_density = material_proto->get_density(); t_density > 0.) { initial_mass.zeros(c_size, c_size); for(const auto& I : int_pt) { const auto n_int = compute_shape_function(I.coor, 0); @@ -177,9 +178,9 @@ int C3D20::reset_status() { mat C3D20::compute_shape_function(const mat& coordinate, const unsigned order) const { return shape::cube(coordinate, order, c_node); } -vector C3D20::record(const OutputType T) { +vector C3D20::record(const OutputType P) { vector data; - for(const auto& I : int_pt) for(const auto& J : I.c_material->record(T)) data.emplace_back(J); + for(const auto& I : int_pt) append_to(data, I.c_material->record(P)); return data; } diff --git a/Element/Cube/C3D20.h b/Element/Cube/C3D20.h index eb3e5414b..8035c82c8 100644 --- a/Element/Cube/C3D20.h +++ b/Element/Cube/C3D20.h @@ -36,7 +36,8 @@ class C3D20 final : public MaterialElement3D { vec coor; double weight; unique_ptr c_material; - mat pn_pxyz, strain_mat; + mat pn_pxyz; + sp_mat strain_mat; IntegrationPoint(vec&&, double, unique_ptr&&, mat&&); }; @@ -47,11 +48,12 @@ class C3D20 final : public MaterialElement3D { vector int_pt; public: - C3D20(unsigned, // tag - uvec&&, // node tag - unsigned, // material tag - bool = true, // reduced integration - bool = false // nonlinear geometry switch + C3D20( + unsigned, // tag + uvec&&, // node tag + unsigned, // material tag + bool = true, // reduced integration + bool = false // nonlinear geometry switch ); int initialize(const shared_ptr&) override; diff --git a/Element/Cube/C3D4.cpp b/Element/Cube/C3D4.cpp index 8c7558740..979e9c77a 100644 --- a/Element/Cube/C3D4.cpp +++ b/Element/Cube/C3D4.cpp @@ -51,7 +51,7 @@ int C3D4::initialize(const shared_ptr& D) { const rowvec n = mean(ele_coor) * inv_coor; - if(const auto t_density = c_material->get_parameter(ParameterType::DENSITY) * volume; t_density > 0.) { + if(const auto t_density = c_material->get_density() * volume; t_density > 0.) { initial_mass.zeros(c_size, c_size); for(auto I = 0u, K = 0u; I < c_node; ++I, K += c_dof) for(auto J = I, L = K; J < c_node; ++J, L += c_dof) initial_mass(K, L) += t_density * n(I) * n(J); for(auto I = 0u, K = 1u; I < c_size; I += c_dof, K += c_dof) { @@ -138,7 +138,7 @@ int C3D4::clear_status() { return c_material->clear_status(); } int C3D4::reset_status() { return c_material->reset_status(); } -vector C3D4::record(const OutputType T) { return c_material->record(T); } +vector C3D4::record(const OutputType P) { return c_material->record(P); } void C3D4::print() { suanpan_info("C3D4 element connects:", node_encoding); diff --git a/Element/Cube/C3D4.h b/Element/Cube/C3D4.h index 6cb4229eb..6840dedcf 100644 --- a/Element/Cube/C3D4.h +++ b/Element/Cube/C3D4.h @@ -44,10 +44,11 @@ class C3D4 final : public MaterialElement3D { mat pn_pxyz, strain_mat; public: - C3D4(unsigned, // tag - uvec&&, // node tag - unsigned, // material tag - bool = false // nonlinear geometry switch + C3D4( + unsigned, // tag + uvec&&, // node tag + unsigned, // material tag + bool = false // nonlinear geometry switch ); int initialize(const shared_ptr&) override; diff --git a/Element/Cube/C3D8.cpp b/Element/Cube/C3D8.cpp index ef05f070f..7aa99f03e 100644 --- a/Element/Cube/C3D8.cpp +++ b/Element/Cube/C3D8.cpp @@ -30,7 +30,13 @@ C3D8::IntegrationPoint::IntegrationPoint(vec&& C, const double W, unique_ptr>(M)) , pn_pxyz(std::forward(P)) - , strain_mat(6, c_size, fill::zeros) {} + , strain_mat(6, c_size) { + for(auto I = 0u, J = 0u, K = 1u, L = 2u; I < c_node; ++I, J += c_dof, K += c_dof, L += c_dof) { + strain_mat(0, J) = strain_mat(3, K) = strain_mat(5, L) = pn_pxyz(0, I); + strain_mat(3, J) = strain_mat(1, K) = strain_mat(4, L) = pn_pxyz(1, I); + strain_mat(5, J) = strain_mat(4, K) = strain_mat(2, L) = pn_pxyz(2, I); + } +} C3D8::C3D8(const unsigned T, uvec&& N, const unsigned M, const char R, const bool F) : MaterialElement3D(T, c_node, c_dof, std::forward(N), uvec{M}, F) @@ -67,17 +73,12 @@ int C3D8::initialize(const shared_ptr& D) { const mat jacob = pn * ele_coor; int_pt.emplace_back(std::move(t_vec), plan(I, 3) * det(jacob), material_proto->get_copy(), solve(jacob, pn)); - auto& c_pt = int_pt.back(); - for(unsigned J = 0, K = 0, L = 1, M = 2; J < c_node; ++J, K += c_dof, L += c_dof, M += c_dof) { - c_pt.strain_mat(0, K) = c_pt.strain_mat(3, L) = c_pt.strain_mat(5, M) = c_pt.pn_pxyz(0, J); - c_pt.strain_mat(3, K) = c_pt.strain_mat(1, L) = c_pt.strain_mat(4, M) = c_pt.pn_pxyz(1, J); - c_pt.strain_mat(5, K) = c_pt.strain_mat(4, L) = c_pt.strain_mat(2, M) = c_pt.pn_pxyz(2, J); - } + const auto& c_pt = int_pt.back(); initial_stiffness += c_pt.weight * c_pt.strain_mat.t() * ini_stiffness * c_pt.strain_mat; } trial_stiffness = current_stiffness = initial_stiffness; - if(const auto t_density = material_proto->get_parameter(ParameterType::DENSITY); t_density > 0.) { + if(const auto t_density = material_proto->get_density(); t_density > 0.) { initial_mass.zeros(c_size, c_size); for(const auto& I : int_pt) { const auto n_int = compute_shape_function(I.coor, 0); @@ -197,19 +198,14 @@ int C3D8::reset_status() { mat C3D8::compute_shape_function(const mat& coordinate, const unsigned order) const { return shape::cube(coordinate, order, c_node); } -vector C3D8::record(const OutputType T) { +vector C3D8::record(const OutputType P) { vector data; - for(const auto& I : int_pt) for(const auto& J : I.c_material->record(T)) data.emplace_back(J); + for(const auto& I : int_pt) append_to(data, I.c_material->record(P)); return data; } void C3D8::print() { - suanpan_info("A C3D8 element{}{}.\n", int_scheme == 'R' - ? " reduced integration" - : int_scheme == 'I' - ? " Iron's integration" - : " full integration", - nlgeom ? " nonlinear geometry" : ""); + suanpan_info("A C3D8 element{}{}.\n", int_scheme == 'R' ? " reduced integration" : int_scheme == 'I' ? " Iron's integration" : " full integration", nlgeom ? " nonlinear geometry" : ""); suanpan_info("The element connects nodes:", node_encoding); if(!is_initialized()) return; suanpan_info("Material:\n"); @@ -234,10 +230,10 @@ void C3D8::Setup() { mat C3D8::GetData(const OutputType P) { mat A(int_pt.size(), 7); - mat B(int_pt.size(), 6, fill::zeros); + mat B(6, int_pt.size(), fill::zeros); for(size_t I = 0; I < int_pt.size(); ++I) { - if(const auto C = int_pt[I].c_material->record(P); !C.empty()) B(I, 0, size(C[0])) = C[0]; + if(const auto C = int_pt[I].c_material->record(P); !C.empty()) B(0, I, size(C[0])) = C[0]; A.row(I) = interpolation::linear(int_pt[I].coor); } @@ -252,7 +248,7 @@ mat C3D8::GetData(const OutputType P) { data.row(6) = interpolation::linear(1., 1., 1.); data.row(7) = interpolation::linear(-1., 1., 1.); - return (data * solve(A, B)).t(); + return (data * solve(A, B.t())).t(); } void C3D8::GetData(vtkSmartPointer& arrays, const OutputType type) { diff --git a/Element/Cube/C3D8.h b/Element/Cube/C3D8.h index 2f6a58106..c769444ea 100644 --- a/Element/Cube/C3D8.h +++ b/Element/Cube/C3D8.h @@ -36,7 +36,8 @@ class C3D8 final : public MaterialElement3D { vec coor; double weight; unique_ptr c_material; - mat pn_pxyz, strain_mat; + mat pn_pxyz; + sp_mat strain_mat; IntegrationPoint(vec&&, double, unique_ptr&&, mat&&); }; @@ -53,11 +54,12 @@ class C3D8 final : public MaterialElement3D { vector int_pt; public: - C3D8(unsigned, // tag - uvec&&, // node tag - unsigned, // material tag - char = 'I', // reduced integration - bool = false // nonlinear geometry switch + C3D8( + unsigned, // tag + uvec&&, // node tag + unsigned, // material tag + char = 'I', // reduced integration + bool = false // nonlinear geometry switch ); int initialize(const shared_ptr&) override; diff --git a/Element/Cube/C3D8I.cpp b/Element/Cube/C3D8I.cpp index 13917e88a..901b0aaed 100644 --- a/Element/Cube/C3D8I.cpp +++ b/Element/Cube/C3D8I.cpp @@ -74,7 +74,7 @@ int C3D8I::initialize(const shared_ptr& D) { initial_stiffness -= stiff_b * solve(stiff_a, stiff_b.t()); trial_stiffness = current_stiffness = initial_stiffness; - if(const auto t_density = mat_proto->get_parameter(ParameterType::DENSITY); t_density > 0.) { + if(const auto t_density = mat_proto->get_density(); t_density > 0.) { initial_mass.zeros(c_size, c_size); for(const auto& I : int_pt) { const auto n_int = compute_shape_function(I.coor, 0); @@ -140,9 +140,9 @@ int C3D8I::reset_status() { mat C3D8I::compute_shape_function(const mat& coordinate, const unsigned order) const { return shape::cube(coordinate, order, c_node); } -vector C3D8I::record(const OutputType T) { +vector C3D8I::record(const OutputType P) { vector data; - for(const auto& I : int_pt) for(const auto& J : I.c_material->record(T)) data.emplace_back(J); + for(const auto& I : int_pt) append_to(data, I.c_material->record(P)); return data; } @@ -171,10 +171,10 @@ void C3D8I::Setup() { mat C3D8I::GetData(const OutputType P) { mat A(int_pt.size(), 7); - mat B(int_pt.size(), 6, fill::zeros); + mat B(6, int_pt.size(), fill::zeros); for(size_t I = 0; I < int_pt.size(); ++I) { - if(const auto C = int_pt[I].c_material->record(P); !C.empty()) B(I, 0, size(C[0])) = C[0]; + if(const auto C = int_pt[I].c_material->record(P); !C.empty()) B(0, I, size(C[0])) = C[0]; A.row(I) = interpolation::linear(int_pt[I].coor); } @@ -189,7 +189,7 @@ mat C3D8I::GetData(const OutputType P) { data.row(6) = interpolation::linear(1., 1., 1.); data.row(7) = interpolation::linear(-1., 1., 1.); - return (data * solve(A, B)).t(); + return (data * solve(A, B.t())).t(); } void C3D8I::GetData(vtkSmartPointer& arrays, const OutputType type) { diff --git a/Element/Cube/C3D8I.h b/Element/Cube/C3D8I.h index 58d4fdd2c..39734c4f4 100644 --- a/Element/Cube/C3D8I.h +++ b/Element/Cube/C3D8I.h @@ -45,9 +45,10 @@ class C3D8I final : public MaterialElement3D { vector int_pt; public: - C3D8I(unsigned, // tag - uvec&&, // node tag - unsigned // material tag + C3D8I( + unsigned, // tag + uvec&&, // node tag + unsigned // material tag ); int initialize(const shared_ptr&) override; diff --git a/Element/Cube/CIN3D8.cpp b/Element/Cube/CIN3D8.cpp index d25c5f4c0..ed43e5cac 100644 --- a/Element/Cube/CIN3D8.cpp +++ b/Element/Cube/CIN3D8.cpp @@ -27,7 +27,13 @@ CIN3D8::IntegrationPoint::IntegrationPoint(vec&& C, const double W, unique_ptr>(M)) , pn_pxyz(std::forward(P)) - , strain_mat(6, c_size, fill::zeros) {} + , strain_mat(6, c_size) { + for(auto I = 0u, J = 0u, K = 1u, L = 2u; I < c_node; ++I, J += c_dof, K += c_dof, L += c_dof) { + strain_mat(0, J) = strain_mat(3, K) = strain_mat(5, L) = pn_pxyz(0, I); + strain_mat(3, J) = strain_mat(1, K) = strain_mat(4, L) = pn_pxyz(1, I); + strain_mat(5, J) = strain_mat(4, K) = strain_mat(2, L) = pn_pxyz(2, I); + } +} mat CIN3D8::compute_mapping(const vec& C) { const auto &X = C(0), &Y = C(1), &Z = C(2); @@ -160,17 +166,12 @@ int CIN3D8::initialize(const shared_ptr& D) { const mat jacob = compute_mapping(t_vec) * ele_coor; int_pt.emplace_back(std::move(t_vec), plan(I, 3) * det(jacob), material_proto->get_copy(), solve(jacob, compute_dn(t_vec))); - auto& c_pt = int_pt.back(); - for(unsigned J = 0, K = 0, L = 1, M = 2; J < c_node; ++J, K += c_dof, L += c_dof, M += c_dof) { - c_pt.strain_mat(0, K) = c_pt.strain_mat(3, L) = c_pt.strain_mat(5, M) = c_pt.pn_pxyz(0, J); - c_pt.strain_mat(3, K) = c_pt.strain_mat(1, L) = c_pt.strain_mat(4, M) = c_pt.pn_pxyz(1, J); - c_pt.strain_mat(5, K) = c_pt.strain_mat(4, L) = c_pt.strain_mat(2, M) = c_pt.pn_pxyz(2, J); - } + const auto& c_pt = int_pt.back(); initial_stiffness += c_pt.weight * c_pt.strain_mat.t() * ini_stiffness * c_pt.strain_mat; } trial_stiffness = current_stiffness = initial_stiffness; - if(const auto t_density = material_proto->get_parameter(ParameterType::DENSITY); t_density > 0.) { + if(const auto t_density = material_proto->get_density(); t_density > 0.) { initial_mass.zeros(c_size, c_size); for(const auto& I : int_pt) { const auto n_int = compute_n(I.coor); @@ -226,9 +227,9 @@ int CIN3D8::reset_status() { return code; } -vector CIN3D8::record(const OutputType T) { +vector CIN3D8::record(const OutputType P) { vector data; - for(const auto& I : int_pt) for(const auto& J : I.c_material->record(T)) data.emplace_back(J); + for(const auto& I : int_pt) append_to(data, I.c_material->record(P)); return data; } diff --git a/Element/Cube/CIN3D8.h b/Element/Cube/CIN3D8.h index 3395e89b6..b7def3ec2 100644 --- a/Element/Cube/CIN3D8.h +++ b/Element/Cube/CIN3D8.h @@ -36,7 +36,8 @@ class CIN3D8 final : public MaterialElement3D { vec coor; double weight; unique_ptr c_material; - mat pn_pxyz, strain_mat; + mat pn_pxyz; + sp_mat strain_mat; IntegrationPoint(vec&&, double, unique_ptr&&, mat&&); }; @@ -49,9 +50,10 @@ class CIN3D8 final : public MaterialElement3D { static mat compute_dn(const vec&); public: - CIN3D8(unsigned, // tag - uvec&&, // node tag - unsigned // material tag + CIN3D8( + unsigned, // tag + uvec&&, // node tag + unsigned // material tag ); int initialize(const shared_ptr&) override; diff --git a/Element/Cube/CMakeLists.txt b/Element/Cube/CMakeLists.txt index 34023985f..4ac928ebe 100644 --- a/Element/Cube/CMakeLists.txt +++ b/Element/Cube/CMakeLists.txt @@ -6,4 +6,4 @@ set(Cube Cube/CIN3D8.cpp Cube/DC3D4.cpp Cube/DC3D8.cpp - ) +) diff --git a/Element/Cube/Cube b/Element/Cube/Cube index 23390a567..a68278342 100644 --- a/Element/Cube/Cube +++ b/Element/Cube/Cube @@ -4,4 +4,4 @@ #include "C3D8I.h" #include "CIN3D8.h" #include "DC3D4.h" -#include "DC3D8.h" \ No newline at end of file +#include "DC3D8.h" diff --git a/Element/Cube/DC3D4.cpp b/Element/Cube/DC3D4.cpp index e463d49cf..14d4782b1 100644 --- a/Element/Cube/DC3D4.cpp +++ b/Element/Cube/DC3D4.cpp @@ -105,10 +105,10 @@ int DC3D4::clear_status() { int DC3D4::reset_status() { return c_material->reset_status(); } -vector DC3D4::record(const OutputType T) { - if(T == OutputType::DAMAGE) return {get_current_displacement()(d_dof)}; +vector DC3D4::record(const OutputType P) { + if(P == OutputType::DAMAGE) return {get_current_displacement()(d_dof)}; - return c_material->record(T); + return c_material->record(P); } void DC3D4::print() { diff --git a/Element/Cube/DC3D4.h b/Element/Cube/DC3D4.h index 9b0ff6c13..d241d67ce 100644 --- a/Element/Cube/DC3D4.h +++ b/Element/Cube/DC3D4.h @@ -49,11 +49,12 @@ class DC3D4 final : public MaterialElement3D { double maximum_energy = 0.; public: - DC3D4(unsigned, // tag - uvec&&, // node tag - unsigned, // material tag - double, // characteristic length - double // energy release rate + DC3D4( + unsigned, // tag + uvec&&, // node tag + unsigned, // material tag + double, // characteristic length + double // energy release rate ); int initialize(const shared_ptr&) override; diff --git a/Element/Cube/DC3D8.cpp b/Element/Cube/DC3D8.cpp index 45af1c4ed..403c897aa 100644 --- a/Element/Cube/DC3D8.cpp +++ b/Element/Cube/DC3D8.cpp @@ -31,7 +31,13 @@ DC3D8::IntegrationPoint::IntegrationPoint(vec&& C, const double W, unique_ptr>(M)) , n_mat(std::forward(N)) , pn_mat(std::forward(P)) - , strain_mat(6, 24, fill::zeros) {} + , strain_mat(6, 24) { + for(auto I = 0u, J = 0u, K = 1u, L = 2u; I < c_node; ++I, J += 3, K += 3, L += 3) { + strain_mat(0, J) = strain_mat(3, K) = strain_mat(5, L) = pn_mat(0, I); + strain_mat(3, J) = strain_mat(1, K) = strain_mat(4, L) = pn_mat(1, I); + strain_mat(5, J) = strain_mat(4, K) = strain_mat(2, L) = pn_mat(2, I); + } +} DC3D8::DC3D8(const unsigned T, uvec&& N, const unsigned M, const double CL, const double RR) : MaterialElement3D(T, c_node, c_dof, std::forward(N), uvec{M}, false, {DOF::U1, DOF::U2, DOF::U3, DOF::DMG}) @@ -56,12 +62,7 @@ int DC3D8::initialize(const shared_ptr& D) { const mat jacob = pn * ele_coor; int_pt.emplace_back(std::move(t_vec), plan(I, 3) * det(jacob), material_proto->get_copy(), shape::cube(t_vec, 0), solve(jacob, pn)); - auto& c_pt = int_pt.back(); - for(unsigned J = 0, K = 0, L = 1, M = 2; J < c_node; ++J, K += 3, L += 3, M += 3) { - c_pt.strain_mat(0, K) = c_pt.strain_mat(3, L) = c_pt.strain_mat(5, M) = c_pt.pn_mat(0, J); - c_pt.strain_mat(3, K) = c_pt.strain_mat(1, L) = c_pt.strain_mat(4, M) = c_pt.pn_mat(1, J); - c_pt.strain_mat(5, K) = c_pt.strain_mat(4, L) = c_pt.strain_mat(2, M) = c_pt.pn_mat(2, J); - } + const auto& c_pt = int_pt.back(); initial_stiffness(u_dof, u_dof) += c_pt.weight * c_pt.strain_mat.t() * ini_stiffness * c_pt.strain_mat; initial_stiffness(d_dof, d_dof) += c_pt.weight * release_rate / characteristic_length * c_pt.n_mat.t() * c_pt.n_mat; initial_stiffness(d_dof, d_dof) += c_pt.weight * release_rate * characteristic_length * c_pt.pn_mat.t() * c_pt.pn_mat; @@ -127,11 +128,11 @@ int DC3D8::reset_status() { return code; } -vector DC3D8::record(const OutputType T) { - if(T == OutputType::DAMAGE) return {get_current_displacement()(d_dof)}; +vector DC3D8::record(const OutputType P) { + if(P == OutputType::DAMAGE) return {get_current_displacement()(d_dof)}; vector data; - for(const auto& I : int_pt) for(const auto& J : I.c_material->record(T)) data.emplace_back(J); + for(const auto& I : int_pt) append_to(data, I.c_material->record(P)); return data; } @@ -166,10 +167,10 @@ mat DC3D8::GetData(const OutputType P) { } mat A(int_pt.size(), 7); - mat B(int_pt.size(), 6, fill::zeros); + mat B(6, int_pt.size(), fill::zeros); for(size_t I = 0; I < int_pt.size(); ++I) { - if(const auto C = int_pt[I].c_material->record(P); !C.empty()) B(I, 0, size(C[0])) = C[0]; + if(const auto C = int_pt[I].c_material->record(P); !C.empty()) B(0, I, size(C[0])) = C[0]; A.row(I) = interpolation::linear(int_pt[I].coor); } @@ -184,7 +185,7 @@ mat DC3D8::GetData(const OutputType P) { data.row(6) = interpolation::linear(1., 1., 1.); data.row(7) = interpolation::linear(-1., 1., 1.); - return (data * solve(A, B)).t(); + return (data * solve(A, B.t())).t(); } void DC3D8::GetData(vtkSmartPointer& arrays, const OutputType type) { diff --git a/Element/Cube/DC3D8.h b/Element/Cube/DC3D8.h index e4e61b18e..88b7848fc 100644 --- a/Element/Cube/DC3D8.h +++ b/Element/Cube/DC3D8.h @@ -38,7 +38,8 @@ class DC3D8 final : public MaterialElement3D { double weight; double maximum_energy = 0.; unique_ptr c_material; - mat n_mat, pn_mat, strain_mat; + mat n_mat, pn_mat; + sp_mat strain_mat; IntegrationPoint(vec&&, double, unique_ptr&&, mat&&, mat&&); }; @@ -51,11 +52,12 @@ class DC3D8 final : public MaterialElement3D { vector int_pt; public: - DC3D8(unsigned, // tag - uvec&&, // node tag - unsigned, // material tag - double, // characteristic length - double // release rate + DC3D8( + unsigned, // tag + uvec&&, // node tag + unsigned, // material tag + double, // characteristic length + double // release rate ); int initialize(const shared_ptr&) override; diff --git a/Element/Element.cpp b/Element/Element.cpp index 04915e27f..5879f1e52 100644 --- a/Element/Element.cpp +++ b/Element/Element.cpp @@ -44,6 +44,12 @@ void Element::update_viscous_energy() { viscous_energy += .5 * (current_damping_force.is_empty() ? dot(get_incre_displacement(), trial_damping_force) : dot(get_incre_displacement(), current_damping_force + trial_damping_force)); } +void Element::update_nonviscous_energy() { + if(trial_nonviscous_force.is_empty()) return; + + nonviscous_energy += .5 * dot(get_incre_displacement(), real(sum(current_nonviscous_force + trial_nonviscous_force, 1))); +} + void Element::update_complementary_energy() { if(trial_resistance.is_empty()) return; @@ -251,7 +257,7 @@ Element::Element(const unsigned T, const unsigned NN, const unsigned ND, uvec&& : Element(T, NN, ND, std::forward(NT), {}, false, MaterialType::D0, std::forward>(DI)) {} Element::Element(const unsigned T, const unsigned NN, const unsigned ND, uvec&& NT, uvec&& MT, const bool F, const MaterialType MTP, std::vector&& DI) - : DataElement{std::forward(NT), std::forward(MT), uvec{}, F, true, true, true, true, {}} + : DataElement{std::forward(NT), std::forward(MT), uvec{}, F, true, true, true, true, true, {}} , ElementBase(T) , num_node(NN) , num_dof(ND) @@ -260,7 +266,7 @@ Element::Element(const unsigned T, const unsigned NN, const unsigned ND, uvec&& , dof_identifier(std::forward>(DI)) { suanpan_assert([&] { if(!dof_identifier.empty() && num_dof != dof_identifier.size()) throw invalid_argument("size of dof identifier must meet number of dofs"); }); } Element::Element(const unsigned T, const unsigned NN, const unsigned ND, uvec&& NT, uvec&& ST, const bool F, const SectionType STP, std::vector&& DI) - : DataElement{std::forward(NT), uvec{}, std::forward(ST), F, true, true, true, true, {}} + : DataElement{std::forward(NT), uvec{}, std::forward(ST), F, true, true, true, true, true, {}} , ElementBase(T) , num_node(NN) , num_dof(ND) @@ -270,7 +276,7 @@ Element::Element(const unsigned T, const unsigned NN, const unsigned ND, uvec&& // for contact elements that use node groups Element::Element(const unsigned T, const unsigned ND, uvec&& GT) - : DataElement{std::forward(GT), {}, {}, false, true, true, true, true, {}} + : DataElement{std::forward(GT), {}, {}, false, true, true, true, true, true, {}} , ElementBase(T) , num_node(static_cast(-1)) , num_dof(ND) @@ -280,7 +286,7 @@ Element::Element(const unsigned T, const unsigned ND, uvec&& GT) // for elements that use other elements Element::Element(const unsigned T, const unsigned ND, const unsigned ET, const unsigned NT) - : DataElement{{NT}, {}, {}, false, true, true, true, true, {}} + : DataElement{{NT}, {}, {}, false, true, true, true, true, true, {}} , ElementBase(T) , num_node(static_cast(-1)) , num_dof(ND) @@ -291,7 +297,7 @@ Element::Element(const unsigned T, const unsigned ND, const unsigned ET, const u int Element::initialize_base(const shared_ptr& D) { // initialized already, check node validity if(node_ptr.size() == num_node) { - for(const auto& I : node_ptr) if(const auto& t_node = I.lock(); nullptr == t_node || !t_node->is_active()) return SUANPAN_FAIL; + for(const auto& I : node_ptr) if(const auto t_node = I.lock(); nullptr == t_node || !t_node->is_active()) return SUANPAN_FAIL; return SUANPAN_SUCCESS; } @@ -357,7 +363,7 @@ int Element::initialize_base(const shared_ptr& D) { if(MaterialType::D0 != mat_type) for(const auto& t_tag : material_tag) if(auto& t_material = D->get(t_tag); nullptr == t_material || !t_material->is_active() || t_material->get_material_type() != MaterialType::DS && t_material->get_material_type() != mat_type) { - suanpan_warning("Element {} disabled as material {} cannot be found.\n", get_tag(), t_tag); + suanpan_warning("Element {} disabled as material {} cannot be found or type mismatch.\n", get_tag(), t_tag); return SUANPAN_FAIL; } @@ -365,7 +371,7 @@ int Element::initialize_base(const shared_ptr& D) { if(SectionType::D0 != sec_type) for(const auto& t_tag : section_tag) if(auto& t_section = D->get
(t_tag); nullptr == t_section || !t_section->is_active() || t_section->get_section_type() != sec_type) { - suanpan_warning("Element {} disabled as section {} cannot be found.\n", get_tag(), t_tag); + suanpan_warning("Element {} disabled as section {} cannot be found or type mismatch.\n", get_tag(), t_tag); return SUANPAN_FAIL; } @@ -407,6 +413,8 @@ bool Element::if_update_mass() const { return update_mass; } bool Element::if_update_damping() const { return update_damping; } +bool Element::if_update_nonviscous() const { return update_nonviscous; } + bool Element::if_update_stiffness() const { return update_stiffness; } bool Element::if_update_geometry() const { return update_geometry; } @@ -439,6 +447,10 @@ const vec& Element::get_trial_damping_force() const { return trial_damping_force const vec& Element::get_current_damping_force() const { return current_damping_force; } +const cx_mat& Element::get_trial_nonviscous_force() const { return trial_nonviscous_force; } + +const cx_mat& Element::get_current_nonviscous_force() const { return current_nonviscous_force; } + const vec& Element::get_trial_inertial_force() { if(!trial_mass.empty()) trial_inertial_force = trial_mass * get_trial_acceleration(); return trial_inertial_force; @@ -461,6 +473,8 @@ const mat& Element::get_trial_mass() const { return trial_mass; } const mat& Element::get_trial_damping() const { return trial_damping; } +const mat& Element::get_trial_nonviscous() const { return trial_nonviscous; } + const mat& Element::get_trial_stiffness() const { return trial_stiffness; } const mat& Element::get_trial_geometry() const { return trial_geometry; } @@ -471,6 +485,8 @@ const mat& Element::get_current_mass() const { return current_mass; } const mat& Element::get_current_damping() const { return current_damping; } +const mat& Element::get_current_nonviscous() const { return current_nonviscous; } + const mat& Element::get_current_stiffness() const { return current_stiffness; } const mat& Element::get_current_geometry() const { return current_geometry; } @@ -481,6 +497,8 @@ const mat& Element::get_initial_mass() const { return initial_mass; } const mat& Element::get_initial_damping() const { return initial_damping; } +const mat& Element::get_initial_nonviscous() const { return initial_nonviscous; } + const mat& Element::get_initial_stiffness() const { return initial_stiffness; } const mat& Element::get_initial_geometry() const { return initial_geometry; } @@ -492,15 +510,18 @@ const mat& Element::get_mass_container() const { return mass_container; } const mat& Element::get_stiffness_container() const { return stiffness_container; } int Element::clear_status() { - if(update_mass && !initial_mass.is_empty()) trial_mass = current_mass = initial_mass; - if(update_damping && !initial_damping.is_empty()) trial_damping = current_damping = initial_damping; - if(update_stiffness && !initial_stiffness.is_empty()) trial_stiffness = current_stiffness = initial_stiffness; - if(update_geometry && !initial_geometry.is_empty()) trial_geometry = current_geometry = initial_geometry; + if(update_mass) trial_mass = current_mass = initial_mass; + if(update_damping) trial_damping = current_damping = initial_damping; + if(update_nonviscous) trial_nonviscous = current_nonviscous = initial_nonviscous; + if(update_stiffness) trial_stiffness = current_stiffness = initial_stiffness; + if(update_geometry) trial_geometry = current_geometry = initial_geometry; if(!trial_resistance.is_empty()) trial_resistance.zeros(); if(!current_resistance.is_empty()) current_resistance.zeros(); if(!trial_damping_force.is_empty()) trial_damping_force.zeros(); if(!current_damping_force.is_empty()) current_damping_force.zeros(); + if(!trial_nonviscous_force.is_empty()) trial_nonviscous_force.zeros(); + if(!current_nonviscous_force.is_empty()) current_nonviscous_force.zeros(); if(!trial_inertial_force.is_empty()) trial_inertial_force.zeros(); if(!current_inertial_force.is_empty()) current_inertial_force.zeros(); @@ -510,6 +531,7 @@ int Element::clear_status() { strain_energy = 0.; kinetic_energy = 0.; viscous_energy = 0.; + nonviscous_energy = 0.; complementary_energy = 0.; momentum.zeros(); @@ -522,6 +544,7 @@ int Element::commit_status() { update_strain_energy(); update_kinetic_energy(); update_viscous_energy(); + update_nonviscous_energy(); update_complementary_energy(); update_momentum(); @@ -531,6 +554,7 @@ int Element::commit_status() { if(update_geometry && !trial_geometry.is_empty()) current_geometry = trial_geometry; if(!trial_resistance.is_empty()) current_resistance = trial_resistance; if(!trial_damping_force.is_empty()) current_damping_force = trial_damping_force; + if(!trial_nonviscous_force.is_empty()) current_nonviscous_force = trial_nonviscous_force; if(!trial_inertial_force.is_empty()) current_inertial_force = trial_inertial_force; return SUANPAN_SUCCESS; @@ -539,10 +563,12 @@ int Element::commit_status() { int Element::reset_status() { if(update_mass && !trial_mass.is_empty()) trial_mass = current_mass; if(update_damping && !trial_damping.is_empty()) trial_damping = current_damping; + if(update_nonviscous && !trial_nonviscous.is_empty()) trial_nonviscous = current_nonviscous; if(update_stiffness && !trial_stiffness.is_empty()) trial_stiffness = current_stiffness; if(update_geometry && !trial_geometry.is_empty()) trial_geometry = current_geometry; if(!trial_resistance.is_empty()) trial_resistance = current_resistance; if(!trial_damping_force.is_empty()) trial_damping_force = current_damping_force; + if(!trial_nonviscous_force.is_empty()) trial_nonviscous_force = current_nonviscous_force; if(!trial_inertial_force.is_empty()) trial_inertial_force = current_inertial_force; return SUANPAN_SUCCESS; @@ -562,6 +588,8 @@ double Element::get_kinetic_energy() const { return kinetic_energy; } double Element::get_viscous_energy() const { return viscous_energy; } +double Element::get_nonviscous_energy() const { return nonviscous_energy; } + const vec& Element::get_momentum() const { return momentum; } double Element::get_momentum_component(const DOF D) const { @@ -579,6 +607,11 @@ double Element::get_characteristic_length() const { return characteristic_length mat Element::compute_shape_function(const mat&, unsigned) const { return {}; } +std::vector& append_to(std::vector& a, std::vector&& b) { + a.insert(a.end(), std::make_move_iterator(b.begin()), std::make_move_iterator(b.end())); + return a; +} + void ConstantMass(DataElement* E) { E->update_mass = false; E->current_mass = mat(E->initial_mass.memptr(), E->initial_mass.n_rows, E->initial_mass.n_cols, false, true); diff --git a/Element/Element.h b/Element/Element.h index 583e3e3d1..d826d05bc 100644 --- a/Element/Element.h +++ b/Element/Element.h @@ -54,34 +54,40 @@ struct DataElement { const bool nlgeom = false; // nonlinear geometry switch - bool update_mass = true; // flag to indicate if update matrix - bool update_damping = true; // flag to indicate if update matrix - bool update_stiffness = true; // flag to indicate if update matrix - bool update_geometry = true; // flag to indicate if update matrix + bool update_mass = true; // flag to indicate if update matrix + bool update_damping = true; // flag to indicate if update matrix + bool update_nonviscous = true; // flag to indicate if update matrix + bool update_stiffness = true; // flag to indicate if update matrix + bool update_geometry = true; // flag to indicate if update matrix uvec dof_encoding; // DoF encoding vector - mat initial_mass{}; // mass matrix - mat initial_damping{}; // damping matrix - mat initial_stiffness{}; // stiffness matrix - mat initial_geometry{}; // geometry matrix - - mat trial_mass{}; // mass matrix - mat trial_damping{}; // damping matrix - mat trial_stiffness{}; // stiffness matrix - mat trial_geometry{}; // geometry matrix - - mat current_mass{}; // mass matrix - mat current_damping{}; // damping matrix - mat current_stiffness{}; // stiffness matrix - mat current_geometry{}; // geometry matrix - - vec trial_resistance{}; // resistance vector - vec current_resistance{}; // resistance vector - vec trial_damping_force{}; // damping force - vec current_damping_force{}; // damping force - vec trial_inertial_force{}; // inertial force - vec current_inertial_force{}; // inertial force + mat initial_mass{}; // mass matrix + mat initial_damping{}; // damping matrix + mat initial_nonviscous{}; // nonviscous damping matrix + mat initial_stiffness{}; // stiffness matrix + mat initial_geometry{}; // geometry matrix + + mat trial_mass{}; // mass matrix + mat trial_damping{}; // damping matrix + mat trial_nonviscous{}; // nonviscous damping matrix + mat trial_stiffness{}; // stiffness matrix + mat trial_geometry{}; // geometry matrix + + mat current_mass{}; // mass matrix + mat current_damping{}; // damping matrix + mat current_nonviscous{}; // nonviscous damping matrix + mat current_stiffness{}; // stiffness matrix + mat current_geometry{}; // geometry matrix + + vec trial_resistance{}; // resistance vector + vec current_resistance{}; // resistance vector + vec trial_damping_force{}; // damping force + vec current_damping_force{}; // damping force + cx_mat trial_nonviscous_force{}; // nonviscous damping force + cx_mat current_nonviscous_force{}; // nonviscous damping force + vec trial_inertial_force{}; // inertial force + vec current_inertial_force{}; // inertial force vec trial_body_force{}; vec current_body_force{}; @@ -97,6 +103,7 @@ struct DataElement { double strain_energy = 0.; double kinetic_energy = 0.; double viscous_energy = 0.; + double nonviscous_energy = 0.; double complementary_energy = 0.; vec momentum{}; @@ -128,6 +135,7 @@ class Element : protected DataElement, public ElementBase { void update_strain_energy() override; void update_kinetic_energy() override; void update_viscous_energy() override; + void update_nonviscous_energy() override; void update_complementary_energy() override; void update_momentum() override; @@ -136,16 +144,6 @@ class Element : protected DataElement, public ElementBase { [[nodiscard]] mat get_coordinate(unsigned) const override; - [[nodiscard]] vec get_incre_displacement() const override; - [[nodiscard]] vec get_incre_velocity() const override; - [[nodiscard]] vec get_incre_acceleration() const override; - [[nodiscard]] vec get_trial_displacement() const override; - [[nodiscard]] vec get_trial_velocity() const override; - [[nodiscard]] vec get_trial_acceleration() const override; - [[nodiscard]] vec get_current_displacement() const override; - [[nodiscard]] vec get_current_velocity() const override; - [[nodiscard]] vec get_current_acceleration() const override; - [[nodiscard]] vec get_node_incre_resistance() const override; [[nodiscard]] vec get_node_trial_resistance() const override; [[nodiscard]] vec get_node_current_resistance() const override; @@ -154,38 +152,43 @@ class Element : protected DataElement, public ElementBase { [[nodiscard]] std::vector> get_section(const shared_ptr&) const override; public: - Element(unsigned, // tag - unsigned, // number of nodes - unsigned, // number of dofs - uvec&&, // node encoding - std::vector&& // dof identifier + Element( + unsigned, // tag + unsigned, // number of nodes + unsigned, // number of dofs + uvec&&, // node encoding + std::vector&& // dof identifier ); - Element(unsigned, // tag - unsigned, // number of nodes - unsigned, // number of dofs - uvec&&, // node encoding - uvec&&, // material tags - bool, // nonlinear geometry switch - MaterialType, // material type for internal check - std::vector&& // dof identifier + Element( + unsigned, // tag + unsigned, // number of nodes + unsigned, // number of dofs + uvec&&, // node encoding + uvec&&, // material tags + bool, // nonlinear geometry switch + MaterialType, // material type for internal check + std::vector&& // dof identifier ); - Element(unsigned, // tag - unsigned, // number of nodes - unsigned, // number of dofs - uvec&&, // node encoding - uvec&&, // section tags - bool, // nonlinear geometry switch - SectionType, // section type for internal check - std::vector&& // dof identifier + Element( + unsigned, // tag + unsigned, // number of nodes + unsigned, // number of dofs + uvec&&, // node encoding + uvec&&, // section tags + bool, // nonlinear geometry switch + SectionType, // section type for internal check + std::vector&& // dof identifier ); - Element(unsigned, // tag - unsigned, // number of dofs - uvec&& // group encoding + Element( + unsigned, // tag + unsigned, // number of dofs + uvec&& // group encoding ); - Element(unsigned, // tag - unsigned, // number of dofs - unsigned, // other element tag - unsigned // node tag + Element( + unsigned, // tag + unsigned, // number of dofs + unsigned, // other element tag + unsigned // node tag ); Element(const Element&) = delete; // copy forbidden Element(Element&&) = delete; // move forbidden @@ -206,6 +209,7 @@ class Element : protected DataElement, public ElementBase { [[nodiscard]] bool if_update_mass() const override; [[nodiscard]] bool if_update_damping() const override; + [[nodiscard]] bool if_update_nonviscous() const override; [[nodiscard]] bool if_update_stiffness() const override; [[nodiscard]] bool if_update_geometry() const override; @@ -224,10 +228,22 @@ class Element : protected DataElement, public ElementBase { void clear_node_ptr() override; [[nodiscard]] const std::vector>& get_node_ptr() const override; + [[nodiscard]] vec get_incre_displacement() const override; + [[nodiscard]] vec get_incre_velocity() const override; + [[nodiscard]] vec get_incre_acceleration() const override; + [[nodiscard]] vec get_trial_displacement() const override; + [[nodiscard]] vec get_trial_velocity() const override; + [[nodiscard]] vec get_trial_acceleration() const override; + [[nodiscard]] vec get_current_displacement() const override; + [[nodiscard]] vec get_current_velocity() const override; + [[nodiscard]] vec get_current_acceleration() const override; + [[nodiscard]] const vec& get_trial_resistance() const override; [[nodiscard]] const vec& get_current_resistance() const override; [[nodiscard]] const vec& get_trial_damping_force() const override; [[nodiscard]] const vec& get_current_damping_force() const override; + [[nodiscard]] const cx_mat& get_trial_nonviscous_force() const override; + [[nodiscard]] const cx_mat& get_current_nonviscous_force() const override; [[nodiscard]] const vec& get_trial_inertial_force() override; [[nodiscard]] const vec& get_current_inertial_force() override; @@ -238,18 +254,21 @@ class Element : protected DataElement, public ElementBase { [[nodiscard]] const mat& get_trial_mass() const override; [[nodiscard]] const mat& get_trial_damping() const override; + [[nodiscard]] const mat& get_trial_nonviscous() const override; [[nodiscard]] const mat& get_trial_stiffness() const override; [[nodiscard]] const mat& get_trial_geometry() const override; [[nodiscard]] const mat& get_trial_secant() const override; [[nodiscard]] const mat& get_current_mass() const override; [[nodiscard]] const mat& get_current_damping() const override; + [[nodiscard]] const mat& get_current_nonviscous() const override; [[nodiscard]] const mat& get_current_stiffness() const override; [[nodiscard]] const mat& get_current_geometry() const override; [[nodiscard]] const mat& get_current_secant() const override; [[nodiscard]] const mat& get_initial_mass() const override; [[nodiscard]] const mat& get_initial_damping() const override; + [[nodiscard]] const mat& get_initial_nonviscous() const override; [[nodiscard]] const mat& get_initial_stiffness() const override; [[nodiscard]] const mat& get_initial_geometry() const override; [[nodiscard]] const mat& get_initial_secant() const override; @@ -270,6 +289,7 @@ class Element : protected DataElement, public ElementBase { [[nodiscard]] double get_complementary_energy() const override; [[nodiscard]] double get_kinetic_energy() const override; [[nodiscard]] double get_viscous_energy() const override; + [[nodiscard]] double get_nonviscous_energy() const override; [[nodiscard]] const vec& get_momentum() const override; [[nodiscard]] double get_momentum_component(DOF) const override; @@ -278,6 +298,8 @@ class Element : protected DataElement, public ElementBase { [[nodiscard]] mat compute_shape_function(const mat&, unsigned) const override; }; +std::vector& append_to(std::vector&, std::vector&&); + #endif //! @} diff --git a/Element/ElementBase.h b/Element/ElementBase.h index 3dfb5e00e..3314d426e 100644 --- a/Element/ElementBase.h +++ b/Element/ElementBase.h @@ -43,6 +43,7 @@ class ElementBase : public Tag, public vtkBase { virtual void update_strain_energy() = 0; virtual void update_kinetic_energy() = 0; virtual void update_viscous_energy() = 0; + virtual void update_nonviscous_energy() = 0; virtual void update_complementary_energy() = 0; virtual void update_momentum() = 0; @@ -61,16 +62,6 @@ class ElementBase : public Tag, public vtkBase { [[nodiscard]] virtual mat get_coordinate(unsigned) const = 0; - [[nodiscard]] virtual vec get_incre_displacement() const = 0; - [[nodiscard]] virtual vec get_incre_velocity() const = 0; - [[nodiscard]] virtual vec get_incre_acceleration() const = 0; - [[nodiscard]] virtual vec get_trial_displacement() const = 0; - [[nodiscard]] virtual vec get_trial_velocity() const = 0; - [[nodiscard]] virtual vec get_trial_acceleration() const = 0; - [[nodiscard]] virtual vec get_current_displacement() const = 0; - [[nodiscard]] virtual vec get_current_velocity() const = 0; - [[nodiscard]] virtual vec get_current_acceleration() const = 0; - [[nodiscard]] virtual vec get_node_incre_resistance() const = 0; [[nodiscard]] virtual vec get_node_trial_resistance() const = 0; [[nodiscard]] virtual vec get_node_current_resistance() const = 0; @@ -102,6 +93,7 @@ class ElementBase : public Tag, public vtkBase { [[nodiscard]] virtual bool if_update_mass() const = 0; [[nodiscard]] virtual bool if_update_damping() const = 0; + [[nodiscard]] virtual bool if_update_nonviscous() const = 0; [[nodiscard]] virtual bool if_update_stiffness() const = 0; [[nodiscard]] virtual bool if_update_geometry() const = 0; @@ -120,10 +112,22 @@ class ElementBase : public Tag, public vtkBase { virtual void clear_node_ptr() = 0; [[nodiscard]] virtual const std::vector>& get_node_ptr() const = 0; + [[nodiscard]] virtual vec get_incre_displacement() const = 0; + [[nodiscard]] virtual vec get_incre_velocity() const = 0; + [[nodiscard]] virtual vec get_incre_acceleration() const = 0; + [[nodiscard]] virtual vec get_trial_displacement() const = 0; + [[nodiscard]] virtual vec get_trial_velocity() const = 0; + [[nodiscard]] virtual vec get_trial_acceleration() const = 0; + [[nodiscard]] virtual vec get_current_displacement() const = 0; + [[nodiscard]] virtual vec get_current_velocity() const = 0; + [[nodiscard]] virtual vec get_current_acceleration() const = 0; + [[nodiscard]] virtual const vec& get_trial_resistance() const = 0; [[nodiscard]] virtual const vec& get_current_resistance() const = 0; [[nodiscard]] virtual const vec& get_trial_damping_force() const = 0; [[nodiscard]] virtual const vec& get_current_damping_force() const = 0; + [[nodiscard]] virtual const cx_mat& get_trial_nonviscous_force() const = 0; + [[nodiscard]] virtual const cx_mat& get_current_nonviscous_force() const = 0; [[nodiscard]] virtual const vec& get_trial_inertial_force() = 0; [[nodiscard]] virtual const vec& get_current_inertial_force() = 0; @@ -134,18 +138,21 @@ class ElementBase : public Tag, public vtkBase { [[nodiscard]] virtual const mat& get_trial_mass() const = 0; [[nodiscard]] virtual const mat& get_trial_damping() const = 0; + [[nodiscard]] virtual const mat& get_trial_nonviscous() const = 0; [[nodiscard]] virtual const mat& get_trial_stiffness() const = 0; [[nodiscard]] virtual const mat& get_trial_geometry() const = 0; [[nodiscard]] virtual const mat& get_trial_secant() const = 0; [[nodiscard]] virtual const mat& get_current_mass() const = 0; [[nodiscard]] virtual const mat& get_current_damping() const = 0; + [[nodiscard]] virtual const mat& get_current_nonviscous() const = 0; [[nodiscard]] virtual const mat& get_current_stiffness() const = 0; [[nodiscard]] virtual const mat& get_current_geometry() const = 0; [[nodiscard]] virtual const mat& get_current_secant() const = 0; [[nodiscard]] virtual const mat& get_initial_mass() const = 0; [[nodiscard]] virtual const mat& get_initial_damping() const = 0; + [[nodiscard]] virtual const mat& get_initial_nonviscous() const = 0; [[nodiscard]] virtual const mat& get_initial_stiffness() const = 0; [[nodiscard]] virtual const mat& get_initial_geometry() const = 0; [[nodiscard]] virtual const mat& get_initial_secant() const = 0; @@ -167,6 +174,7 @@ class ElementBase : public Tag, public vtkBase { [[nodiscard]] virtual double get_complementary_energy() const = 0; [[nodiscard]] virtual double get_kinetic_energy() const = 0; [[nodiscard]] virtual double get_viscous_energy() const = 0; + [[nodiscard]] virtual double get_nonviscous_energy() const = 0; [[nodiscard]] virtual const vec& get_momentum() const = 0; [[nodiscard]] virtual double get_momentum_component(DOF) const = 0; diff --git a/Element/ElementParser.cpp b/Element/ElementParser.cpp index 455918c28..f23138049 100644 --- a/Element/ElementParser.cpp +++ b/Element/ElementParser.cpp @@ -120,7 +120,7 @@ void new_b21h(unique_ptr& return_obj, istringstream& command) { return_obj = make_unique(tag, std::move(node_tag), section_id, elastic_length, is_true(nonlinear)); } -void new_b31(unique_ptr& return_obj, istringstream& command) { +void new_b31(unique_ptr& return_obj, istringstream& command, const bool if_os) { unsigned tag; if(!get_input(command, tag)) { suanpan_error("A valid tag is required.\n"); @@ -157,7 +157,8 @@ void new_b31(unique_ptr& return_obj, istringstream& command) { return; } - return_obj = make_unique(tag, std::move(node_tag), section_id, orientation_id, int_pt, is_true(nonlinear)); + if(if_os) return_obj = make_unique(tag, std::move(node_tag), section_id, orientation_id, int_pt, is_true(nonlinear)); + else return_obj = make_unique(tag, std::move(node_tag), section_id, orientation_id, int_pt, is_true(nonlinear)); } void new_nmb21(unique_ptr& return_obj, istringstream& command, const unsigned which) { @@ -1256,7 +1257,7 @@ void new_dkt3(unique_ptr& return_obj, istringstream& command) { return; } - unsigned num_ip = 3; + auto num_ip = 3u; if(!get_optional_input(command, num_ip)) { suanpan_error("A valid number of integration points is required.\n"); return; @@ -1290,7 +1291,7 @@ void new_dkt4(unique_ptr& return_obj, istringstream& command) { return; } - unsigned num_ip = 3; + auto num_ip = 3u; if(!get_optional_input(command, num_ip)) { suanpan_error("A valid number of integration points is required.\n"); return; @@ -1324,7 +1325,7 @@ void new_dkts3(unique_ptr& return_obj, istringstream& command) { return; } - unsigned num_ip = 3; + auto num_ip = 3u; if(!get_optional_input(command, num_ip)) { suanpan_error("A valid number of integration points is required.\n"); return; @@ -1408,6 +1409,40 @@ void new_eb21(unique_ptr& return_obj, istringstream& command) { return_obj = make_unique(tag, std::move(node_tag), area, moment_inertia, material_tag, is_true(nonlinear)); } +void new_eb31os(unique_ptr& return_obj, istringstream& command) { + unsigned tag; + if(!get_input(command, tag)) { + suanpan_error("A valid tag is required.\n"); + return; + } + + uvec node_tag(2); + if(!get_input(command, node_tag)) { + suanpan_error("Two valid nodes are required.\n"); + return; + } + + vec property(7); + if(!get_input(command, property)) { + suanpan_error("A valid section/material property is required.\n"); + return; + } + + unsigned orientation; + if(!get_input(command, orientation)) { + suanpan_error("A valid orientation tag is required.\n"); + return; + } + + string nonlinear = "false"; + if(command.eof()) + suanpan_debug("Linear geometry assumed.\n"); + else if(!get_input(command, nonlinear)) + suanpan_error("A valid nonlinear geometry switch is required.\n"); + + return_obj = make_unique(tag, std::move(node_tag), std::move(property), orientation, is_true(nonlinear)); +} + void new_f21(unique_ptr& return_obj, istringstream& command) { unsigned tag; if(!get_input(command, tag)) { @@ -1427,13 +1462,13 @@ void new_f21(unique_ptr& return_obj, istringstream& command) { return; } - unsigned int_pt = 6; + auto int_pt = 6u; if(!get_optional_input(command, int_pt)) { suanpan_error("A valid number of integration points is required.\n"); return; } - unsigned nonlinear = 0; + auto nonlinear = 0u; if(command.eof()) suanpan_debug("Linear geometry assumed.\n"); else if(!get_input(command, nonlinear)) @@ -1548,63 +1583,7 @@ void new_gcmq(unique_ptr& return_obj, istringstream& command) { return_obj = make_unique(tag, std::move(node_tag), material_tag, thickness, suanpan::to_upper(int_scheme[0])); } -void new_gcmqi(unique_ptr& return_obj, istringstream& command) { - unsigned tag; - if(!get_input(command, tag)) { - suanpan_error("A valid tag is required.\n"); - return; - } - - uvec node_tag(4); - if(!get_input(command, node_tag)) { - suanpan_error("Four valid nodes are required.\n"); - return; - } - - unsigned material_tag; - if(!get_input(command, material_tag)) { - suanpan_error("A valid material tag is required.\n"); - return; - } - - auto thickness = 1.; - if(command.eof()) - suanpan_debug("Unit thickness assumed.\n"); - else if(!get_input(command, thickness)) - suanpan_error("A valid thickness is required.\n"); - - return_obj = make_unique(tag, std::move(node_tag), material_tag, thickness, 'I'); -} - -void new_gcmql(unique_ptr& return_obj, istringstream& command) { - unsigned tag; - if(!get_input(command, tag)) { - suanpan_error("A valid tag is required.\n"); - return; - } - - uvec node_tag(4); - if(!get_input(command, node_tag)) { - suanpan_error("Four valid nodes are required.\n"); - return; - } - - unsigned material_tag; - if(!get_input(command, material_tag)) { - suanpan_error("A valid material tag is required.\n"); - return; - } - - auto thickness = 1.; - if(command.eof()) - suanpan_debug("Unit thickness assumed.\n"); - else if(!get_input(command, thickness)) - suanpan_error("A valid thickness is required.\n"); - - return_obj = make_unique(tag, std::move(node_tag), material_tag, thickness, 'L'); -} - -void new_gcmqg(unique_ptr& return_obj, istringstream& command) { +void new_gcmq(unique_ptr& return_obj, istringstream& command, const char int_type) { unsigned tag; if(!get_input(command, tag)) { suanpan_error("A valid tag is required.\n"); @@ -1629,10 +1608,10 @@ void new_gcmqg(unique_ptr& return_obj, istringstream& command) { else if(!get_input(command, thickness)) suanpan_error("A valid thickness is required.\n"); - return_obj = make_unique(tag, std::move(node_tag), material_tag, thickness, 'G'); + return_obj = make_unique(tag, std::move(node_tag), material_tag, thickness, int_type); } -void new_sgcmqi(unique_ptr& return_obj, istringstream& command) { +void new_sgcmq(unique_ptr& return_obj, istringstream& command, const char int_type) { unsigned tag; if(!get_input(command, tag)) { suanpan_error("A valid tag is required.\n"); @@ -1657,63 +1636,7 @@ void new_sgcmqi(unique_ptr& return_obj, istringstream& command) { else if(!get_input(command, thickness)) suanpan_error("A valid thickness is required.\n"); - return_obj = make_unique(tag, std::move(node_tag), material_tag, thickness, 'I'); -} - -void new_sgcmql(unique_ptr& return_obj, istringstream& command) { - unsigned tag; - if(!get_input(command, tag)) { - suanpan_error("A valid tag is required.\n"); - return; - } - - uvec node_tag(4); - if(!get_input(command, node_tag)) { - suanpan_error("Four valid nodes are required.\n"); - return; - } - - unsigned material_tag; - if(!get_input(command, material_tag)) { - suanpan_error("A valid material tag is required.\n"); - return; - } - - auto thickness = 1.; - if(command.eof()) - suanpan_debug("Unit thickness assumed.\n"); - else if(!get_input(command, thickness)) - suanpan_error("A valid thickness is required.\n"); - - return_obj = make_unique(tag, std::move(node_tag), material_tag, thickness, 'L'); -} - -void new_sgcmqg(unique_ptr& return_obj, istringstream& command) { - unsigned tag; - if(!get_input(command, tag)) { - suanpan_error("A valid tag is required.\n"); - return; - } - - uvec node_tag(4); - if(!get_input(command, node_tag)) { - suanpan_error("Four valid nodes are required.\n"); - return; - } - - unsigned material_tag; - if(!get_input(command, material_tag)) { - suanpan_error("A valid material tag is required.\n"); - return; - } - - auto thickness = 1.; - if(command.eof()) - suanpan_debug("Unit thickness assumed.\n"); - else if(!get_input(command, thickness)) - suanpan_error("A valid thickness is required.\n"); - - return_obj = make_unique(tag, std::move(node_tag), material_tag, thickness, 'G'); + return_obj = make_unique(tag, std::move(node_tag), material_tag, thickness, int_type); } void new_sgcms(unique_ptr& return_obj, istringstream& command) { @@ -1987,16 +1910,8 @@ void new_pcpedc(unique_ptr& return_obj, istringstream& command, const u } double alpha, n, k; - if(!get_optional_input(command, alpha)) { - suanpan_error("A valid alpha is required.\n"); - return; - } - if(!get_optional_input(command, n)) { - suanpan_error("A valid porosity is required.\n"); - return; - } - if(!get_optional_input(command, k)) { - suanpan_error("A valid permeability is required.\n"); + if(!get_input(command, alpha, n, k)) { + suanpan_error("A valid parameter is required.\n"); return; } @@ -2029,12 +1944,8 @@ void new_pcpeuc(unique_ptr& return_obj, istringstream& command, const u } double alpha, n; - if(!get_optional_input(command, alpha)) { - suanpan_error("A valid alpha is required.\n"); - return; - } - if(!get_optional_input(command, n)) { - suanpan_error("A valid porosity is required.\n"); + if(!get_input(command, alpha, n)) { + suanpan_error("A valid parameter is required.\n"); return; } @@ -2132,7 +2043,7 @@ void new_s4(unique_ptr& return_obj, istringstream& command) { return_obj = make_unique(tag, std::move(node_tag), material_tag, thickness, is_true(nlgeom)); } -void new_singlesection2d(unique_ptr& return_obj, istringstream& command) { +template void new_singlesection(unique_ptr& return_obj, istringstream& command) { unsigned tag; if(!get_input(command, tag)) { suanpan_error("A valid tag is required.\n"); @@ -2151,29 +2062,7 @@ void new_singlesection2d(unique_ptr& return_obj, istringstream& command return; } - return_obj = make_unique(tag, node, section_tag); -} - -void new_singlesection3d(unique_ptr& return_obj, istringstream& command) { - unsigned tag; - if(!get_input(command, tag)) { - suanpan_error("A valid tag is required.\n"); - return; - } - - unsigned node; - if(!get_input(command, node)) { - suanpan_error("A valid node tag is required.\n"); - return; - } - - unsigned section_tag; - if(!get_input(command, section_tag)) { - suanpan_error("A valid section tag is required.\n"); - return; - } - - return_obj = make_unique(tag, node, section_tag); + return_obj = make_unique(tag, node, section_tag); } void new_spring01(unique_ptr& return_obj, istringstream& command) { @@ -2641,7 +2530,7 @@ int create_new_modifier(const shared_ptr& domain, istringstream& com new_modifier = make_unique(tag, a, b, c, d, get_element_pool()); } - else if(is_equal(modifier_type, "LeeElementalDamping")) { + else if(is_equal(modifier_type, "ElementalLee")) { unsigned tag; if(!get_input(command, tag)) { suanpan_error("A valid tag is required.\n"); @@ -2654,7 +2543,7 @@ int create_new_modifier(const shared_ptr& domain, istringstream& com return SUANPAN_SUCCESS; } - new_modifier = make_unique(tag, damping_ratio, get_element_pool()); + new_modifier = make_unique(tag, damping_ratio, get_element_pool()); } else if(is_equal(modifier_type, "LinearViscosity")) { unsigned tag; @@ -2686,6 +2575,36 @@ int create_new_modifier(const shared_ptr& domain, istringstream& com new_modifier = make_unique(tag, a, b, get_element_pool()); } + else if(is_equal(modifier_type, "ElementalNonviscous") || is_equal(modifier_type, "ElementalNonviscousGroup")) { + unsigned tag, ele_tag; + if(!get_input(command, tag, ele_tag)) { + suanpan_error("A valid tag is required.\n"); + return SUANPAN_SUCCESS; + } + + vector m_r, s_r, m_i, s_i; + + while(!command.eof()) { + double t_m_r, t_m_i, t_s_r, t_s_i; + if(!get_input(command, t_m_r, t_m_i, t_s_r, t_s_i)) { + suanpan_error("A valid damping coefficient is required.\n"); + return SUANPAN_SUCCESS; + } + m_r.emplace_back(t_m_r); + m_i.emplace_back(t_m_i); + s_r.emplace_back(t_s_r); + s_i.emplace_back(t_s_i); + } + + auto m_imag = vec{m_i}, s_imag = vec{s_i}; + if(accu(m_imag) + accu(s_imag) > 1E-10) { + suanpan_error("Parameters should be conjugate pairs.\n"); + return SUANPAN_SUCCESS; + } + + if(is_equal(modifier_type, "ElementalNonviscous")) new_modifier = make_unique(tag, cx_vec{vec{m_r}, m_imag}, cx_vec{vec{s_r}, s_imag}, uvec{ele_tag}); + else new_modifier = make_unique(tag, cx_vec{vec{m_r}, m_imag}, cx_vec{vec{s_r}, s_imag}, ele_tag); + } else { // check if the library is already loaded auto code = false; @@ -2733,6 +2652,8 @@ int create_new_orientation(const shared_ptr& domain, istringstream& if(is_equal(file_type, "B3DL")) domain->insert(make_shared(tag, std::move(xyz))); else if(is_equal(file_type, "B3DC")) domain->insert(make_shared(tag, std::move(xyz))); + else if(is_equal(file_type, "B3DOSL")) domain->insert(make_shared(tag, std::move(xyz))); + else if(is_equal(file_type, "B3DOSC")) domain->insert(make_shared(tag, std::move(xyz))); return SUANPAN_SUCCESS; } @@ -2748,19 +2669,16 @@ int create_new_element(const shared_ptr& domain, istringstream& comm if(is_equal(element_id, "Allman")) new_allman(new_element, command); else if(is_equal(element_id, "B21")) new_b21(new_element, command, 0); - else if(is_equal(element_id, "B21EL")) new_b21(new_element, command, 1); else if(is_equal(element_id, "B21EH")) new_b21(new_element, command, 2); + else if(is_equal(element_id, "B21EL")) new_b21(new_element, command, 1); else if(is_equal(element_id, "B21H")) new_b21h(new_element, command); - else if(is_equal(element_id, "B31")) new_b31(new_element, command); - else if(is_equal(element_id, "NMB21")) new_nmb21(new_element, command, 0); - else if(is_equal(element_id, "NMB21EL")) new_nmb21(new_element, command, 1); - else if(is_equal(element_id, "NMB21EH")) new_nmb21(new_element, command, 2); - else if(is_equal(element_id, "NMB31")) new_nmb31(new_element, command); + else if(is_equal(element_id, "B31")) new_b31(new_element, command, false); + else if(is_equal(element_id, "B31OS")) new_b31(new_element, command, true); else if(is_equal(element_id, "C3D20")) new_c3d20(new_element, command); else if(is_equal(element_id, "C3D4")) new_c3d4(new_element, command); else if(is_equal(element_id, "C3D8")) new_c3d8(new_element, command); - else if(is_equal(element_id, "C3D8R")) new_c3d8r(new_element, command); else if(is_equal(element_id, "C3D8I")) new_c3d8i(new_element, command); + else if(is_equal(element_id, "C3D8R")) new_c3d8r(new_element, command); else if(is_equal(element_id, "CAX3")) new_cax3(new_element, command); else if(is_equal(element_id, "CAX4")) new_cax4(new_element, command); else if(is_equal(element_id, "CAX8")) new_cax8(new_element, command); @@ -2770,10 +2688,6 @@ int create_new_element(const shared_ptr& domain, istringstream& comm else if(is_equal(element_id, "Contact3D")) new_contact3d(new_element, command); else if(is_equal(element_id, "CP3")) new_cp3(new_element, command); else if(is_equal(element_id, "CP4")) new_cp4(new_element, command); - else if(is_equal(element_id, "PCPE4DC")) new_pcpedc(new_element, command, 4); - else if(is_equal(element_id, "PCPE8DC")) new_pcpedc(new_element, command, 8); - else if(is_equal(element_id, "PCPE4UC")) new_pcpeuc(new_element, command, 4); - else if(is_equal(element_id, "PCPE8UC")) new_pcpeuc(new_element, command, 8); else if(is_equal(element_id, "CP4I")) new_cp4i(new_element, command); else if(is_equal(element_id, "CP4R")) new_cp4r(new_element, command); else if(is_equal(element_id, "CP5")) new_cp5(new_element, command); @@ -2783,13 +2697,13 @@ int create_new_element(const shared_ptr& domain, istringstream& comm else if(is_equal(element_id, "CPE8")) new_cpe8(new_element, command); else if(is_equal(element_id, "CPE8R")) new_cpe8r(new_element, command); else if(is_equal(element_id, "CPS8")) new_cp8(new_element, command); - else if(is_equal(element_id, "CSMT3")) new_csmt3(new_element, command); - else if(is_equal(element_id, "CSMT6")) new_csmt6(new_element, command); else if(is_equal(element_id, "CSMQ4")) new_csmq(new_element, command, 4); else if(is_equal(element_id, "CSMQ5")) new_csmq(new_element, command, 5); else if(is_equal(element_id, "CSMQ6")) new_csmq(new_element, command, 6); else if(is_equal(element_id, "CSMQ7")) new_csmq(new_element, command, 7); else if(is_equal(element_id, "CSMQ8")) new_csmq(new_element, command, 8); + else if(is_equal(element_id, "CSMT3")) new_csmt3(new_element, command); + else if(is_equal(element_id, "CSMT6")) new_csmt6(new_element, command); else if(is_equal(element_id, "Damper01")) new_damper01(new_element, command, 2); else if(is_equal(element_id, "Damper02")) new_damper02(new_element, command, 2); else if(is_equal(element_id, "Damper03")) new_damper01(new_element, command, 3); @@ -2803,34 +2717,45 @@ int create_new_element(const shared_ptr& domain, istringstream& comm else if(is_equal(element_id, "DKT3")) new_dkt3(new_element, command); else if(is_equal(element_id, "DKT4")) new_dkt4(new_element, command); else if(is_equal(element_id, "DKTS3")) new_dkts3(new_element, command); + else if(is_equal(element_id, "EB21")) new_eb21(new_element, command); + else if(is_equal(element_id, "EB31OS")) new_eb31os(new_element, command); else if(is_equal(element_id, "Embedded2D")) new_embedded(new_element, command, 2); else if(is_equal(element_id, "Embedded3D")) new_embedded(new_element, command, 3); - else if(is_equal(element_id, "EB21")) new_eb21(new_element, command); else if(is_equal(element_id, "F21")) new_f21(new_element, command); else if(is_equal(element_id, "F21H")) new_f21h(new_element, command); else if(is_equal(element_id, "F31")) new_f31(new_element, command); else if(is_equal(element_id, "GCMQ")) new_gcmq(new_element, command); - else if(is_equal(element_id, "GCMQG")) new_gcmqg(new_element, command); - else if(is_equal(element_id, "GCMQI")) new_gcmqi(new_element, command); - else if(is_equal(element_id, "GCMQL")) new_gcmql(new_element, command); + else if(is_equal(element_id, "GCMQG")) new_gcmq(new_element, command, 'G'); + else if(is_equal(element_id, "GCMQI")) new_gcmq(new_element, command, 'I'); + else if(is_equal(element_id, "GCMQL")) new_gcmq(new_element, command, 'L'); else if(is_equal(element_id, "GQ12")) new_gq12(new_element, command); else if(is_equal(element_id, "Joint")) new_joint(new_element, command); + else if(is_equal(element_id, "Mass")) new_mass(new_element, command, 3); else if(is_equal(element_id, "Mass2D")) new_mass(new_element, command, 2); else if(is_equal(element_id, "Mass3D")) new_mass(new_element, command, 3); - else if(is_equal(element_id, "Mass")) new_mass(new_element, command, 3); else if(is_equal(element_id, "MassPoint2D")) new_masspoint(new_element, command, 2); else if(is_equal(element_id, "MassPoint3D")) new_masspoint(new_element, command, 3); else if(is_equal(element_id, "Mindlin")) new_mindlin(new_element, command); else if(is_equal(element_id, "MVLEM")) new_mvlem(new_element, command); + else if(is_equal(element_id, "NMB21")) new_nmb21(new_element, command, 0); + else if(is_equal(element_id, "NMB21EH")) new_nmb21(new_element, command, 2); + else if(is_equal(element_id, "NMB21EL")) new_nmb21(new_element, command, 1); + else if(is_equal(element_id, "NMB31")) new_nmb31(new_element, command); + else if(is_equal(element_id, "PatchCube")) new_patchcube(new_element, command); + else if(is_equal(element_id, "PatchQuad")) new_patchquad(new_element, command); + else if(is_equal(element_id, "PCPE4DC")) new_pcpedc(new_element, command, 4); + else if(is_equal(element_id, "PCPE4UC")) new_pcpeuc(new_element, command, 4); + else if(is_equal(element_id, "PCPE8DC")) new_pcpedc(new_element, command, 8); + else if(is_equal(element_id, "PCPE8UC")) new_pcpeuc(new_element, command, 8); else if(is_equal(element_id, "PS")) new_ps(new_element, command); else if(is_equal(element_id, "QE2")) new_qe2(new_element, command); else if(is_equal(element_id, "S4")) new_s4(new_element, command); - else if(is_equal(element_id, "SGCMQG")) new_sgcmqg(new_element, command); - else if(is_equal(element_id, "SGCMQI")) new_sgcmqi(new_element, command); - else if(is_equal(element_id, "SGCMQL")) new_sgcmql(new_element, command); + else if(is_equal(element_id, "SGCMQG")) new_sgcmq(new_element, command, 'G'); + else if(is_equal(element_id, "SGCMQI")) new_sgcmq(new_element, command, 'I'); + else if(is_equal(element_id, "SGCMQL")) new_sgcmq(new_element, command, 'L'); else if(is_equal(element_id, "SGCMS")) new_sgcms(new_element, command); - else if(is_equal(element_id, "SingleSection2D")) new_singlesection2d(new_element, command); - else if(is_equal(element_id, "SingleSection3D")) new_singlesection3d(new_element, command); + else if(is_equal(element_id, "SingleSection2D")) new_singlesection(new_element, command); + else if(is_equal(element_id, "SingleSection3D")) new_singlesection(new_element, command); else if(is_equal(element_id, "Spring01")) new_spring01(new_element, command); else if(is_equal(element_id, "Spring02")) new_spring02(new_element, command); else if(is_equal(element_id, "T2D2")) new_t2d2(new_element, command); @@ -2840,8 +2765,6 @@ int create_new_element(const shared_ptr& domain, istringstream& comm else if(is_equal(element_id, "Tie")) new_tie(new_element, command); else if(is_equal(element_id, "TranslationConnector2D")) new_translationconnector(new_element, command, 2u); else if(is_equal(element_id, "TranslationConnector3D")) new_translationconnector(new_element, command, 3u); - else if(is_equal(element_id, "PatchQuad")) new_patchquad(new_element, command); - else if(is_equal(element_id, "PatchCube")) new_patchcube(new_element, command); else load::object(new_element, domain, element_id, command); if(new_element == nullptr || !domain->insert(std::move(new_element))) diff --git a/Element/ElementTemplate.cpp b/Element/ElementTemplate.cpp index 210903309..14899515e 100644 --- a/Element/ElementTemplate.cpp +++ b/Element/ElementTemplate.cpp @@ -111,7 +111,7 @@ int ElementTemplate::initialize(const shared_ptr& D) { trial_stiffness = current_stiffness = initial_stiffness = strain_mat.t() * m_material->get_initial_stiffness() * strain_mat * area * thickness; - if(const auto t_density = area * thickness * m_material->get_parameter(ParameterType::DENSITY); t_density > 0.) { + if(const auto t_density = area * thickness * m_material->get_density(); t_density > 0.) { initial_mass.zeros(m_size, m_size); const rowvec n = mean(ele_coor) * inv_coor; const mat t_mass = n.t() * n * t_density * area * thickness; diff --git a/Element/MaterialElement.h b/Element/MaterialElement.h index f8bd9bb84..a0709da23 100644 --- a/Element/MaterialElement.h +++ b/Element/MaterialElement.h @@ -36,50 +36,54 @@ using std::vector; class MaterialElement : public Element { public: - MaterialElement(unsigned, // tag - unsigned, // number of nodes - unsigned, // number of dofs - uvec&&, // node encoding - uvec&&, // material tags - bool, // nonlinear geometry switch - MaterialType, // material type - vector&& // dof identifier + MaterialElement( + unsigned, // tag + unsigned, // number of nodes + unsigned, // number of dofs + uvec&&, // node encoding + uvec&&, // material tags + bool, // nonlinear geometry switch + MaterialType, // material type + vector&& // dof identifier ); }; class MaterialElement1D : public MaterialElement { public: - MaterialElement1D(unsigned, // tag - unsigned, // number of nodes - unsigned, // number of dofs - uvec&&, // node encoding - uvec&&, // material tags - bool, // nonlinear geometry switch - vector&& // dof identifier + MaterialElement1D( + unsigned, // tag + unsigned, // number of nodes + unsigned, // number of dofs + uvec&&, // node encoding + uvec&&, // material tags + bool, // nonlinear geometry switch + vector&& // dof identifier ); }; class MaterialElement2D : public MaterialElement { public: - MaterialElement2D(unsigned, // tag - unsigned, // number of nodes - unsigned, // number of dofs - uvec&&, // node encoding - uvec&&, // material tags - bool, // nonlinear geometry switch - vector&& = {} // dof identifier + MaterialElement2D( + unsigned, // tag + unsigned, // number of nodes + unsigned, // number of dofs + uvec&&, // node encoding + uvec&&, // material tags + bool, // nonlinear geometry switch + vector&& = {} // dof identifier ); }; class MaterialElement3D : public MaterialElement { public: - MaterialElement3D(unsigned, // tag - unsigned, // number of nodes - unsigned, // number of dofs - uvec&&, // node encoding - uvec&&, // material tags - bool, // nonlinear geometry switch - vector&& = {DOF::U1, DOF::U2, DOF::U3} // dof identifier + MaterialElement3D( + unsigned, // tag + unsigned, // number of nodes + unsigned, // number of dofs + uvec&&, // node encoding + uvec&&, // material tags + bool, // nonlinear geometry switch + vector&& = {DOF::U1, DOF::U2, DOF::U3} // dof identifier ); }; diff --git a/Element/Membrane/Axisymmetric/CAX3.cpp b/Element/Membrane/Axisymmetric/CAX3.cpp index 22f98863e..d62961181 100644 --- a/Element/Membrane/Axisymmetric/CAX3.cpp +++ b/Element/Membrane/Axisymmetric/CAX3.cpp @@ -27,7 +27,7 @@ CAX3::CAX3(const unsigned T, uvec&& NT, const unsigned MT, const bool R) int CAX3::initialize(const shared_ptr& D) { auto& material_proto = D->get(material_tag(0)); - if(PlaneType::A != static_cast(material_proto->get_parameter(ParameterType::PLANETYPE))) { + if(PlaneType::A != material_proto->get_plane_type()) { suanpan_warning("Element {} is assigned with an inconsistent material.\n", get_tag()); return SUANPAN_FAIL; } @@ -84,7 +84,7 @@ int CAX3::clear_status() { return m_material->clear_status(); } int CAX3::reset_status() { return m_material->reset_status(); } -vector CAX3::record(const OutputType T) { return m_material->record(T); } +vector CAX3::record(const OutputType P) { return m_material->record(P); } void CAX3::print() { suanpan_info("CAX3 element connects:", node_encoding); diff --git a/Element/Membrane/Axisymmetric/CAX4.cpp b/Element/Membrane/Axisymmetric/CAX4.cpp index 32290f4df..9ac4d119d 100644 --- a/Element/Membrane/Axisymmetric/CAX4.cpp +++ b/Element/Membrane/Axisymmetric/CAX4.cpp @@ -20,7 +20,6 @@ #include #include #include -#include CAX4::IntegrationPoint::IntegrationPoint(vec&& C, const double W, unique_ptr&& M) : coor(std::forward(C)) @@ -45,7 +44,7 @@ CAX4::CAX4(const unsigned T, uvec&& N, const unsigned M, const bool F) int CAX4::initialize(const shared_ptr& D) { auto& material_proto = D->get(material_tag(0)); - if(PlaneType::A != static_cast(material_proto->get_parameter(ParameterType::PLANETYPE))) { + if(PlaneType::A != material_proto->get_plane_type()) { suanpan_warning("Element {} is assigned with an inconsistent material.\n", get_tag()); return SUANPAN_FAIL; } @@ -128,9 +127,9 @@ int CAX4::reset_status() { } vector CAX4::record(const OutputType P) { - vector output; - for(const auto& I : int_pt) for(const auto& J : I.m_material->record(P)) output.emplace_back(J); - return output; + vector data; + for(const auto& I : int_pt) append_to(data, I.m_material->record(P)); + return data; } void CAX4::print() { diff --git a/Element/Membrane/Axisymmetric/CAX4.h b/Element/Membrane/Axisymmetric/CAX4.h index 143def8b4..cb55ece12 100644 --- a/Element/Membrane/Axisymmetric/CAX4.h +++ b/Element/Membrane/Axisymmetric/CAX4.h @@ -48,10 +48,11 @@ class CAX4 final : public MaterialElement2D { static vec isoparametric_mapping(const vec&); public: - CAX4(unsigned, // tag - uvec&&, // node tag - unsigned, // material tag - bool = false // nonlinear geometry switch + CAX4( + unsigned, // tag + uvec&&, // node tag + unsigned, // material tag + bool = false // nonlinear geometry switch ); int initialize(const shared_ptr&) override; diff --git a/Element/Membrane/Axisymmetric/CAX8.cpp b/Element/Membrane/Axisymmetric/CAX8.cpp index 2edb51bc8..a230a258d 100644 --- a/Element/Membrane/Axisymmetric/CAX8.cpp +++ b/Element/Membrane/Axisymmetric/CAX8.cpp @@ -21,7 +21,6 @@ #include #include #include -#include CAX8::IntegrationPoint::IntegrationPoint(vec&& C, const double W, unique_ptr&& M) : coor(std::forward(C)) @@ -53,7 +52,7 @@ CAX8::CAX8(const unsigned T, uvec&& N, const unsigned M, const bool R, const boo int CAX8::initialize(const shared_ptr& D) { auto& material_proto = D->get(material_tag(0)); - if(PlaneType::A != static_cast(material_proto->get_parameter(ParameterType::PLANETYPE))) { + if(PlaneType::A != material_proto->get_plane_type()) { suanpan_warning("Element {} is assigned with an inconsistent material.\n", get_tag()); return SUANPAN_FAIL; } @@ -136,9 +135,9 @@ int CAX8::reset_status() { return code; } -vector CAX8::record(const OutputType T) { +vector CAX8::record(const OutputType P) { vector data; - for(const auto& I : int_pt) for(const auto& J : I.m_material->record(T)) data.emplace_back(J); + for(const auto& I : int_pt) append_to(data, I.m_material->record(P)); return data; } diff --git a/Element/Membrane/Axisymmetric/CAX8.h b/Element/Membrane/Axisymmetric/CAX8.h index b399188e3..482e77318 100644 --- a/Element/Membrane/Axisymmetric/CAX8.h +++ b/Element/Membrane/Axisymmetric/CAX8.h @@ -49,11 +49,13 @@ class CAX8 final : public MaterialElement2D { static vec isoparametric_mapping(const vec&); public: - CAX8(unsigned, // tag - uvec&&, // node tag - unsigned, // material tag - bool = false, // reduced integration - bool = false); // nonlinear geometry switch + CAX8( + unsigned, // tag + uvec&&, // node tag + unsigned, // material tag + bool = false, // reduced integration + bool = false + ); // nonlinear geometry switch int initialize(const shared_ptr&) override; diff --git a/Element/Membrane/CMakeLists.txt b/Element/Membrane/CMakeLists.txt index 9d2bb0fe0..dabad0872 100644 --- a/Element/Membrane/CMakeLists.txt +++ b/Element/Membrane/CMakeLists.txt @@ -27,4 +27,4 @@ set(Membrane Membrane/Porous/PCPE4UC.cpp Membrane/Porous/PCPE8DC.cpp Membrane/Porous/PCPE8UC.cpp - ) +) diff --git a/Element/Membrane/CSM/CSMQ.cpp b/Element/Membrane/CSM/CSMQ.cpp index 1cfffba61..7b5f9a99f 100644 --- a/Element/Membrane/CSM/CSMQ.cpp +++ b/Element/Membrane/CSM/CSMQ.cpp @@ -41,7 +41,7 @@ int CSMQ::initialize(const shared_ptr& D) { return SUANPAN_FAIL; } - if(PlaneType::E == static_cast(material_proto->get_parameter(ParameterType::PLANETYPE))) suanpan::hacker(thickness) = 1.; + if(PlaneType::E == material_proto->get_plane_type()) suanpan::hacker(thickness) = 1.; const auto ele_coor = get_coordinate(2); @@ -123,7 +123,7 @@ int CSMQ::initialize(const shared_ptr& D) { I.b3 *= T3; } - if(const auto t_density = material_proto->get_parameter(ParameterType::DENSITY); t_density > 0.) { + if(const auto t_density = material_proto->get_density(); t_density > 0.) { initial_mass.zeros(m_size, m_size); for(const auto& I : int_pt) { const auto n_int = compute_shape_function(I.coor, 0); @@ -192,9 +192,9 @@ int CSMQ::reset_status() { mat CSMQ::compute_shape_function(const mat& coordinate, const unsigned order) const { return shape::quad(coordinate, order, m_node); } vector CSMQ::record(const OutputType P) { - vector output; - for(const auto& I : int_pt) for(const auto& J : I.m_material->record(P)) output.emplace_back(J); - return output; + vector data; + for(const auto& I : int_pt) append_to(data, I.m_material->record(P)); + return data; } void CSMQ::print() { @@ -233,10 +233,10 @@ void CSMQ::GetData(vtkSmartPointer& arrays, const OutputType typ mat CSMQ::GetData(const OutputType P) { mat A(int_pt.size(), 9); - mat B(int_pt.size(), 6, fill::zeros); + mat B(6, int_pt.size(), fill::zeros); for(size_t I = 0; I < int_pt.size(); ++I) { - if(const auto C = int_pt[I].m_material->record(P); !C.empty()) B(I, 0, size(C[0])) = C[0]; + if(const auto C = int_pt[I].m_material->record(P); !C.empty()) B(0, I, size(C[0])) = C[0]; A.row(I) = interpolation::quadratic(int_pt[I].coor); } @@ -251,7 +251,7 @@ mat CSMQ::GetData(const OutputType P) { data.row(6) = interpolation::quadratic(0., 1.); data.row(7) = interpolation::quadratic(-1., 0.); - return (data * solve(A, B)).t(); + return (data * solve(A, B.t())).t(); } void CSMQ::SetDeformation(vtkSmartPointer& nodes, const double amplifier) { diff --git a/Element/Membrane/CSM/CSMQ.h b/Element/Membrane/CSM/CSMQ.h index 0850669cb..49a4849cb 100644 --- a/Element/Membrane/CSM/CSMQ.h +++ b/Element/Membrane/CSM/CSMQ.h @@ -55,12 +55,13 @@ class CSMQ : public MaterialElement2D { virtual const uvec& get_rotation_dof() = 0; public: - CSMQ(unsigned, // tag - uvec&&, // node tag - unsigned, // material tag - unsigned, // number of nodes - double = 1., // thickness - double = -1. // length + CSMQ( + unsigned, // tag + uvec&&, // node tag + unsigned, // material tag + unsigned, // number of nodes + double = 1., // thickness + double = -1. // length ); int initialize(const shared_ptr&) override; @@ -93,11 +94,12 @@ class CSMQ5 final : public CSMQ { const uvec& get_rotation_dof() override; public: - CSMQ5(unsigned, // tag - uvec&&, // node tag - unsigned, // material tag - double = 1., // thickness - double = -1. // length + CSMQ5( + unsigned, // tag + uvec&&, // node tag + unsigned, // material tag + double = 1., // thickness + double = -1. // length ); }; @@ -109,11 +111,12 @@ class CSMQ6 final : public CSMQ { const uvec& get_rotation_dof() override; public: - CSMQ6(unsigned, // tag - uvec&&, // node tag - unsigned, // material tag - double = 1., // thickness - double = -1. // length + CSMQ6( + unsigned, // tag + uvec&&, // node tag + unsigned, // material tag + double = 1., // thickness + double = -1. // length ); }; @@ -125,11 +128,12 @@ class CSMQ7 final : public CSMQ { const uvec& get_rotation_dof() override; public: - CSMQ7(unsigned, // tag - uvec&&, // node tag - unsigned, // material tag - double = 1., // thickness - double = -1. // length + CSMQ7( + unsigned, // tag + uvec&&, // node tag + unsigned, // material tag + double = 1., // thickness + double = -1. // length ); }; diff --git a/Element/Membrane/CSM/CSMQ4.cpp b/Element/Membrane/CSM/CSMQ4.cpp index 84ae3e206..f8ac4baa5 100644 --- a/Element/Membrane/CSM/CSMQ4.cpp +++ b/Element/Membrane/CSM/CSMQ4.cpp @@ -43,7 +43,7 @@ int CSMQ4::initialize(const shared_ptr& D) { return SUANPAN_FAIL; } - if(PlaneType::E == static_cast(material_proto->get_parameter(ParameterType::PLANETYPE))) suanpan::hacker(thickness) = 1.; + if(PlaneType::E == material_proto->get_plane_type()) suanpan::hacker(thickness) = 1.; const auto ele_coor = get_coordinate(2); @@ -121,7 +121,7 @@ int CSMQ4::initialize(const shared_ptr& D) { I.b3 *= T3; } - if(const auto t_density = material_proto->get_parameter(ParameterType::DENSITY); t_density > 0.) { + if(const auto t_density = material_proto->get_density(); t_density > 0.) { initial_mass.zeros(m_size, m_size); for(const auto& I : int_pt) { const auto n_int = compute_shape_function(I.coor, 0); @@ -187,27 +187,9 @@ int CSMQ4::reset_status() { mat CSMQ4::compute_shape_function(const mat& coordinate, const unsigned order) const { return shape::quad(coordinate, order, m_node); } vector CSMQ4::record(const OutputType P) { - vector output; - - if(P == OutputType::NMISES) { - mat A(int_pt.size(), 4); - vec B(int_pt.size(), fill::zeros); - - for(size_t I = 0; I < int_pt.size(); ++I) { - if(const auto C = int_pt[I].m_material->record(OutputType::MISES); !C.empty()) B(I) = C.cbegin()->at(0); - A.row(I) = interpolation::linear(int_pt[I].coor); - } - - const vec X = solve(A, B); - - output.emplace_back(vec{dot(interpolation::linear(-1., -1.), X)}); - output.emplace_back(vec{dot(interpolation::linear(1., -1.), X)}); - output.emplace_back(vec{dot(interpolation::linear(1., 1.), X)}); - output.emplace_back(vec{dot(interpolation::linear(-1., 1.), X)}); - } - else for(const auto& I : int_pt) for(const auto& J : I.m_material->record(P)) output.emplace_back(J); - - return output; + vector data; + for(const auto& I : int_pt) append_to(data, I.m_material->record(P)); + return data; } void CSMQ4::print() { @@ -245,10 +227,10 @@ void CSMQ4::GetData(vtkSmartPointer& arrays, const OutputType ty mat CSMQ4::GetData(const OutputType P) { mat A(int_pt.size(), 4); - mat B(int_pt.size(), 6, fill::zeros); + mat B(6, int_pt.size(), fill::zeros); for(size_t I = 0; I < int_pt.size(); ++I) { - if(const auto C = int_pt[I].m_material->record(P); !C.empty()) B(I, 0, size(C[0])) = C[0]; + if(const auto C = int_pt[I].m_material->record(P); !C.empty()) B(0, I, size(C[0])) = C[0]; A.row(I) = interpolation::linear(int_pt[I].coor); } @@ -259,7 +241,7 @@ mat CSMQ4::GetData(const OutputType P) { data.row(2) = interpolation::linear(1., 1.); data.row(3) = interpolation::linear(-1., 1.); - return (data * solve(A, B)).t(); + return (data * solve(A, B.t())).t(); } void CSMQ4::SetDeformation(vtkSmartPointer& nodes, const double amplifier) { diff --git a/Element/Membrane/CSM/CSMQ4.h b/Element/Membrane/CSM/CSMQ4.h index f0239f2f9..ece5c69df 100644 --- a/Element/Membrane/CSM/CSMQ4.h +++ b/Element/Membrane/CSM/CSMQ4.h @@ -51,11 +51,12 @@ class CSMQ4 final : public MaterialElement2D { vector int_pt; public: - CSMQ4(unsigned, // tag - uvec&&, // node tag - unsigned, // material tag - double = 1., // thickness - double = -1. // length + CSMQ4( + unsigned, // tag + uvec&&, // node tag + unsigned, // material tag + double = 1., // thickness + double = -1. // length ); int initialize(const shared_ptr&) override; diff --git a/Element/Membrane/CSM/CSMQ8.cpp b/Element/Membrane/CSM/CSMQ8.cpp index d78e6f4bb..14df86b44 100644 --- a/Element/Membrane/CSM/CSMQ8.cpp +++ b/Element/Membrane/CSM/CSMQ8.cpp @@ -43,7 +43,7 @@ int CSMQ8::initialize(const shared_ptr& D) { return SUANPAN_FAIL; } - if(PlaneType::E == static_cast(material_proto->get_parameter(ParameterType::PLANETYPE))) suanpan::hacker(thickness) = 1.; + if(PlaneType::E == material_proto->get_plane_type()) suanpan::hacker(thickness) = 1.; const auto ele_coor = get_coordinate(2); @@ -121,7 +121,7 @@ int CSMQ8::initialize(const shared_ptr& D) { I.b3 *= T3; } - if(const auto t_density = material_proto->get_parameter(ParameterType::DENSITY); t_density > 0.) { + if(const auto t_density = material_proto->get_density(); t_density > 0.) { initial_mass.zeros(m_size, m_size); for(const auto& I : int_pt) { const auto n_int = compute_shape_function(I.coor, 0); @@ -187,9 +187,9 @@ int CSMQ8::reset_status() { mat CSMQ8::compute_shape_function(const mat& coordinate, const unsigned order) const { return shape::quad(coordinate, order, m_node); } vector CSMQ8::record(const OutputType P) { - vector output; - for(const auto& I : int_pt) for(const auto& J : I.m_material->record(P)) output.emplace_back(J); - return output; + vector data; + for(const auto& I : int_pt) append_to(data, I.m_material->record(P)); + return data; } void CSMQ8::print() { @@ -227,10 +227,10 @@ void CSMQ8::GetData(vtkSmartPointer& arrays, const OutputType ty mat CSMQ8::GetData(const OutputType P) { mat A(int_pt.size(), 9); - mat B(int_pt.size(), 6, fill::zeros); + mat B(6, int_pt.size(), fill::zeros); for(size_t I = 0; I < int_pt.size(); ++I) { - if(const auto C = int_pt[I].m_material->record(P); !C.empty()) B(I, 0, size(C[0])) = C[0]; + if(const auto C = int_pt[I].m_material->record(P); !C.empty()) B(0, I, size(C[0])) = C[0]; A.row(I) = interpolation::quadratic(int_pt[I].coor); } @@ -245,7 +245,7 @@ mat CSMQ8::GetData(const OutputType P) { data.row(6) = interpolation::quadratic(0., 1.); data.row(7) = interpolation::quadratic(-1., 0.); - return (data * solve(A, B)).t(); + return (data * solve(A, B.t())).t(); } void CSMQ8::SetDeformation(vtkSmartPointer& nodes, const double amplifier) { diff --git a/Element/Membrane/CSM/CSMQ8.h b/Element/Membrane/CSM/CSMQ8.h index cf85c8111..a13a6396b 100644 --- a/Element/Membrane/CSM/CSMQ8.h +++ b/Element/Membrane/CSM/CSMQ8.h @@ -51,11 +51,12 @@ class CSMQ8 final : public MaterialElement2D { vector int_pt; public: - CSMQ8(unsigned, // tag - uvec&&, // node tag - unsigned, // material tag - double = 1., // thickness - double = -1. // length + CSMQ8( + unsigned, // tag + uvec&&, // node tag + unsigned, // material tag + double = 1., // thickness + double = -1. // length ); int initialize(const shared_ptr&) override; diff --git a/Element/Membrane/CSM/CSMT3.cpp b/Element/Membrane/CSM/CSMT3.cpp index d7a5fb920..2471cc756 100644 --- a/Element/Membrane/CSM/CSMT3.cpp +++ b/Element/Membrane/CSM/CSMT3.cpp @@ -40,7 +40,7 @@ int CSMT3::initialize(const shared_ptr& D) { return SUANPAN_FAIL; } - if(PlaneType::E == static_cast(material_proto->get_parameter(ParameterType::PLANETYPE))) suanpan::hacker(thickness) = 1.; + if(PlaneType::E == material_proto->get_plane_type()) suanpan::hacker(thickness) = 1.; mat ele_coor(m_node, m_node); ele_coor.col(0).fill(1.); @@ -195,9 +195,9 @@ int CSMT3::reset_status() { return code; } -vector CSMT3::record(const OutputType T) { +vector CSMT3::record(const OutputType P) { vector data; - for(const auto& I : int_pt) for(const auto& J : I.m_material->record(T)) data.emplace_back(J); + for(const auto& I : int_pt) append_to(data, I.m_material->record(P)); return data; } diff --git a/Element/Membrane/CSM/CSMT6.cpp b/Element/Membrane/CSM/CSMT6.cpp index ac5ceb0d9..2fa9de2be 100644 --- a/Element/Membrane/CSM/CSMT6.cpp +++ b/Element/Membrane/CSM/CSMT6.cpp @@ -43,7 +43,7 @@ int CSMT6::initialize(const shared_ptr& D) { return SUANPAN_FAIL; } - if(PlaneType::E == static_cast(material_proto->get_parameter(ParameterType::PLANETYPE))) suanpan::hacker(thickness) = 1.; + if(PlaneType::E == material_proto->get_plane_type()) suanpan::hacker(thickness) = 1.; mat ele_coor(m_node, m_node, fill::none); ele_coor.col(0).fill(1.); @@ -128,7 +128,7 @@ int CSMT6::initialize(const shared_ptr& D) { I.b3 *= T3; } - if(const auto t_density = material_proto->get_parameter(ParameterType::DENSITY); t_density > 0.) { + if(const auto t_density = material_proto->get_density(); t_density > 0.) { initial_mass.zeros(m_size, m_size); for(const auto& I : int_pt) { const mat n_int = shape::triangle(I.coor, 0) * inv_coor; @@ -193,7 +193,7 @@ int CSMT6::reset_status() { vector CSMT6::record(const OutputType P) { vector data; - for(const auto& I : int_pt) for(const auto& J : I.m_material->record(P)) data.emplace_back(J); + for(const auto& I : int_pt) append_to(data, I.m_material->record(P)); return data; } diff --git a/Element/Membrane/CSM/CSMT6.h b/Element/Membrane/CSM/CSMT6.h index 8cd7e1e3c..4cc3ed848 100644 --- a/Element/Membrane/CSM/CSMT6.h +++ b/Element/Membrane/CSM/CSMT6.h @@ -53,11 +53,12 @@ class CSMT6 final : public MaterialElement2D { vector int_pt; public: - CSMT6(unsigned, // tag - uvec&&, // node tag - unsigned, // material tag - double = 1., // thickness - double = -1. // length + CSMT6( + unsigned, // tag + uvec&&, // node tag + unsigned, // material tag + double = 1., // thickness + double = -1. // length ); int initialize(const shared_ptr&) override; diff --git a/Element/Membrane/Drilling/Allman.cpp b/Element/Membrane/Drilling/Allman.cpp index 3917aab4b..a458805a4 100644 --- a/Element/Membrane/Drilling/Allman.cpp +++ b/Element/Membrane/Drilling/Allman.cpp @@ -79,7 +79,7 @@ Allman::Allman(const unsigned T, uvec&& NT, const unsigned MT, const double TH) int Allman::initialize(const shared_ptr& D) { auto& mat_proto = D->get(material_tag(0)); - if(PlaneType::E == static_cast(mat_proto->get_parameter(ParameterType::PLANETYPE))) suanpan::hacker(thickness) = 1.; + if(PlaneType::E == mat_proto->get_plane_type()) suanpan::hacker(thickness) = 1.; auto& mat_stiff = mat_proto->get_initial_stiffness(); @@ -112,7 +112,7 @@ int Allman::initialize(const shared_ptr& D) { } trial_stiffness = current_stiffness = initial_stiffness; - if(const auto t_density = mat_proto->get_parameter(ParameterType::DENSITY); t_density > 0.) { + if(const auto t_density = mat_proto->get_density(); t_density > 0.) { initial_mass.zeros(m_size, m_size); for(const auto& I : int_pt) { const rowvec n_int = shape::triangle(I.coor, 0) * inv_coor; @@ -162,9 +162,9 @@ int Allman::reset_status() { return code; } -vector Allman::record(const OutputType T) { +vector Allman::record(const OutputType P) { vector data; - for(const auto& I : int_pt) for(const auto& J : I.m_material->record(T)) data.emplace_back(J); + for(const auto& I : int_pt) append_to(data, I.m_material->record(P)); return data; } diff --git a/Element/Membrane/Drilling/Allman.h b/Element/Membrane/Drilling/Allman.h index 1dca716a7..b0de430c9 100644 --- a/Element/Membrane/Drilling/Allman.h +++ b/Element/Membrane/Drilling/Allman.h @@ -52,10 +52,11 @@ class Allman final : public MaterialElement2D { static field form_transform(const mat&); public: - Allman(unsigned, // tag - uvec&&, // node tag - unsigned, // material tag - double = 1. // thickness + Allman( + unsigned, // tag + uvec&&, // node tag + unsigned, // material tag + double = 1. // thickness ); int initialize(const shared_ptr&) override; diff --git a/Element/Membrane/Drilling/GCMQ.cpp b/Element/Membrane/Drilling/GCMQ.cpp index 3d3793ea7..6d1b218e6 100644 --- a/Element/Membrane/Drilling/GCMQ.cpp +++ b/Element/Membrane/Drilling/GCMQ.cpp @@ -24,77 +24,6 @@ #include #include -/** - * \brief create converter for resultant forces - * \param E edge label - * \param T element thickness - * \param EC element coordinates - * \param IP integration plan - * \param TRANS transformation matrix from parent to global - */ -GCMQ::ResultantConverter::ResultantConverter(const Edge E, const double T, const mat& EC, const IntegrationPlan& IP, const mat& TRANS) - : direction_cosine(2, 3) { - const auto &X1 = IP(0, 0), &X2 = IP(1, 0); - - vec node_i, node_j, pt_a, pt_b; - - switch(E) { - case Edge::A: - node_i = EC.row(0).t(); - node_j = EC.row(1).t(); - pt_a = TRANS * form_stress_mode(X1, -1.); - pt_b = TRANS * form_stress_mode(X2, -1.); - break; - case Edge::B: - node_i = EC.row(1).t(); - node_j = EC.row(2).t(); - pt_a = TRANS * form_stress_mode(1., X1); - pt_b = TRANS * form_stress_mode(1., X2); - break; - case Edge::C: - node_i = EC.row(2).t(); - node_j = EC.row(3).t(); - pt_a = TRANS * form_stress_mode(X1, 1.); - pt_b = TRANS * form_stress_mode(X2, 1.); - break; - case Edge::D: - node_i = EC.row(3).t(); - node_j = EC.row(0).t(); - pt_a = TRANS * form_stress_mode(-1., X1); - pt_b = TRANS * form_stress_mode(-1., X2); - break; - } - - const vec incre = node_j - node_i; - - const auto edge_length = norm(incre); - - const auto angle = 2. * atan2(incre(1), incre(0)) - datum::pi; - - const auto sin_angle = sin(angle); - const auto cos_angle = cos(angle); - - // transformation to local reference frame - direction_cosine(0, 0) = .5 + .5 * cos_angle; - direction_cosine(0, 1) = .5 - .5 * cos_angle; - direction_cosine(0, 2) = sin_angle; - direction_cosine(1, 0) = -(direction_cosine(1, 1) = .5 * sin_angle); - direction_cosine(1, 2) = cos_angle; - - const auto weight = .5 * edge_length * T; - - const mat part_a = shape::stress11(pt_a) * IP(0, 1) * weight; - const mat part_b = shape::stress11(pt_b) * IP(1, 1) * weight; - converter_a = part_a + part_b; - converter_b = .5 * edge_length * (part_a * X1 + part_b * X2); -} - -double GCMQ::ResultantConverter::F(const vec& alpha) const { return dot(direction_cosine.row(0), converter_a * alpha); } - -double GCMQ::ResultantConverter::V(const vec& alpha) const { return dot(direction_cosine.row(1), converter_a * alpha); } - -double GCMQ::ResultantConverter::M(const vec& alpha) const { return dot(direction_cosine.row(0), converter_b * alpha); } - mat GCMQ::form_transformation(const mat& jacobian) { mat trans_mat(3, 3); @@ -134,7 +63,7 @@ int GCMQ::initialize(const shared_ptr& D) { access::rw(mat_stiffness) = material_proto->get_initial_stiffness(); - if(PlaneType::E == static_cast(material_proto->get_parameter(ParameterType::PLANETYPE))) suanpan::hacker(thickness) = 1.; + if(PlaneType::E == material_proto->get_plane_type()) suanpan::hacker(thickness) = 1.; const auto ele_coor = get_coordinate(2); @@ -142,14 +71,6 @@ int GCMQ::initialize(const shared_ptr& D) { access::rw(iso_mapping) = trans(mapping * ele_coor); - const IntegrationPlan edge_plan(1, 2, IntegrationType::GAUSS); - edge.clear(); - edge.reserve(4); - edge.emplace_back(ResultantConverter::Edge::A, thickness, ele_coor, edge_plan, iso_mapping); - edge.emplace_back(ResultantConverter::Edge::B, thickness, ele_coor, edge_plan, iso_mapping); - edge.emplace_back(ResultantConverter::Edge::C, thickness, ele_coor, edge_plan, iso_mapping); - edge.emplace_back(ResultantConverter::Edge::D, thickness, ele_coor, edge_plan, iso_mapping); - const IntegrationPlan plan(2, scheme == 'I' ? 2 : 3, scheme == 'I' ? IntegrationType::IRONS : scheme == 'L' ? IntegrationType::LOBATTO : IntegrationType::GAUSS); const auto diff_coor = form_diff_coor(ele_coor); @@ -201,7 +122,7 @@ int GCMQ::initialize(const shared_ptr& D) { trial_alpha = current_alpha.zeros(11); trial_q = current_q.zeros(11); - form_mass(material_proto->get_parameter(ParameterType::DENSITY), diff_coor); + form_mass(material_proto->get_density(), diff_coor); form_body_force(diff_coor); @@ -280,37 +201,26 @@ int GCMQ::reset_status() { mat GCMQ::compute_shape_function(const mat& coordinate, const unsigned order) const { return shape::quad(coordinate, order, m_node); } -vector GCMQ::record(const OutputType T) { +vector GCMQ::record(const OutputType P) { vector data; - if(T == OutputType::S) for(const auto& I : int_pt) data.emplace_back(I.poly_stress * current_alpha); - else if(T == OutputType::S11) for(const auto& I : int_pt) data.emplace_back(I.poly_stress.row(0) * current_alpha); - else if(T == OutputType::S22) for(const auto& I : int_pt) data.emplace_back(I.poly_stress.row(1) * current_alpha); - else if(T == OutputType::S12) for(const auto& I : int_pt) data.emplace_back(I.poly_stress.row(2) * current_alpha); - else if(T == OutputType::SP) for(const auto& I : int_pt) data.emplace_back(transform::stress::principal(I.poly_stress * current_alpha)); - else if(T == OutputType::SP1) for(const auto& I : int_pt) data.emplace_back(vec{transform::stress::principal(I.poly_stress * current_alpha).at(0)}); - else if(T == OutputType::SP2) for(const auto& I : int_pt) data.emplace_back(vec{transform::stress::principal(I.poly_stress * current_alpha).at(1)}); - else if(T == OutputType::SINT) data.emplace_back(current_alpha); - else if(T == OutputType::E) for(const auto& I : int_pt) data.emplace_back(I.poly_strain * current_beta); - else if(T == OutputType::E11) for(const auto& I : int_pt) data.emplace_back(I.poly_strain.row(0) * current_beta); - else if(T == OutputType::E22) for(const auto& I : int_pt) data.emplace_back(I.poly_strain.row(1) * current_beta); - else if(T == OutputType::E12) for(const auto& I : int_pt) data.emplace_back(I.poly_strain.row(2) * current_beta); - else if(T == OutputType::EP) for(const auto& I : int_pt) data.emplace_back(transform::strain::principal(I.poly_strain * current_beta)); - else if(T == OutputType::EP1) for(const auto& I : int_pt) data.emplace_back(vec{transform::strain::principal(I.poly_strain * current_beta).at(0)}); - else if(T == OutputType::EP2) for(const auto& I : int_pt) data.emplace_back(vec{transform::strain::principal(I.poly_strain * current_beta).at(1)}); - else if(T == OutputType::EINT) data.emplace_back(current_beta); - else if(T == OutputType::PE) for(const auto& I : int_pt) data.emplace_back(I.poly_strain * current_beta - solve(mat_stiffness, I.poly_stress * current_alpha)); - else if(T == OutputType::PEP) for(const auto& I : int_pt) data.emplace_back(transform::strain::principal(I.poly_strain * current_beta - solve(mat_stiffness, I.poly_stress * current_alpha))); - else if(T == OutputType::RESULTANT) for(const auto& I : edge) data.emplace_back(vec{I.F(current_alpha), I.V(current_alpha), I.M(current_alpha)}); - else if(T == OutputType::AXIAL) data.emplace_back(vec{edge[0].F(current_alpha), edge[1].F(current_alpha), edge[2].F(current_alpha), edge[3].F(current_alpha)}); - else if(T == OutputType::SHEAR) data.emplace_back(vec{edge[0].V(current_alpha), edge[1].V(current_alpha), edge[2].V(current_alpha), edge[3].V(current_alpha)}); - else if(T == OutputType::MOMENT) data.emplace_back(vec{edge[0].M(current_alpha), edge[1].M(current_alpha), edge[2].M(current_alpha), edge[3].M(current_alpha)}); - else if(T == OutputType::MISES) - for(const auto& I : int_pt) { - const vec t_stress = I.poly_stress * current_alpha; - data.emplace_back(vec{sqrt(t_stress(0) * t_stress(0) - t_stress(0) * t_stress(1) + t_stress(1) * t_stress(1) + 3. * t_stress(2) * t_stress(2))}); - } - else for(const auto& I : int_pt) for(const auto& J : I.m_material->record(T)) data.emplace_back(J); + if(P == OutputType::S) for(const auto& I : int_pt) data.emplace_back(I.poly_stress * current_alpha); + else if(P == OutputType::S11) for(const auto& I : int_pt) data.emplace_back(I.poly_stress.row(0) * current_alpha); + else if(P == OutputType::S22) for(const auto& I : int_pt) data.emplace_back(I.poly_stress.row(1) * current_alpha); + else if(P == OutputType::S12) for(const auto& I : int_pt) data.emplace_back(I.poly_stress.row(2) * current_alpha); + else if(P == OutputType::SP) for(const auto& I : int_pt) data.emplace_back(transform::stress::principal(I.poly_stress * current_alpha)); + else if(P == OutputType::SP1) for(const auto& I : int_pt) data.emplace_back(vec{transform::stress::principal(I.poly_stress * current_alpha).at(0)}); + else if(P == OutputType::SP2) for(const auto& I : int_pt) data.emplace_back(vec{transform::stress::principal(I.poly_stress * current_alpha).at(1)}); + else if(P == OutputType::E) for(const auto& I : int_pt) data.emplace_back(I.poly_strain * current_beta); + else if(P == OutputType::E11) for(const auto& I : int_pt) data.emplace_back(I.poly_strain.row(0) * current_beta); + else if(P == OutputType::E22) for(const auto& I : int_pt) data.emplace_back(I.poly_strain.row(1) * current_beta); + else if(P == OutputType::E12) for(const auto& I : int_pt) data.emplace_back(I.poly_strain.row(2) * current_beta); + else if(P == OutputType::EP) for(const auto& I : int_pt) data.emplace_back(transform::strain::principal(I.poly_strain * current_beta)); + else if(P == OutputType::EP1) for(const auto& I : int_pt) data.emplace_back(vec{transform::strain::principal(I.poly_strain * current_beta).at(0)}); + else if(P == OutputType::EP2) for(const auto& I : int_pt) data.emplace_back(vec{transform::strain::principal(I.poly_strain * current_beta).at(1)}); + else if(P == OutputType::PE) for(const auto& I : int_pt) { data.emplace_back(I.poly_strain * current_beta - solve(mat_stiffness, I.poly_stress * current_alpha)); } + else if(P == OutputType::PEP) for(const auto& I : int_pt) data.emplace_back(transform::strain::principal(I.poly_strain * current_beta - solve(mat_stiffness, I.poly_stress * current_alpha))); + else for(const auto& I : int_pt) append_to(data, I.m_material->record(P)); return data; } @@ -355,10 +265,10 @@ mat GCMQ::GetData(const OutputType P) { } mat A(int_pt.size(), 9); - mat B(int_pt.size(), 6, fill::zeros); + mat B(6, int_pt.size(), fill::zeros); for(size_t I = 0; I < int_pt.size(); ++I) { - if(const auto C = int_pt[I].m_material->record(P); !C.empty()) B(I, 0, size(C[0])) = C[0]; + if(const auto C = int_pt[I].m_material->record(P); !C.empty()) B(0, I, size(C[0])) = C[0]; A.row(I) = interpolation::quadratic(int_pt[I].coor); } @@ -369,7 +279,7 @@ mat GCMQ::GetData(const OutputType P) { data.row(2) = interpolation::quadratic(1., 1.); data.row(3) = interpolation::quadratic(-1., 1.); - return (data * solve(A, B)).t(); + return (data * solve(A, B.t())).t(); } #endif diff --git a/Element/Membrane/Drilling/GCMQ.h b/Element/Membrane/Drilling/GCMQ.h index de5127181..4be3a955b 100644 --- a/Element/Membrane/Drilling/GCMQ.h +++ b/Element/Membrane/Drilling/GCMQ.h @@ -39,26 +39,8 @@ class IntegrationPlan; class GCMQ final : public SGCMQ { - struct ResultantConverter final { - enum class Edge { - A, - B, - C, - D - }; - - mat converter_a, converter_b; - mat direction_cosine; - ResultantConverter(Edge, double, const mat&, const IntegrationPlan&, const mat&); - [[nodiscard]] double F(const vec&) const; - [[nodiscard]] double V(const vec&) const; - [[nodiscard]] double M(const vec&) const; - }; - static constexpr int enhanced_mode = 2; - vector edge; - const mat mat_stiffness, iso_mapping; mat HT, NT, MT, N, M; // constant matrices diff --git a/Element/Membrane/Drilling/GQ12.cpp b/Element/Membrane/Drilling/GQ12.cpp index 0ed6978f2..c7aa92f2d 100644 --- a/Element/Membrane/Drilling/GQ12.cpp +++ b/Element/Membrane/Drilling/GQ12.cpp @@ -35,7 +35,7 @@ GQ12::GQ12(const unsigned T, uvec&& N, const unsigned M, const double TH) int GQ12::initialize(const shared_ptr& D) { auto& mat_proto = D->get(material_tag(0)); - if(PlaneType::E == static_cast(mat_proto->get_parameter(ParameterType::PLANETYPE))) suanpan::hacker(thickness) = 1.; + if(PlaneType::E == mat_proto->get_plane_type()) suanpan::hacker(thickness) = 1.; auto& mat_stiff = mat_proto->get_initial_stiffness(); @@ -108,7 +108,7 @@ int GQ12::initialize(const shared_ptr& D) { } trial_stiffness = current_stiffness = initial_stiffness; - if(const auto t_density = mat_proto->get_parameter(ParameterType::DENSITY); t_density > 0.) { + if(const auto t_density = mat_proto->get_density(); t_density > 0.) { initial_mass.zeros(m_size, m_size); for(const auto& I : int_pt) { const auto n_int = compute_shape_function(I.coor, 0); @@ -165,9 +165,9 @@ int GQ12::reset_status() { mat GQ12::compute_shape_function(const mat& coordinate, const unsigned order) const { return shape::quad(coordinate, order, m_node); } -vector GQ12::record(const OutputType T) { +vector GQ12::record(const OutputType P) { vector data; - for(const auto& I : int_pt) for(const auto& J : I.m_material->record(T)) data.emplace_back(J); + for(const auto& I : int_pt) append_to(data, I.m_material->record(P)); return data; } @@ -205,10 +205,10 @@ void GQ12::GetData(vtkSmartPointer& arrays, const OutputType typ mat GQ12::GetData(const OutputType P) { mat A(int_pt.size(), 4); - mat B(int_pt.size(), 6, fill::zeros); + mat B(6, int_pt.size(), fill::zeros); for(size_t I = 0; I < int_pt.size(); ++I) { - if(const auto C = int_pt[I].m_material->record(P); !C.empty()) B(I, 0, size(C[0])) = C[0]; + if(const auto C = int_pt[I].m_material->record(P); !C.empty()) B(0, I, size(C[0])) = C[0]; A.row(I) = interpolation::linear(int_pt[I].coor); } @@ -219,7 +219,7 @@ mat GQ12::GetData(const OutputType P) { data.row(2) = interpolation::linear(1., 1.); data.row(3) = interpolation::linear(-1., 1.); - return (data * solve(A, B)).t(); + return (data * solve(A, B.t())).t(); } void GQ12::SetDeformation(vtkSmartPointer& nodes, const double amplifier) { diff --git a/Element/Membrane/Drilling/GQ12.h b/Element/Membrane/Drilling/GQ12.h index 6a5fc29aa..5587ec0d9 100644 --- a/Element/Membrane/Drilling/GQ12.h +++ b/Element/Membrane/Drilling/GQ12.h @@ -57,10 +57,11 @@ class GQ12 final : public MaterialElement2D { vector int_pt; public: - GQ12(unsigned, // tag - uvec&&, // node tag - unsigned, // material tag - double = 1. // thickness + GQ12( + unsigned, // tag + uvec&&, // node tag + unsigned, // material tag + double = 1. // thickness ); int initialize(const shared_ptr&) override; diff --git a/Element/Membrane/Drilling/SGCMQ.cpp b/Element/Membrane/Drilling/SGCMQ.cpp index 1d749ff4a..6e91c9f74 100644 --- a/Element/Membrane/Drilling/SGCMQ.cpp +++ b/Element/Membrane/Drilling/SGCMQ.cpp @@ -161,7 +161,7 @@ int SGCMQ::initialize(const shared_ptr& D) { auto& mat_stiff = mat_proto->get_initial_stiffness(); - if(PlaneType::E == static_cast(mat_proto->get_parameter(ParameterType::PLANETYPE))) suanpan::hacker(thickness) = 1.; + if(PlaneType::E == mat_proto->get_plane_type()) suanpan::hacker(thickness) = 1.; const auto ele_coor = get_coordinate(2); @@ -201,7 +201,7 @@ int SGCMQ::initialize(const shared_ptr& D) { for(auto&& I : int_pt) I.poly_strain *= NT; - form_mass(mat_proto->get_parameter(ParameterType::DENSITY), diff_coor); + form_mass(mat_proto->get_density(), diff_coor); form_body_force(diff_coor); @@ -242,29 +242,9 @@ int SGCMQ::reset_status() { mat SGCMQ::compute_shape_function(const mat& coordinate, const unsigned order) const { return shape::quad(coordinate, order, m_node); } -vector SGCMQ::record(const OutputType T) { +vector SGCMQ::record(const OutputType P) { vector data; - - if(T == OutputType::NMISES) { - mat A(int_pt.size(), 9); - vec B(int_pt.size(), fill::zeros); - - for(size_t I = 0; I < int_pt.size(); ++I) { - if(const auto C = int_pt[I].m_material->record(OutputType::MISES); !C.empty()) B(I) = C.cbegin()->at(0); - A.row(I) = interpolation::quadratic(int_pt[I].coor); - } - - const vec X = solve(A, B); - - data.emplace_back(vec{dot(interpolation::quadratic(-1., -1.), X)}); - data.emplace_back(vec{dot(interpolation::quadratic(1., -1.), X)}); - data.emplace_back(vec{dot(interpolation::quadratic(1., 1.), X)}); - data.emplace_back(vec{dot(interpolation::quadratic(-1., 1.), X)}); - } - else if(T == OutputType::K) data.emplace_back(vectorise(current_stiffness)); - else if(T == OutputType::M) data.emplace_back(vectorise(current_mass)); - else for(const auto& I : int_pt) for(const auto& J : I.m_material->record(T)) data.emplace_back(J); - + for(const auto& I : int_pt) append_to(data, I.m_material->record(P)); return data; } @@ -323,10 +303,10 @@ mat SGCMQ::GetData(const OutputType P) { } mat A(int_pt.size(), 9); - mat B(int_pt.size(), 6, fill::zeros); + mat B(6, int_pt.size(), fill::zeros); for(size_t I = 0; I < int_pt.size(); ++I) { - if(const auto C = int_pt[I].m_material->record(P); !C.empty()) B(I, 0, size(C[0])) = C[0]; + if(const auto C = int_pt[I].m_material->record(P); !C.empty()) B(0, I, size(C[0])) = C[0]; A.row(I) = interpolation::quadratic(int_pt[I].coor); } @@ -337,7 +317,7 @@ mat SGCMQ::GetData(const OutputType P) { data.row(2) = interpolation::quadratic(1., 1.); data.row(3) = interpolation::quadratic(-1., 1.); - return (data * solve(A, B, solve_opts::fast)).t(); + return (data * solve(A, B.t())).t(); } void SGCMQ::SetDeformation(vtkSmartPointer& nodes, const double amplifier) { diff --git a/Element/Membrane/Drilling/SGCMQ.h b/Element/Membrane/Drilling/SGCMQ.h index 851fc08ed..27c1d1cc2 100644 --- a/Element/Membrane/Drilling/SGCMQ.h +++ b/Element/Membrane/Drilling/SGCMQ.h @@ -65,11 +65,12 @@ class SGCMQ : public MaterialElement2D { void form_body_force(const mat&); public: - SGCMQ(unsigned, // element tag - uvec&&, // node tag - unsigned, // material tag - double = 1., // thickness - char = 'I' // integration type + SGCMQ( + unsigned, // element tag + uvec&&, // node tag + unsigned, // material tag + double = 1., // thickness + char = 'I' // integration type ); int initialize(const shared_ptr&) override; diff --git a/Element/Membrane/Infinite/CINP4.cpp b/Element/Membrane/Infinite/CINP4.cpp index 615a43777..73f654971 100644 --- a/Element/Membrane/Infinite/CINP4.cpp +++ b/Element/Membrane/Infinite/CINP4.cpp @@ -268,7 +268,7 @@ CINP4::CINP4(const unsigned T, uvec&& N, const unsigned M, const double TH) int CINP4::initialize(const shared_ptr& D) { auto& material_proto = D->get(material_tag(0)); - if(PlaneType::E == static_cast(material_proto->get_parameter(ParameterType::PLANETYPE))) suanpan::hacker(thickness) = 1.; + if(PlaneType::E == material_proto->get_plane_type()) suanpan::hacker(thickness) = 1.; const auto ele_coor = get_coordinate(2); @@ -340,9 +340,9 @@ int CINP4::reset_status() { } vector CINP4::record(const OutputType P) { - vector output; - for(const auto& I : int_pt) for(const auto& J : I.m_material->record(P)) output.emplace_back(J); - return output; + vector data; + for(const auto& I : int_pt) append_to(data, I.m_material->record(P)); + return data; } void CINP4::print() { diff --git a/Element/Membrane/Infinite/CINP4.h b/Element/Membrane/Infinite/CINP4.h index 5e69b7234..135d5ff2e 100644 --- a/Element/Membrane/Infinite/CINP4.h +++ b/Element/Membrane/Infinite/CINP4.h @@ -56,10 +56,11 @@ class CINP4 final : public MaterialElement2D { static void stack_stiffness(mat&, const mat&, const mat&, double); public: - CINP4(unsigned, // tag - uvec&&, // node tag - unsigned, // material tag - double = 1. // thickness + CINP4( + unsigned, // tag + uvec&&, // node tag + unsigned, // material tag + double = 1. // thickness ); int initialize(const shared_ptr&) override; diff --git a/Element/Membrane/Membrane b/Element/Membrane/Membrane index 1566ce93a..0980361eb 100644 --- a/Element/Membrane/Membrane +++ b/Element/Membrane/Membrane @@ -25,4 +25,4 @@ #include "Porous/PCPE4DC.h" #include "Porous/PCPE4UC.h" #include "Porous/PCPE8DC.h" -#include "Porous/PCPE8UC.h" \ No newline at end of file +#include "Porous/PCPE8UC.h" diff --git a/Element/Membrane/Mixed/PS.cpp b/Element/Membrane/Mixed/PS.cpp index 3ca0e05c6..4c746e70f 100644 --- a/Element/Membrane/Mixed/PS.cpp +++ b/Element/Membrane/Mixed/PS.cpp @@ -52,7 +52,7 @@ PS::PS(const unsigned T, uvec&& N, const unsigned M, const double TH) int PS::initialize(const shared_ptr& D) { auto& material_proto = D->get(material_tag(0)); - if(PlaneType::E == static_cast(material_proto->get_parameter(ParameterType::PLANETYPE))) suanpan::hacker(thickness) = 1.; + if(PlaneType::E == material_proto->get_plane_type()) suanpan::hacker(thickness) = 1.; auto& ini_stiffness = material_proto->get_initial_stiffness(); @@ -99,7 +99,7 @@ int PS::initialize(const shared_ptr& D) { for(auto& I : int_pt) I.poly_strain *= NT; - if(const auto t_density = material_proto->get_parameter(ParameterType::DENSITY); t_density > 0.) { + if(const auto t_density = material_proto->get_density(); t_density > 0.) { initial_mass.zeros(m_size, m_size); for(const auto& I : int_pt) { const auto n_int = compute_shape_function(I.coor, 0); @@ -157,9 +157,9 @@ int PS::reset_status() { mat PS::compute_shape_function(const mat& coordinate, const unsigned order) const { return shape::quad(coordinate, order, m_node); } vector PS::record(const OutputType P) { - vector output; - for(const auto& I : int_pt) for(const auto& J : I.m_material->record(P)) output.emplace_back(J); - return output; + vector data; + for(const auto& I : int_pt) append_to(data, I.m_material->record(P)); + return data; } void PS::print() { diff --git a/Element/Membrane/Mixed/PS.h b/Element/Membrane/Mixed/PS.h index 3cc518c93..9b3853883 100644 --- a/Element/Membrane/Mixed/PS.h +++ b/Element/Membrane/Mixed/PS.h @@ -49,10 +49,11 @@ class PS final : public MaterialElement2D { static mat form_transformation(const mat&); public: - PS(unsigned, // unique tag - uvec&&, // node tags - unsigned, // material tag - double = 1. // thickness + PS( + unsigned, // unique tag + uvec&&, // node tags + unsigned, // material tag + double = 1. // thickness ); int initialize(const shared_ptr&) override; diff --git a/Element/Membrane/Mixed/QE2.cpp b/Element/Membrane/Mixed/QE2.cpp index 03718bd66..c1f82c58c 100644 --- a/Element/Membrane/Mixed/QE2.cpp +++ b/Element/Membrane/Mixed/QE2.cpp @@ -46,7 +46,7 @@ QE2::QE2(const unsigned T, uvec&& N, const unsigned M, const double TH) int QE2::initialize(const shared_ptr& D) { auto& mat_proto = D->get(material_tag(0)); - if(PlaneType::E == static_cast(mat_proto->get_parameter(ParameterType::PLANETYPE))) suanpan::hacker(thickness) = 1.; + if(PlaneType::E == mat_proto->get_plane_type()) suanpan::hacker(thickness) = 1.; access::rw(mat_stiffness) = mat_proto->get_initial_stiffness(); @@ -110,7 +110,7 @@ int QE2::initialize(const shared_ptr& D) { current_alpha = trial_alpha.zeros(7); current_beta = trial_beta.zeros(7); - if(const auto t_density = mat_proto->get_parameter(ParameterType::DENSITY); t_density > 0.) { + if(const auto t_density = mat_proto->get_density(); t_density > 0.) { initial_mass.zeros(m_size, m_size); for(const auto& I : int_pt) { const auto n_int = compute_shape_function(I.coor, 0); @@ -204,12 +204,12 @@ int QE2::reset_status() { mat QE2::compute_shape_function(const mat& coordinate, const unsigned order) const { return shape::quad(coordinate, order, m_node); } -vector QE2::record(const OutputType T) { +vector QE2::record(const OutputType P) { vector data; - if(T == OutputType::E) for(const auto& I : int_pt) data.emplace_back(I.A * current_alpha); - else if(T == OutputType::S) for(const auto& I : int_pt) data.emplace_back(I.P * current_beta); - else for(const auto& I : int_pt) for(const auto& J : I.m_material->record(T)) data.emplace_back(J); + if(P == OutputType::E) for(const auto& I : int_pt) data.emplace_back(I.A * current_alpha); + else if(P == OutputType::S) for(const auto& I : int_pt) data.emplace_back(I.P * current_beta); + else for(const auto& I : int_pt) append_to(data, I.m_material->record(P)); return data; } @@ -271,10 +271,10 @@ mat QE2::GetData(const OutputType P) { } mat A(int_pt.size(), 9); - mat B(int_pt.size(), 6, fill::zeros); + mat B(6, int_pt.size(), fill::zeros); for(size_t I = 0; I < int_pt.size(); ++I) { - if(const auto C = int_pt[I].m_material->record(P); !C.empty()) B(I, 0, size(C[0])) = C[0]; + if(const auto C = int_pt[I].m_material->record(P); !C.empty()) B(0, I, size(C[0])) = C[0]; A.row(I) = interpolation::quadratic(int_pt[I].coor); } @@ -285,7 +285,7 @@ mat QE2::GetData(const OutputType P) { data.row(2) = interpolation::quadratic(1., 1.); data.row(3) = interpolation::quadratic(-1., 1.); - return (data * solve(A, B)).t(); + return (data * solve(A, B.t())).t(); } void QE2::SetDeformation(vtkSmartPointer& nodes, const double amplifier) { diff --git a/Element/Membrane/Mixed/QE2.h b/Element/Membrane/Mixed/QE2.h index a3060710a..af4df8c3e 100644 --- a/Element/Membrane/Mixed/QE2.h +++ b/Element/Membrane/Mixed/QE2.h @@ -67,7 +67,8 @@ class QE2 final : public MaterialElement2D { static vec form_stress_mode(double, double); public: - QE2(unsigned, // tag + QE2( + unsigned, // tag uvec&&, // node tags unsigned, // material tags double = 1. // thickness diff --git a/Element/Membrane/PFM/DCP3.cpp b/Element/Membrane/PFM/DCP3.cpp index bd7a2cfed..88b31a23f 100644 --- a/Element/Membrane/PFM/DCP3.cpp +++ b/Element/Membrane/PFM/DCP3.cpp @@ -33,7 +33,7 @@ DCP3::DCP3(const unsigned T, uvec&& NT, const unsigned MT, const double CL, cons int DCP3::initialize(const shared_ptr& D) { auto& material_proto = D->get(material_tag(0)); - if(PlaneType::E == static_cast(material_proto->get_parameter(ParameterType::PLANETYPE))) suanpan::hacker(thickness) = 1.; + if(PlaneType::E == material_proto->get_plane_type()) suanpan::hacker(thickness) = 1.; m_material = material_proto->get_copy(); @@ -113,10 +113,10 @@ int DCP3::clear_status() { int DCP3::reset_status() { return m_material->reset_status(); } -vector DCP3::record(const OutputType T) { - if(T == OutputType::DAMAGE) return {get_current_displacement()(d_dof)}; +vector DCP3::record(const OutputType P) { + if(P == OutputType::DAMAGE) return {get_current_displacement()(d_dof)}; - return m_material->record(T); + return m_material->record(P); } void DCP3::print() { diff --git a/Element/Membrane/PFM/DCP3.h b/Element/Membrane/PFM/DCP3.h index 03d1d075c..7fb348fe7 100644 --- a/Element/Membrane/PFM/DCP3.h +++ b/Element/Membrane/PFM/DCP3.h @@ -49,12 +49,13 @@ class DCP3 final : public MaterialElement2D { double maximum_energy = 0.; public: - DCP3(unsigned, // tag - uvec&&, // node tag - unsigned, // material tag - double, // characteristic length - double, // energy release rate - double = 1. // thickness + DCP3( + unsigned, // tag + uvec&&, // node tag + unsigned, // material tag + double, // characteristic length + double, // energy release rate + double = 1. // thickness ); int initialize(const shared_ptr&) override; diff --git a/Element/Membrane/PFM/DCP4.cpp b/Element/Membrane/PFM/DCP4.cpp index a356da981..a79246318 100644 --- a/Element/Membrane/PFM/DCP4.cpp +++ b/Element/Membrane/PFM/DCP4.cpp @@ -42,7 +42,7 @@ DCP4::DCP4(const unsigned T, uvec&& N, const unsigned M, const double CL, const int DCP4::initialize(const shared_ptr& D) { auto& material_proto = D->get(material_tag(0)); - if(PlaneType::E == static_cast(material_proto->get_parameter(ParameterType::PLANETYPE))) suanpan::hacker(thickness) = 1.; + if(PlaneType::E == material_proto->get_plane_type()) suanpan::hacker(thickness) = 1.; const auto ele_coor = get_coordinate(2); @@ -74,7 +74,7 @@ int DCP4::initialize(const shared_ptr& D) { } trial_stiffness = current_stiffness = initial_stiffness; - if(const auto t_density = material_proto->get_parameter(ParameterType::DENSITY); t_density > 0.) { + if(const auto t_density = material_proto->get_density(); t_density > 0.) { initial_mass.zeros(m_size, m_size); for(const auto& I : int_pt) { const auto t_factor = t_density * I.weight * thickness; @@ -153,28 +153,11 @@ int DCP4::reset_status() { } vector DCP4::record(const OutputType P) { - vector output; + if(P == OutputType::DAMAGE) return {get_current_displacement()(d_dof)}; - if(P == OutputType::NMISES) { - mat A(int_pt.size(), 4); - vec B(int_pt.size(), fill::zeros); - - for(size_t I = 0; I < int_pt.size(); ++I) { - if(const auto C = int_pt[I].m_material->record(OutputType::MISES); !C.empty()) B(I) = C.cbegin()->at(0); - A.row(I) = interpolation::linear(int_pt[I].coor); - } - - const vec X = solve(A, B); - - output.emplace_back(vec{dot(interpolation::linear(-1., -1.), X)}); - output.emplace_back(vec{dot(interpolation::linear(1., -1.), X)}); - output.emplace_back(vec{dot(interpolation::linear(1., 1.), X)}); - output.emplace_back(vec{dot(interpolation::linear(-1., 1.), X)}); - } - else if(P == OutputType::DAMAGE) output.emplace_back(get_current_displacement()(d_dof)); - else for(const auto& I : int_pt) for(const auto& J : I.m_material->record(P)) output.emplace_back(J); - - return output; + vector data; + for(const auto& I : int_pt) append_to(data, I.m_material->record(P)); + return data; } void DCP4::print() { @@ -219,10 +202,10 @@ mat DCP4::GetData(const OutputType P) { } mat A(int_pt.size(), 4); - mat B(int_pt.size(), 6, fill::zeros); + mat B(6, int_pt.size(), fill::zeros); for(size_t I = 0; I < int_pt.size(); ++I) { - if(const auto C = int_pt[I].m_material->record(P); !C.empty()) B(I, 0, size(C[0])) = C[0]; + if(const auto C = int_pt[I].m_material->record(P); !C.empty()) B(0, I, size(C[0])) = C[0]; A.row(I) = interpolation::linear(int_pt[I].coor); } @@ -233,7 +216,7 @@ mat DCP4::GetData(const OutputType P) { data.row(2) = interpolation::linear(1., 1.); data.row(3) = interpolation::linear(-1., 1.); - return (data * solve(A, B)).t(); + return (data * solve(A, B.t())).t(); } void DCP4::SetDeformation(vtkSmartPointer& nodes, const double amplifier) { diff --git a/Element/Membrane/PFM/DCP4.h b/Element/Membrane/PFM/DCP4.h index d69e5f826..a6871bf4a 100644 --- a/Element/Membrane/PFM/DCP4.h +++ b/Element/Membrane/PFM/DCP4.h @@ -53,12 +53,13 @@ class DCP4 final : public MaterialElement2D { vector int_pt; public: - DCP4(unsigned, // tag - uvec&&, // node tag - unsigned, // material tag - double, // characteristic length - double, // energy release rate - double = 1. // thickness + DCP4( + unsigned, // tag + uvec&&, // node tag + unsigned, // material tag + double, // characteristic length + double, // energy release rate + double = 1. // thickness ); int initialize(const shared_ptr&) override; diff --git a/Element/Membrane/Plane/CP3.cpp b/Element/Membrane/Plane/CP3.cpp index dd33e799e..efb2efcce 100644 --- a/Element/Membrane/Plane/CP3.cpp +++ b/Element/Membrane/Plane/CP3.cpp @@ -150,7 +150,7 @@ CP3::CP3(const unsigned T, uvec&& NT, const unsigned MT, const double TH, const int CP3::initialize(const shared_ptr& D) { auto& material_proto = D->get(material_tag(0)); - if(PlaneType::E == static_cast(material_proto->get_parameter(ParameterType::PLANETYPE))) suanpan::hacker(thickness) = 1.; + if(PlaneType::E == material_proto->get_plane_type()) suanpan::hacker(thickness) = 1.; m_material = material_proto->get_copy(); @@ -174,7 +174,7 @@ int CP3::initialize(const shared_ptr& D) { rowvec n = mean(ele_coor) * inv_coor; - if(const auto t_density = area * thickness * m_material->get_parameter(ParameterType::DENSITY); t_density > 0.) { + if(const auto t_density = area * thickness * m_material->get_density(); t_density > 0.) { initial_mass.zeros(m_size, m_size); for(auto I = 0u, K = 0u; I < m_node; ++I, K += m_dof) for(auto J = I, L = K; J < m_node; ++J, L += m_dof) initial_mass(K, L) += t_density * n(I) * n(J); for(auto I = 0u, K = 1u; I < m_size; I += m_dof, K += m_dof) { @@ -246,7 +246,7 @@ int CP3::clear_status() { return m_material->clear_status(); } int CP3::reset_status() { return m_material->reset_status(); } -vector CP3::record(const OutputType T) { return m_material->record(T); } +vector CP3::record(const OutputType P) { return m_material->record(P); } void CP3::print() { suanpan_info("CP3 element connects nodes:", node_encoding); diff --git a/Element/Membrane/Plane/CP4.cpp b/Element/Membrane/Plane/CP4.cpp index 95953e5b8..5dc86d5af 100644 --- a/Element/Membrane/Plane/CP4.cpp +++ b/Element/Membrane/Plane/CP4.cpp @@ -26,14 +26,19 @@ const vec CP4::h_mode{1., -1., 1., -1.}; -CP4::IntegrationPoint::IntegrationPoint(vec&& C, const double W, unique_ptr&& M, mat&& PNPXY) +CP4::IntegrationPoint::IntegrationPoint(vec&& C, const double W, unique_ptr&& M, mat&& P) : coor(std::forward(C)) , weight(W) , m_material(std::forward>(M)) - , pn_pxy(std::forward(PNPXY)) - , strain_mat(3, m_size, fill::zeros) {} + , pn_pxy(std::forward(P)) + , strain_mat(3, m_size) { + for(auto I = 0u, J = 0u, K = 1u; I < m_node; ++I, J += m_dof, K += m_dof) { + strain_mat(0, J) = strain_mat(2, K) = pn_pxy(0, I); + strain_mat(2, J) = strain_mat(1, K) = pn_pxy(1, I); + } +} -void CP4::stack_stiffness(mat& K, const mat& D, const mat& N, const double F) { +void CP4::stack_stiffness(mat& K, const mat& D, const sp_mat& N, const double F) { const auto D11 = F * D(0, 0); const auto D12 = F * D(0, 1); const auto D13 = F * D(0, 2); @@ -209,7 +214,7 @@ CP4::CP4(const unsigned T, uvec&& N, const unsigned M, const double TH, const bo int CP4::initialize(const shared_ptr& D) { auto& material_proto = D->get(material_tag(0)); - if(PlaneType::E == static_cast(material_proto->get_parameter(ParameterType::PLANETYPE))) suanpan::hacker(thickness) = 1.; + if(PlaneType::E == material_proto->get_plane_type()) suanpan::hacker(thickness) = 1.; const auto ele_coor = get_coordinate(2); @@ -246,18 +251,12 @@ int CP4::initialize(const shared_ptr& D) { const mat jacob = pn * ele_coor; int_pt.emplace_back(std::move(t_vec), plan(I, 2) * det(jacob), material_proto->get_copy(), solve(jacob, pn)); - auto& c_pt = int_pt.back(); - - for(unsigned J = 0; J < m_node; ++J) { - const auto K = m_dof * J, L = K + 1; - c_pt.strain_mat(0, K) = c_pt.strain_mat(2, L) = c_pt.pn_pxy(0, J); - c_pt.strain_mat(2, K) = c_pt.strain_mat(1, L) = c_pt.pn_pxy(1, J); - } + const auto& c_pt = int_pt.back(); initial_stiffness += c_pt.weight * thickness * c_pt.strain_mat.t() * ini_stiffness * c_pt.strain_mat; } trial_stiffness = current_stiffness = initial_stiffness; - if(const auto t_density = material_proto->get_parameter(ParameterType::DENSITY); t_density > 0.) { + if(const auto t_density = material_proto->get_density(); t_density > 0.) { initial_mass.zeros(m_size, m_size); for(const auto& I : int_pt) { const auto n_int = compute_shape_function(I.coor, 0); @@ -375,27 +374,9 @@ int CP4::reset_status() { mat CP4::compute_shape_function(const mat& coordinate, const unsigned order) const { return shape::quad(coordinate, order, m_node); } vector CP4::record(const OutputType P) { - vector output; - - if(P == OutputType::NMISES) { - mat A(int_pt.size(), 4); - vec B(int_pt.size(), fill::zeros); - - for(size_t I = 0; I < int_pt.size(); ++I) { - if(const auto C = int_pt[I].m_material->record(OutputType::MISES); !C.empty()) B(I) = C.cbegin()->at(0); - A.row(I) = interpolation::linear(int_pt[I].coor); - } - - const vec X = solve(A, B); - - output.emplace_back(vec{dot(interpolation::linear(-1., -1.), X)}); - output.emplace_back(vec{dot(interpolation::linear(1., -1.), X)}); - output.emplace_back(vec{dot(interpolation::linear(1., 1.), X)}); - output.emplace_back(vec{dot(interpolation::linear(-1., 1.), X)}); - } - else for(const auto& I : int_pt) for(const auto& J : I.m_material->record(P)) output.emplace_back(J); - - return output; + vector data; + for(const auto& I : int_pt) append_to(data, I.m_material->record(P)); + return data; } void CP4::print() { @@ -434,10 +415,10 @@ void CP4::GetData(vtkSmartPointer& arrays, const OutputType type mat CP4::GetData(const OutputType P) { mat A(int_pt.size(), 4); - mat B(int_pt.size(), 6, fill::zeros); + mat B(6, int_pt.size(), fill::zeros); for(size_t I = 0; I < int_pt.size(); ++I) { - if(const auto C = int_pt[I].m_material->record(P); !C.empty()) B(I, 0, size(C[0])) = C[0]; + if(const auto C = int_pt[I].m_material->record(P); !C.empty()) B(0, I, size(C[0])) = C[0]; A.row(I) = interpolation::linear(int_pt[I].coor); } @@ -448,7 +429,7 @@ mat CP4::GetData(const OutputType P) { data.row(2) = interpolation::linear(1., 1.); data.row(3) = interpolation::linear(-1., 1.); - return (data * solve(A, B)).t(); + return (data * solve(A, B.t())).t(); } void CP4::SetDeformation(vtkSmartPointer& nodes, const double amplifier) { diff --git a/Element/Membrane/Plane/CP4.h b/Element/Membrane/Plane/CP4.h index ce141d5ef..98537d46a 100644 --- a/Element/Membrane/Plane/CP4.h +++ b/Element/Membrane/Plane/CP4.h @@ -40,7 +40,8 @@ class CP4 final : public MaterialElement2D { vec coor; double weight; unique_ptr m_material; - mat pn_pxy, strain_mat; + mat pn_pxy; + sp_mat strain_mat; IntegrationPoint(vec&&, double, unique_ptr&&, mat&&); }; @@ -56,10 +57,11 @@ class CP4 final : public MaterialElement2D { mat hourglassing; - static void stack_stiffness(mat&, const mat&, const mat&, double); + static void stack_stiffness(mat&, const mat&, const sp_mat&, double); public: - CP4(unsigned, // tag + CP4( + unsigned, // tag uvec&&, // node tag unsigned, // material tag double = 1., // thickness diff --git a/Element/Membrane/Plane/CP4I.cpp b/Element/Membrane/Plane/CP4I.cpp index fa0fa09a7..1cd10acd1 100644 --- a/Element/Membrane/Plane/CP4I.cpp +++ b/Element/Membrane/Plane/CP4I.cpp @@ -22,13 +22,18 @@ #include #include -CP4I::IntegrationPoint::IntegrationPoint(vec&& C, const double W, unique_ptr&& M, mat&& PNPXY) +CP4I::IntegrationPoint::IntegrationPoint(vec&& C, const double W, unique_ptr&& M, mat&& P) : coor(std::forward(C)) , weight(W) , m_material(std::forward>(M)) - , pn_pxy(std::forward(PNPXY)) + , pn_pxy(std::forward(P)) , B1(3, m_size, fill::zeros) - , B2(3, 4, fill::zeros) {} + , B2(3, 4, fill::zeros) { + for(auto I = 0u, J = 0u, K = 1u; I < m_node; ++I, J += m_dof, K += m_dof) { + B1(0, J) = B1(2, K) = pn_pxy(0, I); + B1(2, J) = B1(1, K) = pn_pxy(1, I); + } +} void CP4I::stack_stiffness(mat& K, const mat& D, const mat& N, const double F) { const auto D11 = F * D(0, 0); @@ -241,7 +246,7 @@ CP4I::CP4I(const unsigned T, uvec&& N, const unsigned M, const double TH) int CP4I::initialize(const shared_ptr& D) { auto& material_proto = D->get(material_tag(0)); - if(PlaneType::E == static_cast(material_proto->get_parameter(ParameterType::PLANETYPE))) suanpan::hacker(thickness) = 1.; + if(PlaneType::E == material_proto->get_plane_type()) suanpan::hacker(thickness) = 1.; auto& ini_stiffness = material_proto->get_initial_stiffness(); @@ -262,11 +267,6 @@ int CP4I::initialize(const shared_ptr& D) { auto& c_pt = int_pt.back(); - for(auto J = 0u, K = 0u, L = 1u; J < m_node; ++J, K += m_dof, L += m_dof) { - c_pt.B1(0, K) = c_pt.B1(2, L) = c_pt.pn_pxy(0, J); - c_pt.B1(2, K) = c_pt.B1(1, L) = c_pt.pn_pxy(1, J); - } - const vec pbn_pxy = solve(jacob, -2. * c_pt.coor); c_pt.B2(0, 0) = c_pt.B2(2, 1) = pbn_pxy(0); c_pt.B2(1, 3) = c_pt.B2(2, 2) = pbn_pxy(1); @@ -278,7 +278,7 @@ int CP4I::initialize(const shared_ptr& D) { initial_stiffness -= stiff_b * solve(stiff_a, stiff_b.t()); trial_stiffness = current_stiffness = initial_stiffness; - if(const auto t_density = material_proto->get_parameter(ParameterType::DENSITY); t_density > 0.) { + if(const auto t_density = material_proto->get_density(); t_density > 0.) { initial_mass.zeros(m_size, m_size); for(const auto& I : int_pt) { const auto n_int = compute_shape_function(I.coor, 0); @@ -346,9 +346,9 @@ int CP4I::reset_status() { mat CP4I::compute_shape_function(const mat& coordinate, const unsigned order) const { return shape::quad(coordinate, order, m_node); } vector CP4I::record(const OutputType P) { - vector output; - for(const auto& I : int_pt) for(const auto& J : I.m_material->record(P)) output.emplace_back(J); - return output; + vector data; + for(const auto& I : int_pt) append_to(data, I.m_material->record(P)); + return data; } void CP4I::print() { @@ -387,10 +387,10 @@ void CP4I::GetData(vtkSmartPointer& arrays, const OutputType typ mat CP4I::GetData(const OutputType P) { mat A(int_pt.size(), 4); - mat B(int_pt.size(), 6, fill::zeros); + mat B(6, int_pt.size(), fill::zeros); for(size_t I = 0; I < int_pt.size(); ++I) { - if(const auto C = int_pt[I].m_material->record(P); !C.empty()) B(I, 0, size(C[0])) = C[0]; + if(const auto C = int_pt[I].m_material->record(P); !C.empty()) B(0, I, size(C[0])) = C[0]; A.row(I) = interpolation::linear(int_pt[I].coor); } @@ -401,7 +401,7 @@ mat CP4I::GetData(const OutputType P) { data.row(2) = interpolation::linear(1., 1.); data.row(3) = interpolation::linear(-1., 1.); - return (data * solve(A, B)).t(); + return (data * solve(A, B.t())).t(); } void CP4I::SetDeformation(vtkSmartPointer& nodes, const double amplifier) { diff --git a/Element/Membrane/Plane/CP4I.h b/Element/Membrane/Plane/CP4I.h index 217867562..917ccdeb5 100644 --- a/Element/Membrane/Plane/CP4I.h +++ b/Element/Membrane/Plane/CP4I.h @@ -51,10 +51,11 @@ class CP4I final : public MaterialElement2D { static void stack_stiffness_incompatible(mat&, const mat&, const mat&, double); public: - CP4I(unsigned, // tag - uvec&&, // node tag - unsigned, // material tag - double = 1. // thickness + CP4I( + unsigned, // tag + uvec&&, // node tag + unsigned, // material tag + double = 1. // thickness ); int initialize(const shared_ptr&) override; diff --git a/Element/Membrane/Plane/CP5.cpp b/Element/Membrane/Plane/CP5.cpp index 8ba3a12c2..aa1c2e6f3 100644 --- a/Element/Membrane/Plane/CP5.cpp +++ b/Element/Membrane/Plane/CP5.cpp @@ -24,12 +24,17 @@ #include #include -CP5::IntegrationPoint::IntegrationPoint(vec&& C, const double W, unique_ptr&& M, mat&& PNPXY) +CP5::IntegrationPoint::IntegrationPoint(vec&& C, const double W, unique_ptr&& M, mat&& P) : coor(std::forward(C)) , weight(W) , m_material(std::forward>(M)) - , pn_pxy(std::forward(PNPXY)) - , strain_mat(3, m_size, fill::zeros) {} + , pn_pxy(std::forward(P)) + , strain_mat(3, m_size) { + for(auto I = 0u, J = 0u, K = 1u; I < m_node; ++I, J += m_dof, K += m_dof) { + strain_mat(0, J) = strain_mat(2, K) = pn_pxy(0, I); + strain_mat(2, J) = strain_mat(1, K) = pn_pxy(1, I); + } +} CP5::CP5(const unsigned T, uvec&& N, const unsigned M, const double TH, const bool F) : MaterialElement2D(T, m_node, m_dof, std::forward(N), uvec{M}, F, {DOF::U1, DOF::U2}) @@ -38,7 +43,7 @@ CP5::CP5(const unsigned T, uvec&& N, const unsigned M, const double TH, const bo int CP5::initialize(const shared_ptr& D) { auto& material_proto = D->get(material_tag(0)); - if(PlaneType::E == static_cast(material_proto->get_parameter(ParameterType::PLANETYPE))) suanpan::hacker(thickness) = 1.; + if(PlaneType::E == material_proto->get_plane_type()) suanpan::hacker(thickness) = 1.; const auto ele_coor = get_coordinate(m_dof); @@ -58,17 +63,12 @@ int CP5::initialize(const shared_ptr& D) { const mat jacob = pn * ele_coor; int_pt.emplace_back(std::move(t_vec), plan(I, 2) * det(jacob), material_proto->get_copy(), solve(jacob, pn)); - auto& c_int_pt = int_pt.back(); - - for(unsigned J = 0, K = 0, L = 1; J < m_node; ++J, K += m_dof, L += m_dof) { - c_int_pt.strain_mat(0, K) = c_int_pt.strain_mat(2, L) = c_int_pt.pn_pxy(0, J); - c_int_pt.strain_mat(2, K) = c_int_pt.strain_mat(1, L) = c_int_pt.pn_pxy(1, J); - } - initial_stiffness += c_int_pt.weight * thickness * c_int_pt.strain_mat.t() * ini_stiffness * c_int_pt.strain_mat; + const auto& c_pt = int_pt.back(); + initial_stiffness += c_pt.weight * thickness * c_pt.strain_mat.t() * ini_stiffness * c_pt.strain_mat; } trial_stiffness = current_stiffness = initial_stiffness; - if(const auto t_density = material_proto->get_parameter(ParameterType::DENSITY); t_density > 0.) { + if(const auto t_density = material_proto->get_density(); t_density > 0.) { initial_mass.zeros(m_size, m_size); for(const auto& I : int_pt) { const auto n_int = compute_shape_function(I.coor, 0); @@ -177,9 +177,9 @@ int CP5::reset_status() { mat CP5::compute_shape_function(const mat& coordinate, const unsigned order) const { return shape::quad(coordinate, order, m_node); } vector CP5::record(const OutputType P) { - vector output; - for(const auto& I : int_pt) for(const auto& J : I.m_material->record(P)) output.emplace_back(J); - return output; + vector data; + for(const auto& I : int_pt) append_to(data, I.m_material->record(P)); + return data; } void CP5::print() { diff --git a/Element/Membrane/Plane/CP5.h b/Element/Membrane/Plane/CP5.h index 88a676e78..408393335 100644 --- a/Element/Membrane/Plane/CP5.h +++ b/Element/Membrane/Plane/CP5.h @@ -39,7 +39,8 @@ class CP5 final : public MaterialElement2D { vec coor; double weight; unique_ptr m_material; - mat pn_pxy, strain_mat; + mat pn_pxy; + sp_mat strain_mat; IntegrationPoint(vec&&, double, unique_ptr&&, mat&&); }; @@ -50,7 +51,8 @@ class CP5 final : public MaterialElement2D { vector int_pt; public: - CP5(unsigned, // tag + CP5( + unsigned, // tag uvec&&, // node tag unsigned, // material tag double = 1., // thickness diff --git a/Element/Membrane/Plane/CP6.cpp b/Element/Membrane/Plane/CP6.cpp index 951c3cd0f..50b2eaf41 100644 --- a/Element/Membrane/Plane/CP6.cpp +++ b/Element/Membrane/Plane/CP6.cpp @@ -28,7 +28,12 @@ CP6::IntegrationPoint::IntegrationPoint(vec&& C, const double W, unique_ptr>(M)) , pn_pxy(std::forward(P)) - , strain_mat(3, m_size, fill::zeros) {} + , strain_mat(3, m_size) { + for(auto I = 0u, J = 0u, K = 1u; I < m_node; ++I, J += m_dof, K += m_dof) { + strain_mat(0, J) = strain_mat(2, K) = pn_pxy(0, I); + strain_mat(2, J) = strain_mat(1, K) = pn_pxy(1, I); + } +} CP6::CP6(const unsigned T, uvec&& NT, const unsigned MT, const double TH, const bool R) : MaterialElement2D(T, m_node, m_dof, std::forward(NT), uvec{MT}, R, {DOF::U1, DOF::U2}) @@ -37,7 +42,7 @@ CP6::CP6(const unsigned T, uvec&& NT, const unsigned MT, const double TH, const int CP6::initialize(const shared_ptr& D) { auto& material_proto = D->get(material_tag(0)); - if(PlaneType::E == static_cast(material_proto->get_parameter(ParameterType::PLANETYPE))) suanpan::hacker(thickness) = 1.; + if(PlaneType::E == material_proto->get_plane_type()) suanpan::hacker(thickness) = 1.; mat ele_coor(m_node, m_node, fill::none); ele_coor.col(0).fill(1.); @@ -62,17 +67,12 @@ int CP6::initialize(const shared_ptr& D) { vec coor{ele_coor(I + 3llu, 1), ele_coor(I + 3llu, 2)}; int_pt.emplace_back(std::move(coor), area * thickness / 3., material_proto->get_copy(), shape::triangle(coor, 1) * inv_coor); - auto& c_pt = int_pt.back(); - - for(unsigned J = 0, K = 0, L = 1; J < m_node; ++J, K += m_dof, L += m_dof) { - c_pt.strain_mat(0, K) = c_pt.strain_mat(2, L) = c_pt.pn_pxy(0, J); - c_pt.strain_mat(2, K) = c_pt.strain_mat(1, L) = c_pt.pn_pxy(1, J); - } + const auto& c_pt = int_pt.back(); initial_stiffness += c_pt.weight * c_pt.strain_mat.t() * ini_stiffness * c_pt.strain_mat; } trial_stiffness = current_stiffness = initial_stiffness; - if(const auto t_density = material_proto->get_parameter(ParameterType::DENSITY); t_density > 0.) { + if(const auto t_density = material_proto->get_density(); t_density > 0.) { initial_mass.zeros(m_size, m_size); for(const auto& I : int_pt) { const rowvec n_int = shape::triangle(I.coor, 0) * inv_coor; @@ -176,9 +176,9 @@ int CP6::reset_status() { return code; } -vector CP6::record(const OutputType T) { +vector CP6::record(const OutputType P) { vector data; - for(const auto& I : int_pt) for(const auto& J : I.m_material->record(T)) data.emplace_back(J); + for(const auto& I : int_pt) append_to(data, I.m_material->record(P)); return data; } diff --git a/Element/Membrane/Plane/CP6.h b/Element/Membrane/Plane/CP6.h index 3a27ae8fb..3f274545e 100644 --- a/Element/Membrane/Plane/CP6.h +++ b/Element/Membrane/Plane/CP6.h @@ -36,7 +36,8 @@ class CP6 final : public MaterialElement2D { vec coor; double weight; unique_ptr m_material; - mat pn_pxy, strain_mat; + mat pn_pxy; + sp_mat strain_mat; IntegrationPoint(vec&&, double, unique_ptr&&, mat&&); }; @@ -49,7 +50,8 @@ class CP6 final : public MaterialElement2D { vector int_pt; public: - CP6(unsigned, // tag + CP6( + unsigned, // tag uvec&&, // node tag unsigned, // material tag double = 1., // thickness diff --git a/Element/Membrane/Plane/CP7.cpp b/Element/Membrane/Plane/CP7.cpp index 5da1e2646..78e843997 100644 --- a/Element/Membrane/Plane/CP7.cpp +++ b/Element/Membrane/Plane/CP7.cpp @@ -24,12 +24,17 @@ #include #include -CP7::IntegrationPoint::IntegrationPoint(vec&& C, const double W, unique_ptr&& M, mat&& PNPXY) +CP7::IntegrationPoint::IntegrationPoint(vec&& C, const double W, unique_ptr&& M, mat&& P) : coor(std::forward(C)) , weight(W) , m_material(std::forward>(M)) - , pn_pxy(std::forward(PNPXY)) - , strain_mat(3, m_size, fill::zeros) {} + , pn_pxy(std::forward(P)) + , strain_mat(3, m_size) { + for(auto I = 0u, J = 0u, K = 1u; I < m_node; ++I, J += m_dof, K += m_dof) { + strain_mat(0, J) = strain_mat(2, K) = pn_pxy(0, I); + strain_mat(2, J) = strain_mat(1, K) = pn_pxy(1, I); + } +} CP7::CP7(const unsigned T, uvec&& N, const unsigned M, const double TH, const bool F) : MaterialElement2D(T, m_node, m_dof, std::forward(N), uvec{M}, F, {DOF::U1, DOF::U2}) @@ -38,7 +43,7 @@ CP7::CP7(const unsigned T, uvec&& N, const unsigned M, const double TH, const bo int CP7::initialize(const shared_ptr& D) { auto& material_proto = D->get(material_tag(0)); - if(PlaneType::E == static_cast(material_proto->get_parameter(ParameterType::PLANETYPE))) suanpan::hacker(thickness) = 1.; + if(PlaneType::E == material_proto->get_plane_type()) suanpan::hacker(thickness) = 1.; const auto ele_coor = get_coordinate(m_dof); @@ -58,17 +63,12 @@ int CP7::initialize(const shared_ptr& D) { const mat jacob = pn * ele_coor; int_pt.emplace_back(std::move(t_vec), plan(I, 2) * det(jacob), material_proto->get_copy(), solve(jacob, pn)); - auto& c_int_pt = int_pt.back(); - - for(unsigned J = 0, K = 0, L = 1; J < m_node; ++J, K += m_dof, L += m_dof) { - c_int_pt.strain_mat(0, K) = c_int_pt.strain_mat(2, L) = c_int_pt.pn_pxy(0, J); - c_int_pt.strain_mat(2, K) = c_int_pt.strain_mat(1, L) = c_int_pt.pn_pxy(1, J); - } - initial_stiffness += c_int_pt.weight * thickness * c_int_pt.strain_mat.t() * ini_stiffness * c_int_pt.strain_mat; + const auto& c_pt = int_pt.back(); + initial_stiffness += c_pt.weight * thickness * c_pt.strain_mat.t() * ini_stiffness * c_pt.strain_mat; } trial_stiffness = current_stiffness = initial_stiffness; - if(const auto t_density = material_proto->get_parameter(ParameterType::DENSITY); t_density > 0.) { + if(const auto t_density = material_proto->get_density(); t_density > 0.) { initial_mass.zeros(m_size, m_size); for(const auto& I : int_pt) { const auto n_int = compute_shape_function(I.coor, 0); @@ -177,9 +177,9 @@ int CP7::reset_status() { mat CP7::compute_shape_function(const mat& coordinate, const unsigned order) const { return shape::quad(coordinate, order, m_node); } vector CP7::record(const OutputType P) { - vector output; - for(const auto& I : int_pt) for(const auto& J : I.m_material->record(P)) output.emplace_back(J); - return output; + vector data; + for(const auto& I : int_pt) append_to(data, I.m_material->record(P)); + return data; } void CP7::print() { diff --git a/Element/Membrane/Plane/CP7.h b/Element/Membrane/Plane/CP7.h index 5848c570a..15714cd56 100644 --- a/Element/Membrane/Plane/CP7.h +++ b/Element/Membrane/Plane/CP7.h @@ -39,7 +39,8 @@ class CP7 final : public MaterialElement2D { vec coor; double weight; unique_ptr m_material; - mat pn_pxy, strain_mat; + mat pn_pxy; + sp_mat strain_mat; IntegrationPoint(vec&&, double, unique_ptr&&, mat&&); }; @@ -50,7 +51,8 @@ class CP7 final : public MaterialElement2D { vector int_pt; public: - CP7(unsigned, // tag + CP7( + unsigned, // tag uvec&&, // node tag unsigned, // material tag double = 1., // thickness diff --git a/Element/Membrane/Plane/CP8.cpp b/Element/Membrane/Plane/CP8.cpp index 08d9b1177..0df8b88ba 100644 --- a/Element/Membrane/Plane/CP8.cpp +++ b/Element/Membrane/Plane/CP8.cpp @@ -24,12 +24,17 @@ #include #include -CP8::IntegrationPoint::IntegrationPoint(vec&& C, const double W, unique_ptr&& M, mat&& PNPXY) +CP8::IntegrationPoint::IntegrationPoint(vec&& C, const double W, unique_ptr&& M, mat&& P) : coor(std::forward(C)) , weight(W) , m_material(std::forward>(M)) - , pn_pxy(std::forward(PNPXY)) - , strain_mat(3, m_size, fill::zeros) {} + , pn_pxy(std::forward(P)) + , strain_mat(3, m_size) { + for(auto I = 0u, J = 0u, K = 1u; I < m_node; ++I, J += m_dof, K += m_dof) { + strain_mat(0, J) = strain_mat(2, K) = pn_pxy(0, I); + strain_mat(2, J) = strain_mat(1, K) = pn_pxy(1, I); + } +} CP8::CP8(const unsigned T, uvec&& N, const unsigned M, const double TH, const bool R, const bool F) : MaterialElement2D(T, m_node, m_dof, std::forward(N), uvec{M}, F, {DOF::U1, DOF::U2}) @@ -39,7 +44,7 @@ CP8::CP8(const unsigned T, uvec&& N, const unsigned M, const double TH, const bo int CP8::initialize(const shared_ptr& D) { auto& material_proto = D->get(material_tag(0)); - if(PlaneType::E == static_cast(material_proto->get_parameter(ParameterType::PLANETYPE))) suanpan::hacker(thickness) = 1.; + if(PlaneType::E == material_proto->get_plane_type()) suanpan::hacker(thickness) = 1.; const auto ele_coor = get_coordinate(m_dof); @@ -59,17 +64,12 @@ int CP8::initialize(const shared_ptr& D) { const mat jacob = pn * ele_coor; int_pt.emplace_back(std::move(t_vec), plan(I, 2) * det(jacob), material_proto->get_copy(), solve(jacob, pn)); - auto& c_pt = int_pt.back(); - - for(unsigned J = 0, K = 0, L = 1; J < m_node; ++J, K += m_dof, L += m_dof) { - c_pt.strain_mat(0, K) = c_pt.strain_mat(2, L) = c_pt.pn_pxy(0, J); - c_pt.strain_mat(2, K) = c_pt.strain_mat(1, L) = c_pt.pn_pxy(1, J); - } + const auto& c_pt = int_pt.back(); initial_stiffness += c_pt.weight * thickness * c_pt.strain_mat.t() * ini_stiffness * c_pt.strain_mat; } trial_stiffness = current_stiffness = initial_stiffness; - if(const auto t_density = material_proto->get_parameter(ParameterType::DENSITY); t_density > 0.) { + if(const auto t_density = material_proto->get_density(); t_density > 0.) { initial_mass.zeros(m_size, m_size); for(const auto& I : int_pt) { const auto n_int = compute_shape_function(I.coor, 0); @@ -178,9 +178,9 @@ int CP8::reset_status() { mat CP8::compute_shape_function(const mat& coordinate, const unsigned order) const { return shape::quad(coordinate, order, m_node); } vector CP8::record(const OutputType P) { - vector output; - for(const auto& I : int_pt) for(const auto& J : I.m_material->record(P)) output.emplace_back(J); - return output; + vector data; + for(const auto& I : int_pt) append_to(data, I.m_material->record(P)); + return data; } void CP8::print() { @@ -215,10 +215,10 @@ void CP8::GetData(vtkSmartPointer& arrays, const OutputType type mat CP8::GetData(const OutputType P) { mat A(int_pt.size(), 9); - mat B(int_pt.size(), 6, fill::zeros); + mat B(6, int_pt.size(), fill::zeros); for(size_t I = 0; I < int_pt.size(); ++I) { - if(const auto C = int_pt[I].m_material->record(P); !C.empty()) B(I, 0, size(C[0])) = C[0]; + if(const auto C = int_pt[I].m_material->record(P); !C.empty()) B(0, I, size(C[0])) = C[0]; A.row(I) = interpolation::quadratic(int_pt[I].coor); } @@ -233,7 +233,7 @@ mat CP8::GetData(const OutputType P) { data.row(6) = interpolation::quadratic(0., 1.); data.row(7) = interpolation::quadratic(-1., 0.); - return (data * solve(A, B)).t(); + return (data * solve(A, B.t())).t(); } void CP8::SetDeformation(vtkSmartPointer& nodes, const double amplifier) { diff --git a/Element/Membrane/Plane/CP8.h b/Element/Membrane/Plane/CP8.h index 329fb638b..902a5b0bb 100644 --- a/Element/Membrane/Plane/CP8.h +++ b/Element/Membrane/Plane/CP8.h @@ -38,7 +38,8 @@ class CP8 final : public MaterialElement2D { vec coor; double weight; unique_ptr m_material; - mat pn_pxy, strain_mat; + mat pn_pxy; + sp_mat strain_mat; IntegrationPoint(vec&&, double, unique_ptr&&, mat&&); }; @@ -51,7 +52,8 @@ class CP8 final : public MaterialElement2D { vector int_pt; public: - CP8(unsigned, // tag + CP8( + unsigned, // tag uvec&&, // node tag unsigned, // material tag double = 1., // thickness diff --git a/Element/Membrane/Porous/PCPE4DC.cpp b/Element/Membrane/Porous/PCPE4DC.cpp index 7790882b2..007218029 100644 --- a/Element/Membrane/Porous/PCPE4DC.cpp +++ b/Element/Membrane/Porous/PCPE4DC.cpp @@ -31,7 +31,7 @@ PCPE4DC::IntegrationPoint::IntegrationPoint(vec&& C, const double W, unique_ptr< : coor(std::forward(C)) , weight(W) , m_material(std::forward>(M)) - , strain_mat(3, 2 * m_node, fill::zeros) {} + , strain_mat(3, 2llu * m_node, fill::zeros) {} PCPE4DC::PCPE4DC(const unsigned T, uvec&& N, const unsigned MS, const unsigned MF, const double AL, const double NN, const double KK) : MaterialElement2D(T, m_node, m_dof, std::forward(N), uvec{MS, MF}, false) @@ -44,7 +44,7 @@ int PCPE4DC::initialize(const shared_ptr& D) { auto& f_mat = D->get(material_tag(1)); // validate material type - if(PlaneType::E != static_cast(s_mat->get_parameter(ParameterType::PLANETYPE))) { + if(PlaneType::E != s_mat->get_plane_type()) { suanpan_error("Only plane strain material for solid phase is supported.\n"); return SUANPAN_FAIL; } @@ -57,11 +57,7 @@ int PCPE4DC::initialize(const shared_ptr& D) { const auto ks = s_mat->get_parameter(ParameterType::BULKMODULUS); const auto kf = f_mat->get_parameter(ParameterType::BULKMODULUS); - if(suanpan::approx_equal(ks, 0.)) { - suanpan_error("A zero bulk modulus is detected.\n"); - return SUANPAN_FAIL; - } - if(suanpan::approx_equal(kf, 0.)) { + if(suanpan::approx_equal(ks, 0.) || suanpan::approx_equal(kf, 0.)) { suanpan_error("A zero bulk modulus is detected.\n"); return SUANPAN_FAIL; } @@ -69,8 +65,8 @@ int PCPE4DC::initialize(const shared_ptr& D) { q = ks * kf / (porosity * ks + (alpha - porosity) * kf); // compute density ratio - const auto s_density = (1. - porosity) * s_mat->get_parameter(ParameterType::DENSITY); - const auto f_density = porosity * f_mat->get_parameter(ParameterType::DENSITY); + const auto s_density = (1. - porosity) * s_mat->get_density(); + const auto f_density = porosity * f_mat->get_density(); const auto s_ratio = s_density / (s_density + f_density); const auto f_ratio = f_density / (s_density + f_density); @@ -186,31 +182,15 @@ int PCPE4DC::reset_status() { mat PCPE4DC::compute_shape_function(const mat& coordinate, const unsigned order) const { return shape::quad(coordinate, order, m_node); } vector PCPE4DC::record(const OutputType P) { - vector output; - - if(P == OutputType::NMISES) { - mat A(int_pt.size(), 4); - vec B(int_pt.size(), fill::zeros); + vector data; - for(size_t I = 0; I < int_pt.size(); ++I) { - if(const auto C = int_pt[I].m_material->record(OutputType::MISES); !C.empty()) B(I) = C.cbegin()->at(0); - A.row(I) = interpolation::linear(int_pt[I].coor); - } - - const vec X = solve(A, B); - - output.emplace_back(vec{dot(interpolation::linear(-1., -1.), X)}); - output.emplace_back(vec{dot(interpolation::linear(1., -1.), X)}); - output.emplace_back(vec{dot(interpolation::linear(1., 1.), X)}); - output.emplace_back(vec{dot(interpolation::linear(-1., 1.), X)}); - } - else if(P == OutputType::PP) { + if(P == OutputType::PP) { const auto t_disp = get_current_displacement(); - for(const auto& I : int_pt) output.emplace_back(vec{q * tensor::trace2(I.strain_mat * ((porosity - alpha) * t_disp(s_dof) - porosity * t_disp(f_dof)))}); + for(const auto& I : int_pt) data.emplace_back(vec{q * tensor::trace2(I.strain_mat * ((porosity - alpha) * t_disp(s_dof) - porosity * t_disp(f_dof)))}); } - else for(const auto& I : int_pt) for(const auto& J : I.m_material->record(P)) output.emplace_back(J); + else for(const auto& I : int_pt) append_to(data, I.m_material->record(P)); - return output; + return data; } void PCPE4DC::print() { @@ -249,10 +229,10 @@ void PCPE4DC::GetData(vtkSmartPointer& arrays, const OutputType mat PCPE4DC::GetData(const OutputType P) { mat A(int_pt.size(), 4); - mat B(int_pt.size(), 6, fill::zeros); + mat B(6, int_pt.size(), fill::zeros); for(size_t I = 0; I < int_pt.size(); ++I) { - if(const auto C = int_pt[I].m_material->record(P); !C.empty()) B(I, 0, size(C[0])) = C[0]; + if(const auto C = int_pt[I].m_material->record(P); !C.empty()) B(0, I, size(C[0])) = C[0]; A.row(I) = interpolation::linear(int_pt[I].coor); } @@ -263,7 +243,7 @@ mat PCPE4DC::GetData(const OutputType P) { data.row(2) = interpolation::linear(1., 1.); data.row(3) = interpolation::linear(-1., 1.); - return (data * solve(A, B)).t(); + return (data * solve(A, B.t())).t(); } void PCPE4DC::SetDeformation(vtkSmartPointer& nodes, const double amplifier) { diff --git a/Element/Membrane/Porous/PCPE4DC.h b/Element/Membrane/Porous/PCPE4DC.h index 6cd33645b..26a26e1bc 100644 --- a/Element/Membrane/Porous/PCPE4DC.h +++ b/Element/Membrane/Porous/PCPE4DC.h @@ -56,13 +56,14 @@ class PCPE4DC final : public MaterialElement2D { vector int_pt; public: - PCPE4DC(unsigned, // tag - uvec&&, // node tag - unsigned, // solid material tag - unsigned, // fluid material tag - double, // alpha - double, // porosity - double // permeability + PCPE4DC( + unsigned, // tag + uvec&&, // node tag + unsigned, // solid material tag + unsigned, // fluid material tag + double, // alpha + double, // porosity + double // permeability ); int initialize(const shared_ptr&) override; diff --git a/Element/Membrane/Porous/PCPE4UC.cpp b/Element/Membrane/Porous/PCPE4UC.cpp index 3e4650ab4..bdf2eaf4e 100644 --- a/Element/Membrane/Porous/PCPE4UC.cpp +++ b/Element/Membrane/Porous/PCPE4UC.cpp @@ -40,7 +40,7 @@ int PCPE4UC::initialize(const shared_ptr& D) { auto& f_mat = D->get(material_tag(1)); // validate material type - if(PlaneType::E != static_cast(s_mat->get_parameter(ParameterType::PLANETYPE))) { + if(PlaneType::E != s_mat->get_plane_type()) { suanpan_error("Only plane strain material for solid phase is supported.\n"); return SUANPAN_FAIL; } @@ -53,11 +53,7 @@ int PCPE4UC::initialize(const shared_ptr& D) { const auto ks = s_mat->get_parameter(ParameterType::BULKMODULUS); const auto kf = f_mat->get_parameter(ParameterType::BULKMODULUS); - if(suanpan::approx_equal(ks, 0.)) { - suanpan_error("A zero bulk modulus is detected.\n"); - return SUANPAN_FAIL; - } - if(suanpan::approx_equal(kf, 0.)) { + if(suanpan::approx_equal(ks, 0.) || suanpan::approx_equal(kf, 0.)) { suanpan_error("A zero bulk modulus is detected.\n"); return SUANPAN_FAIL; } @@ -107,7 +103,7 @@ int PCPE4UC::initialize(const shared_ptr& D) { const uvec s_dof_a{0, 2, 4, 6}; const uvec s_dof_b{1, 3, 5, 7}; initial_mass.zeros(m_size, m_size); - initial_mass(s_dof_a, s_dof_a) = ((1. - porosity) * s_mat->get_parameter(ParameterType::DENSITY) + porosity * f_mat->get_parameter(ParameterType::DENSITY)) * meta_a; + initial_mass(s_dof_a, s_dof_a) = ((1. - porosity) * s_mat->get_density() + porosity * f_mat->get_density()) * meta_a; initial_mass(s_dof_b, s_dof_b) = initial_mass(s_dof_a, s_dof_a); ConstantMass(this); @@ -151,31 +147,15 @@ int PCPE4UC::reset_status() { mat PCPE4UC::compute_shape_function(const mat& coordinate, const unsigned order) const { return shape::quad(coordinate, order, m_node); } vector PCPE4UC::record(const OutputType P) { - vector output; - - if(P == OutputType::NMISES) { - mat A(int_pt.size(), 4); - vec B(int_pt.size(), fill::zeros); + vector data; - for(size_t I = 0; I < int_pt.size(); ++I) { - if(const auto C = int_pt[I].m_material->record(OutputType::MISES); !C.empty()) B(I) = C.cbegin()->at(0); - A.row(I) = interpolation::linear(int_pt[I].coor); - } - - const vec X = solve(A, B); - - output.emplace_back(vec{dot(interpolation::linear(-1., -1.), X)}); - output.emplace_back(vec{dot(interpolation::linear(1., -1.), X)}); - output.emplace_back(vec{dot(interpolation::linear(1., 1.), X)}); - output.emplace_back(vec{dot(interpolation::linear(-1., 1.), X)}); - } - else if(P == OutputType::PP) { + if(P == OutputType::PP) { const auto t_disp = get_current_displacement(); - for(const auto& I : int_pt) output.emplace_back(vec{-alpha * q * tensor::trace2(I.strain_mat * t_disp)}); + for(const auto& I : int_pt) data.emplace_back(vec{-alpha * q * tensor::trace2(I.strain_mat * t_disp)}); } - else for(const auto& I : int_pt) for(const auto& J : I.m_material->record(P)) output.emplace_back(J); + else for(const auto& I : int_pt) append_to(data, I.m_material->record(P)); - return output; + return data; } void PCPE4UC::print() { @@ -214,10 +194,10 @@ void PCPE4UC::GetData(vtkSmartPointer& arrays, const OutputType mat PCPE4UC::GetData(const OutputType P) { mat A(int_pt.size(), 4); - mat B(int_pt.size(), 6, fill::zeros); + mat B(6, int_pt.size(), fill::zeros); for(size_t I = 0; I < int_pt.size(); ++I) { - if(const auto C = int_pt[I].m_material->record(P); !C.empty()) B(I, 0, size(C[0])) = C[0]; + if(const auto C = int_pt[I].m_material->record(P); !C.empty()) B(0, I, size(C[0])) = C[0]; A.row(I) = interpolation::linear(int_pt[I].coor); } @@ -228,7 +208,7 @@ mat PCPE4UC::GetData(const OutputType P) { data.row(2) = interpolation::linear(1., 1.); data.row(3) = interpolation::linear(-1., 1.); - return (data * solve(A, B)).t(); + return (data * solve(A, B.t())).t(); } void PCPE4UC::SetDeformation(vtkSmartPointer& nodes, const double amplifier) { diff --git a/Element/Membrane/Porous/PCPE4UC.h b/Element/Membrane/Porous/PCPE4UC.h index 02c705e16..b637e100c 100644 --- a/Element/Membrane/Porous/PCPE4UC.h +++ b/Element/Membrane/Porous/PCPE4UC.h @@ -53,12 +53,13 @@ class PCPE4UC final : public MaterialElement2D { vector int_pt; public: - PCPE4UC(unsigned, // tag - uvec&&, // node tag - unsigned, // solid material tag - unsigned, // fluid material tag - double, // alpha - double // porosity + PCPE4UC( + unsigned, // tag + uvec&&, // node tag + unsigned, // solid material tag + unsigned, // fluid material tag + double, // alpha + double // porosity ); int initialize(const shared_ptr&) override; diff --git a/Element/Membrane/Porous/PCPE8DC.cpp b/Element/Membrane/Porous/PCPE8DC.cpp index 80a3994fe..c78840caa 100644 --- a/Element/Membrane/Porous/PCPE8DC.cpp +++ b/Element/Membrane/Porous/PCPE8DC.cpp @@ -31,7 +31,7 @@ PCPE8DC::IntegrationPoint::IntegrationPoint(vec&& C, const double W, unique_ptr< : coor(std::forward(C)) , weight(W) , m_material(std::forward>(M)) - , strain_mat(3, 2 * m_node, fill::zeros) {} + , strain_mat(3, 2llu * m_node, fill::zeros) {} PCPE8DC::PCPE8DC(const unsigned T, uvec&& N, const unsigned MS, const unsigned MF, const double AL, const double NN, const double KK) : MaterialElement2D(T, m_node, m_dof, std::forward(N), uvec{MS, MF}, false) @@ -44,7 +44,7 @@ int PCPE8DC::initialize(const shared_ptr& D) { auto& f_mat = D->get(material_tag(1)); // validate material type - if(PlaneType::E != static_cast(s_mat->get_parameter(ParameterType::PLANETYPE))) { + if(PlaneType::E != s_mat->get_plane_type()) { suanpan_error("Only plane strain material for solid phase is supported.\n"); return SUANPAN_FAIL; } @@ -57,11 +57,7 @@ int PCPE8DC::initialize(const shared_ptr& D) { const auto ks = s_mat->get_parameter(ParameterType::BULKMODULUS); const auto kf = f_mat->get_parameter(ParameterType::BULKMODULUS); - if(suanpan::approx_equal(ks, 0.)) { - suanpan_error("A zero bulk modulus is detected.\n"); - return SUANPAN_FAIL; - } - if(suanpan::approx_equal(kf, 0.)) { + if(suanpan::approx_equal(ks, 0.) || suanpan::approx_equal(kf, 0.)) { suanpan_error("A zero bulk modulus is detected.\n"); return SUANPAN_FAIL; } @@ -69,8 +65,8 @@ int PCPE8DC::initialize(const shared_ptr& D) { q = ks * kf / (porosity * ks + (alpha - porosity) * kf); // compute density ratio - const auto s_density = (1. - porosity) * s_mat->get_parameter(ParameterType::DENSITY); - const auto f_density = porosity * f_mat->get_parameter(ParameterType::DENSITY); + const auto s_density = (1. - porosity) * s_mat->get_density(); + const auto f_density = porosity * f_mat->get_density(); const auto s_ratio = s_density / (s_density + f_density); const auto f_ratio = f_density / (s_density + f_density); @@ -186,15 +182,15 @@ int PCPE8DC::reset_status() { mat PCPE8DC::compute_shape_function(const mat& coordinate, const unsigned order) const { return shape::quad(coordinate, order, m_node); } vector PCPE8DC::record(const OutputType P) { - vector output; + vector data; if(P == OutputType::PP) { const auto t_disp = get_current_displacement(); - for(const auto& I : int_pt) output.emplace_back(vec{q * tensor::trace2(I.strain_mat * ((porosity - alpha) * t_disp(s_dof) - porosity * t_disp(f_dof)))}); + for(const auto& I : int_pt) data.emplace_back(vec{q * tensor::trace2(I.strain_mat * ((porosity - alpha) * t_disp(s_dof) - porosity * t_disp(f_dof)))}); } - else for(const auto& I : int_pt) for(const auto& J : I.m_material->record(P)) output.emplace_back(J); + else for(const auto& I : int_pt) append_to(data, I.m_material->record(P)); - return output; + return data; } void PCPE8DC::print() { @@ -233,10 +229,10 @@ void PCPE8DC::GetData(vtkSmartPointer& arrays, const OutputType mat PCPE8DC::GetData(const OutputType P) { mat A(int_pt.size(), 9); - mat B(int_pt.size(), 6, fill::zeros); + mat B(6, int_pt.size(), fill::zeros); for(size_t I = 0; I < int_pt.size(); ++I) { - if(const auto C = int_pt[I].m_material->record(P); !C.empty()) B(I, 0, size(C[0])) = C[0]; + if(const auto C = int_pt[I].m_material->record(P); !C.empty()) B(0, I, size(C[0])) = C[0]; A.row(I) = interpolation::quadratic(int_pt[I].coor); } @@ -251,7 +247,7 @@ mat PCPE8DC::GetData(const OutputType P) { data.row(6) = interpolation::quadratic(0., 1.); data.row(7) = interpolation::quadratic(-1., 0.); - return (data * solve(A, B)).t(); + return (data * solve(A, B.t())).t(); } void PCPE8DC::SetDeformation(vtkSmartPointer& nodes, const double amplifier) { diff --git a/Element/Membrane/Porous/PCPE8DC.h b/Element/Membrane/Porous/PCPE8DC.h index 0fe31794e..fc83219e3 100644 --- a/Element/Membrane/Porous/PCPE8DC.h +++ b/Element/Membrane/Porous/PCPE8DC.h @@ -56,13 +56,14 @@ class PCPE8DC final : public MaterialElement2D { vector int_pt; public: - PCPE8DC(unsigned, // tag - uvec&&, // node tag - unsigned, // solid material tag - unsigned, // fluid material tag - double, // alpha - double, // porosity - double // permeability + PCPE8DC( + unsigned, // tag + uvec&&, // node tag + unsigned, // solid material tag + unsigned, // fluid material tag + double, // alpha + double, // porosity + double // permeability ); int initialize(const shared_ptr&) override; diff --git a/Element/Membrane/Porous/PCPE8UC.cpp b/Element/Membrane/Porous/PCPE8UC.cpp index cc604eeae..d63654676 100644 --- a/Element/Membrane/Porous/PCPE8UC.cpp +++ b/Element/Membrane/Porous/PCPE8UC.cpp @@ -40,7 +40,7 @@ int PCPE8UC::initialize(const shared_ptr& D) { auto& f_mat = D->get(material_tag(1)); // validate material type - if(PlaneType::E != static_cast(s_mat->get_parameter(ParameterType::PLANETYPE))) { + if(PlaneType::E != s_mat->get_plane_type()) { suanpan_error("Only plane strain material for solid phase is supported.\n"); return SUANPAN_FAIL; } @@ -53,11 +53,7 @@ int PCPE8UC::initialize(const shared_ptr& D) { const auto ks = s_mat->get_parameter(ParameterType::BULKMODULUS); const auto kf = f_mat->get_parameter(ParameterType::BULKMODULUS); - if(suanpan::approx_equal(ks, 0.)) { - suanpan_error("A zero bulk modulus is detected.\n"); - return SUANPAN_FAIL; - } - if(suanpan::approx_equal(kf, 0.)) { + if(suanpan::approx_equal(ks, 0.) || suanpan::approx_equal(kf, 0.)) { suanpan_error("A zero bulk modulus is detected.\n"); return SUANPAN_FAIL; } @@ -107,7 +103,7 @@ int PCPE8UC::initialize(const shared_ptr& D) { const uvec s_dof_a{0, 2, 4, 6, 8, 10, 12, 14}; const uvec s_dof_b{1, 3, 5, 7, 9, 11, 13, 15}; initial_mass.zeros(m_size, m_size); - initial_mass(s_dof_a, s_dof_a) = ((1. - porosity) * s_mat->get_parameter(ParameterType::DENSITY) + porosity * f_mat->get_parameter(ParameterType::DENSITY)) * meta_a; + initial_mass(s_dof_a, s_dof_a) = ((1. - porosity) * s_mat->get_density() + porosity * f_mat->get_density()) * meta_a; initial_mass(s_dof_b, s_dof_b) = initial_mass(s_dof_a, s_dof_a); ConstantMass(this); @@ -151,15 +147,15 @@ int PCPE8UC::reset_status() { mat PCPE8UC::compute_shape_function(const mat& coordinate, const unsigned order) const { return shape::quad(coordinate, order, m_node); } vector PCPE8UC::record(const OutputType P) { - vector output; + vector data; if(P == OutputType::PP) { const auto t_disp = get_current_displacement(); - for(const auto& I : int_pt) output.emplace_back(vec{-alpha * q * tensor::trace2(I.strain_mat * t_disp)}); + for(const auto& I : int_pt) data.emplace_back(vec{-alpha * q * tensor::trace2(I.strain_mat * t_disp)}); } - else for(const auto& I : int_pt) for(const auto& J : I.m_material->record(P)) output.emplace_back(J); + else for(const auto& I : int_pt) append_to(data, I.m_material->record(P)); - return output; + return data; } void PCPE8UC::print() { @@ -198,10 +194,10 @@ void PCPE8UC::GetData(vtkSmartPointer& arrays, const OutputType mat PCPE8UC::GetData(const OutputType P) { mat A(int_pt.size(), 9); - mat B(int_pt.size(), 6, fill::zeros); + mat B(6, int_pt.size(), fill::zeros); for(size_t I = 0; I < int_pt.size(); ++I) { - if(const auto C = int_pt[I].m_material->record(P); !C.empty()) B(I, 0, size(C[0])) = C[0]; + if(const auto C = int_pt[I].m_material->record(P); !C.empty()) B(0, I, size(C[0])) = C[0]; A.row(I) = interpolation::quadratic(int_pt[I].coor); } @@ -216,7 +212,7 @@ mat PCPE8UC::GetData(const OutputType P) { data.row(6) = interpolation::quadratic(0., 1.); data.row(7) = interpolation::quadratic(-1., 0.); - return (data * solve(A, B)).t(); + return (data * solve(A, B.t())).t(); } void PCPE8UC::SetDeformation(vtkSmartPointer& nodes, const double amplifier) { diff --git a/Element/Membrane/Porous/PCPE8UC.h b/Element/Membrane/Porous/PCPE8UC.h index 788b88da2..11b617d54 100644 --- a/Element/Membrane/Porous/PCPE8UC.h +++ b/Element/Membrane/Porous/PCPE8UC.h @@ -53,12 +53,13 @@ class PCPE8UC final : public MaterialElement2D { vector int_pt; public: - PCPE8UC(unsigned, // tag - uvec&&, // node tag - unsigned, // solid material tag - unsigned, // fluid material tag - double, // alpha - double // porosity + PCPE8UC( + unsigned, // tag + uvec&&, // node tag + unsigned, // solid material tag + unsigned, // fluid material tag + double, // alpha + double // porosity ); int initialize(const shared_ptr&) override; diff --git a/Element/Modifier/CMakeLists.txt b/Element/Modifier/CMakeLists.txt index 7893b9538..041ff3495 100644 --- a/Element/Modifier/CMakeLists.txt +++ b/Element/Modifier/CMakeLists.txt @@ -1,9 +1,10 @@ set(Modifier + Modifier/ElementalLee.cpp Modifier/ElementalModal.cpp + Modifier/ElementalNonviscous.cpp + Modifier/LinearViscosity.cpp Modifier/LumpedScale.cpp Modifier/LumpedSimple.cpp Modifier/Modifier.cpp Modifier/Rayleigh.cpp - Modifier/LinearViscosity.cpp - Modifier/LeeElementalDamping.cpp - ) +) diff --git a/Element/Modifier/LeeElementalDamping.cpp b/Element/Modifier/ElementalLee.cpp similarity index 92% rename from Element/Modifier/LeeElementalDamping.cpp rename to Element/Modifier/ElementalLee.cpp index 70a240621..8825828cc 100644 --- a/Element/Modifier/LeeElementalDamping.cpp +++ b/Element/Modifier/ElementalLee.cpp @@ -15,13 +15,13 @@ * along with this program. If not, see . ******************************************************************************/ -#include "LeeElementalDamping.h" +#include "ElementalLee.h" -LeeElementalDamping::LeeElementalDamping(const unsigned T, const double A, uvec&& ET) +ElementalLee::ElementalLee(const unsigned T, const double A, uvec&& ET) : Modifier(T, std::forward(ET)) , damping_ratio(std::abs(A)) {} -int LeeElementalDamping::update_status() { +int ElementalLee::update_status() { const auto real_damping_ratio = damping_ratio < 0. ? default_damping_ratio : damping_ratio; suanpan::for_all(element_pool, [&](const weak_ptr& ele_ptr) { if(const auto t_ptr = ele_ptr.lock(); nullptr != t_ptr && t_ptr->if_update_damping()) { diff --git a/Element/Modifier/LeeElementalDamping.h b/Element/Modifier/ElementalLee.h similarity index 80% rename from Element/Modifier/LeeElementalDamping.h rename to Element/Modifier/ElementalLee.h index 7ab3c720b..d03aa575f 100644 --- a/Element/Modifier/LeeElementalDamping.h +++ b/Element/Modifier/ElementalLee.h @@ -15,27 +15,27 @@ * along with this program. If not, see . ******************************************************************************/ /** - * @class LeeElementalDamping - * @brief A LeeElementalDamping damping class. + * @class ElementalLee + * @brief A ElementalLee damping class. * @author tlc * @date 20/10/2022 * @version 0.1.0 - * @file LeeElementalDamping.h + * @file ElementalLee.h * @addtogroup Modifier * @{ */ -#ifndef LEEELEMENTALDAMPING_H -#define LEEELEMENTALDAMPING_H +#ifndef ELEMENTALLEE_H +#define ELEMENTALLEE_H #include -class LeeElementalDamping final : public Modifier { +class ElementalLee final : public Modifier { const double default_damping_ratio = .02; const double damping_ratio; public: - LeeElementalDamping(unsigned, double, uvec&& = {}); + ElementalLee(unsigned, double, uvec&& = {}); int update_status() override; }; diff --git a/Element/Modifier/ElementalNonviscous.cpp b/Element/Modifier/ElementalNonviscous.cpp new file mode 100644 index 000000000..aab4d3b4a --- /dev/null +++ b/Element/Modifier/ElementalNonviscous.cpp @@ -0,0 +1,80 @@ +/******************************************************************************* + * Copyright (C) 2017-2023 Theodore Chang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + ******************************************************************************/ + +#include "ElementalNonviscous.h" +#include +#include + +ElementalNonviscous::ElementalNonviscous(const unsigned T, cx_vec&& M, cx_vec&& S, uvec&& ET) + : Modifier(T, std::forward(ET)) + , m(std::forward(M)) + , s(std::forward(S)) {} + +int ElementalNonviscous::initialize(const shared_ptr& D) { + Modifier::initialize(D); + + factory = D->get_factory(); + + if(std::any_of(element_pool.cbegin(), element_pool.cend(), [](const weak_ptr& ele_ptr) { return !ele_ptr.lock()->get_current_nonviscous_force().empty(); })) { + suanpan_error("Repeated element tags are detected, modifier {} is disabled.\n", get_tag()); + element_pool.clear(); + return SUANPAN_FAIL; + } + + suanpan::for_all(element_pool, [&](const weak_ptr& ele_ptr) { + const auto t_ele = ele_ptr.lock(); + access::rw(t_ele->get_current_nonviscous_force()).zeros(t_ele->get_total_number(), m.n_elem); + }); + + return SUANPAN_SUCCESS; +} + +int ElementalNonviscous::update_status() { + if(element_pool.empty() || AnalysisType::DYNAMICS != factory.lock()->get_analysis_type()) return SUANPAN_SUCCESS; + + const cx_vec t_para = 2. / factory.lock()->get_incre_time() + s; + const cx_vec s_para = (t_para - 2. * s) / t_para; + const cx_vec m_para = m / t_para; + const auto accu_para = accu(m_para).real(); + + suanpan::for_all(element_pool, [&](const weak_ptr& ele_ptr) { + const auto t_ele = ele_ptr.lock(); + + if(t_ele->get_current_nonviscous_force().n_cols != s_para.n_elem) return; + + auto& trial_nonviscous_force = access::rw(t_ele->get_trial_nonviscous_force()); + trial_nonviscous_force = t_ele->get_current_nonviscous_force() * diagmat(s_para) + (t_ele->get_current_velocity() + t_ele->get_trial_velocity()) * m_para.t(); + + auto& trial_nonviscous = access::rw(t_ele->get_trial_nonviscous()); + trial_nonviscous.zeros(t_ele->get_total_number(), t_ele->get_total_number()); + trial_nonviscous.diag().fill(accu_para); + }); + + return SUANPAN_SUCCESS; +} + +ElementalNonviscousGroup::ElementalNonviscousGroup(const unsigned T, cx_vec&& M, cx_vec&& S, const unsigned GT) + : ElementalNonviscous(T, std::forward(M), std::forward(S)) + , group_tag(GT) {} + +int ElementalNonviscousGroup::initialize(const shared_ptr& D) { + if(!D->find_group(group_tag)) return SUANPAN_FAIL; + + element_tag = unique(D->get_group(group_tag)->get_pool()); + + return ElementalNonviscous::initialize(D); +} diff --git a/Element/Modifier/ElementalNonviscous.h b/Element/Modifier/ElementalNonviscous.h new file mode 100644 index 000000000..d1030e17e --- /dev/null +++ b/Element/Modifier/ElementalNonviscous.h @@ -0,0 +1,60 @@ +/******************************************************************************* + * Copyright (C) 2017-2023 Theodore Chang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + ******************************************************************************/ +/** + * @class ElementalNonviscous + * @brief A ElementalNonviscous damping class. + * @author tlc + * @date 02/10/2023 + * @version 0.2.0 + * @file ElementalNonviscous.h + * @addtogroup Modifier + * @{ + */ + +#ifndef ELEMENTALNONVISCOUS_H +#define ELEMENTALNONVISCOUS_H + +#include +#include + +class ElementalNonviscous : public Modifier { + const cx_vec m, s; + + weak_ptr> factory; + +public: + ElementalNonviscous(unsigned, cx_vec&&, cx_vec&&, uvec&& = {}); + + [[nodiscard]] bool has_nonviscous() const override { return true; } + + int initialize(const shared_ptr&) override; + + int update_status() override; +}; + +class ElementalNonviscousGroup final : public ElementalNonviscous { + const unsigned group_tag; + +public: + ElementalNonviscousGroup(unsigned, cx_vec&&, cx_vec&&, unsigned); + + int initialize(const shared_ptr&) override; +}; + +#endif + +//! @} diff --git a/Element/Modifier/Modifier b/Element/Modifier/Modifier index 3f0cfa610..8ed88ef48 100644 --- a/Element/Modifier/Modifier +++ b/Element/Modifier/Modifier @@ -1,7 +1,8 @@ +#include "ElementalLee.h" #include "ElementalModal.h" +#include "ElementalNonviscous.h" +#include "LinearViscosity.h" #include "LumpedScale.h" #include "LumpedSimple.h" #include "Modifier.h" #include "Rayleigh.h" -#include "LinearViscosity.h" -#include "LeeElementalDamping.h" \ No newline at end of file diff --git a/Element/Modifier/Modifier.cpp b/Element/Modifier/Modifier.cpp index e391478fd..27631ebe2 100644 --- a/Element/Modifier/Modifier.cpp +++ b/Element/Modifier/Modifier.cpp @@ -20,9 +20,9 @@ Modifier::Modifier(const unsigned T, uvec&& ET) : Tag(T) - , element_tag(std::forward(ET)) {} + , element_tag(unique(ET)) {} -void Modifier::initialize(const shared_ptr& D) { +int Modifier::initialize(const shared_ptr& D) { element_pool.clear(); if(element_tag.empty()) { @@ -33,4 +33,6 @@ void Modifier::initialize(const shared_ptr& D) { element_pool.reserve(element_tag.size()); for(const auto I : element_tag) if(D->find(I) && D->get(I)->is_active()) element_pool.emplace_back(D->get(I)); } + + return SUANPAN_SUCCESS; } diff --git a/Element/Modifier/Modifier.h b/Element/Modifier/Modifier.h index 619306a6a..320d35c86 100644 --- a/Element/Modifier/Modifier.h +++ b/Element/Modifier/Modifier.h @@ -34,14 +34,15 @@ class DomainBase; class Modifier : public Tag { +protected: uvec element_tag; -protected: std::vector> element_pool; public: - explicit Modifier(unsigned = 0, // tag - uvec&& = {} // element tags + explicit Modifier( + unsigned = 0, // tag + uvec&& = {} // element tags ); Modifier(const Modifier&) = delete; // copy forbidden Modifier(Modifier&&) = delete; // move forbidden @@ -50,7 +51,9 @@ class Modifier : public Tag { ~Modifier() override = default; - virtual void initialize(const shared_ptr&); + [[nodiscard]] virtual bool has_nonviscous() const { return false; } + + virtual int initialize(const shared_ptr&); virtual int update_status() = 0; }; diff --git a/Element/Patch/CMakeLists.txt b/Element/Patch/CMakeLists.txt index ac441e0e1..695642f85 100644 --- a/Element/Patch/CMakeLists.txt +++ b/Element/Patch/CMakeLists.txt @@ -2,4 +2,4 @@ set(Patch Patch/Patch.cpp Patch/PatchQuad.cpp Patch/PatchCube.cpp - ) +) diff --git a/Element/Patch/Patch.h b/Element/Patch/Patch.h index 1d5a35518..96525c4ce 100644 --- a/Element/Patch/Patch.h +++ b/Element/Patch/Patch.h @@ -45,69 +45,75 @@ class Patch { class MaterialPatch : public Patch, public MaterialElement { public: - MaterialPatch(unsigned, // tag - unsigned, // number of dofs - uvec&&, // node encoding - uvec&&, // material tags - field&&, // knot pool - bool, // nonlinear geometry switch - MaterialType // material type + MaterialPatch( + unsigned, // tag + unsigned, // number of dofs + uvec&&, // node encoding + uvec&&, // material tags + field&&, // knot pool + bool, // nonlinear geometry switch + MaterialType // material type ); }; class MaterialPatch2D : public MaterialPatch { public: - MaterialPatch2D(unsigned, // tag - unsigned, // number of dofs - uvec&&, // node encoding - uvec&&, // material tags - field&&, // knot pool - bool // nonlinear geometry switch + MaterialPatch2D( + unsigned, // tag + unsigned, // number of dofs + uvec&&, // node encoding + uvec&&, // material tags + field&&, // knot pool + bool // nonlinear geometry switch ); }; class MaterialPatch3D : public MaterialPatch { public: - MaterialPatch3D(unsigned, // tag - unsigned, // number of dofs - uvec&&, // node encoding - uvec&&, // material tags - field&&, // knot pool - bool // nonlinear geometry switch + MaterialPatch3D( + unsigned, // tag + unsigned, // number of dofs + uvec&&, // node encoding + uvec&&, // material tags + field&&, // knot pool + bool // nonlinear geometry switch ); }; class SectionPatch : public Patch, public SectionElement { public: - SectionPatch(unsigned, // tag - unsigned, // number of dofs - uvec&&, // node encoding - uvec&&, // section tags - field&&, // knot pool - bool, // nonlinear geometry switch - SectionType // section type + SectionPatch( + unsigned, // tag + unsigned, // number of dofs + uvec&&, // node encoding + uvec&&, // section tags + field&&, // knot pool + bool, // nonlinear geometry switch + SectionType // section type ); }; class SectionPatch2D : public SectionPatch { public: - SectionPatch2D(unsigned, // tag - unsigned, // number of dofs - uvec&&, // node encoding - uvec&&, // section tags - field&&, // knot pool - bool // nonlinear geometry switch + SectionPatch2D( + unsigned, // tag + unsigned, // number of dofs + uvec&&, // node encoding + uvec&&, // section tags + field&&, // knot pool + bool // nonlinear geometry switch ); }; class SectionPatch3D : public SectionPatch { public: - SectionPatch3D(unsigned, // tag - unsigned, // number of dofs - uvec&&, // node encoding - uvec&&, // section tags - field&&, // knot pool - bool // nonlinear geometry switch + SectionPatch3D( + unsigned, // tag + unsigned, // number of dofs + uvec&&, // node encoding + uvec&&, // section tags + field&&, // knot pool + bool // nonlinear geometry switch ); }; diff --git a/Element/Patch/PatchCube.cpp b/Element/Patch/PatchCube.cpp index 8b7698d39..0b2fc2f8b 100644 --- a/Element/Patch/PatchCube.cpp +++ b/Element/Patch/PatchCube.cpp @@ -21,7 +21,6 @@ #include #include #include -#include PatchCube::IntegrationPoint::IntegrationPoint(vec&& C, const double W, unique_ptr&& M) : coor(std::forward(C)) @@ -47,7 +46,7 @@ int PatchCube::initialize(const shared_ptr& D) { auto& ini_stiffness = material_proto->get_initial_stiffness(); - const auto t_density = material_proto->get_parameter(ParameterType::DENSITY); + const auto t_density = material_proto->get_density(); const IntegrationPlan plan(3, 2, IntegrationType::GAUSS); @@ -142,9 +141,9 @@ int PatchCube::reset_status() { return code; } -vector PatchCube::record(const OutputType T) { +vector PatchCube::record(const OutputType P) { vector data; - for(const auto& I : int_pt) for(const auto& J : I.c_material->record(T)) data.emplace_back(J); + for(const auto& I : int_pt) append_to(data, I.c_material->record(P)); return data; } diff --git a/Element/Patch/PatchCube.h b/Element/Patch/PatchCube.h index 1bf8053d6..9154e832a 100644 --- a/Element/Patch/PatchCube.h +++ b/Element/Patch/PatchCube.h @@ -49,12 +49,13 @@ class PatchCube final : public MaterialPatch3D { vector int_pt; public: - PatchCube(unsigned, // tag - vec&&, // knot x - vec&&, // knot y - vec&&, // knot z - uvec&&, // node tag - unsigned // material tag + PatchCube( + unsigned, // tag + vec&&, // knot x + vec&&, // knot y + vec&&, // knot z + uvec&&, // node tag + unsigned // material tag ); int initialize(const shared_ptr&) override; diff --git a/Element/Patch/PatchQuad.cpp b/Element/Patch/PatchQuad.cpp index 8bccf78e6..ff53c9945 100644 --- a/Element/Patch/PatchQuad.cpp +++ b/Element/Patch/PatchQuad.cpp @@ -20,7 +20,6 @@ #include #include #include -#include #include PatchQuad::IntegrationPoint::IntegrationPoint(vec&& C, const double W, unique_ptr&& M) @@ -37,7 +36,7 @@ PatchQuad::PatchQuad(const unsigned T, vec&& KX, vec&& KY, uvec&& N, const unsig int PatchQuad::initialize(const shared_ptr& D) { auto& material_proto = D->get(material_tag(0)); - if(PlaneType::E == static_cast(material_proto->get_parameter(ParameterType::PLANETYPE))) suanpan::hacker(thickness) = 1.; + if(PlaneType::E == material_proto->get_plane_type()) suanpan::hacker(thickness) = 1.; const NURBSSurface2D net(knot_pool[0], knot_pool[1]); @@ -51,7 +50,7 @@ int PatchQuad::initialize(const shared_ptr& D) { auto& ini_stiffness = material_proto->get_initial_stiffness(); - const auto t_density = material_proto->get_parameter(ParameterType::DENSITY); + const auto t_density = material_proto->get_density(); body_force.zeros(m_size, m_dof); initial_stiffness.zeros(m_size, m_size); @@ -147,9 +146,9 @@ int PatchQuad::reset_status() { return code; } -vector PatchQuad::record(const OutputType T) { +vector PatchQuad::record(const OutputType P) { vector data; - for(const auto& I : int_pt) for(const auto& J : I.m_material->record(T)) data.emplace_back(J); + for(const auto& I : int_pt) append_to(data, I.m_material->record(P)); return data; } diff --git a/Element/Patch/PatchQuad.h b/Element/Patch/PatchQuad.h index 7cb1ac8bd..699249c6b 100644 --- a/Element/Patch/PatchQuad.h +++ b/Element/Patch/PatchQuad.h @@ -53,12 +53,13 @@ class PatchQuad final : public MaterialPatch2D { vector int_pt; public: - PatchQuad(unsigned, // tag - vec&&, // knot x - vec&&, // knot y - uvec&&, // node tag - unsigned, // material tag - double = 1. // thickness + PatchQuad( + unsigned, // tag + vec&&, // knot x + vec&&, // knot y + uvec&&, // node tag + unsigned, // material tag + double = 1. // thickness ); int initialize(const shared_ptr&) override; diff --git a/Element/Plate/CMakeLists.txt b/Element/Plate/CMakeLists.txt index b4bd526ce..9837fb8da 100644 --- a/Element/Plate/CMakeLists.txt +++ b/Element/Plate/CMakeLists.txt @@ -2,4 +2,4 @@ set(Plate Plate/Mindlin.cpp Plate/DKT3.cpp Plate/DKT4.cpp - ) +) diff --git a/Element/Plate/DKT3.cpp b/Element/Plate/DKT3.cpp index ad107319f..8ed571919 100644 --- a/Element/Plate/DKT3.cpp +++ b/Element/Plate/DKT3.cpp @@ -196,7 +196,7 @@ int DKT3::reset_status() { vector DKT3::record(const OutputType P) { vector data; - for(const auto& I : int_pt) for(const auto& J : I.sec_int_pt) for(const auto& K : J.p_material->record(P)) data.emplace_back(K); + for(const auto& I : int_pt) for(const auto& J : I.sec_int_pt) append_to(data, J.p_material->record(P)); return data; } diff --git a/Element/Plate/DKT3.h b/Element/Plate/DKT3.h index f0c1d7a88..8c8e97c09 100644 --- a/Element/Plate/DKT3.h +++ b/Element/Plate/DKT3.h @@ -62,11 +62,12 @@ class DKT3 final : public MaterialElement2D { static field form_transform(const mat&); public: - DKT3(unsigned, // element tag - uvec&&, // node tag - unsigned, // material tag - double, // thickness - unsigned = 3 // integration points along thickness + DKT3( + unsigned, // element tag + uvec&&, // node tag + unsigned, // material tag + double, // thickness + unsigned = 3 // integration points along thickness ); int initialize(const shared_ptr&) override; diff --git a/Element/Plate/DKT4.cpp b/Element/Plate/DKT4.cpp index c7ac62852..d423dda08 100644 --- a/Element/Plate/DKT4.cpp +++ b/Element/Plate/DKT4.cpp @@ -187,7 +187,7 @@ int DKT4::reset_status() { vector DKT4::record(const OutputType P) { vector data; - for(const auto& I : int_pt) for(const auto& J : I.sec_int_pt) for(const auto& K : J.p_material->record(P)) data.emplace_back(K); + for(const auto& I : int_pt) for(const auto& J : I.sec_int_pt) append_to(data, J.p_material->record(P)); return data; } diff --git a/Element/Plate/DKT4.h b/Element/Plate/DKT4.h index f3850f81c..544a2726d 100644 --- a/Element/Plate/DKT4.h +++ b/Element/Plate/DKT4.h @@ -61,11 +61,12 @@ class DKT4 final : public MaterialElement2D { static field form_transform(const mat&); public: - DKT4(unsigned, // element tag - uvec&&, // node tag - unsigned, // material tag - double, // thickness - unsigned = 3 // integration points along thickness + DKT4( + unsigned, // element tag + uvec&&, // node tag + unsigned, // material tag + double, // thickness + unsigned = 3 // integration points along thickness ); int initialize(const shared_ptr&) override; diff --git a/Element/Plate/Mindlin.cpp b/Element/Plate/Mindlin.cpp index a855ce864..13dc156a4 100644 --- a/Element/Plate/Mindlin.cpp +++ b/Element/Plate/Mindlin.cpp @@ -49,11 +49,11 @@ int Mindlin::initialize(const shared_ptr& D) { auto& mat_stiff = mat_proto->get_initial_stiffness(); - auto shear_modulus = mat_proto->get_parameter(ParameterType::G); - if(suanpan::approx_equal(0., shear_modulus)) shear_modulus = mat_proto->get_parameter(ParameterType::SHEARMODULUS); - if(suanpan::approx_equal(0., shear_modulus)) shear_modulus = .5 * mat_proto->get_parameter(ParameterType::E) / (1. + mat_proto->get_parameter(ParameterType::POISSONSRATIO)); - if(suanpan::approx_equal(0., shear_modulus)) shear_modulus = mat_stiff.at(2, 2); - if(suanpan::approx_equal(0., shear_modulus)) shear_modulus = mat_proto->get_parameter(ParameterType::E); + const auto shear_modulus = mat_proto->get_parameter(ParameterType::SHEARMODULUS); + if(suanpan::approx_equal(shear_modulus, 0.)) { + suanpan_error("A zero shear modulus is detected.\n"); + return SUANPAN_FAIL; + } // reduced integration for the Kirchhoff constraint vec t_vec(2, fill::zeros); @@ -62,10 +62,10 @@ int Mindlin::initialize(const shared_ptr& D) { mat jacob = pn * ele_coor; mat pn_pxy = solve(jacob, pn); mat penalty_mat(2, p_size, fill::zeros); - for(uword I = 0; I < p_node; ++I) { + for(auto I = 0u; I < p_node; ++I) { penalty_mat(0, I * p_dof) = pn_pxy(1, I); penalty_mat(1, I * p_dof) = pn_pxy(0, I); - penalty_mat(0, I * p_dof + 1llu) = -(penalty_mat(1, I * p_dof + 2llu) = n(I)); + penalty_mat(0, I * p_dof + 1u) = -(penalty_mat(1, I * p_dof + 2u) = n(I)); } initial_stiffness = penalty_stiffness = 10. / 3. * shear_modulus * thickness * det(jacob) * penalty_mat.t() * penalty_mat; @@ -139,7 +139,7 @@ int Mindlin::reset_status() { vector Mindlin::record(const OutputType P) { vector data; - for(const auto& I : int_pt) for(const auto& J : I.sec_int_pt) for(const auto& K : J.p_material->record(P)) data.emplace_back(K); + for(const auto& I : int_pt) for(const auto& J : I.sec_int_pt) append_to(data, J.p_material->record(P)); return data; } diff --git a/Element/Plate/Mindlin.h b/Element/Plate/Mindlin.h index 8cb96b4e4..6ec2caa28 100644 --- a/Element/Plate/Mindlin.h +++ b/Element/Plate/Mindlin.h @@ -57,11 +57,12 @@ class Mindlin final : public MaterialElement2D { mat penalty_stiffness; public: - Mindlin(unsigned, // element tag - uvec&&, // node tag - unsigned, // material tag - double, // thickness - unsigned = 2 // integration points along thickness + Mindlin( + unsigned, // element tag + uvec&&, // node tag + unsigned, // material tag + double, // thickness + unsigned = 2 // integration points along thickness ); int initialize(const shared_ptr&) override; diff --git a/Element/Plate/Plate b/Element/Plate/Plate index f6e57b906..975045148 100644 --- a/Element/Plate/Plate +++ b/Element/Plate/Plate @@ -1,3 +1,3 @@ #include "DKT3.h" #include "DKT4.h" -#include "Mindlin.h" \ No newline at end of file +#include "Mindlin.h" diff --git a/Element/SectionElement.cpp b/Element/SectionElement.cpp index 0885f4554..a67bbfc49 100644 --- a/Element/SectionElement.cpp +++ b/Element/SectionElement.cpp @@ -35,3 +35,6 @@ SectionNMElement2D::SectionNMElement2D(const unsigned T, const unsigned NN, cons SectionNMElement3D::SectionNMElement3D(const unsigned T, const unsigned NN, const unsigned ND, uvec&& NT, uvec&& ST, const bool F, vector&& DI) : SectionElement(T, NN, ND, std::forward(NT), std::forward(ST), F, SectionType::NM3D, std::forward>(DI)) {} + +SectionOSElement3D::SectionOSElement3D(const unsigned T, const unsigned NN, const unsigned ND, uvec&& NT, uvec&& ST, const bool F, vector&& DI) + : SectionElement(T, NN, ND, std::forward(NT), std::forward(ST), F, SectionType::OS3D, std::forward>(DI)) {} diff --git a/Element/SectionElement.h b/Element/SectionElement.h index 3eb1a3710..f5219e560 100644 --- a/Element/SectionElement.h +++ b/Element/SectionElement.h @@ -36,74 +36,93 @@ using std::vector; class SectionElement : public Element { public: - SectionElement(unsigned, // tag - unsigned, // number of nodes - unsigned, // number of dofs - uvec&&, // node encoding - uvec&&, // section tags - bool, // nonlinear geometry switch - SectionType, // section type - vector&& // dof identifier + SectionElement( + unsigned, // tag + unsigned, // number of nodes + unsigned, // number of dofs + uvec&&, // node encoding + uvec&&, // section tags + bool, // nonlinear geometry switch + SectionType, // section type + vector&& // dof identifier ); }; class SectionElement1D : public SectionElement { public: - SectionElement1D(unsigned, // tag - unsigned, // number of nodes - unsigned, // number of dofs - uvec&&, // node encoding - uvec&&, // section tags - bool, // nonlinear geometry switch - vector&& // dof identifier + SectionElement1D( + unsigned, // tag + unsigned, // number of nodes + unsigned, // number of dofs + uvec&&, // node encoding + uvec&&, // section tags + bool, // nonlinear geometry switch + vector&& // dof identifier ); }; class SectionElement2D : public SectionElement { public: - SectionElement2D(unsigned, // tag - unsigned, // number of nodes - unsigned, // number of dofs - uvec&&, // node encoding - uvec&&, // section tags - bool, // nonlinear geometry switch - vector&& = {DOF::U1, DOF::U2, DOF::UR3} // dof identifier + SectionElement2D( + unsigned, // tag + unsigned, // number of nodes + unsigned, // number of dofs + uvec&&, // node encoding + uvec&&, // section tags + bool, // nonlinear geometry switch + vector&& = {DOF::U1, DOF::U2, DOF::UR3} // dof identifier ); }; class SectionElement3D : public SectionElement { public: - SectionElement3D(unsigned, // tag - unsigned, // number of nodes - unsigned, // number of dofs - uvec&&, // node encoding - uvec&&, // section tags - bool, // nonlinear geometry switch - vector&& = {DOF::U1, DOF::U2, DOF::U3, DOF::UR1, DOF::UR2, DOF::UR3} // dof identifier + SectionElement3D( + unsigned, // tag + unsigned, // number of nodes + unsigned, // number of dofs + uvec&&, // node encoding + uvec&&, // section tags + bool, // nonlinear geometry switch + vector&& = {DOF::U1, DOF::U2, DOF::U3, DOF::UR1, DOF::UR2, DOF::UR3} // dof identifier ); }; class SectionNMElement2D : public SectionElement { public: - SectionNMElement2D(unsigned, // tag - unsigned, // number of nodes - unsigned, // number of dofs - uvec&&, // node encoding - uvec&&, // section tags - bool, // nonlinear geometry switch - vector&& = {DOF::U1, DOF::U2, DOF::UR3} // dof identifier + SectionNMElement2D( + unsigned, // tag + unsigned, // number of nodes + unsigned, // number of dofs + uvec&&, // node encoding + uvec&&, // section tags + bool, // nonlinear geometry switch + vector&& = {DOF::U1, DOF::U2, DOF::UR3} // dof identifier ); }; class SectionNMElement3D : public SectionElement { public: - SectionNMElement3D(unsigned, // tag - unsigned, // number of nodes - unsigned, // number of dofs - uvec&&, // node encoding - uvec&&, // section tags - bool, // nonlinear geometry switch - vector&& = {DOF::U1, DOF::U2, DOF::U3, DOF::UR1, DOF::UR2, DOF::UR3} // dof identifier + SectionNMElement3D( + unsigned, // tag + unsigned, // number of nodes + unsigned, // number of dofs + uvec&&, // node encoding + uvec&&, // section tags + bool, // nonlinear geometry switch + vector&& = {DOF::U1, DOF::U2, DOF::U3, DOF::UR1, DOF::UR2, DOF::UR3} // dof identifier + ); +}; + +class SectionOSElement3D : public SectionElement { +public: + SectionOSElement3D( + unsigned, // tag + unsigned, // number of nodes + unsigned, // number of dofs + uvec&&, // node encoding + uvec&&, // section tags + bool, // nonlinear geometry switch + vector&& = {DOF::U1, DOF::U2, DOF::U3, DOF::UR1, DOF::UR2, DOF::UR3, DOF::WARP} // dof identifier ); }; diff --git a/Element/Shell/CMakeLists.txt b/Element/Shell/CMakeLists.txt index 18052a311..1f8d99a98 100644 --- a/Element/Shell/CMakeLists.txt +++ b/Element/Shell/CMakeLists.txt @@ -3,4 +3,4 @@ set(Shell Shell/S4.cpp Shell/SGCMS.cpp Shell/ShellBase.cpp - ) +) diff --git a/Element/Shell/DKTS3.cpp b/Element/Shell/DKTS3.cpp index 0bdda3572..33fa60b6f 100644 --- a/Element/Shell/DKTS3.cpp +++ b/Element/Shell/DKTS3.cpp @@ -255,7 +255,7 @@ int DKTS3::reset_status() { vector DKTS3::record(const OutputType P) { vector data; - for(const auto& I : int_pt) for(const auto& J : I.sec_int_pt) for(const auto& K : J.s_material->record(P)) data.emplace_back(K); + for(const auto& I : int_pt) for(const auto& J : I.sec_int_pt) append_to(data, J.s_material->record(P)); return data; } diff --git a/Element/Shell/DKTS3.h b/Element/Shell/DKTS3.h index 13d956376..ca4d4b7a9 100644 --- a/Element/Shell/DKTS3.h +++ b/Element/Shell/DKTS3.h @@ -62,12 +62,13 @@ class DKTS3 final : public ShellBase { static field form_transform(const mat&); public: - DKTS3(unsigned, // tag - uvec&&, // node tag - unsigned, // material tag - double = 1., // thickness - unsigned = 3, // number of integration points - bool = false // non-linear geometry switch + DKTS3( + unsigned, // tag + uvec&&, // node tag + unsigned, // material tag + double = 1., // thickness + unsigned = 3, // number of integration points + bool = false // non-linear geometry switch ); int initialize(const shared_ptr&) override; diff --git a/Element/Shell/S4.cpp b/Element/Shell/S4.cpp index 3d8542053..77486cbf6 100644 --- a/Element/Shell/S4.cpp +++ b/Element/Shell/S4.cpp @@ -62,12 +62,12 @@ int S4::initialize(const shared_ptr& D) { // Mindlin plate // check if proper shear modulus is available - // not vert vital as for multiplier any large value can be chosen - auto shear_modulus = mat_proto->get_parameter(ParameterType::G); - if(suanpan::approx_equal(0., shear_modulus)) shear_modulus = mat_proto->get_parameter(ParameterType::SHEARMODULUS); - if(suanpan::approx_equal(0., shear_modulus)) shear_modulus = .5 * mat_proto->get_parameter(ParameterType::E) / (1. + mat_proto->get_parameter(ParameterType::POISSONSRATIO)); - if(suanpan::approx_equal(0., shear_modulus)) shear_modulus = mat_stiff.at(2, 2); - if(suanpan::approx_equal(0., shear_modulus)) shear_modulus = mat_proto->get_parameter(ParameterType::E); + // not very vital as for multiplier any large value can be chosen + const auto shear_modulus = mat_proto->get_parameter(ParameterType::SHEARMODULUS); + if(suanpan::approx_equal(shear_modulus, 0.)) { + suanpan_error("A zero shear modulus is detected.\n"); + return SUANPAN_FAIL; + }; // reduced integration for the Kirchhoff constraint vec t_vec(2, fill::zeros); @@ -229,7 +229,7 @@ int S4::reset_status() { vector S4::record(const OutputType P) { vector data; - for(const auto& I : int_pt) for(const auto& J : I.sec_int_pt) for(const auto& K : J.s_material->record(P)) data.emplace_back(K); + for(const auto& I : int_pt) for(const auto& J : I.sec_int_pt) append_to(data, J.s_material->record(P)); return data; } diff --git a/Element/Shell/S4.h b/Element/Shell/S4.h index 9972750e2..648eab43f 100644 --- a/Element/Shell/S4.h +++ b/Element/Shell/S4.h @@ -60,11 +60,12 @@ class S4 final : public ShellBase { vector int_pt; public: - S4(unsigned, // tag - uvec&&, // node tag - unsigned, // material tag - double = 1., // thickness - bool = false // non-linear geometry switch + S4( + unsigned, // tag + uvec&&, // node tag + unsigned, // material tag + double = 1., // thickness + bool = false // non-linear geometry switch ); int initialize(const shared_ptr&) override; diff --git a/Element/Shell/SGCMS.cpp b/Element/Shell/SGCMS.cpp index 24846f049..a3d35b676 100644 --- a/Element/Shell/SGCMS.cpp +++ b/Element/Shell/SGCMS.cpp @@ -342,7 +342,7 @@ int SGCMS::reset_status() { vector SGCMS::record(const OutputType P) { vector data; - for(const auto& I : int_pt) for(const auto& J : I.sec_int_pt) for(const auto& K : J.s_material->record(P)) data.emplace_back(K); + for(const auto& I : int_pt) for(const auto& J : I.sec_int_pt) append_to(data, J.s_material->record(P)); return data; } diff --git a/Element/Shell/SGCMS.h b/Element/Shell/SGCMS.h index eb04368cb..c3bbcdb65 100644 --- a/Element/Shell/SGCMS.h +++ b/Element/Shell/SGCMS.h @@ -65,11 +65,12 @@ class SGCMS final : public ShellBase { static mat form_displacement_dn(const mat&, const mat&); public: - SGCMS(unsigned, // tag - uvec&&, // node tag - unsigned, // material tag - double = 1., // thickness - bool = false // non-linear geometry switch + SGCMS( + unsigned, // tag + uvec&&, // node tag + unsigned, // material tag + double = 1., // thickness + bool = false // non-linear geometry switch ); int initialize(const shared_ptr&) override; diff --git a/Element/Shell/Shell b/Element/Shell/Shell index 476b131bf..0476ef6ec 100644 --- a/Element/Shell/Shell +++ b/Element/Shell/Shell @@ -1,4 +1,4 @@ #include "DKTS3.h" #include "S4.h" #include "SGCMS.h" -#include "ShellBase.h" \ No newline at end of file +#include "ShellBase.h" diff --git a/Element/Shell/ShellBase.cpp b/Element/Shell/ShellBase.cpp index a7499e239..41e62e41d 100644 --- a/Element/Shell/ShellBase.cpp +++ b/Element/Shell/ShellBase.cpp @@ -16,7 +16,6 @@ ******************************************************************************/ #include "ShellBase.h" -#include #include const uvec ShellBase::m_dof{0, 1, 5}; diff --git a/Element/Special/CMakeLists.txt b/Element/Special/CMakeLists.txt index 5e1419a8d..4dfcf13dc 100644 --- a/Element/Special/CMakeLists.txt +++ b/Element/Special/CMakeLists.txt @@ -12,4 +12,4 @@ set(Special Special/Spring02.cpp Special/Tie.cpp Special/TranslationConnector.cpp - ) +) diff --git a/Element/Special/Damper01.h b/Element/Special/Damper01.h index d9e4cf731..c4ec9f901 100644 --- a/Element/Special/Damper01.h +++ b/Element/Special/Damper01.h @@ -48,10 +48,11 @@ class Damper01 : public MaterialElement1D { unique_ptr damper; public: - Damper01(unsigned, // tag - uvec&&, // node tag - unsigned, // damper tag - unsigned // dimension + Damper01( + unsigned, // tag + uvec&&, // node tag + unsigned, // damper tag + unsigned // dimension ); int initialize(const shared_ptr&) override; diff --git a/Element/Special/Damper02.h b/Element/Special/Damper02.h index 8282d5c0c..590fd5c3b 100644 --- a/Element/Special/Damper02.h +++ b/Element/Special/Damper02.h @@ -43,14 +43,15 @@ class Damper02 final : public MaterialElement1D { unique_ptr device; public: - Damper02(unsigned, // tag - uvec&&, // node tag - unsigned, // damper tag - unsigned, // spring tag - bool, // if to use matrix formulation - unsigned, // if proceed when fail to converge - double, // beta - unsigned // dimension + Damper02( + unsigned, // tag + uvec&&, // node tag + unsigned, // damper tag + unsigned, // spring tag + bool, // if to use matrix formulation + unsigned, // if proceed when fail to converge + double, // beta + unsigned // dimension ); int initialize(const shared_ptr&) override; diff --git a/Element/Special/Embedded.cpp b/Element/Special/Embedded.cpp index 10c261b7e..66a4f7132 100644 --- a/Element/Special/Embedded.cpp +++ b/Element/Special/Embedded.cpp @@ -45,10 +45,10 @@ int Embedded::initialize(const shared_ptr& D) { auto& n = access::rw(iso_n); - unsigned counter = 0; + auto counter = 0u; while(++counter <= max_iteration) { const vec incre = solve((host_element->compute_shape_function(t_para, 1) * t_coor).t(), n_coor - ((n = host_element->compute_shape_function(t_para, 0)) * t_coor).t()); - if(norm(incre) < 1E-14) break; + if(inf_norm(incre) < 1E-14) break; t_para += incre; } diff --git a/Element/Special/Embedded.h b/Element/Special/Embedded.h index 7a327eff2..52391ae3b 100644 --- a/Element/Special/Embedded.h +++ b/Element/Special/Embedded.h @@ -34,7 +34,7 @@ #include class Embedded : public Element { - static constexpr unsigned max_iteration = 20; + static constexpr unsigned max_iteration = 20u; const unsigned e_dof; const unsigned host_tag; diff --git a/Element/Special/Joint.cpp b/Element/Special/Joint.cpp index 943ecc0df..f8ed28041 100644 --- a/Element/Special/Joint.cpp +++ b/Element/Special/Joint.cpp @@ -72,7 +72,7 @@ int Joint::reset_status() { vector Joint::record(const OutputType P) { vector data; - for(const auto& I : j_material) for(auto& J : I->record(P)) data.emplace_back(J); + for(const auto& I : j_material) append_to(data, I->record(P)); return data; } diff --git a/Element/Special/Joint.h b/Element/Special/Joint.h index fcdce0b77..5b15e62d8 100644 --- a/Element/Special/Joint.h +++ b/Element/Special/Joint.h @@ -42,9 +42,10 @@ class Joint final : public MaterialElement1D { std::vector> j_material; public: - Joint(unsigned, // tag - uvec&&, // node tags - uvec&& // material tag + Joint( + unsigned, // tag + uvec&&, // node tags + uvec&& // material tag ); int initialize(const shared_ptr&) override; diff --git a/Element/Special/Mass.h b/Element/Special/Mass.h index 510a8b1a8..d7ad30873 100644 --- a/Element/Special/Mass.h +++ b/Element/Special/Mass.h @@ -59,11 +59,12 @@ class MassBase : public Element { public: - MassBase(unsigned, // tag - unsigned, // number of nodes - unsigned, // number of dofs - uvec&&, // node encoding - std::vector&& // dof identifier + MassBase( + unsigned, // tag + unsigned, // number of nodes + unsigned, // number of dofs + uvec&&, // node encoding + std::vector&& // dof identifier ); int update_status() override; @@ -88,10 +89,11 @@ class Mass2D final : public MassBase { const uvec dof_label; public: - Mass2D(unsigned, // element tag - unsigned, // node tag - double, // magnitude - uvec&& // dof tags + Mass2D( + unsigned, // element tag + unsigned, // node tag + double, // magnitude + uvec&& // dof tags ); int initialize(const shared_ptr&) override; @@ -103,10 +105,11 @@ class Mass3D final : public MassBase { const uvec dof_label; public: - Mass3D(unsigned, // element tag - unsigned, // node tag - double, // magnitude - uvec&& // dof tags + Mass3D( + unsigned, // element tag + unsigned, // node tag + double, // magnitude + uvec&& // dof tags ); int initialize(const shared_ptr&) override; @@ -117,14 +120,16 @@ class MassPoint2D final : public MassBase { const double rotational_magnitude; public: - MassPoint2D(unsigned, // element tag - unsigned, // node tag - double // translational magnitude + MassPoint2D( + unsigned, // element tag + unsigned, // node tag + double // translational magnitude ); - MassPoint2D(unsigned, // element tag - unsigned, // node tag - double, // translational magnitude - double // rotational magnitude + MassPoint2D( + unsigned, // element tag + unsigned, // node tag + double, // translational magnitude + double // rotational magnitude ); int initialize(const shared_ptr&) override; @@ -135,14 +140,16 @@ class MassPoint3D final : public MassBase { const double rotational_magnitude; public: - MassPoint3D(unsigned, // element tag - unsigned, // node tag - double // translational magnitude + MassPoint3D( + unsigned, // element tag + unsigned, // node tag + double // translational magnitude ); - MassPoint3D(unsigned, // element tag - unsigned, // node tag - double, // translational magnitude - double // rotational magnitude + MassPoint3D( + unsigned, // element tag + unsigned, // node tag + double, // translational magnitude + double // rotational magnitude ); int initialize(const shared_ptr&) override; diff --git a/Element/Special/SingleSection2D.cpp b/Element/Special/SingleSection2D.cpp index 11534cc8f..6bdfc4917 100644 --- a/Element/Special/SingleSection2D.cpp +++ b/Element/Special/SingleSection2D.cpp @@ -48,5 +48,5 @@ int SingleSection2D::reset_status() { return s_section->reset_status(); } void SingleSection2D::print() { suanpan_info("A SingleSection2D element that represents a section which can be used for section analysis.\n"); - if(is_initialized()) s_section->print(); + if(s_section) s_section->print(); } diff --git a/Element/Special/SingleSection2D.h b/Element/Special/SingleSection2D.h index 5547736f2..2877df27a 100644 --- a/Element/Special/SingleSection2D.h +++ b/Element/Special/SingleSection2D.h @@ -38,9 +38,10 @@ class SingleSection2D final : public SectionElement2D { unique_ptr
s_section; public: - SingleSection2D(unsigned, // tag - unsigned, // node tag - unsigned // section tag + SingleSection2D( + unsigned, // tag + unsigned, // node tag + unsigned // section tag ); int initialize(const shared_ptr&) override; diff --git a/Element/Special/SingleSection3D.cpp b/Element/Special/SingleSection3D.cpp index c8cbcdf2f..a333f5668 100644 --- a/Element/Special/SingleSection3D.cpp +++ b/Element/Special/SingleSection3D.cpp @@ -48,5 +48,5 @@ int SingleSection3D::reset_status() { return s_section->reset_status(); } void SingleSection3D::print() { suanpan_info("A SingleSection3D element that represents a section which can be used for section analysis.\n"); - if(is_initialized()) s_section->print(); + if(s_section) s_section->print(); } diff --git a/Element/Special/SingleSection3D.h b/Element/Special/SingleSection3D.h index 5b4602944..951d90b74 100644 --- a/Element/Special/SingleSection3D.h +++ b/Element/Special/SingleSection3D.h @@ -38,9 +38,10 @@ class SingleSection3D final : public SectionElement3D { unique_ptr
s_section; public: - SingleSection3D(unsigned, // tag - unsigned, // node tag - unsigned // section tag + SingleSection3D( + unsigned, // tag + unsigned, // node tag + unsigned // section tag ); int initialize(const shared_ptr&) override; diff --git a/Element/Special/Spring01.h b/Element/Special/Spring01.h index 5cde742ee..f24657c23 100644 --- a/Element/Special/Spring01.h +++ b/Element/Special/Spring01.h @@ -42,9 +42,10 @@ class Spring01 final : public MaterialElement1D { unique_ptr s_material; public: - Spring01(unsigned, // tag - uvec&&, // node tags - unsigned // material tag + Spring01( + unsigned, // tag + uvec&&, // node tags + unsigned // material tag ); int initialize(const shared_ptr&) override; diff --git a/Element/Special/Spring02.h b/Element/Special/Spring02.h index 5cb5e6136..19cc3b408 100644 --- a/Element/Special/Spring02.h +++ b/Element/Special/Spring02.h @@ -44,9 +44,10 @@ class Spring02 final : public MaterialElement1D { unique_ptr s_material; public: - Spring02(unsigned, // tag - uvec&&, // node tags - unsigned // material tag + Spring02( + unsigned, // tag + uvec&&, // node tags + unsigned // material tag ); int initialize(const shared_ptr&) override; diff --git a/Element/Truss/CMakeLists.txt b/Element/Truss/CMakeLists.txt index 056b771db..1064cc394 100644 --- a/Element/Truss/CMakeLists.txt +++ b/Element/Truss/CMakeLists.txt @@ -3,4 +3,4 @@ set(Truss Truss/T3D2.cpp Truss/T2D2S.cpp Truss/T3D2S.cpp - ) +) diff --git a/Element/Truss/T2D2.cpp b/Element/Truss/T2D2.cpp index c7b1ecc6d..40c6ff0c2 100644 --- a/Element/Truss/T2D2.cpp +++ b/Element/Truss/T2D2.cpp @@ -38,7 +38,7 @@ int T2D2::initialize(const shared_ptr& D) { trial_stiffness = current_stiffness = initial_stiffness = t_trans->to_global_stiffness_mat(area / length * t_material->get_initial_stiffness()); - if(const auto t_density = t_material->get_parameter(ParameterType::DENSITY); t_density > 0.) trial_mass = current_mass = initial_mass = t_trans->to_global_mass_mat(t_density * area); + if(const auto t_density = t_material->get_density(); t_density > 0.) trial_mass = current_mass = initial_mass = t_trans->to_global_mass_mat(t_density * area); return SUANPAN_SUCCESS; } diff --git a/Element/Truss/T2D2.h b/Element/Truss/T2D2.h index 4a9d0d15e..64df29d35 100644 --- a/Element/Truss/T2D2.h +++ b/Element/Truss/T2D2.h @@ -49,14 +49,15 @@ class T2D2 final : public MaterialElement1D { const bool update_area; // flag to indicate if to update section area const bool log_strain; // flag to indicate if to use log strain public: - T2D2(unsigned, // tag - uvec&&, // node tag - unsigned, // material tag - double, // area - bool = false, // nonlinear geometry switch - bool = true, // update area switch - bool = true, // log strain switch - double = -1. // flexural rigidity + T2D2( + unsigned, // tag + uvec&&, // node tag + unsigned, // material tag + double, // area + bool = false, // nonlinear geometry switch + bool = true, // update area switch + bool = true, // log strain switch + double = -1. // flexural rigidity ); int initialize(const shared_ptr&) override; diff --git a/Element/Truss/T2D2S.cpp b/Element/Truss/T2D2S.cpp index 13cd8992a..1ee4d4669 100644 --- a/Element/Truss/T2D2S.cpp +++ b/Element/Truss/T2D2S.cpp @@ -34,7 +34,7 @@ int T2D2S::initialize(const shared_ptr& D) { trial_stiffness = current_stiffness = initial_stiffness = t_trans->to_global_stiffness_mat(t_section->get_initial_stiffness() / length); - if(const auto linear_density = t_section->get_parameter(ParameterType::LINEARDENSITY); linear_density > 0.) trial_mass = current_mass = initial_mass = t_trans->to_global_mass_mat(linear_density); + if(const auto linear_density = t_section->get_linear_density(); linear_density > 0.) trial_mass = current_mass = initial_mass = t_trans->to_global_mass_mat(linear_density); return SUANPAN_SUCCESS; } diff --git a/Element/Truss/T2D2S.h b/Element/Truss/T2D2S.h index fab2f8e07..f0bb5f5f9 100644 --- a/Element/Truss/T2D2S.h +++ b/Element/Truss/T2D2S.h @@ -46,11 +46,12 @@ class T2D2S final : public SectionElement1D { const bool log_strain; // flag to indicate if to use log strain public: - T2D2S(unsigned, // tag - uvec&&, // node tag - unsigned, // section tag - bool = false, // nonlinear geometry switch - bool = true // log strain switch + T2D2S( + unsigned, // tag + uvec&&, // node tag + unsigned, // section tag + bool = false, // nonlinear geometry switch + bool = true // log strain switch ); int initialize(const shared_ptr&) override; diff --git a/Element/Truss/T3D2.cpp b/Element/Truss/T3D2.cpp index f82eb569d..a0eb2ad27 100644 --- a/Element/Truss/T3D2.cpp +++ b/Element/Truss/T3D2.cpp @@ -35,7 +35,7 @@ int T3D2::initialize(const shared_ptr& D) { trial_stiffness = current_stiffness = initial_stiffness = t_trans->to_global_stiffness_mat(area / length * t_material->get_initial_stiffness()); - if(const auto t_density = t_material->get_parameter(ParameterType::DENSITY); t_density > 0.) trial_mass = current_mass = initial_mass = t_trans->to_global_mass_mat(t_density * area); + if(const auto t_density = t_material->get_density(); t_density > 0.) trial_mass = current_mass = initial_mass = t_trans->to_global_mass_mat(t_density * area); return SUANPAN_SUCCESS; } @@ -86,7 +86,7 @@ int T3D2::reset_status() { return t_material->reset_status(); } -vector T3D2::record(const OutputType T) { return t_material->record(T); } +vector T3D2::record(const OutputType P) { return t_material->record(P); } void T3D2::print() { suanpan_info("A 3D truss element with "); diff --git a/Element/Truss/T3D2.h b/Element/Truss/T3D2.h index 2c86ad3d0..57acb9df7 100644 --- a/Element/Truss/T3D2.h +++ b/Element/Truss/T3D2.h @@ -45,13 +45,14 @@ class T3D2 final : public MaterialElement1D { const bool log_strain; public: - T3D2(unsigned, // tag - uvec&&, // node tag - unsigned, // material tag - double, // area - bool = false, // nonlinear geometry switch - bool = true, // update area switch - bool = true // log strain switch + T3D2( + unsigned, // tag + uvec&&, // node tag + unsigned, // material tag + double, // area + bool = false, // nonlinear geometry switch + bool = true, // update area switch + bool = true // log strain switch ); int initialize(const shared_ptr&) override; diff --git a/Element/Truss/T3D2S.cpp b/Element/Truss/T3D2S.cpp index 291c28dd5..37690db36 100644 --- a/Element/Truss/T3D2S.cpp +++ b/Element/Truss/T3D2S.cpp @@ -34,7 +34,7 @@ int T3D2S::initialize(const shared_ptr& D) { trial_stiffness = current_stiffness = initial_stiffness = t_trans->to_global_stiffness_mat(t_section->get_initial_stiffness() / length); - if(const auto linear_density = t_section->get_parameter(ParameterType::LINEARDENSITY); linear_density > 0.) trial_mass = current_mass = initial_mass = t_trans->to_global_mass_mat(linear_density); + if(const auto linear_density = t_section->get_linear_density(); linear_density > 0.) trial_mass = current_mass = initial_mass = t_trans->to_global_mass_mat(linear_density); return SUANPAN_SUCCESS; } @@ -81,7 +81,7 @@ int T3D2S::reset_status() { return t_section->reset_status(); } -vector T3D2S::record(const OutputType T) { return t_section->record(T); } +vector T3D2S::record(const OutputType P) { return t_section->record(P); } void T3D2S::print() { suanpan_info("A 3D truss element with "); diff --git a/Element/Truss/T3D2S.h b/Element/Truss/T3D2S.h index a4a0cd754..b514d117d 100644 --- a/Element/Truss/T3D2S.h +++ b/Element/Truss/T3D2S.h @@ -44,11 +44,12 @@ class T3D2S final : public SectionElement1D { const bool log_strain; public: - T3D2S(unsigned, // tag - uvec&&, // node tag - unsigned, // material tag - bool = false, // nonlinear geometry switch - bool = true // log strain switch + T3D2S( + unsigned, // tag + uvec&&, // node tag + unsigned, // material tag + bool = false, // nonlinear geometry switch + bool = true // log strain switch ); int initialize(const shared_ptr&) override; diff --git a/Element/Truss/Truss b/Element/Truss/Truss index f57acda2a..e1b1eea2d 100644 --- a/Element/Truss/Truss +++ b/Element/Truss/Truss @@ -1,4 +1,4 @@ #include "T2D2.h" #include "T2D2S.h" #include "T3D2.h" -#include "T3D2S.h" \ No newline at end of file +#include "T3D2S.h" diff --git a/Element/Utility/B2DC.cpp b/Element/Utility/B2DC.cpp index 1b83adad7..b234f1626 100644 --- a/Element/Utility/B2DC.cpp +++ b/Element/Utility/B2DC.cpp @@ -19,8 +19,6 @@ #include #include -unique_ptr B2DC::get_copy() { return make_unique(*this); } - void B2DC::update_transformation() { const auto coord = get_coordinate(element_ptr, 2); const auto t_disp = get_trial_displacement(element_ptr); @@ -40,6 +38,8 @@ void B2DC::update_transformation() { bool B2DC::is_nlgeom() const { return true; } +unique_ptr B2DC::get_copy() { return make_unique(*this); } + vec B2DC::to_local_vec(const vec& g_vec) const { const auto& initial_length = original_position(0); const auto& initial_inclination = original_position(1); diff --git a/Element/Utility/B2DL.cpp b/Element/Utility/B2DL.cpp index 0a327ec0b..a7f75c0bd 100644 --- a/Element/Utility/B2DL.cpp +++ b/Element/Utility/B2DL.cpp @@ -28,12 +28,6 @@ void B2DL::form_trans_mat(const vec& d_cosine) { trans_mat(1, 2) = trans_mat(2, 5) = 1.; } -B2DL::B2DL(const unsigned T, const double X, const double Y, const double Z) - : Orientation(T, vec{X, Y, Z}) {} - -B2DL::B2DL(const unsigned T, vec&& XYZ) - : Orientation(T, std::forward(XYZ)) {} - unique_ptr B2DL::get_copy() { return make_unique(*this); } void B2DL::update_transformation() { @@ -50,6 +44,8 @@ void B2DL::update_transformation() { form_trans_mat(direction_cosine); } +OrientationType B2DL::get_orientation_type() const { return OrientationType::B2D; } + vec B2DL::to_local_vec(const vec& g_disp) const { return trans_mat * g_disp; } vec B2DL::to_global_vec(const vec& l_disp) const { return trans_mat.t() * l_disp; } diff --git a/Element/Utility/B2DL.h b/Element/Utility/B2DL.h index ce6648e2a..bc31a9085 100644 --- a/Element/Utility/B2DL.h +++ b/Element/Utility/B2DL.h @@ -39,8 +39,9 @@ class B2DL : public Orientation { void update_transformation() override; public: - explicit B2DL(unsigned = 0, double = 0., double = 0., double = 1.); - B2DL(unsigned, vec&&); + using Orientation::Orientation; + + [[nodiscard]] OrientationType get_orientation_type() const override; unique_ptr get_copy() override; diff --git a/Element/Utility/B3DC.cpp b/Element/Utility/B3DC.cpp index 97879720b..426f71c51 100644 --- a/Element/Utility/B3DC.cpp +++ b/Element/Utility/B3DC.cpp @@ -19,18 +19,6 @@ #include #include -unique_ptr B3DC::get_copy() { return make_unique(*this); } - -void B3DC::commit_status() { current_n = trial_n; } - -void B3DC::reset_status() { trial_n = current_n; } - -void B3DC::clear_status() { - direction_cosine.clear(); - - trial_n = current_n = direction_cosine; -} - mat B3DC::compute_a() const { return (eye(3, 3) - e(0) * e(0).t()) / length; // eq. 4.109 } @@ -40,13 +28,13 @@ mat B3DC::compute_l(const mat& a, const subview_col& rk) const { const mat srk = transform::skew_symm(rk); const auto rke0 = .25 * dot(rk, e(0)); - mat l(3, 12, fill::none); + mat l(3llu, 2llu * nodal_size(), fill::zeros); // eq. 4.111 - l.cols(0, 2) = (2. * rke0 * eye(3, 3) + 2. * e0r0 * rk.t()) * a; // eq. 4.110 - l.cols(3, 5) = rke0 * transform::skew_symm(r(0)) + (e0r0 * e(0).t() - .5 * eye(3, 3)) * srk; // eq. 4.110 + l.cols(sa) = (2. * rke0 * eye(3, 3) + 2. * e0r0 * rk.t()) * a; // eq. 4.110 + l.cols(sb) = rke0 * transform::skew_symm(r(0)) + (e0r0 * e(0).t() - .5 * eye(3, 3)) * srk; // eq. 4.110 - l.cols(6, 8) = -l.cols(0, 2); - l.cols(9, 11) = l.cols(3, 5); + l.cols(sc) = -l.cols(sa); + l.cols(sd) = l.cols(sb); return l; } @@ -57,7 +45,7 @@ mat B3DC::compute_m(const mat& a, const subview_col& z) const { } mat B3DC::compute_g(const mat& a, const subview_col& rk, const subview_col& z) const { - mat g(12, 12, fill::none); + mat g(2llu * nodal_size(), 2llu * nodal_size(), fill::zeros); // eq. 4.132 const auto srk = transform::skew_symm(rk); const auto sr0 = transform::skew_symm(r(0)); @@ -67,19 +55,17 @@ mat B3DC::compute_g(const mat& a, const subview_col& rk, const subview_c const mat zrk = z * rk.t(); const mat ze0 = z * e(0).t(); - const auto sa = span(0, 2), sb = span(3, 5), sc = span(6, 8), sd = span(9, 11); - - g(sa, sa) = -.5 * (a * (zrk + zrk.t()) * a + rke0 * compute_m(a, z) + e0r0z * compute_m(a, rk)); + g(sa, sa) = -.5 * (a * (zrk + zrk.t()) * a + rke0 * compute_m(a, z) + e0r0z * compute_m(a, rk)); // g_11 g(sc, sc) = g(sa, sa); g(sa, sc) = -g(sa, sa); g(sc, sa) = -g(sa, sa); - g(sb, sb) = .125 * ((srk * ze0.t() - rke0 * sz) * sr0 + (2. * sz + sr0 * ze0 - e0r0z * se(0)) * srk); + g(sb, sb) = .125 * ((srk * ze0.t() - rke0 * sz) * sr0 + (2. * sz + sr0 * ze0 - e0r0z * se(0)) * srk); // g_22 g(sd, sd) = g(sb, sb); g(sb, sd) = g(sb, sb); g(sd, sb) = g(sb, sb); - g(sa, sb) = -.25 * a * ((ze0 + eye(3, 3) * e0r0z) * srk + rk * z.t() * sr0); + g(sa, sb) = -.25 * a * ((ze0 + eye(3, 3) * e0r0z) * srk + rk * z.t() * sr0); // g_12 g(sa, sd) = g(sa, sb); g(sc, sb) = -g(sa, sb); g(sc, sd) = -g(sa, sb); @@ -93,7 +79,7 @@ mat B3DC::compute_g(const mat& a, const subview_col& rk, const subview_c subview_col B3DC::e(const uword I) const { return basic.col(I); } -subview_col B3DC::r(const uword I) const { return reference.col(I); } +subview_col B3DC::r(const uword I) const { return trial_ref.col(I); } subview_col B3DC::ni(const uword I) const { return trial_n.col(I); } @@ -103,21 +89,40 @@ const mat& B3DC::sni(const uword I) const { return sn(I); } const mat& B3DC::snj(const uword I) const { return sn(I + 3); } -void B3DC::update_transformation() { - const mat t_coor = get_coordinate(element_ptr, 3).t(); - const vec x_axis = t_coor.col(1) - t_coor.col(0); +void B3DC::update_direct_cosine(const vec& x_axis) { + if(!direction_cosine.empty()) return; - if(direction_cosine.empty()) { - // initial undeformed frame - direction_cosine.resize(3, 3); - direction_cosine.col(0) = normalise(x_axis); - direction_cosine.col(1) = normalise(cross(z_axis, x_axis)); - direction_cosine.col(2) = normalise(cross(x_axis, direction_cosine.col(1))); + // initial undeformed frame + direction_cosine.resize(3, 3); + direction_cosine.col(0) = normalise(x_axis); + direction_cosine.col(1) = normalise(cross(z_axis, x_axis)); + direction_cosine.col(2) = normalise(cross(x_axis, direction_cosine.col(1))); - trial_n = current_n = join_rows(direction_cosine, direction_cosine); + trial_n = current_n = join_rows(direction_cosine, direction_cosine); + trial_ref = current_ref = direction_cosine; - suanpan::hacker(initial_length) = norm(x_axis); + suanpan::hacker(initial_length) = norm(x_axis); +} + +void B3DC::update_e(const vec& trial_cord) { + e(0) = normalise(trial_cord); + for(auto I = 1u; I < 3u; ++I) e(I) = r(I) - .5 * dot(r(I), e(0)) * (r(0) + e(0)); + for(auto I = 0u; I < 3u; ++I) se(I) = transform::skew_symm(e(I)); +} + +void B3DC::update_theta() { + for(auto I = 0u; I < 3u; ++I) { + const auto J = (I + 1u) % 3u, K = (I + 2u) % 3u; + theta(I) = asin(.5 * (dot(e(K), ni(J)) - dot(e(J), ni(K)))); + theta(I + 3llu) = asin(.5 * (dot(e(K), nj(J)) - dot(e(J), nj(K)))); } +} + +void B3DC::update_transformation() { + const mat t_coor = get_coordinate(element_ptr, 3).t(); + const vec x_axis = t_coor.col(1) - t_coor.col(0); + + update_direct_cosine(x_axis); const mat trial_disp = reshape(get_trial_displacement(element_ptr), 6, 2); const vec incre_disp = trial_disp.head_rows(3).col(1) - trial_disp.head_rows(3).col(0); @@ -128,26 +133,22 @@ void B3DC::update_transformation() { elongation = dot(x_axis + trial_cord, incre_disp) / (length + initial_length); // eq. 4.98 - const mat incre_r = reshape(get_incre_displacement(element_ptr), 6, 2).eval().tail_rows(3); + const vec incre_ri = trial_disp.tail_rows(3).col(0) - trial_rotation.col(0); + const vec incre_rj = trial_disp.tail_rows(3).col(1) - trial_rotation.col(1); + trial_rotation = trial_disp.tail_rows(3); // nodal frame - trial_n.head_cols(3) = transform::rodrigues(incre_r.col(0)) * current_n.head_cols(3); - trial_n.tail_cols(3) = transform::rodrigues(incre_r.col(1)) * current_n.tail_cols(3); + trial_n.head_cols(3) = transform::rodrigues(incre_ri) * trial_n.head_cols(3); + trial_n.tail_cols(3) = transform::rodrigues(incre_rj) * trial_n.tail_cols(3); // reference frame - reference = transform::rodrigues((.5 * sum(trial_disp.tail_rows(3), 1)).eval()) * direction_cosine; + trial_ref = transform::rodrigues((.5 * (incre_ri + incre_rj)).eval()) * trial_ref; // basic deformed frame - e(0) = normalise(trial_cord); - for(auto I = 1u; I < 3u; ++I) e(I) = r(I) - .5 * dot(r(I), e(0)) * (r(0) + e(0)); - for(auto I = 0u; I < 3u; ++I) se(I) = transform::skew_symm(e(I)); + update_e(trial_cord); theta.set_size(6); - for(auto I = 0u; I < 3u; ++I) { - const auto J = (I + 1u) % 3u, K = (I + 2u) % 3u; - theta(I) = asin(.5 * (dot(e(K), ni(J)) - dot(e(J), ni(K)))); - theta(I + 3llu) = asin(.5 * (dot(e(K), nj(J)) - dot(e(J), nj(K)))); - } + update_theta(); const auto a = compute_a(); const auto lr1 = compute_l(a, r(1)), lr2 = compute_l(a, r(2)); @@ -200,8 +201,32 @@ void B3DC::update_transformation() { transformation.row(5) = t6j - t6i; } +unsigned B3DC::nodal_size() const { return 6u; } + bool B3DC::is_nlgeom() const { return true; } +unique_ptr B3DC::get_copy() { return make_unique(*this); } + +void B3DC::commit_status() { + current_n = trial_n; + current_rotation = trial_rotation; + current_ref = trial_ref; +} + +void B3DC::reset_status() { + trial_n = current_n; + trial_rotation = current_rotation; + trial_ref = current_ref; +} + +void B3DC::clear_status() { + direction_cosine.clear(); + + trial_n = current_n = direction_cosine; + trial_ref = current_ref = direction_cosine; + trial_rotation = current_rotation.zeros(); +} + vec B3DC::to_local_vec(const vec&) const { return {elongation, theta(2), theta(5), theta(1), theta(4), theta(3) - theta(0)}; } vec B3DC::to_global_vec(const vec& l_resistance) const { return transformation.t() * l_resistance; } @@ -218,17 +243,15 @@ mat B3DC::to_global_geometry_mat(const mat& l_force) const { const auto m6i = p6 * .5 / std::cos(theta(0)); const auto m6j = p6 * .5 / std::cos(theta(3)); - const auto sa = span(0, 2), sb = span(3, 5), sc = span(6, 8), sd = span(9, 11); - const mat a = compute_a(); - // KA + // KA eq. 4.134 geometry(sa, sa) = p1 * a; geometry(sc, sc) = geometry(sa, sa); geometry(sa, sc) = -geometry(sa, sa); geometry(sc, sa) = -geometry(sa, sa); - // KB + // KB eq. 4.135 geometry += p2 * std::tan(theta(2)) * transformation.row(1).t() * transformation.row(1); geometry += p3 * std::tan(theta(5)) * transformation.row(2).t() * transformation.row(2); geometry += p4 * std::tan(theta(1)) * transformation.row(3).t() * transformation.row(3); @@ -236,21 +259,21 @@ mat B3DC::to_global_geometry_mat(const mat& l_force) const { geometry -= p6 * std::tan(theta(0)) * t6i.t() * t6i; geometry += p6 * std::tan(theta(3)) * t6j.t() * t6j; - // KC - geometry += m2 * compute_g(a, r(1), ni(0)) + m3 * compute_g(a, r(1), nj(0)) - m4 * compute_g(a, r(2), ni(0)) - m5 * compute_g(a, r(2), nj(0)) + m6i * compute_g(a, r(2), nj(1)) - m6i * compute_g(a, r(1), nj(2)) - m6j * compute_g(a, r(2), ni(1)) + m6j * compute_g(a, r(1), ni(2)); + // KC !!!eq. 4.136 is wrong, m6i and m6j need to be swapped!!! + geometry += m2 * compute_g(a, r(1), ni(0)) + m3 * compute_g(a, r(1), nj(0)) - m4 * compute_g(a, r(2), ni(0)) - m5 * compute_g(a, r(2), nj(0)) + m6j * compute_g(a, r(2), nj(1)) - m6j * compute_g(a, r(1), nj(2)) - m6i * compute_g(a, r(2), ni(1)) + m6i * compute_g(a, r(1), ni(2)); - // KD + // KD eq. 4.137 const mat KD2 = compute_l(a, r(2)).t() * (m4 * sni(0) + m6i * sni(1)) - compute_l(a, r(1)).t() * (m2 * sni(0) + m6i * sni(2)); const mat KD4 = compute_l(a, r(2)).t() * (m5 * snj(0) - m6j * snj(1)) - compute_l(a, r(1)).t() * (m3 * snj(0) - m6j * snj(2)); geometry.cols(sb) += KD2; geometry.cols(sd) += KD4; - // KE + // KE eq. 4.139 geometry.rows(sb) += KD2.t(); geometry.rows(sd) += KD4.t(); - // KF + // KF eq. 4.140 const mat KF11 = -m2 * compute_m(a, ni(1)) - m3 * compute_m(a, nj(1)) + m4 * compute_m(a, ni(2)) + m5 * compute_m(a, nj(2)); geometry(sa, sa) += KF11; geometry(sc, sc) += KF11; @@ -269,9 +292,9 @@ mat B3DC::to_global_geometry_mat(const mat& l_force) const { geometry(sc, sd) -= KF14; geometry(sd, sc) -= KF14.t(); - // KF22 + // KF22 eq. 4.141 geometry(sb, sb) += m2 * (se(1) * sni(0) - se(0) * sni(1)) - m4 * (se(2) * sni(0) - se(0) * sni(2)) - m6i * (se(2) * sni(1) - se(1) * sni(2)); - // KF44 + // KF44 eq. 4.141 geometry(sd, sd) += m3 * (se(1) * snj(0) - se(0) * snj(1)) - m5 * (se(2) * snj(0) - se(0) * snj(2)) + m6j * (se(2) * snj(1) - se(1) * snj(2)); return geometry; diff --git a/Element/Utility/B3DC.h b/Element/Utility/B3DC.h index e45f0375b..f4432fca4 100644 --- a/Element/Utility/B3DC.h +++ b/Element/Utility/B3DC.h @@ -17,6 +17,13 @@ /** * @class B3DC * @brief A B3DC class. + * + * B3DC is a corotational transformation for 3D beam elements. + * + * The implementation is mainly based on de Souza's thesis. + * + * Force-based Finite Element for Large Displacement Inelastic Analysis of Frames + * * @author tlc * @date 16/12/2021 * @version 0.1.0 @@ -31,15 +38,21 @@ #include "B3DL.h" -class B3DC final : public B3DL { +class B3DC : public B3DL { + mat basic{3, 3, fill::none}; + + rowvec t6i, t6j; + +protected: + const span sa{0, 2}, sb{3, 5}, sc{6, 8}, sd{9, 11}; + double elongation = 0.; - mat trial_n, current_n; - mat basic{3, 3, fill::none}, reference; + mat trial_rotation{3, 2, fill::zeros}, current_rotation{3, 2, fill::zeros}; + mat trial_n, current_n, trial_ref, current_ref; field sn{6}, se{3}; vec theta; - rowvec t6i, t6j; mat transformation; const double initial_length = 0.; @@ -57,9 +70,14 @@ class B3DC final : public B3DL { [[nodiscard]] const mat& sni(uword) const; [[nodiscard]] const mat& snj(uword) const; -protected: + void update_direct_cosine(const vec&); + void update_e(const vec&); + void update_theta(); + void update_transformation() override; + [[nodiscard]] virtual unsigned nodal_size() const; + public: using B3DL::B3DL; diff --git a/Element/Utility/B3DL.cpp b/Element/Utility/B3DL.cpp index 82c920134..0df49f9d5 100644 --- a/Element/Utility/B3DL.cpp +++ b/Element/Utility/B3DL.cpp @@ -18,11 +18,7 @@ #include "B3DL.h" #include -B3DL::B3DL(const unsigned T, const double X, const double Y, const double Z) - : Orientation(T, vec{X, Y, Z}) {} - -B3DL::B3DL(const unsigned T, vec&& XYZ) - : Orientation(T, std::forward(XYZ)) {} +OrientationType B3DL::get_orientation_type() const { return OrientationType::B3D; } unique_ptr B3DL::get_copy() { return make_unique(*this); } @@ -42,9 +38,13 @@ void B3DL::update_transformation() { } vec B3DL::to_local_vec(const vec& g_disp) const { - const vec t_disp = vectorise(direction_cosine * reshape(g_disp, 3, 4)); + vec t_disp(g_disp.n_elem, fill::none); + for(auto I = 0, J = 2; I < 12; I += 3, J += 3) { + const span sa(I, J); + t_disp(sa) = direction_cosine * g_disp(sa); + } - vec l_disp(6); + vec l_disp(6); // eq. 2.11 l_disp(0) = t_disp(6) - t_disp(0); l_disp(5) = t_disp(9) - t_disp(3); @@ -59,14 +59,19 @@ vec B3DL::to_local_vec(const vec& g_disp) const { } vec B3DL::to_global_vec(const vec& l_disp) const { - vec g_disp(12); + vec g_disp(12, fill::none); g_disp(0) = -(g_disp(6) = l_disp(0)); g_disp(7) = -(g_disp(1) = ((g_disp(5) = l_disp(1)) + (g_disp(11) = l_disp(2))) / length); g_disp(2) = -(g_disp(8) = ((g_disp(4) = l_disp(3)) + (g_disp(10) = l_disp(4))) / length); g_disp(3) = -(g_disp(9) = l_disp(5)); - return vectorise(direction_cosine.t() * reshape(g_disp, 3, 4)); + for(auto I = 0, J = 2; I < 12; I += 3, J += 3) { + const span sa(I, J); + g_disp(sa) = direction_cosine.t() * g_disp(sa); + } + + return g_disp; } mat B3DL::to_global_mass_mat(const mat& l_mat) const { diff --git a/Element/Utility/B3DL.h b/Element/Utility/B3DL.h index 77fcc190f..00f94b277 100644 --- a/Element/Utility/B3DL.h +++ b/Element/Utility/B3DL.h @@ -17,6 +17,19 @@ /** * @class B3DL * @brief A B3DL class. + * + * See Spacone's thesis. + * + * Flexibility-based finite element models for the nonlinear static and dynamic analysis of concrete frame structures + * + * Order of local quantities: + * uniform axial + * strong axis bending near node + * strong axis bending far node + * weak axis bending near node + * weak axis bending far node + * uniform torsion + * * @author tlc * @date 27/06/2018 * @version 0.1.0 @@ -36,8 +49,9 @@ class B3DL : public Orientation { void update_transformation() override; public: - explicit B3DL(unsigned = 0, double = 0., double = 0., double = 1.); - B3DL(unsigned, vec&&); + using Orientation::Orientation; + + [[nodiscard]] OrientationType get_orientation_type() const override; unique_ptr get_copy() override; diff --git a/Element/Utility/B3DOSC.cpp b/Element/Utility/B3DOSC.cpp new file mode 100644 index 000000000..8730a1b4f --- /dev/null +++ b/Element/Utility/B3DOSC.cpp @@ -0,0 +1,191 @@ +/******************************************************************************* + * Copyright (C) 2017-2023 Theodore Chang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + ******************************************************************************/ + +#include "B3DOSC.h" +#include +#include + +B3DOSC::B3DOSC(const unsigned T, vec&& XYZ) + : B3DC(T, std::forward(XYZ)) { + access::rw(sc) = span(7, 9); + access::rw(sd) = span(10, 12); +} + +OrientationType B3DOSC::get_orientation_type() const { return OrientationType::B3DOS; } + +void B3DOSC::update_transformation() { + const mat t_coor = get_coordinate(element_ptr, 3).t(); + const vec x_axis = t_coor.col(1) - t_coor.col(0); + + update_direct_cosine(x_axis); + + const mat trial_disp = reshape(get_trial_displacement(element_ptr), 7, 2); + const vec incre_disp = trial_disp.head_rows(3).col(1) - trial_disp.head_rows(3).col(0); + const vec trial_cord = x_axis + incre_disp; + + // new length + length = norm(trial_cord); + + elongation = dot(x_axis + trial_cord, incre_disp) / (length + initial_length); // eq. 4.98 + + const vec incre_ri = trial_disp.rows(sb).col(0) - trial_rotation.col(0); + const vec incre_rj = trial_disp.rows(sb).col(1) - trial_rotation.col(1); + trial_rotation = trial_disp.rows(sb); + + // nodal frame + trial_n.head_cols(3) = transform::rodrigues(incre_ri) * trial_n.head_cols(3); + trial_n.tail_cols(3) = transform::rodrigues(incre_rj) * trial_n.tail_cols(3); + + // reference frame + trial_ref = transform::rodrigues((.5 * (incre_ri + incre_rj)).eval()) * trial_ref; + + // basic deformed frame + update_e(trial_cord); + + theta.set_size(8); + theta(6) = trial_disp(6, 0); + theta(7) = trial_disp(6, 1); + update_theta(); + + const auto a = compute_a(); + const auto lr1 = compute_l(a, r(1)), lr2 = compute_l(a, r(2)); + for(auto I = 0u; I < 6u; ++I) sn(I) = transform::skew_symm(trial_n.col(I)); + + const mat na = trial_n.t() * a; + + transformation.zeros(9, 14); + + // row 1 + transformation.row(0).cols(0, 2) = -e(0).t(); + transformation.row(0).cols(7, 9) = e(0).t(); + + // row 2 + transformation.row(1) = ni(0).t() * lr1; + transformation.row(1).cols(0, 2) += na.row(1); + transformation.row(1).cols(3, 5) += e(0).t() * sni(1) - e(1).t() * sni(0); + transformation.row(1).cols(7, 9) -= na.row(1); + transformation.row(1) *= .5 / std::cos(theta(2)); + + // row 3 + transformation.row(2) = nj(0).t() * lr1; + transformation.row(2).cols(0, 2) += na.row(4); + transformation.row(2).cols(7, 9) -= na.row(4); + transformation.row(2).cols(10, 12) += e(0).t() * snj(1) - e(1).t() * snj(0); + transformation.row(2) *= .5 / std::cos(theta(5)); + + // row 4 + transformation.row(3) = -ni(0).t() * lr2; + transformation.row(3).cols(0, 2) -= na.row(2); + transformation.row(3).cols(3, 5) -= e(0).t() * sni(2) - e(2).t() * sni(0); + transformation.row(3).cols(7, 9) += na.row(2); + transformation.row(3) *= .5 / std::cos(theta(1)); + + // row 5 + transformation.row(4) = -nj(0).t() * lr2; + transformation.row(4).cols(0, 2) -= na.row(5); + transformation.row(4).cols(7, 9) += na.row(5); + transformation.row(4).cols(10, 12) -= e(0).t() * snj(2) - e(2).t() * snj(0); + transformation.row(4) *= .5 / std::cos(theta(4)); + + // row 6 + transformation.row(5) = ni(1).t() * lr2 - ni(2).t() * lr1; + transformation.row(5).cols(3, 5) += e(1).t() * sni(2) - e(2).t() * sni(1); + transformation.row(5) *= .5 / std::cos(theta(0)); + + // row 7 + transformation.row(6) = nj(1).t() * lr2 - nj(2).t() * lr1; + transformation.row(6).cols(10, 12) += e(1).t() * snj(2) - e(2).t() * snj(1); + transformation.row(6) *= .5 / std::cos(theta(3)); + + // rows 8 and 9 + transformation(7, 6) = transformation(8, 13) = 1.; +} + +unsigned B3DOSC::nodal_size() const { return 7u; } + +unique_ptr B3DOSC::get_copy() { return make_unique(*this); } + +vec B3DOSC::to_local_vec(const vec&) const { return {elongation, theta(2), theta(5), theta(1), theta(4), theta(0), theta(3), theta(6), theta(7)}; } + +mat B3DOSC::to_global_geometry_mat(const mat& l_force) const { + mat geometry(14, 14, fill::zeros); + + const auto &p1 = l_force(0), &p2 = l_force(1), &p3 = l_force(2), &p4 = l_force(3), &p5 = l_force(4), &p6 = l_force(5), &p7 = l_force(6); + + const auto m2 = p2 * .5 / std::cos(theta(2)); + const auto m3 = p3 * .5 / std::cos(theta(5)); + const auto m4 = p4 * .5 / std::cos(theta(1)); + const auto m5 = p5 * .5 / std::cos(theta(4)); + const auto m6 = p6 * .5 / std::cos(theta(0)); + const auto m7 = p7 * .5 / std::cos(theta(3)); + + const mat a = compute_a(); + + // KA eq. 4.134 + geometry(sa, sa) = p1 * a; + geometry(sc, sc) = geometry(sa, sa); + geometry(sa, sc) = -geometry(sa, sa); + geometry(sc, sa) = -geometry(sa, sa); + + // KB eq. 4.135 + geometry += p2 * std::tan(theta(2)) * transformation.row(1).t() * transformation.row(1); + geometry += p3 * std::tan(theta(5)) * transformation.row(2).t() * transformation.row(2); + geometry += p4 * std::tan(theta(1)) * transformation.row(3).t() * transformation.row(3); + geometry += p5 * std::tan(theta(4)) * transformation.row(4).t() * transformation.row(4); + geometry += p6 * std::tan(theta(0)) * transformation.row(5).t() * transformation.row(5); + geometry += p7 * std::tan(theta(3)) * transformation.row(6).t() * transformation.row(6); + + // KC !!!eq. 4.136 is wrong, m6i and m6j need to be swapped!!! + geometry += m2 * compute_g(a, r(1), ni(0)) + m3 * compute_g(a, r(1), nj(0)) - m4 * compute_g(a, r(2), ni(0)) - m5 * compute_g(a, r(2), nj(0)) + m6 * (compute_g(a, r(2), ni(1)) - compute_g(a, r(1), ni(2))) + m7 * (compute_g(a, r(2), nj(1)) - compute_g(a, r(1), nj(2))); + + // KD eq. 4.137 + const mat KD2 = compute_l(a, r(2)).t() * (m4 * sni(0) - m6 * sni(1)) - compute_l(a, r(1)).t() * (m2 * sni(0) - m6 * sni(2)); + const mat KD4 = compute_l(a, r(2)).t() * (m5 * snj(0) - m7 * snj(1)) - compute_l(a, r(1)).t() * (m3 * snj(0) - m7 * snj(2)); + + geometry.cols(sb) += KD2; + geometry.cols(sd) += KD4; + + // KE eq. 4.139 + geometry.rows(sb) += KD2.t(); + geometry.rows(sd) += KD4.t(); + + // KF eq. 4.140 + const mat KF11 = -m2 * compute_m(a, ni(1)) - m3 * compute_m(a, nj(1)) + m4 * compute_m(a, ni(2)) + m5 * compute_m(a, nj(2)); + geometry(sa, sa) += KF11; + geometry(sc, sc) += KF11; + geometry(sa, sc) -= KF11; + geometry(sc, sa) -= KF11; + + const mat KF12 = -m2 * a * sni(1) + m4 * a * sni(2); + geometry(sa, sb) += KF12; + geometry(sb, sa) += KF12.t(); + geometry(sb, sc) -= KF12.t(); + geometry(sc, sb) -= KF12; + + const mat KF14 = -m3 * a * snj(1) + m5 * a * snj(2); + geometry(sa, sd) += KF14; + geometry(sd, sa) += KF14.t(); + geometry(sc, sd) -= KF14; + geometry(sd, sc) -= KF14.t(); + + // KF22 eq. 4.141 + geometry(sb, sb) += m2 * (se(1) * sni(0) - se(0) * sni(1)) - m4 * (se(2) * sni(0) - se(0) * sni(2)) + m6 * (se(2) * sni(1) - se(1) * sni(2)); + // KF44 eq. 4.141 + geometry(sd, sd) += m3 * (se(1) * snj(0) - se(0) * snj(1)) - m5 * (se(2) * snj(0) - se(0) * snj(2)) + m7 * (se(2) * snj(1) - se(1) * snj(2)); + + return geometry; +} diff --git a/Element/Utility/B3DOSC.h b/Element/Utility/B3DOSC.h new file mode 100644 index 000000000..80a8e53c6 --- /dev/null +++ b/Element/Utility/B3DOSC.h @@ -0,0 +1,60 @@ +/******************************************************************************* + * Copyright (C) 2017-2023 Theodore Chang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + ******************************************************************************/ +/** + * @class B3DOSC + * @brief A B3DOSC class. + * + * B3DOSC is a corotational transformation for 3D beam elements. + * + * The implementation is mainly based on de Souza's thesis. + * + * Force-based Finite Element for Large Displacement Inelastic Analysis of Frames + * + * @author tlc + * @date 16/12/2021 + * @version 0.1.0 + * @file B3DOSC.h + * @addtogroup Utility + * @ingroup Element + * @{ + */ + +#ifndef B3DOSC_H +#define B3DOSC_H + +#include "B3DC.h" + +class B3DOSC : public B3DC { +protected: + void update_transformation() override; + + [[nodiscard]] unsigned nodal_size() const override; + +public: + B3DOSC(unsigned, vec&&); + + [[nodiscard]] OrientationType get_orientation_type() const override; + + unique_ptr get_copy() override; + + [[nodiscard]] vec to_local_vec(const vec&) const override; + [[nodiscard]] mat to_global_geometry_mat(const mat&) const override; +}; + +#endif + +//! @} diff --git a/Element/Utility/B3DOSL.cpp b/Element/Utility/B3DOSL.cpp new file mode 100644 index 000000000..e3d579d36 --- /dev/null +++ b/Element/Utility/B3DOSL.cpp @@ -0,0 +1,112 @@ +/******************************************************************************* + * Copyright (C) 2017-2023 Theodore Chang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + ******************************************************************************/ + +#include "B3DOSL.h" +#include + +const span B3DOSL::sa(0, 2), B3DOSL::sb(3, 5), B3DOSL::sc(7, 9), B3DOSL::sd(10, 12); + +OrientationType B3DOSL::get_orientation_type() const { return OrientationType::B3DOS; } + +unique_ptr B3DOSL::get_copy() { return make_unique(*this); } + +vec B3DOSL::to_local_vec(const vec& g_disp) const { + vec t_disp = g_disp; + t_disp(sa) = direction_cosine * t_disp(sa); + t_disp(sb) = direction_cosine * t_disp(sb); + t_disp(sc) = direction_cosine * t_disp(sc); + t_disp(sd) = direction_cosine * t_disp(sd); + + vec l_disp(9); + + l_disp(0) = t_disp(7) - t_disp(0); // axial + + auto t_factor = (t_disp(1) - t_disp(8)) / length; // strong axis bending + l_disp(1) = t_disp(5) + t_factor; // near node strong axis + l_disp(2) = t_disp(12) + t_factor; // far node strong axis + + t_factor = (t_disp(9) - t_disp(2)) / length; // weak axis bending + l_disp(3) = t_disp(4) + t_factor; // near node weak axis + l_disp(4) = t_disp(11) + t_factor; // far node weak axis + + l_disp(5) = t_disp(3); // near node torsion + l_disp(6) = t_disp(10); // far node torsion + + l_disp(7) = t_disp(6); // near node warping + l_disp(8) = t_disp(13); // far node warping + + return l_disp; +} + +vec B3DOSL::to_global_vec(const vec& l_disp) const { + vec g_disp(14, fill::none); + + g_disp(0) = -(g_disp(7) = l_disp(0)); // axial + + g_disp(8) = -(g_disp(1) = ((g_disp(5) = l_disp(1)) + (g_disp(12) = l_disp(2))) / length); // strong axis bending + g_disp(2) = -(g_disp(9) = ((g_disp(4) = l_disp(3)) + (g_disp(11) = l_disp(4))) / length); // weak axis bending + + g_disp(3) = l_disp(5); + g_disp(10) = l_disp(6); + + g_disp(6) = l_disp(7); + g_disp(13) = l_disp(8); + + g_disp(sa) = direction_cosine.t() * g_disp(sa); + g_disp(sb) = direction_cosine.t() * g_disp(sb); + g_disp(sc) = direction_cosine.t() * g_disp(sc); + g_disp(sd) = direction_cosine.t() * g_disp(sd); + + return g_disp; +} + +mat B3DOSL::to_global_mass_mat(const mat&) const { return {14, 14, fill::zeros}; } + +mat B3DOSL::to_global_stiffness_mat(const mat& l_mat) const { + mat t_mat(9, 14, fill::zeros); // eq. 2.11 + + const auto t_factor = 1. / length; + + // axial + t_mat(0, 0) = -(t_mat(0, 7) = 1.); + // strong axis bending near node + t_mat(1, 8) = -(t_mat(1, 1) = t_factor); + t_mat(1, 5) = 1.; + // strong axis bending far node + t_mat(2, 8) = -(t_mat(2, 1) = t_factor); + t_mat(2, 12) = 1.; + // weak axis bending near node + t_mat(3, 2) = -(t_mat(3, 9) = t_factor); + t_mat(3, 4) = 1.; + // weak axis bending far node + t_mat(4, 2) = -(t_mat(4, 9) = t_factor); + t_mat(4, 11) = 1.; + // torsion + t_mat(5, 3) = t_mat(6, 10) = 1.; + // warping + t_mat(7, 6) = t_mat(8, 13) = 1.; + + mat g_mat(14, 14, fill::eye); + g_mat(sa, sa) = direction_cosine; + g_mat(sb, sb) = direction_cosine; + g_mat(sc, sc) = direction_cosine; + g_mat(sd, sd) = direction_cosine; + + t_mat *= g_mat; + + return t_mat.t() * l_mat * t_mat; +} diff --git a/Element/Utility/B3DOSL.h b/Element/Utility/B3DOSL.h new file mode 100644 index 000000000..2fa51950e --- /dev/null +++ b/Element/Utility/B3DOSL.h @@ -0,0 +1,64 @@ +/******************************************************************************* + * Copyright (C) 2017-2023 Theodore Chang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + ******************************************************************************/ +/** + * @class B3DOSL + * @brief A B3DOSL class. + * + * Order of local quantities: + * uniform axial + * strong axis bending near node + * strong axis bending far node + * weak axis bending near node + * weak axis bending far node + * torsion near node + * torsion far node + * warping near node + * warping far node + * + * @author tlc + * @date 10/09/2023 + * @version 0.1.0 + * @file B3DOSL.h + * @addtogroup Utility + * @ingroup Element + * @{ + */ + +#ifndef B3DOSL_H +#define B3DOSL_H + +#include "B3DL.h" + +class B3DOSL final : public B3DL { + static const span sa, sb, sc, sd; + +public: + using B3DL::B3DL; + + [[nodiscard]] OrientationType get_orientation_type() const override; + + unique_ptr get_copy() override; + + [[nodiscard]] vec to_local_vec(const vec&) const override; + [[nodiscard]] vec to_global_vec(const vec&) const override; + [[nodiscard]] mat to_global_mass_mat(const mat&) const override; + [[nodiscard]] mat to_global_stiffness_mat(const mat&) const override; +}; + +#endif + +//! @} diff --git a/Element/Utility/CMakeLists.txt b/Element/Utility/CMakeLists.txt index a582bef21..76911aed8 100644 --- a/Element/Utility/CMakeLists.txt +++ b/Element/Utility/CMakeLists.txt @@ -3,6 +3,8 @@ set(Utility Utility/B2DL.cpp Utility/B3DC.cpp Utility/B3DL.cpp + Utility/B3DOSC.cpp + Utility/B3DOSL.cpp Utility/IGA/BSpline.cpp Utility/IGA/BSplineSurface.cpp Utility/IGA/BSplineVolume.cpp @@ -15,4 +17,4 @@ set(Utility Utility/T2DL.cpp Utility/T3DC.cpp Utility/T3DL.cpp - ) +) diff --git a/Element/Utility/Orientation.h b/Element/Utility/Orientation.h index 3dab8c7a8..b1bd5bc89 100644 --- a/Element/Utility/Orientation.h +++ b/Element/Utility/Orientation.h @@ -35,6 +35,14 @@ #include +enum class OrientationType { + T2D, + T3D, + B2D, + B3D, + B3DOS +}; + class Element; class Orientation : public Tag { @@ -65,6 +73,8 @@ class Orientation : public Tag { [[nodiscard]] virtual bool is_nlgeom() const; + [[nodiscard]] virtual OrientationType get_orientation_type() const = 0; + [[nodiscard]] double get_length() const; [[nodiscard]] double get_inclination() const; [[nodiscard]] const mat& get_transformation() const; diff --git a/Element/Utility/T2DC.cpp b/Element/Utility/T2DC.cpp index 9c481c3e4..0091911ac 100644 --- a/Element/Utility/T2DC.cpp +++ b/Element/Utility/T2DC.cpp @@ -19,8 +19,6 @@ #include #include -unique_ptr T2DC::get_copy() { return make_unique(*this); } - void T2DC::update_transformation() { const auto coord = get_coordinate(element_ptr, 2); const auto t_disp = get_trial_displacement(element_ptr); @@ -34,11 +32,10 @@ void T2DC::update_transformation() { inclination = transform::atan2(direction_cosine); } -T2DC::T2DC(const unsigned T) - : T2DL(T) {} - bool T2DC::is_nlgeom() const { return true; } +unique_ptr T2DC::get_copy() { return make_unique(*this); } + mat T2DC::to_global_geometry_mat(const mat& l_mat) const { auto g_mat = to_global_stiffness_mat(-l_mat); diff --git a/Element/Utility/T2DC.h b/Element/Utility/T2DC.h index aec11a6b0..03243567a 100644 --- a/Element/Utility/T2DC.h +++ b/Element/Utility/T2DC.h @@ -36,7 +36,7 @@ class T2DC final : public T2DL { void update_transformation() override; public: - explicit T2DC(unsigned = 0); + using T2DL::T2DL; [[nodiscard]] bool is_nlgeom() const override; diff --git a/Element/Utility/T2DL.cpp b/Element/Utility/T2DL.cpp index f2112d354..cb45f3ae2 100644 --- a/Element/Utility/T2DL.cpp +++ b/Element/Utility/T2DL.cpp @@ -22,9 +22,6 @@ const span T2DL::IS(0, 1); const span T2DL::JS(2, 3); -T2DL::T2DL(const unsigned T) - : Orientation(T) {} - unique_ptr T2DL::get_copy() { return make_unique(*this); } void T2DL::update_transformation() { @@ -41,6 +38,8 @@ void T2DL::update_transformation() { inclination = transform::atan2(direction_cosine); } +OrientationType T2DL::get_orientation_type() const { return OrientationType::T2D; } + vec T2DL::to_local_vec(const vec& g_disp) const { return vec{dot(direction_cosine, g_disp(JS) - g_disp(IS))}; } vec T2DL::to_global_vec(const vec& l_disp) const { diff --git a/Element/Utility/T2DL.h b/Element/Utility/T2DL.h index 6bb42f15f..17403fa0f 100644 --- a/Element/Utility/T2DL.h +++ b/Element/Utility/T2DL.h @@ -38,7 +38,9 @@ class T2DL : public Orientation { void update_transformation() override; public: - explicit T2DL(unsigned = 0); + using Orientation::Orientation; + + [[nodiscard]] OrientationType get_orientation_type() const override; unique_ptr get_copy() override; diff --git a/Element/Utility/T3DC.cpp b/Element/Utility/T3DC.cpp index 93c5c3706..c50c01144 100644 --- a/Element/Utility/T3DC.cpp +++ b/Element/Utility/T3DC.cpp @@ -18,8 +18,6 @@ #include "T3DC.h" #include -unique_ptr T3DC::get_copy() { return make_unique(*this); } - void T3DC::update_transformation() { const auto coord = get_coordinate(element_ptr, 3); const auto t_disp = get_trial_displacement(element_ptr); @@ -34,11 +32,10 @@ void T3DC::update_transformation() { direction_cosine = x_axis / length; } -T3DC::T3DC(const unsigned T) - : T3DL(T) {} - bool T3DC::is_nlgeom() const { return true; } +unique_ptr T3DC::get_copy() { return make_unique(*this); } + mat T3DC::to_global_geometry_mat(const mat& l_mat) const { auto g_mat = to_global_stiffness_mat(-l_mat); diff --git a/Element/Utility/T3DC.h b/Element/Utility/T3DC.h index 8ee6cbdde..f6721dd5e 100644 --- a/Element/Utility/T3DC.h +++ b/Element/Utility/T3DC.h @@ -36,7 +36,7 @@ class T3DC final : public T3DL { void update_transformation() override; public: - explicit T3DC(unsigned = 0); + using T3DL::T3DL; [[nodiscard]] bool is_nlgeom() const override; diff --git a/Element/Utility/T3DL.cpp b/Element/Utility/T3DL.cpp index aa5f5a977..b272608dd 100644 --- a/Element/Utility/T3DL.cpp +++ b/Element/Utility/T3DL.cpp @@ -21,9 +21,6 @@ const span T3DL::IS(0, 2); const span T3DL::JS(3, 5); -T3DL::T3DL(const unsigned T) - : Orientation(T) {} - unique_ptr T3DL::get_copy() { return make_unique(*this); } void T3DL::update_transformation() { @@ -41,6 +38,8 @@ void T3DL::update_transformation() { direction_cosine = x_axis / length; } +OrientationType T3DL::get_orientation_type() const { return OrientationType::T3D; } + vec T3DL::to_local_vec(const vec& g_disp) const { return vec{dot(direction_cosine, g_disp(JS) - g_disp(IS))}; } vec T3DL::to_global_vec(const vec& l_disp) const { diff --git a/Element/Utility/T3DL.h b/Element/Utility/T3DL.h index 7b8893216..296a59436 100644 --- a/Element/Utility/T3DL.h +++ b/Element/Utility/T3DL.h @@ -38,7 +38,9 @@ class T3DL : public Orientation { void update_transformation() override; public: - explicit T3DL(unsigned = 0); + using Orientation::Orientation; + + [[nodiscard]] OrientationType get_orientation_type() const override; unique_ptr get_copy() override; diff --git a/Element/Utility/Utility b/Element/Utility/Utility index 348537e80..9fe71c94c 100644 --- a/Element/Utility/Utility +++ b/Element/Utility/Utility @@ -2,6 +2,8 @@ #include "B2DL.h" #include "B3DC.h" #include "B3DL.h" +#include "B3DOSC.h" +#include "B3DOSL.h" #include "IGA/BSpline.h" #include "IGA/BSplineSurface.h" #include "IGA/BSplineVolume.h" @@ -14,4 +16,4 @@ #include "T2DC.h" #include "T2DL.h" #include "T3DC.h" -#include "T3DL.h" \ No newline at end of file +#include "T3DL.h" diff --git a/Element/Visualisation/CMakeLists.txt b/Element/Visualisation/CMakeLists.txt index f129398d3..4b5d772c9 100644 --- a/Element/Visualisation/CMakeLists.txt +++ b/Element/Visualisation/CMakeLists.txt @@ -1,4 +1,4 @@ set(Visualisation Visualisation/vtkBase.cpp Visualisation/vtkParser.cpp - ) +) diff --git a/Element/Visualisation/Visualisation b/Element/Visualisation/Visualisation index a4d312a31..4290f3b82 100644 --- a/Element/Visualisation/Visualisation +++ b/Element/Visualisation/Visualisation @@ -1,2 +1,2 @@ #include "vtkBase.h" -#include "vtkParser.h" \ No newline at end of file +#include "vtkParser.h" diff --git a/Element/Visualisation/vtkBase.cpp b/Element/Visualisation/vtkBase.cpp index 63817b296..5cafb8741 100644 --- a/Element/Visualisation/vtkBase.cpp +++ b/Element/Visualisation/vtkBase.cpp @@ -15,10 +15,10 @@ * along with this program. If not, see . ******************************************************************************/ -#include "vtkBase.h" - #ifdef SUANPAN_VTK +#include "vtkBase.h" + void vtkBase::Setup() {} void vtkBase::GetData(vtkSmartPointer&, const OutputType) {} diff --git a/Element/Visualisation/vtkBase.h b/Element/Visualisation/vtkBase.h index 71ff5c376..6e2bb4adc 100644 --- a/Element/Visualisation/vtkBase.h +++ b/Element/Visualisation/vtkBase.h @@ -53,7 +53,7 @@ class vtkBase { virtual void Setup(); - virtual void GetData(vtkSmartPointer&, OutputType = OutputType::U); + virtual void GetData(vtkSmartPointer&, OutputType); virtual mat GetData(OutputType); virtual void SetDeformation(vtkSmartPointer&, double); diff --git a/Element/Visualisation/vtkParser.cpp b/Element/Visualisation/vtkParser.cpp index d7aa66cde..97a828abb 100644 --- a/Element/Visualisation/vtkParser.cpp +++ b/Element/Visualisation/vtkParser.cpp @@ -15,6 +15,8 @@ * along with this program. If not, see . ******************************************************************************/ +#ifdef SUANPAN_VTK + // ReSharper disable StringLiteralTypo #include "vtkParser.h" #include @@ -22,8 +24,6 @@ #include #include -#ifdef SUANPAN_VTK - #include VTK_MODULE_INIT(vtkRenderingOpenGL2) // NOLINT(cppcoreguidelines-special-member-functions, hicpp-special-member-functions) VTK_MODULE_INIT(vtkInteractionStyle) // NOLINT(cppcoreguidelines-special-member-functions, hicpp-special-member-functions) @@ -53,7 +53,7 @@ vtkInfo vtk_process(istringstream& command) { if(is_equal(keyword, "scale") && !get_input(command, config.scale)) config.scale = 1.; else if(is_equal(keyword, "deformed")) config.on_deformed = true; else if(is_equal(keyword, "undeformed")) config.on_deformed = false; - else if(is_equal(keyword, "type") && get_input(command, keyword)) config.type = to_list(keyword.c_str()); + else if(is_equal(keyword, "type") && get_input(command, keyword)) config.type = to_token(keyword); else if(is_equal(keyword, "fontsize") && !get_input(command, config.font_size)) config.font_size = 8; else if(is_equal(keyword, "save") && get_input(command, config.file_name)) config.save_file = true; else if(is_equal(keyword, "nobar")) config.colorbar = false; @@ -129,15 +129,11 @@ int vtk_parser(const shared_ptr& domain, istringstream& command) { auto plot_info = vtk_process(command); if(!plot_info.on_deformed) plot_info.scale = 0.; - switch(to_list(vtk_get_name(plot_info.type))) { - case OutputType::U: - case OutputType::V: - case OutputType::A: - domain->insert(make_unique>(std::async(std::launch::async, vtk_plot_node_quantity, std::cref(domain), plot_info))); - break; - default: - domain->insert(make_unique>(std::async(std::launch::async, vtk_plot_element_quantity, std::cref(domain), plot_info))); - } + const auto L = to_token(to_category(plot_info.type)); + + const auto func = OutputType::U == L || OutputType::V == L || OutputType::A == L || OutputType::RF == L || OutputType::DF == L || OutputType::IF == L ? vtk_plot_node_quantity : vtk_plot_element_quantity; + + domain->insert(make_unique>(std::async(std::launch::async, func, std::cref(domain), plot_info))); return SUANPAN_SUCCESS; } @@ -146,7 +142,7 @@ void vtk_plot_node_quantity(const shared_ptr& domain, vtkInfo config auto& t_node_pool = domain->get_node_pool(); auto& t_element_pool = domain->get_element_pool(); - config.title_name = "Plotting Nodal Quantity " + string(to_char(config.type)); + config.title_name = "Plotting Nodal Quantity " + string(to_name(config.type)); auto max_node = static_cast(t_node_pool.size()); for(const auto& I : t_node_pool) max_node = std::max(max_node, I->get_tag()); @@ -163,7 +159,7 @@ void vtk_plot_node_quantity(const shared_ptr& domain, vtkInfo config data->SetTuple6(I, 0., 0., 0., 0., 0., 0.); } - data->SetName(vtk_get_name(config.type)); + data->SetName(to_category(config.type)); data->SetComponentName(0, "1"); data->SetComponentName(1, "2"); data->SetComponentName(2, "3"); @@ -175,7 +171,7 @@ void vtk_plot_node_quantity(const shared_ptr& domain, vtkInfo config grid->Allocate(static_cast(t_element_pool.size())); std::ranges::for_each(t_element_pool, [&](const shared_ptr& t_element) { t_element->SetDeformation(node, config.scale); - t_element->GetData(data, to_list(vtk_get_name(config.type))); + t_element->GetData(data, to_token(to_category(config.type))); if(const auto t_cell = t_element->GetCell(); nullptr != t_cell) grid->InsertNextCell(t_cell->GetCellType(), t_cell->GetPointIds()); }); @@ -183,19 +179,19 @@ void vtk_plot_node_quantity(const shared_ptr& domain, vtkInfo config if(config.store_ptr) { grid->GetPointData()->SetScalars(data); - grid->GetPointData()->SetActiveScalars(vtk_get_name(config.type)); + grid->GetPointData()->SetActiveScalars(to_category(config.type)); config.grid_ptr = grid; } else if(config.save_file) { grid->GetPointData()->SetScalars(data); - grid->GetPointData()->SetActiveScalars(vtk_get_name(config.type)); + grid->GetPointData()->SetActiveScalars(to_category(config.type)); domain->insert(make_unique>(std::async(std::launch::async, vtk_save, std::move(grid), std::move(config)))); } else { const auto sub_data = vtkSmartPointer::New(); sub_data->SetNumberOfTuples(data->GetNumberOfTuples()); - sub_data->CopyComponent(0, data, vtk_get_index(config.type)); + sub_data->CopyComponent(0, data, to_index(config.type)); grid->GetPointData()->SetScalars(sub_data); @@ -207,7 +203,7 @@ void vtk_plot_element_quantity(const shared_ptr& domain, vtkInfo con auto& t_node_pool = domain->get_node_pool(); auto& t_element_pool = domain->get_element_pool(); - config.title_name = "Plotting Element Quantity " + string(to_char(config.type)); + config.title_name = "Plotting Element Quantity " + string(to_name(config.type)); auto max_node = static_cast(t_node_pool.size()); for(const auto& I : t_node_pool) max_node = std::max(max_node, I->get_tag()); @@ -224,7 +220,7 @@ void vtk_plot_element_quantity(const shared_ptr& domain, vtkInfo con data->SetTuple6(I, 0., 0., 0., 0., 0., 0.); } - data->SetName(vtk_get_name(config.type)); + data->SetName(to_category(config.type)); data->SetComponentName(0, "1"); data->SetComponentName(1, "2"); data->SetComponentName(2, "3"); @@ -242,7 +238,7 @@ void vtk_plot_element_quantity(const shared_ptr& domain, vtkInfo con t_element->SetDeformation(node, config.scale); auto& t_encoding = t_element->get_node_encoding(); counter(t_encoding) += 1.; - if(const auto t_data = t_element->GetData(to_list(vtk_get_name(config.type))); !t_data.empty()) tensor.cols(t_encoding) += t_data; + if(const auto t_data = t_element->GetData(to_token(to_category(config.type))); !t_data.empty()) tensor.cols(t_encoding) += t_data; if(const auto t_cell = t_element->GetCell(); nullptr != t_cell) grid->InsertNextCell(t_cell->GetCellType(), t_cell->GetPointIds()); }); @@ -256,19 +252,19 @@ void vtk_plot_element_quantity(const shared_ptr& domain, vtkInfo con if(config.store_ptr) { grid->GetPointData()->SetScalars(data); - grid->GetPointData()->SetActiveScalars(vtk_get_name(config.type)); + grid->GetPointData()->SetActiveScalars(to_category(config.type)); config.grid_ptr = grid; } else if(config.save_file) { grid->GetPointData()->SetScalars(data); - grid->GetPointData()->SetActiveScalars(vtk_get_name(config.type)); + grid->GetPointData()->SetActiveScalars(to_category(config.type)); domain->insert(make_unique>(std::async(std::launch::async, vtk_save, std::move(grid), std::move(config)))); } else { const auto sub_data = vtkSmartPointer::New(); sub_data->SetNumberOfTuples(data->GetNumberOfTuples()); - sub_data->CopyComponent(0, data, vtk_get_index(config.type)); + sub_data->CopyComponent(0, data, to_index(config.type)); grid->GetPointData()->SetScalars(sub_data); @@ -276,245 +272,4 @@ void vtk_plot_element_quantity(const shared_ptr& domain, vtkInfo con } } -int vtk_get_index(const OutputType config) { - if(config == OutputType::S11) return 0; - if(config == OutputType::S22) return 1; - if(config == OutputType::S33) return 2; - if(config == OutputType::S12) return 3; - if(config == OutputType::S23) return 4; - if(config == OutputType::S13) return 5; - if(config == OutputType::E11) return 0; - if(config == OutputType::E22) return 1; - if(config == OutputType::E33) return 2; - if(config == OutputType::E12) return 3; - if(config == OutputType::E23) return 4; - if(config == OutputType::E13) return 5; - if(config == OutputType::EE11) return 0; - if(config == OutputType::EE22) return 1; - if(config == OutputType::EE33) return 2; - if(config == OutputType::EE12) return 3; - if(config == OutputType::EE23) return 4; - if(config == OutputType::EE13) return 5; - if(config == OutputType::PE11) return 0; - if(config == OutputType::PE22) return 1; - if(config == OutputType::PE33) return 2; - if(config == OutputType::PE12) return 3; - if(config == OutputType::PE23) return 4; - if(config == OutputType::PE13) return 5; - if(config == OutputType::PE11) return 0; - if(config == OutputType::PE22) return 1; - if(config == OutputType::PE33) return 2; - if(config == OutputType::PE12) return 3; - if(config == OutputType::PE23) return 4; - if(config == OutputType::PE13) return 5; - if(config == OutputType::U1) return 0; - if(config == OutputType::U2) return 1; - if(config == OutputType::U3) return 2; - if(config == OutputType::U4) return 3; - if(config == OutputType::U5) return 4; - if(config == OutputType::U6) return 5; - if(config == OutputType::UR1) return 3; - if(config == OutputType::UR2) return 4; - if(config == OutputType::UR3) return 5; - if(config == OutputType::V1) return 0; - if(config == OutputType::V2) return 1; - if(config == OutputType::V3) return 2; - if(config == OutputType::V4) return 3; - if(config == OutputType::V5) return 4; - if(config == OutputType::V6) return 5; - if(config == OutputType::VR1) return 3; - if(config == OutputType::VR2) return 4; - if(config == OutputType::VR3) return 5; - if(config == OutputType::A1) return 0; - if(config == OutputType::A2) return 1; - if(config == OutputType::A3) return 2; - if(config == OutputType::A4) return 3; - if(config == OutputType::A5) return 4; - if(config == OutputType::A6) return 5; - if(config == OutputType::AR1) return 3; - if(config == OutputType::AR2) return 4; - if(config == OutputType::AR3) return 5; - - return 0; -} - -const char* vtk_get_name(const OutputType P) { - switch(P) { - case OutputType::SD: - return "SD"; - case OutputType::ED: - return "ED"; - case OutputType::VD: - return "VD"; - case OutputType::SS: - return "SS"; - case OutputType::ES: - return "ES"; - case OutputType::VS: - return "VS"; - case OutputType::S: - case OutputType::S11: - case OutputType::S22: - case OutputType::S33: - case OutputType::S12: - case OutputType::S23: - case OutputType::S13: - return "S"; - case OutputType::SINT: - return "SINT"; - case OutputType::HYDRO: - return "HYDRO"; - case OutputType::E: - case OutputType::E11: - case OutputType::E22: - case OutputType::E33: - case OutputType::E12: - case OutputType::E23: - case OutputType::E13: - return "E"; - case OutputType::EEQ: - return "EEQ"; - case OutputType::EINT: - return "EINT"; - case OutputType::SP: - case OutputType::SP1: - case OutputType::SP2: - case OutputType::SP3: - return "SP"; - case OutputType::EP: - case OutputType::EP1: - case OutputType::EP2: - case OutputType::EP3: - return "EP"; - case OutputType::SINV: - return "SINV"; - case OutputType::MISES: - return "MISES"; - case OutputType::NMISES: - return "NMISES"; - case OutputType::TRESC: - return "TRESC"; - case OutputType::EE: - case OutputType::EE11: - case OutputType::EE22: - case OutputType::EE33: - case OutputType::EE12: - case OutputType::EE23: - case OutputType::EE13: - return "EE"; - case OutputType::EEP: - case OutputType::EEP1: - case OutputType::EEP2: - case OutputType::EEP3: - return "EEP"; - case OutputType::EEEQ: - return "EEEQ"; - case OutputType::PE: - case OutputType::PE11: - case OutputType::PE22: - case OutputType::PE33: - case OutputType::PE12: - case OutputType::PE23: - case OutputType::PE13: - return "PE"; - case OutputType::PEP: - return "PEP"; - case OutputType::PEEQ: - return "PEEQ"; - - case OutputType::U: - case OutputType::UT: - case OutputType::UR: - case OutputType::U1: - case OutputType::U2: - case OutputType::U3: - case OutputType::UR1: - case OutputType::UR2: - case OutputType::UR3: - case OutputType::U4: - case OutputType::U5: - case OutputType::U6: - return "U"; - case OutputType::V: - case OutputType::VT: - case OutputType::VR: - case OutputType::V1: - case OutputType::V2: - case OutputType::V3: - case OutputType::VR1: - case OutputType::VR2: - case OutputType::VR3: - case OutputType::V4: - case OutputType::V5: - case OutputType::V6: - return "V"; - case OutputType::A: - case OutputType::AT: - case OutputType::AR: - case OutputType::A1: - case OutputType::A2: - case OutputType::A3: - case OutputType::AR1: - case OutputType::AR2: - case OutputType::AR3: - case OutputType::A4: - case OutputType::A5: - case OutputType::A6: - return "A"; - - case OutputType::RF: - case OutputType::RF1: - case OutputType::RF2: - case OutputType::RF3: - return "RF"; - case OutputType::DF: - case OutputType::DF1: - case OutputType::DF2: - case OutputType::DF3: - case OutputType::DF4: - case OutputType::DF5: - case OutputType::DF6: - return "DF"; - case OutputType::RM: - case OutputType::RM1: - case OutputType::RM2: - case OutputType::RM3: - return "RM"; - case OutputType::RT: - return "RT"; - case OutputType::DAMAGE: - return "DAMAGE"; - case OutputType::DT: - return "DT"; - case OutputType::DC: - return "DC"; - case OutputType::KAPPAT: - return "KAPPAT"; - case OutputType::KAPPAC: - return "KAPPAC"; - case OutputType::VF: - return "VF"; - - case OutputType::REBARE: - return "REBARE"; - case OutputType::REBARS: - return "REBARS"; - case OutputType::RESULTANT: - return "RESULTANT"; - case OutputType::AXIAL: - return "AXIAL"; - case OutputType::SHEAR: - return "SHEAR"; - case OutputType::MOMENT: - return "MOMENT"; - case OutputType::TORSION: - return "TORSION"; - case OutputType::LITR: - return "LITR"; - - default: - return "NL"; - } -} - #endif diff --git a/Element/Visualisation/vtkParser.h b/Element/Visualisation/vtkParser.h index bf341e451..82aa7cf37 100644 --- a/Element/Visualisation/vtkParser.h +++ b/Element/Visualisation/vtkParser.h @@ -56,10 +56,6 @@ void vtk_plot_node_quantity(const shared_ptr&, vtkInfo); void vtk_plot_element_quantity(const shared_ptr&, vtkInfo); -int vtk_get_index(OutputType); - -const char* vtk_get_name(OutputType); - #else inline int vtk_parser(const shared_ptr&, istringstream&) { return 0; } diff --git a/Enhancement/Resharper.DotSettings b/Enhancement/Resharper.DotSettings index 5e2d5b470..3a36828d1 100644 --- a/Enhancement/Resharper.DotSettings +++ b/Enhancement/Resharper.DotSettings @@ -1,21 +1,26 @@  - <?xml version="1.0" encoding="utf-16"?><Profile name="Full Cleanup"><XMLReformatCode>True</XMLReformatCode><CppAddOverrideSpecifier>True</CppAddOverrideSpecifier><CppAddTypenameTemplateKeywords>True</CppAddTypenameTemplateKeywords><CppReplaceImportDirective>True</CppReplaceImportDirective><CppJoinDeclarationAndAssignmentDescriptor>True</CppJoinDeclarationAndAssignmentDescriptor><CppMakeMethodConst>True</CppMakeMethodConst><CppMakeMethodStatic>True</CppMakeMethodStatic><CppRemoveElseKeyword>True</CppRemoveElseKeyword><CppRemoveRedundantMemberInitializerDescriptor>True</CppRemoveRedundantMemberInitializerDescriptor><CppRemoveRedundantParentheses>True</CppRemoveRedundantParentheses><CppShortenQualifiedName>True</CppShortenQualifiedName><CppDeleteRedundantSpecifier>True</CppDeleteRedundantSpecifier><CppRemoveStatement>True</CppRemoveStatement><CppDeleteRedundantTypenameTemplateKeywords>True</CppDeleteRedundantTypenameTemplateKeywords><CppRemoveUnreachableCode>True</CppRemoveUnreachableCode><CppRemoveUnusedIncludes>True</CppRemoveUnusedIncludes><CppReplaceExpressionWithBooleanConst>True</CppReplaceExpressionWithBooleanConst><CppMakeIfConstexpr>True</CppMakeIfConstexpr><CppMakePostfixOperatorPrefix>True</CppMakePostfixOperatorPrefix><CppChangeSmartPointerToMakeFunction>True</CppChangeSmartPointerToMakeFunction><CppReplaceThrowWithRethrowFix>True</CppReplaceThrowWithRethrowFix><CppReplaceExpressionWithNullptr>True</CppReplaceExpressionWithNullptr><CppSortMemberInitializers>True</CppSortMemberInitializers><CppClangTidyCleanupDescriptor android-cloexec-accept="true" android-cloexec-accept4="true" android-cloexec-creat="true" android-cloexec-dup="true" android-cloexec-epoll-create="true" android-cloexec-epoll-create1="true" android-cloexec-fopen="true" android-cloexec-inotify-init="true" android-cloexec-inotify-init1="true" android-cloexec-memfd-create="true" android-cloexec-open="true" android-cloexec-socket="true" boost-use-to-string="true" bugprone-argument-comment="true" bugprone-bool-pointer-implicit-conversion="true" bugprone-copy-constructor-init="true" bugprone-inaccurate-erase="true" bugprone-misplaced-operator-in-strlen-in-alloc="true" bugprone-move-forwarding-reference="true" bugprone-suspicious-memset-usage="true" bugprone-virtual-near-miss="true" cert-dcl03-c="true" cert-dcl21-cpp="true" cppcoreguidelines-pro-bounds-constant-array-index="true" cppcoreguidelines-pro-type-cstyle-cast="true" cppcoreguidelines-pro-type-member-init="true" cppcoreguidelines-pro-type-static-cast-downcast="true" fuchsia-default-arguments="true" google-build-explicit-make-pair="true" google-explicit-constructor="true" google-readability-casting="true" google-readability-redundant-smartptr-get="true" google-readability-todo="true" llvm-header-guard="true" llvm-include-order="true" llvm-twine-local="true" misc-definitions-in-headers="true" misc-macro-parentheses="true" misc-static-assert="true" misc-string-compare="true" misc-string-integer-assignment="true" misc-suspicious-string-compare="true" misc-uniqueptr-reset-release="true" misc-unused-parameters="true" misc-unused-raii="true" modernize-avoid-bind="true" modernize-deprecated-headers="true" modernize-loop-convert="true" modernize-make-shared="true" modernize-make-unique="true" modernize-pass-by-value="true" modernize-raw-string-literal="true" modernize-replace-auto-ptr="true" modernize-replace-random-shuffle="true" modernize-return-braced-init-list="true" modernize-shrink-to-fit="true" modernize-use-auto="true" modernize-use-bool-literals="true" modernize-use-default-member-init="true" modernize-use-emplace="true" modernize-use-equals-default="true" modernize-use-equals-delete="true" modernize-use-noexcept="true" modernize-use-nullptr="true" modernize-use-override="true" modernize-use-using="true" objc-property-declaration="true" performance-faster-string-find="true" performance-inefficient-algorithm="true" performance-inefficient-vector-operation="true" performance-type-promotion-in-math-fn="true" performance-unnecessary-value-param="true" readability-braces-around-statements="true" readability-container-size-empty="true" readability-identifier-naming="true" readability-implicit-bool-conversion="true" readability-inconsistent-declaration-parameter-name="true" readability-misplaced-array-index="true" readability-named-parameter="true" readability-non-const-parameter="true" readability-redundant-smartptr-get="true" readability-redundant-string-cstr="true" readability-redundant-string-init="true" readability-simplify-boolean-expr="true" readability-static-accessed-through-instance="true" readability-uniqueptr-delete-release="true" other-fixits="true" /><CppReformatCode>True</CppReformatCode></Profile> - Built-in: Reformat Code + NONE END_OF_LINE 1 ON_SINGLE_LINE END_OF_LINE TOGETHER_SAME_LINE + END_OF_LINE ON_SINGLE_LINE ON_SINGLE_LINE True END_OF_LINE 1 1 + False + ON_SINGLE_LINE + ON_SINGLE_LINE True + ON_SINGLE_LINE LINE_BREAK END_OF_LINE END_OF_LINE + END_OF_LINE ON_SINGLE_LINE LINE_BREAK ON_SINGLE_LINE @@ -24,17 +29,17 @@ ON_SINGLE_LINE ON_SINGLE_LINE END_OF_LINE - CHOP_ALWAYS + True + + + CHOP_IF_LONG + True + + CHOP_IF_LONG + CHOP_IF_LONG 5000 False - False - False - True - False - True - True - False - True - True - False + True + False + \ No newline at end of file diff --git a/Enhancement/pack.py b/Enhancement/pack.py index 913394663..9172abc0c 100644 --- a/Enhancement/pack.py +++ b/Enhancement/pack.py @@ -1,7 +1,7 @@ +import hashlib import os import shutil import zipfile -import hashlib fn = 'tools' diff --git a/Enhancement/suanPan.iss b/Enhancement/suanPan.iss index 6589b52cb..28fb1ac61 100644 --- a/Enhancement/suanPan.iss +++ b/Enhancement/suanPan.iss @@ -2,7 +2,7 @@ ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! #define MyAppName "suanPan" -#define MyAppVersion "3.1" +#define MyAppVersion "3.2" #define MyAppPublisher "Theodore Chang" #define MyAppURL "https://github.com/TLCFEM/suanPan" #define MyAppExeName "suanPan.exe" diff --git a/Enhancement/suanPan.sublime-completions b/Enhancement/suanPan.sublime-completions index b59876451..d822f2bc4 100644 --- a/Enhancement/suanPan.sublime-completions +++ b/Enhancement/suanPan.sublime-completions @@ -1,15211 +1,14635 @@ { - "completions":[ + "completions": [ { - "contents":"section NZ2D 1000WB215 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 1000WB215", - "kind":"keyword", - "trigger":"1000WB215" + "trigger": "AFC", + "details": "asymmetrical friction connection", + "kind": "type", + "contents": "material AFC ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:(7)} ${8:(8)}\n# (1) int, unique tag\n# (2) double, elastic modulus\n# (3) double, tension yield stress\n# (4) double, tension hardening modulus\n# (5) double, tension unloading modulus\n# (6) double, compression yield stress\n# (7) double, compression hardening modulus\n# (8) double, compression unloading modulus" }, { - "contents":"section NZ3D 1000WB215 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 1000WB215", - "kind":"keyword", - "trigger":"1000WB215" + "trigger": "AFC01", + "details": "asymmetrical friction connection", + "kind": "type", + "contents": "material AFC01 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:(7)} ${8:(8)}\n# (1) int, unique tag\n# (2) double, elastic modulus\n# (3) double, tension yield stress\n# (4) double, tension hardening modulus\n# (5) double, tension unloading modulus\n# (6) double, compression yield stress\n# (7) double, compression hardening modulus\n# (8) double, compression unloading modulus" }, { - "contents":"section NZ2D 1000WB258 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 1000WB258", - "kind":"keyword", - "trigger":"1000WB258" + "trigger": "AFC02", + "details": "symmetrical friction connection", + "kind": "type", + "contents": "material AFC02 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)}\n# (1) int, unique tag\n# (2) double, elastic modulus\n# (3) double, yield stress\n# (4) double, hardening modulus\n# (5) double, unloading modulus" }, { - "contents":"section NZ3D 1000WB258 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 1000WB258", - "kind":"keyword", - "trigger":"1000WB258" + "trigger": "AFC03", + "details": "asymmetrical friction connection", + "kind": "type", + "contents": "material AFC03 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:(7)} ${8:(8)} ${9:[9]} ${10:[10]}\n# (1) int, unique tag\n# (2) double, elastic modulus\n# (3) double, tension yield stress\n# (4) double, tension hardening modulus\n# (5) double, tension unloading modulus\n# (6) double, compression yield stress\n# (7) double, compression hardening modulus\n# (8) double, compression unloading modulus\n# [9] double, non-negative degradation paramater, default: 0.0\n# [10] double, density, default: 0.0" }, { - "contents":"section NZ2D 1000WB296 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 1000WB296", - "kind":"keyword", - "trigger":"1000WB296" + "trigger": "AFCN", + "details": "nonlinear version of afc", + "kind": "type", + "contents": "material AFCN ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:(7)} ${8:(8)} ${9:[9]} ${10:[10]}\n# (1) int, unique tag\n# (2) double, elastic modulus\n# (3) double, tension yield stress\n# (4) double, tension hardening modulus\n# (5) double, tension unloading modulus\n# (6) double, compression yield stress\n# (7) double, compression hardening modulus\n# (8) double, compression unloading modulus\n# [9] double, non-negative degradation paramater, default: 0.0\n# [10] double, density, default: 0.0" }, { - "contents":"section NZ3D 1000WB296 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 1000WB296", - "kind":"keyword", - "trigger":"1000WB296" + "trigger": "AFCS", + "details": "symmetrical friction connection", + "kind": "type", + "contents": "material AFC02 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)}\n# (1) int, unique tag\n# (2) double, elastic modulus\n# (3) double, yield stress\n# (4) double, hardening modulus\n# (5) double, unloading modulus" }, { - "contents":"section NZ2D 1000WB322 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 1000WB322", - "kind":"keyword", - "trigger":"1000WB322" + "trigger": "AICN", + "details": "aicn solver", + "kind": "type", + "contents": "solver AICN ${1:(1)} ${2:[2]}\n# (1) int, unique solver tag\n# [2] double, approx. length, default: 1.0" }, { - "contents":"section NZ3D 1000WB322 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 1000WB322", - "kind":"keyword", - "trigger":"1000WB322" + "trigger": "AbsDisp", + "details": "converger absdisp", + "kind": "keyword", + "contents": "converger AbsDisp ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]}\n# (1) int, unique tag\n# (2) double, tolerance\n# [3] int, maximum iteration, default: 10\n# [4] bool string, print switch, default: false" }, { - "contents":"section NZ2D 100UC14.8 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 100UC14.8", - "kind":"keyword", - "trigger":"100UC14.8" + "trigger": "AbsError", + "details": "converger abserror", + "kind": "keyword", + "contents": "converger AbsError ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]}\n# (1) int, unique tag\n# (2) double, tolerance\n# [3] int, maximum iteration, default: 10\n# [4] bool string, print switch, default: false" }, { - "contents":"section NZ3D 100UC14.8 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 100UC14.8", - "kind":"keyword", - "trigger":"100UC14.8" + "trigger": "AbsIncreAcc", + "details": "converger absincreacc", + "kind": "keyword", + "contents": "converger AbsIncreAcc ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]}\n# (1) int, unique tag\n# (2) double, tolerance\n# [3] int, maximum iteration, default: 10\n# [4] bool string, print switch, default: false" }, { - "contents":"section NZ2D 100X3.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 100X3.0SHS", - "kind":"keyword", - "trigger":"100X3.0SHS" + "trigger": "AbsIncreDisp", + "details": "converger absincredisp", + "kind": "keyword", + "contents": "converger AbsIncreDisp ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]}\n# (1) int, unique tag\n# (2) double, tolerance\n# [3] int, maximum iteration, default: 10\n# [4] bool string, print switch, default: false" }, { - "contents":"section NZ3D 100X3.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 100X3.0SHS", - "kind":"keyword", - "trigger":"100X3.0SHS" + "trigger": "AbsIncreEnergy", + "details": "converger absincreenergy", + "kind": "keyword", + "contents": "converger AbsIncreEnergy ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]}\n# (1) int, unique tag\n# (2) double, tolerance\n# [3] int, maximum iteration, default: 10\n# [4] bool string, print switch, default: false" }, { - "contents":"section NZ2D 100X4.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 100X4.0SHS", - "kind":"keyword", - "trigger":"100X4.0SHS" + "trigger": "AbsResidual", + "details": "converger absresidual", + "kind": "keyword", + "contents": "converger AbsResidual ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]}\n# (1) int, unique tag\n# (2) double, tolerance\n# [3] int, maximum iteration, default: 10\n# [4] bool string, print switch, default: false" }, { - "contents":"section NZ3D 100X4.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 100X4.0SHS", - "kind":"keyword", - "trigger":"100X4.0SHS" + "trigger": "Allman", + "details": "allman's triangle with drilling dofs", + "kind": "type", + "contents": "element Allman ${1:(1)} ${2:(2...4)} ${5:(5)} ${6:[6]}\n# (1) int, unique element tag\n# (2...4) int, node i, j, k\n# (5) int, material tag\n# [6] double, thickness, default: 1.0" }, { - "contents":"section NZ2D 100X5.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 100X5.0SHS", - "kind":"keyword", - "trigger":"100X5.0SHS" + "trigger": "ArcLength", + "details": "arc-length step", + "kind": "type", + "contents": "step arclength ${1:(1)}\n# (1) int, unique step tag" }, { - "contents":"section NZ3D 100X5.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 100X5.0SHS", - "kind":"keyword", - "trigger":"100X5.0SHS" + "trigger": "ArmstrongFrederick", + "details": "armstrong frederick material", + "kind": "type", + "contents": "material ArmstrongFrederick ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:(7)} ${8:[(8) (9)...]} ${10:[10]}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# (3) double, poissons ratio\n# (4) double, yield stress\n# (5) double, saturated stress\n# (6) double, linear hardening modulus\n# (7) double, m\n# (8) double, a\n# (9) double, b\n# [10] double, density, default: 0.0" }, { - "contents":"section NZ2D 100X50X2.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 100X50X2.0RHS", - "kind":"keyword", - "trigger":"100X50X2.0RHS" + "trigger": "ArmstrongFrederick1D", + "details": "uniaxial armstrong frederick material", + "kind": "type", + "contents": "material ArmstrongFrederick1D ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:[(7) (8)...]} ${9:[9]}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# (3) double, yield stress\n# (4) double, saturated stress\n# (5) double, linear hardening modulus\n# (6) double, m\n# (7) double, a\n# (8) double, b\n# [9] double, density, default: 0.0" }, { - "contents":"section NZ3D 100X50X2.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 100X50X2.0RHS", - "kind":"keyword", - "trigger":"100X50X2.0RHS" + "trigger": "AsymmElastic1D", + "details": "uniaxial asymmetric elastic material", + "kind": "type", + "contents": "material AsymmElastic1D ${1:(1)} ${2:(2)} ${3:(3)} ${4:[4]}\n# (1) int, unique material tag\n# (2) double, tension elastic modulus\n# (3) double, compression elastic modulus\n# [4] double, density, default: 0.0" }, { - "contents":"section NZ2D 100X50X2.5RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 100X50X2.5RHS", - "kind":"keyword", - "trigger":"100X50X2.5RHS" + "trigger": "Axisymmetric", + "details": "axisymmetric wrapper", + "kind": "type", + "contents": "material Axisymmetric ${1:(1)} ${2:(2)}\n# (1) int, unique material tag\n# (2) int, 3D material tag" }, { - "contents":"section NZ3D 100X50X2.5RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 100X50X2.5RHS", - "kind":"keyword", - "trigger":"100X50X2.5RHS" + "trigger": "AxisymmetricElastic", + "details": "axisymmetric elastic material", + "kind": "type", + "contents": "material AxisymmetricElastic ${1:(1)} ${2:(2)} ${3:(3)} ${4:[4]}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# (3) double, poissons ratio\n# [4] double, density, default: 0.0" }, { - "contents":"section NZ2D 100X50X3.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 100X50X3.0RHS", - "kind":"keyword", - "trigger":"100X50X3.0RHS" + "trigger": "B21", + "details": "2d displacement based bernoulli beam", + "kind": "type", + "contents": "element B21 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5]} ${6:[6]}\n# (1) int, unique element tag\n# (2) int, node i\n# (3) int, node j\n# (4) int, section tag\n# [5] int, number of integration points, default: 6\n# [6] bool string, nonlinear geometry switch, default: false" }, { - "contents":"section NZ3D 100X50X3.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 100X50X3.0RHS", - "kind":"keyword", - "trigger":"100X50X3.0RHS" + "trigger": "B21EH", + "details": "2d displacement based bernoulli beam with end moment release", + "kind": "type", + "contents": "element B21EH ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5]} ${6:[6]}\n# (1) int, unique element tag\n# (2) int, node i\n# (3) int, node j\n# (4) int, section tag\n# [5] int, number of integration points, default: 6\n# [6] bool string, nonlinear geometry switch, default: false" }, { - "contents":"section NZ2D 100X50X3.5RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 100X50X3.5RHS", - "kind":"keyword", - "trigger":"100X50X3.5RHS" + "trigger": "B21EL", + "details": "2d displacement based bernoulli beam with end moment release", + "kind": "type", + "contents": "element B21EL ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5]} ${6:[6]}\n# (1) int, unique element tag\n# (2) int, node i\n# (3) int, node j\n# (4) int, section tag\n# [5] int, number of integration points, default: 6\n# [6] bool string, nonlinear geometry switch, default: false" }, { - "contents":"section NZ3D 100X50X3.5RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 100X50X3.5RHS", - "kind":"keyword", - "trigger":"100X50X3.5RHS" + "trigger": "B21H", + "details": "2d displacement based bernoulli beam with lumped end hinges", + "kind": "type", + "contents": "element B21H ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5]} ${6:[6]}\n# (1) int, unique element tag\n# (2) int, node i\n# (3) int, node j\n# (4) int, section tag\n# [5] double, normalized length of each end hinge, default: 0.2\n# [6] bool string, nonlinear geometry switch, default: false" }, { - "contents":"section NZ2D 100X50X4.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 100X50X4.0RHS", - "kind":"keyword", - "trigger":"100X50X4.0RHS" + "trigger": "B31", + "details": "3d displacement based bernoulli beam", + "kind": "type", + "contents": "element B31 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:[6]} ${7:[7]}\n# (1) int, unique element tag\n# (2) int, node i\n# (3) int, node j\n# (4) int, section tag\n# (5) int, orientation tag\n# [6] int, number of integration points, default: 5\n# [7] bool string, nonlinear geometry switch, default: false" }, { - "contents":"section NZ3D 100X50X4.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 100X50X4.0RHS", - "kind":"keyword", - "trigger":"100X50X4.0RHS" + "trigger": "B31OS", + "details": "3d displacement based beam with open section", + "kind": "type", + "contents": "element B31OS ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:[6]} ${7:[7]}\n# (1) int, unique element tag\n# (2) int, node i\n# (3) int, node j\n# (4) int, section tag\n# (5) int, orientation tag\n# [6] int, number of integration points, default: 5\n# [7] bool string, nonlinear geometry switch, default: false" }, { - "contents":"section NZ2D 100X50X5.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 100X50X5.0RHS", - "kind":"keyword", - "trigger":"100X50X5.0RHS" + "trigger": "B3DC", + "details": "corotational transformation for 3d beam elements", + "kind": "keyword", + "contents": "orientation B3DC ${1:(1)} ${2:(2..4)}\n# (1) int, unique orientation tag\n# (2..4) double, three components of local z axis" }, { - "contents":"section NZ3D 100X50X5.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 100X50X5.0RHS", - "kind":"keyword", - "trigger":"100X50X5.0RHS" + "trigger": "B3DL", + "details": "linear transformation for 3d beam elements", + "kind": "keyword", + "contents": "orientation B3DL ${1:(1)} ${2:(2..4)}\n# (1) int, unique orientation tag\n# (2..4) double, three components of local z axis" }, { - "contents":"section NZ2D 100X50X6.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 100X50X6.0RHS", - "kind":"keyword", - "trigger":"100X50X6.0RHS" + "trigger": "B3DOSC", + "details": "corotational transformation for 3d beam elements with open sections", + "kind": "keyword", + "contents": "orientation B3DOSC ${1:(1)} ${2:(2..4)}\n# (1) int, unique orientation tag\n# (2..4) double, three components of local z axis" }, { - "contents":"section NZ3D 100X50X6.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 100X50X6.0RHS", - "kind":"keyword", - "trigger":"100X50X6.0RHS" + "trigger": "B3DOSL", + "details": "linear transformation for 3d beam elements with open sections", + "kind": "keyword", + "contents": "orientation B3DOSL ${1:(1)} ${2:(2..4)}\n# (1) int, unique orientation tag\n# (2..4) double, three components of local z axis" }, { - "contents":"section NZ2D 100X6.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 100X6.0SHS", - "kind":"keyword", - "trigger":"100X6.0SHS" + "trigger": "BICGSTAB", + "details": "bicgstab solver", + "kind": "keyword", + "contents": "set system_solver BICGSTAB" }, { - "contents":"section NZ3D 100X6.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 100X6.0SHS", - "kind":"keyword", - "trigger":"100X6.0SHS" + "trigger": "BWBN", + "details": "bouc-wen-baber-noori model", + "kind": "type", + "contents": "material BWBN ${1:(1)} ${2:[2...18]}\n# (1) int, unique material tag\n# [2] double, elastic modulus, default: 2E5\n# [3] double, yield stress, default: 4E2\n# [4] double, hardening ratio, default: 1E-2\n# [5] double, beta (>0), default: 0.5\n# [6] double, exponent n (>0, normally >=1), default: 1.0\n# [7] double, initial \\nu (>0), default: 1.0\n# [8] double, slope of \\nu (>0), default: 0.0\n# [9] double, initial eta (>0), default: 1.0\n# [10] double, slope of eta (>0), default: 0.0\n# [11] double, initial phi (>0), default: 1.0\n# [12] double, slope of phi (>0), default: 0.0\n# [13] double, zeta ${1>zeta>0:(1>zeta>0)}, default: 0.0\n# [14] double, slope of A (>0), default: 0.0\n# [15] double, p (>0), default: 0.0\n# [16] double, q (>0), default: 0.0\n# [17] double, lambda (>0), default: 1.0\n# [18] double, density, default: 0.0" }, { - "contents":"section NZ2D 100X9.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 100X9.0SHS", - "kind":"keyword", - "trigger":"100X9.0SHS" + "trigger": "Bar2D", + "details": "2d reinforcing bar section", + "kind": "type", + "contents": "section Bar2D ${1:(1)} ${2:(2)} ${3:(3)} ${4:[4]}\n# (1) int, unique section tag\n# (2) double, area\n# (3) int, material tag\n# [4] double, eccentricity, default: 0.0" }, { - "contents":"section NZ3D 100X9.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 100X9.0SHS", - "kind":"keyword", - "trigger":"100X9.0SHS" + "trigger": "Bar3D", + "details": "3d reinforcing bar section", + "kind": "type", + "contents": "section Bar3D ${1:(1)} ${2:(2)} ${3:(3)} ${4:[4]} ${5:[5]}\n# (1) int, unique section tag\n# (2) double, area\n# (3) int, material tag\n# [4] double, eccentricity along y axis, default: 0.0\n# [5] double, eccentricity along z axis, default: 0.0" }, { - "contents":"section NZ2D 101.6X2.6CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 101.6X2.6CHS", - "kind":"keyword", - "trigger":"101.6X2.6CHS" + "trigger": "BatheExplicit", + "details": "explicit bathe time integration method", + "kind": "keyword", + "contents": "integrator BatheExplicit ${1:(1)} ${2:(2)}\n# (1) int, unique integrator tag\n# [2] double, spectral radius, default: 0.5" }, { - "contents":"section NZ3D 101.6X2.6CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 101.6X2.6CHS", - "kind":"keyword", - "trigger":"101.6X2.6CHS" + "trigger": "BatheTwoStep", + "details": "two-step bathe time integration method", + "kind": "keyword", + "contents": "integrator BatheTwoStep ${1:(1)} ${2:(2)} ${3:(3)}\n# (1) int, unique integrator tag\n# [2] double, spectral radius, default: 0\n# [3] double, sub-step size, default: 0.5" }, { - "contents":"section NZ2D 101.6X3.2CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 101.6X3.2CHS", - "kind":"keyword", - "trigger":"101.6X3.2CHS" + "trigger": "Bilinear1D", + "details": "uniaxial bilinear material", + "kind": "type", + "contents": "material Bilinear1D ${1:(1)} ${2:(2)} ${3:(3)} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# (3) double, initial yield stress\n# [4] double, hardening ratio, default: 0.0\n# [5] double, beta, default: 1.0\n# [6] double, density, default: 0.0" }, { - "contents":"section NZ3D 101.6X3.2CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 101.6X3.2CHS", - "kind":"keyword", - "trigger":"101.6X3.2CHS" + "trigger": "BilinearCC", + "details": "cam-clay model with bilinear hardening model", + "kind": "type", + "contents": "material BilinearCC ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:(7)} ${8:(8)} ${9:[9]}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# (3) double, poissons ratio\n# (4) double, beta, controls compression side shape\n# (5) double, m, slope of CSL\n# (6) double, p_t, initial tension strength\n# (7) double, a_0, initial a_0\n# (8) double, H\n# [9] double, density, default: 0.0" }, { - "contents":"section NZ2D 101.6X4.0CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 101.6X4.0CHS", - "kind":"keyword", - "trigger":"101.6X4.0CHS" + "trigger": "BilinearDP", + "details": "dp model with bilinear hardening function", + "kind": "type", + "contents": "material BilinearDP ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:(7)} ${8:(8)} ${9:[9]}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# (3) double, poissons ratio\n# (4) double, \\eta_y\n# (5) double, \\eta_f\n# (6) double, \\xi\n# (7) double, cohesion\n# (8) double, hardening ratio\n# [9] double, density, default: 0.0" }, { - "contents":"section NZ3D 101.6X4.0CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 101.6X4.0CHS", - "kind":"keyword", - "trigger":"101.6X4.0CHS" + "trigger": "BilinearElastic1D", + "details": "uniaxial bilinear elastic material", + "kind": "type", + "contents": "material BilinearElastic1D ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5]}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# (3) double, yield stress\n# (4) double, hardening modulus\n# [5] double, density, default: 0.0" }, { - "contents":"section NZ2D 101.6X5.0CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 101.6X5.0CHS", - "kind":"keyword", - "trigger":"101.6X5.0CHS" + "trigger": "BilinearHoffman", + "details": "bilinear hoffman material", + "kind": "type", + "contents": "material BilinearHoffman ${1:(1)} ${2:(2...7)} ${3:(8...10)} ${4:(11...19)} ${5:[20]} ${6:[21]}\n# (1) int, unique material tag\n# (2...7) double, six moduli: E_{xx}, E_{yy}, E_{zz}, E_{xy}, E_{yz}, E_{zx}\n# (8...10) double, three poissions ratios: v_{xy}, v_{yz}, v_{zx}\n# (11...19) double, nine yield stresses\n# [20] double, hardening ratio, default: 0.0\n# [21] double, density, default: 0.0" }, { - "contents":"section NZ3D 101.6X5.0CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 101.6X5.0CHS", - "kind":"keyword", - "trigger":"101.6X5.0CHS" + "trigger": "BilinearJ2", + "details": "bilinear j2 material", + "kind": "type", + "contents": "material BilinearJ2 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5]} ${6:[6]} ${7:[7]}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# (3) double, poissons ratio\n# (4) double, yield stress\n# [5] double, hardening ratio, default: 0.0\n# [6] double, beta, default: 1.0\n# [7] double, density, default: 0.0" }, { - "contents":"section NZ2D 114.3X3.2CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 114.3X3.2CHS", - "kind":"keyword", - "trigger":"114.3X3.2CHS" + "trigger": "BilinearMises1D", + "details": "uniaxial bilinear material with no kinematic hardening", + "kind": "type", + "contents": "material BilinearMises1D ${1:(1)} ${2:(2)} ${3:(3)} ${4:[4]} ${5:[5]}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# (3) double, initial yield stress\n# [4] double, hardening ratio, default: 0.0\n# [5] double, density, default: 0.0" }, { - "contents":"section NZ3D 114.3X3.2CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 114.3X3.2CHS", - "kind":"keyword", - "trigger":"114.3X3.2CHS" + "trigger": "BilinearOO", + "details": "bilinear origin oriented model", + "kind": "type", + "contents": "material BilinearOO ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:[7]}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# (3) double, tension yield strain\n# (4) double, tension hardening ratio\n# (5) double, compression yield strain\n# (6) double, compression hardening ratio\n# [7] double, density, default: 0.0" }, { - "contents":"section NZ2D 114.3X3.6CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 114.3X3.6CHS", - "kind":"keyword", - "trigger":"114.3X3.6CHS" + "trigger": "BilinearPO", + "details": "bilinear peak oriented model", + "kind": "type", + "contents": "material BilinearPO ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:[7]}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# (3) double, tension yield strain\n# (4) double, tension hardening ratio\n# (5) double, compression yield strain\n# (6) double, compression hardening ratio\n# [7] double, density, default: 0.0" }, { - "contents":"section NZ3D 114.3X3.6CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 114.3X3.6CHS", - "kind":"keyword", - "trigger":"114.3X3.6CHS" + "trigger": "BilinearPeric", + "details": "bilinear peric viscoplastic material", + "kind": "type", + "contents": "material BilinearPeric ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:(7)} ${8:[8]}\n# (1) int, unique tag\n# (2) double, elastic modulus\n# (3) double, poissons ratio\n# (4) double, yield stress\n# (5) double, hardening modulus\n# (6) double, mu\n# (7) double, epsilon\n# [8] double, density, default: 0.0" }, { - "contents":"section NZ2D 114.3X4.5CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 114.3X4.5CHS", - "kind":"keyword", - "trigger":"114.3X4.5CHS" + "trigger": "BilinearViscosity", + "details": "viscosity with bilinear hardening", + "kind": "type", + "contents": "material BilinearViscosity ${1:(1)} ${2:(2)} ${3:(3)} ${4:[4]}\n# (1) int, unique material tag\n# (2) double, damping coefficient\n# (3) double, yield stress\n# [4] double, hardening ratio, default: 0.0" }, { - "contents":"section NZ3D 114.3X4.5CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 114.3X4.5CHS", - "kind":"keyword", - "trigger":"114.3X4.5CHS" + "trigger": "BlatzKo", + "details": "blatz ko hyperelastic material", + "kind": "type", + "contents": "material BlatzKo ${1:(1)} ${2:(2)} ${3:(3)} ${4:[4]}\n# (1) int, unique tag\n# (2) double, elastic modulus\n# (3) double, poissons ratio\n# [4] double, density, default: 0.0" }, { - "contents":"section NZ2D 114.3X4.8CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 114.3X4.8CHS", - "kind":"keyword", - "trigger":"114.3X4.8CHS" + "trigger": "BouncWen", + "details": "bouc-wen model", + "kind": "type", + "contents": "material BoucWen ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# (3) double, yield stress\n# (4) double, hardening ratio\n# (5) double, beta, a positive parameter\n# (6) double, n, a positive exponent" }, { - "contents":"section NZ3D 114.3X4.8CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 114.3X4.8CHS", - "kind":"keyword", - "trigger":"114.3X4.8CHS" + "trigger": "Box2D", + "details": "2d box section", + "kind": "type", + "contents": "section Box2D ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:[6]} ${7:[7]}\n# (1) int, unique section tag\n# (2) double, width\n# (3) double, height\n# (4) double, thickness\n# (5) int, material tag\n# [6] int, number of integration points, default: 6\n# [7] double, eccentricity, default: 0.0" }, { - "contents":"section NZ2D 114.3X5.4CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 114.3X5.4CHS", - "kind":"keyword", - "trigger":"114.3X5.4CHS" + "trigger": "Box3D", + "details": "3d box section", + "kind": "type", + "contents": "section Box3D ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:[6]} ${7:[7]} ${8:[8]}\n# (1) int, unique section tag\n# (2) double, width\n# (3) double, height\n# (4) double, thickness\n# (5) int, material tag\n# [6] int, number of integration points, default: 6\n# [7] double, eccentricity along y axis, default: 0.0\n# [8] double, eccentricity along z axis, default: 0.0" }, { - "contents":"section NZ3D 114.3X5.4CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 114.3X5.4CHS", - "kind":"keyword", - "trigger":"114.3X5.4CHS" + "trigger": "Buckle", + "details": "buckling step", + "kind": "type", + "contents": "step Buckle ${1:(1)}\nstep Buckling ${1:(1)}\n# (1) int, unique step tag" }, { - "contents":"section NZ2D 114.3X6.0CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 114.3X6.0CHS", - "kind":"keyword", - "trigger":"114.3X6.0CHS" + "trigger": "C3D20", + "details": "second order cube/brick", + "kind": "type", + "contents": "element C3D20 ${1:(1)} ${2:(2...21)} ${22:(22)} ${23:[23]} ${24:[24]}\n# (1) int, unique element tag\n# (2...21) int, eight corner nodes with conventional order\n# (22) int, material tag\n# [23] bool string, reduced integration scheme switch, default: true\n# [24] bool string, nonlinear geometry switch, default: false" }, { - "contents":"section NZ3D 114.3X6.0CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 114.3X6.0CHS", - "kind":"keyword", - "trigger":"114.3X6.0CHS" + "trigger": "C3D4", + "details": "linear tetrahedral", + "kind": "type", + "contents": "element C3D4 ${1:(1)} ${2:(2...5)} ${6:(6)} ${7:[7]}\n# (1) int, unique element tag\n# (2...5) int, four corner nodes with conventional order\n# (6) int, material tag\n# [7] bool string, nonlinear geometry switch, default: false" }, { - "contents":"section NZ2D 1200WB249 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 1200WB249", - "kind":"keyword", - "trigger":"1200WB249" + "trigger": "C3D8", + "details": "linear cube/brick", + "kind": "type", + "contents": "element C3D8 ${1:(1)} ${2:(2...9)} ${10:(10)} ${11:[11]} ${12:[12]}\n# (1) int, unique element tag\n# (2...9) int, eight corner nodes with conventional order\n# (10) int, material tag\n# [11] string, integration scheme, default: 'I'\n# [12] bool string, nonlinear geometry switch, default: false" }, { - "contents":"section NZ3D 1200WB249 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 1200WB249", - "kind":"keyword", - "trigger":"1200WB249" + "trigger": "C3D8I", + "details": "linear cube/brick with incompatible modes", + "kind": "type", + "contents": "element C3D8I ${1:(1)} ${2:(2...9)} ${10:(10)}\n# (1) int, unique element tag\n# (2...9) int, eight corner nodes with conventional order\n# (10) int, material tag" }, { - "contents":"section NZ2D 1200WB278 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 1200WB278", - "kind":"keyword", - "trigger":"1200WB278" + "trigger": "C3D8R", + "details": "linear cube/brick with reduced integration", + "kind": "type", + "contents": "element C3D8R ${1:(1)} ${2:(2...9)} ${10:(10)} ${11:[11]}\n# (1) int, unique element tag\n# (2...9) int, eight corner nodes with conventional order\n# (10) int, material tag\n# [11] bool string, nonlinear geometry switch, default: false" }, { - "contents":"section NZ3D 1200WB278 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 1200WB278", - "kind":"keyword", - "trigger":"1200WB278" + "trigger": "CAX3", + "details": "axisymmetric linear triangle", + "kind": "type", + "contents": "element CAX3 ${1:(1)} ${2:(2...4)} ${5:(5)} ${6:[6]}\n# (1) int, unique element tag\n# (2...4) int, node tags\n# (5) int, material tag\n# [6] bool string, nonlinear geometry switch, default: false" }, { - "contents":"section NZ2D 1200WB317 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 1200WB317", - "kind":"keyword", - "trigger":"1200WB317" + "trigger": "CAX4", + "details": "axisymmetric linear quadrilateral", + "kind": "type", + "contents": "element CAX4 ${1:(1)} ${2:(2...5)} ${6:(6)}\n# (1) int, unique element tag\n# (2...5) int, node i, j, k, l\n# (6) int, material tag" }, { - "contents":"section NZ3D 1200WB317 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 1200WB317", - "kind":"keyword", - "trigger":"1200WB317" + "trigger": "CAX8", + "details": "axisymmetric quadratic quadrilateral", + "kind": "type", + "contents": "element CAX8 ${1:(1)} ${2:(2...9)} ${10:(10)}\n# (1) int, unique element tag\n# (2...9) int, node tags\n# (10) int, material tag" }, { - "contents":"section NZ2D 1200WB342 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 1200WB342", - "kind":"keyword", - "trigger":"1200WB342" + "trigger": "CDP", + "details": "concrete damage plasticity material", + "kind": "type", + "contents": "material CDP ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:(7)} ${8:(8)} ${9:(9)} ${10:(10)} ${11:(11)} ${12:(12)} ${13:(13)} ${14:(14)} ${15:[15]}\n# (1) int, unique tag\n# (2) double, elastic modulus\n# (3) double, poissons ratio\n# (4) double, crack stress f_t\n# (5) double, crush stress f_c\n# (6) double, normalized crack energy g_t\n# (7) double, normalized crush energy g_c\n# (8) double, initial tension hardening a_t<1\n# (9) double, initial compression hardening a_c>1\n# (10) double, damage factor at half crack stress d_t\n# (11) double, damage factor at peak crush stress d_c\n# (12) double, dilatancy parameter\n# (13) double, biaxial compression ratio\n# (14) double, initial stiffness recovery factor\n# [15] double, density, default: 2400E-12" }, { - "contents":"section NZ3D 1200WB342 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 1200WB342", - "kind":"keyword", - "trigger":"1200WB342" + "trigger": "CDPM2", + "details": "cdpm2 isotropic damage", + "kind": "type", + "contents": "material CDPM2 ${1:(1)} ${2:[2-16]}\n# (1) int, unique material tag\n# [2] double, elastic modulus, default: 3E4\n# [3] double, poissons ratio, default: 0.3\n# [4] double, tension strength (positive), default: 3.0\n# [5] double, compression strength (positive), default: 30.0\n# [6] double, q_h0, initial hardening factor, default: 0.3\n# [7] double, h_p hardening ratio, default: 0.01\n# [8] double, d_f, default: .85\n# [9] double, a_h, hardening related parameter, default: 0.08\n# [10] double, b_h, hardening related parameter, default: 0.003\n# [11] double, c_h, hardening related parameter, default: 2.0\n# [12] double, d_h, hardening related parameter, default: 1E-6\n# [13] double, a_s, ductility related parameter, default: 5.0\n# [14] double, e_ft, tension softening parameter, default: 5E-4\n# [15] double, e_fc, compression softening parameter, default: 5E-4\n# [16] double, density, default: 0.0" }, { - "contents":"section NZ2D 1200WB392 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 1200WB392", - "kind":"keyword", - "trigger":"1200WB392" + "trigger": "CDPM2ANISO", + "details": "cdpm2 aniotropic damage", + "kind": "type", + "contents": "material CDPM2ANISO ${1:(1)} ${2:[2-16]}\n# (1) int, unique material tag\n# [2] double, elastic modulus, default: 3E4\n# [3] double, poissons ratio, default: 0.3\n# [4] double, tension strength (positive), default: 3.0\n# [5] double, compression strength (positive), default: 30.0\n# [6] double, q_h0, initial hardening factor, default: 0.3\n# [7] double, h_p hardening ratio, default: 0.01\n# [8] double, d_f, default: .85\n# [9] double, a_h, hardening related parameter, default: 0.08\n# [10] double, b_h, hardening related parameter, default: 0.003\n# [11] double, c_h, hardening related parameter, default: 2.0\n# [12] double, d_h, hardening related parameter, default: 1E-6\n# [13] double, a_s, ductility related parameter, default: 5.0\n# [14] double, e_ft, tension softening parameter, default: 5E-4\n# [15] double, e_fc, compression softening parameter, default: 5E-4\n# [16] double, density, default: 0.0" }, { - "contents":"section NZ3D 1200WB392 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 1200WB392", - "kind":"keyword", - "trigger":"1200WB392" + "trigger": "CDPM2ISO", + "details": "cdpm2 isotropic damage", + "kind": "type", + "contents": "material CDPM2ISO ${1:(1)} ${2:[2-16]}\n# (1) int, unique material tag\n# [2] double, elastic modulus, default: 3E4\n# [3] double, poissons ratio, default: 0.3\n# [4] double, tension strength (positive), default: 3.0\n# [5] double, compression strength (positive), default: 30.0\n# [6] double, q_h0, initial hardening factor, default: 0.3\n# [7] double, h_p hardening ratio, default: .01\n# [8] double, d_f, default: .85\n# [9] double, a_h, hardening related parameter, default: 0.08\n# [10] double, b_h, hardening related parameter, default: 0.003\n# [11] double, c_h, hardening related parameter, default: 2.0\n# [12] double, d_h, hardening related parameter, default: 1E-6\n# [13] double, a_s, ductility related parameter, default: 5.0\n# [14] double, e_ft, tension softening parameter, default: 5E-4\n# [15] double, e_fc, compression softening parameter, default: 5E-4\n# [16] double, density, default: 0.0" }, { - "contents":"section NZ2D 1200WB423 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 1200WB423", - "kind":"keyword", - "trigger":"1200WB423" + "trigger": "CIN3D8", + "details": "linear infinite cube/brick", + "kind": "type", + "contents": "element CIN3D8 ${1:(1)} ${2:(2...9)} ${10:(10)}\n# (1) int, unique element tag\n# (2...9) int, eight corner nodes with conventional order\n# (10) int, material tag" }, { - "contents":"section NZ3D 1200WB423 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 1200WB423", - "kind":"keyword", - "trigger":"1200WB423" + "trigger": "CINP4", + "details": "bilinear infinite quadrilateral", + "kind": "type", + "contents": "element CINP4 ${1:(1)} ${2:(2...5)} ${6:(6)} ${7:[7]}\n# (1) int, unique element tag\n# (2...5) int, node i, j, k, l\n# (6) int, material tag\n# [7] double, element thickness, default: 1.0" }, { - "contents":"section NZ2D 1200WB455 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 1200WB455", - "kind":"keyword", - "trigger":"1200WB455" + "trigger": "CP3", + "details": "constant strain triangle", + "kind": "type", + "contents": "element CP3 ${1:(1)} ${2:(2...4)} ${5:(5)} ${6:[6]} ${7:[7]}\n# (1) int, unique element tag\n# (2...4) int, node i, j, k\n# (5) int, material tag\n# [6] double, element thickness, default: 1.0\n# [7] bool string, nonlinear geometry switch, default: false" }, { - "contents":"section NZ3D 1200WB455 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 1200WB455", - "kind":"keyword", - "trigger":"1200WB455" + "trigger": "CP4", + "details": "bilinear quadrilateral", + "kind": "type", + "contents": "element CP4 ${1:(1)} ${2:(2...5)} ${6:(6)} ${7:[7]} ${8:[8]} ${9:[9]}\n# (1) int, unique element tag\n# (2...5) int, node i, j, k, l\n# (6) int, material tag\n# [7] double, element thickness, default: 1.0\n# [8] bool string, reduced integration switch, default: false\n# [9] bool string, nonlinear geometry switch, default: false" }, { - "contents":"section NZ2D 125X4.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 125X4.0SHS", - "kind":"keyword", - "trigger":"125X4.0SHS" + "trigger": "CP4I", + "details": "bilinear incompatible quadrilateral", + "kind": "type", + "contents": "element CP4I ${1:(1)} ${2:(2...5)} ${6:(6)} ${7:[7]}\n# (1) int, unique element tag\n# (2...5) int, node i, j, k, l\n# (6) int, material tag\n# [7] double, element thickness, default: 1.0" }, { - "contents":"section NZ3D 125X4.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 125X4.0SHS", - "kind":"keyword", - "trigger":"125X4.0SHS" + "trigger": "CP4R", + "details": "bilinear quadrilateral with reduced integration", + "kind": "type", + "contents": "element CP4R ${1:(1)} ${2:(2...5)} ${6:(6)} ${7:[7]} ${8:[8]}\n# (1) int, unique element tag\n# (2...5) int, node i, j, k, l\n# (6) int, material tag\n# [7] double, element thickness, default: 1.0\n# [8] bool string, nonlinear geometry switch, default: false" }, { - "contents":"section NZ2D 125X5.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 125X5.0SHS", - "kind":"keyword", - "trigger":"125X5.0SHS" + "trigger": "CP5", + "details": "five-point quadrilateral", + "kind": "type", + "contents": "element CP5 ${1:(1)} ${2:(2...6)} ${7:(7)} ${8:[8]} ${9:[9]}\n# (1) int, unique element tag\n# (2...6) int, node tags that define the element\n# (7) int, material tag\n# [8] double, element thickness, default: 1.0\n# [9] bool string, nonlinear geometry switch, default: false" }, { - "contents":"section NZ3D 125X5.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 125X5.0SHS", - "kind":"keyword", - "trigger":"125X5.0SHS" + "trigger": "CP6", + "details": "quadratic triangle", + "kind": "type", + "contents": "element CP6 ${1:(1)} ${2:(2...7)} ${8:(8)} ${9:[9]} ${10:[10]}\n# (1) int, unique element tag\n# (2...7) int, node tags that define the element\n# (8) int, material tag\n# [9] double, element thickness, default: 1.0\n# [10] bool string, nonlinear geometry switch, default: false" }, { - "contents":"section NZ2D 125X6.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 125X6.0SHS", - "kind":"keyword", - "trigger":"125X6.0SHS" + "trigger": "CP7", + "details": "seven-point quadrilateral", + "kind": "type", + "contents": "element CP7 ${1:(1)} ${2:(2...8)} ${9:(9)} ${10:[10]} ${11:[11]}\n# (1) int, unique element tag\n# (2...8) int, node tags that define the element\n# (9) int, material tag\n# [10] double, element thickness, default: 1.0\n# [11] bool string, nonlinear geometry switch, default: false" }, { - "contents":"section NZ3D 125X6.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 125X6.0SHS", - "kind":"keyword", - "trigger":"125X6.0SHS" + "trigger": "CP8", + "details": "second order quadrilateral", + "kind": "type", + "contents": "element CP8 ${1:(1)} ${2:(2...9)} ${10:(10)} ${11:[11]} ${12:[12]} ${13:[13]}\n# (1) int, unique element tag\n# (2...9) int, node 1 to node 8\n# (10) int, material tag\n# [11] double, element thickness, default: 1.0\n# [12] bool string, reduced integration switch, default: false\n# [13] bool string, nonlinear geometry switch, default: false" }, { - "contents":"section NZ2D 125X75X3.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 125X75X3.0RHS", - "kind":"keyword", - "trigger":"125X75X3.0RHS" + "trigger": "CPE8", + "details": "second order quadrilateral with unit thickness", + "kind": "type", + "contents": "element CPE8 ${1:(1)} ${2:(2...9)} ${10:(10)} ${11:[11]} ${12:[12]}\n# (1) int, unique element tag\n# (2...9) int, node 1 to node 8\n# (10) int, material tag\n# [11] bool string, reduced integration switch, default: false\n# [12] bool string, nonlinear geometry switch, default: false" }, { - "contents":"section NZ3D 125X75X3.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 125X75X3.0RHS", - "kind":"keyword", - "trigger":"125X75X3.0RHS" + "trigger": "CPE8R", + "details": "second order quadrilateral with unit thickness and reduced integration", + "kind": "type", + "contents": "element CPCPE8RE8 ${1:(1)} ${2:(2...9)} ${10:(10)} ${11:[11]}\n# (1) int, unique element tag\n# (2...9) int, node 1 to node 8\n# (10) int, material tag\n# [1] bool string, nonlinear geometry switch, default: false" }, { - "contents":"section NZ2D 125X75X4.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 125X75X4.0RHS", - "kind":"keyword", - "trigger":"125X75X4.0RHS" + "trigger": "CPS8", + "details": "second order quadrilateral", + "kind": "type", + "contents": "element CPS8 ${1:(1)} ${2:(2...9)} ${10:(10)} ${11:[11]} ${12:[12]} ${13:[13]}\n# (1) int, unique element tag\n# (2...9) int, node 1 to node 8\n# (10) int, material tag\n# [11] double, element thickness, default: 1.0\n# [12] bool string, reduced integration switch, default: false\n# [13] bool string, nonlinear geometry switch, default: false" }, { - "contents":"section NZ3D 125X75X4.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 125X75X4.0RHS", - "kind":"keyword", - "trigger":"125X75X4.0RHS" + "trigger": "CSMQ4", + "details": "couple stress mixed quadrilateral", + "kind": "type", + "contents": "element CSMQ4 ${1:(1)} (2...*) ${3:(3)} ${4:[4]} ${5:[5]}\n# (1) int, unique element tag\n# (2...*) int, corresponding number of node tags\n# (3) int, material tag\n# [4] double, thickness, default: 1.0\n# [5] double, characteristic length, default: -1.0" }, { - "contents":"section NZ2D 125X75X5.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 125X75X5.0RHS", - "kind":"keyword", - "trigger":"125X75X5.0RHS" + "trigger": "CSMQ5", + "details": "couple stress mixed quadrilateral", + "kind": "type", + "contents": "element CSMQ5 ${1:(1)} (2...*) ${3:(3)} ${4:[4]} ${5:[5]}\n# (1) int, unique element tag\n# (2...*) int, corresponding number of node tags\n# (3) int, material tag\n# [4] double, thickness, default: 1.0\n# [5] double, characteristic length, default: -1.0" }, { - "contents":"section NZ3D 125X75X5.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 125X75X5.0RHS", - "kind":"keyword", - "trigger":"125X75X5.0RHS" + "trigger": "CSMQ6", + "details": "couple stress mixed quadrilateral", + "kind": "type", + "contents": "element CSMQ6 ${1:(1)} (2...*) ${3:(3)} ${4:[4]} ${5:[5]}\n# (1) int, unique element tag\n# (2...*) int, corresponding number of node tags\n# (3) int, material tag\n# [4] double, thickness, default: 1.0\n# [5] double, characteristic length, default: -1.0" }, { - "contents":"section NZ2D 125X9.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 125X9.0SHS", - "kind":"keyword", - "trigger":"125X9.0SHS" + "trigger": "CSMQ7", + "details": "couple stress mixed quadrilateral", + "kind": "type", + "contents": "element CSMQ7 ${1:(1)} (2...*) ${3:(3)} ${4:[4]} ${5:[5]}\n# (1) int, unique element tag\n# (2...*) int, corresponding number of node tags\n# (3) int, material tag\n# [4] double, thickness, default: 1.0\n# [5] double, characteristic length, default: -1.0" }, { - "contents":"section NZ3D 125X9.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 125X9.0SHS", - "kind":"keyword", - "trigger":"125X9.0SHS" + "trigger": "CSMQ8", + "details": "couple stress mixed quadrilateral", + "kind": "type", + "contents": "element CSMQ8 ${1:(1)} (2...*) ${3:(3)} ${4:[4]} ${5:[5]}\n# (1) int, unique element tag\n# (2...*) int, corresponding number of node tags\n# (3) int, material tag\n# [4] double, thickness, default: 1.0\n# [5] double, characteristic length, default: -1.0" }, { - "contents":"section NZ2D 139.7X3.0CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 139.7X3.0CHS", - "kind":"keyword", - "trigger":"139.7X3.0CHS" + "trigger": "CSMT3", + "details": "couple stress mixed triangle", + "kind": "type", + "contents": "element CSMT3 ${1:(1)} (2...*) ${3:(3)} ${4:[4]} ${5:[5]}\n# (1) int, unique element tag\n# (2...*) int, corresponding number of node tags\n# (3) int, material tag\n# [4] double, thickness, default: 1.0\n# [5] double, characteristic length, default: -1.0" }, { - "contents":"section NZ3D 139.7X3.0CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 139.7X3.0CHS", - "kind":"keyword", - "trigger":"139.7X3.0CHS" + "trigger": "CSMT6", + "details": "couple stress mixed triangle", + "kind": "type", + "contents": "element CSMT6 ${1:(1)} (2...*) ${3:(3)} ${4:[4]} ${5:[5]}\n# (1) int, unique element tag\n# (2...*) int, corresponding number of node tags\n# (3) int, material tag\n# [4] double, thickness, default: 1.0\n# [5] double, characteristic length, default: -1.0" }, { - "contents":"section NZ2D 139.7X3.5CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 139.7X3.5CHS", - "kind":"keyword", - "trigger":"139.7X3.5CHS" + "trigger": "CUDA", + "details": "cuda solver", + "kind": "keyword", + "contents": "set system_solver CUDA" }, { - "contents":"section NZ3D 139.7X3.5CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 139.7X3.5CHS", - "kind":"keyword", - "trigger":"139.7X3.5CHS" + "trigger": "Cell3DOS", + "details": "3d fibre open section building block", + "kind": "type", + "contents": "section Cell3DOS ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:[7]} ${8:[8]}\n# (1) int, unique section tag\n# (2) double, area\n# (3) double, sectional coordinate\n# (4) double, py\n# (5) double, pz\n# (6) int, material tag\n# [7] double, eccentricity along y-axis, default: 0\n# [8] double, eccentricity along z-axis, default: 0" }, { - "contents":"section NZ2D 139.7X5.0CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 139.7X5.0CHS", - "kind":"keyword", - "trigger":"139.7X5.0CHS" + "trigger": "Circle1D", + "details": "1d circle section", + "kind": "type", + "contents": "section Circle1D ${1:(1)} ${2:(2)} ${3:(3)}\n# (1) int, unique section tag\n# (2) double, radius\n# (3) int, material tag" }, { - "contents":"section NZ3D 139.7X5.0CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 139.7X5.0CHS", - "kind":"keyword", - "trigger":"139.7X5.0CHS" + "trigger": "Circle2D", + "details": "2d circle section", + "kind": "type", + "contents": "section Circle2D ${1:(1)} ${2:(2)} ${3:(3)} ${4:[4]} ${5:[5]}\n# (1) int, unique section tag\n# (2) double, radius\n# (3) int, material tag\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0" }, { - "contents":"section NZ2D 139.7X5.4CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 139.7X5.4CHS", - "kind":"keyword", - "trigger":"139.7X5.4CHS" + "trigger": "Circle3D", + "details": "3d circle section", + "kind": "type", + "contents": "section Circle3D ${1:(1)} ${2:(2)} ${3:(3)} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique section tag\n# (2) double, radius\n# (3) int, material tag\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity along y axis, default: 0.0\n# [6] double, eccentricity along z axis, default: 0.0" }, { - "contents":"section NZ3D 139.7X5.4CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 139.7X5.4CHS", - "kind":"keyword", - "trigger":"139.7X5.4CHS" + "trigger": "CircularHollow2D", + "details": "2d hollow circular section", + "kind": "type", + "contents": "section CircularHollow2D ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5]} ${6:[6]}\n# (1) int, unique section tag\n# (2) double, radius\n# (3) double, thickness\n# (4) int, material tag\n# [5] int, number of integration points, default: 6\n# [6] double, eccentricity, default: 0.0" }, { - "contents":"section NZ2D 150UB14.0 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 150UB14.0", - "kind":"keyword", - "trigger":"150UB14.0" + "trigger": "CircularHollow3D", + "details": "3d hollow circular section", + "kind": "type", + "contents": "section CircularHollow3D ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5]} ${6:[6]} ${7:[7]}\n# (1) int, unique section tag\n# (2) double, radius\n# (3) double, thickness\n# (4) int, material tag\n# [5] int, number of integration points, default: 6\n# [6] double, eccentricity along y axis, default: 0.0\n# [7] double, eccentricity along z axis, default: 0.0" }, { - "contents":"section NZ3D 150UB14.0 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 150UB14.0", - "kind":"keyword", - "trigger":"150UB14.0" + "trigger": "Combine", + "details": "amplitude combining multiple amplitudes", + "kind": "type", + "contents": "amplitude Combine ${1:(1)} [${2:(2)}...]\n# (1) int, unique amplitude tag\n# [(2)...] int, tags of amplitude that need to be combined" }, { - "contents":"section NZ2D 150UB18.0 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 150UB18.0", - "kind":"keyword", - "trigger":"150UB18.0" + "trigger": "Concrete21", + "details": "rotating crack concrete material", + "kind": "type", + "contents": "material Concrete21 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:(7)} ${8:(8)} ${9:(9)} ${10:(10)} ${11:[11]}\n# (1) int, unique material tag\n# (2) double, compression strength, should be negative but sign insensitive\n# (3) double, tension strength, should be positive but sign insensitive\n# (4) double, MC\n# (5) double, NC\n# (6) double, MT\n# (7) double, NT\n# (8) double, middle point\n# (9) double, strain at compression strength\n# (10) double, strain at tension strength\n# [11] double, density, default: 0.0" }, { - "contents":"section NZ3D 150UB18.0 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 150UB18.0", - "kind":"keyword", - "trigger":"150UB18.0" + "trigger": "Concrete22", + "details": "fixed crack concrete material", + "kind": "type", + "contents": "material Concrete22 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:(7)} ${8:(8)} ${9:(9)} ${10:(10)} ${11:(11)} ${12:(12)} ${13:[13]}\n# (1) int, unique material tag\n# (2) double, compression strength, should be negative but sign insensitive\n# (3) double, tension strength, should be positive but sign insensitive\n# (4) double, MC\n# (5) double, NC\n# (6) double, MT\n# (7) double, NT\n# (8) double, middle point\n# (9) double, strain at compression strength\n# (10) double, strain at tension strength\n# (11) double, shear stress\n# (12) double, shear retention factor\n# [13] double, density, default: 0.0" }, { - "contents":"section NZ2D 150UC23.4 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 150UC23.4", - "kind":"keyword", - "trigger":"150UC23.4" + "trigger": "ConcreteCM", + "details": "chang-mander concrete model", + "kind": "type", + "contents": "material ConcreteCM ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:[7]} ${8:[8]} ${9:[9]} ${10:[10]}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# (3) double, compression strength, should be negative but sign insensitive\n# (4) double, tension strength, should be positive but sign insensitive\n# (5) double, NC\n# (6) double, NT\n# [7] double, strain at compression strength, default: -2E-3\n# [8] double, strain at tension strength, default: 1E-4\n# [9] bool string, linear transition switch, default: false\n# [10] double, density, default: 0.0" }, { - "contents":"section NZ3D 150UC23.4 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 150UC23.4", - "kind":"keyword", - "trigger":"150UC23.4" + "trigger": "ConcreteExp", + "details": "objective concrete model", + "kind": "type", + "contents": "material ConcreteExp ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:(7)} ${8:(8)} ${9:[9]} ${10:[10]}\n# (1) int, unique tag\n# (2) double, elastic modulus\n# (3) double, f_t\n# (4) double, a_t\n# (5) double, g_t\n# (6) double, f_{c,m}\n# (7) double, a_c\n# (8) double, g_c\n# [9] double, middle point, default: 0.2\n# [10] double, density, default: 0.0" }, { - "contents":"section NZ2D 150UC30.0 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 150UC30.0", - "kind":"keyword", - "trigger":"150UC30.0" + "trigger": "ConcreteK4", + "details": "k4 concrete model", + "kind": "type", + "contents": "material ConcreteK4 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:(7)} ${8:(8)} ${9:(9)} ${10:(10)} ${11:(11)} ${12:[12]}\n# (1) int, unique material tag\n# (2) double, elastic modulus (+), typical: 30000 (in MPa)\n# (3) double, crack closing stiffness ratio (+), typical: ~0.1\n# (4) double, tensile hardening ratio (+), typical: [0,1]\n# (5) double, compressive hardening ratio (+), typical: [0,1]\n# (6) double, tensile strength (+), typical: 3 (in MPa)\n# (7) double, crush (compressive) strength (+), typical: 40 (in MPa)\n# (8) double, crush (compressive) strain (+), typical: 0.002\n# (9) double, yield (compressive) strength ratio (<1), typical: ~0.7\n# (10) double, reference tensile zeta ratio\n# (11) double, reference compressive zeta ratio\n# [12] double, density, default: 0.0" }, { - "contents":"section NZ3D 150UC30.0 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 150UC30.0", - "kind":"keyword", - "trigger":"150UC30.0" + "trigger": "ConcreteTable", + "details": "concrete material with table input", + "kind": "type", + "contents": "material ConcreteTable ${1:(1)} ${2:(2)} ${3:(3)} ${4:[4]} ${5:[5]}\n# (1) int, unique material tag\n# (2) string, tension backbone file name\n# (3) string, compression backbone file name\n# [4] double, middle point parameter [0,1], default: 0.2\n# [5] double, density, default: 0.0" }, { - "contents":"section NZ2D 150UC37.2 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 150UC37.2", - "kind":"keyword", - "trigger":"150UC37.2" + "trigger": "ConcreteTsai", + "details": "uniaxial concrete model using tsai's equation", + "kind": "type", + "contents": "material ConcreteTsai ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:(7)} ${8:(8)} ${9:(9)} ${10:(10)} ${11:[11]}\n# (1) int, unique material tag\n# (2) double, compression strength, should be negative but sign insensitive\n# (3) double, tension strength, should be positive but sign insensitive\n# (4) double, MC\n# (5) double, NC\n# (6) double, MT\n# (7) double, NT\n# (8) double, middle point, typical: 0.2\n# (9) double, strain at compression strength, typical: -2E-3\n# (10) double, strain at tension strength, typical: 1E-4\n# [11] double, density, default: 0.0" }, { - "contents":"section NZ3D 150UC37.2 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 150UC37.2", - "kind":"keyword", - "trigger":"150UC37.2" + "trigger": "Constant", + "details": "constant amplitude", + "kind": "type", + "contents": "amplitude Constant ${1:(1)}\n# (1) int, unique amplitude tag" }, { - "contents":"section NZ2D 150X100X4.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 150X100X4.0RHS", - "kind":"keyword", - "trigger":"150X100X4.0RHS" + "trigger": "Contact2D", + "details": "2d node(slave)-line(master) contact element", + "kind": "type", + "contents": "element Contact2D ${1:(1)} ${2:(2)} ${3:(3)} ${4:[4]}\n# (1) int, unique element tag\n# (2) int, master group tag\n# (3) int, slave group tag\n# [4] double, penalty factor" }, { - "contents":"section NZ3D 150X100X4.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 150X100X4.0RHS", - "kind":"keyword", - "trigger":"150X100X4.0RHS" + "trigger": "Contact3D", + "details": "3d node(slave)-triangular facet(master) contact element", + "kind": "type", + "contents": "element Contact3D ${1:(1)} ${2:(2)} ${3:(3)} ${4:[4]}\n# (1) int, unique element tag\n# (2) int, master group tag\n# (3) int, slave group tag\n# [4] double, penalty factor" }, { - "contents":"section NZ2D 150X100X5.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 150X100X5.0RHS", - "kind":"keyword", - "trigger":"150X100X5.0RHS" + "trigger": "Cosine", + "details": "cosine amplitude", + "kind": "type", + "contents": "amplitude Cosine ${1:(1)} ${2:(2)} ${3:(3)} [${4:(4)}...]\n# (1) int, unique tag\n# (2) double, base period T_0\n# (3) double, amplitude at base period/frequency a_0\n# [(4)...] double, optional amplitudes at higher periods a_i" }, { - "contents":"section NZ3D 150X100X5.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 150X100X5.0RHS", - "kind":"keyword", - "trigger":"150X100X5.0RHS" + "trigger": "CoulombFriction", + "details": "culomb friction material", + "kind": "type", + "contents": "material CoulombFriction ${1:(1)} ${2:(2)} ${3:(3)}\n# (1) int, unique material tag\n# (2) double, C\n# (3) double, alpha" }, { - "contents":"section NZ2D 150X100X6.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 150X100X6.0RHS", - "kind":"keyword", - "trigger":"150X100X6.0RHS" + "trigger": "Custom", + "details": "amplitude using custom function", + "kind": "type", + "contents": "amplitude Custom ${1:(1)} ${2:(2)}\n# (1) int, unique amplitude tag\n# (2) int, expression tag" }, { - "contents":"section NZ3D 150X100X6.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 150X100X6.0RHS", - "kind":"keyword", - "trigger":"150X100X6.0RHS" + "trigger": "CustomCC", + "details": "cam-clay model with custom hardening function", + "kind": "type", + "contents": "material CustomCC ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:(7)} ${8:[8]}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# (3) double, poissons ratio\n# (4) double, beta, controls compression side shape\n# (5) double, m, slope of CSL\n# (6) double, p_t, initial tension strength\n# (7) int, hardening expression tag\n# [8] double, density, default: 0.0" }, { - "contents":"section NZ2D 150X5.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 150X5.0SHS", - "kind":"keyword", - "trigger":"150X5.0SHS" + "trigger": "CustomDP", + "details": "dp model with custom hardening function", + "kind": "type", + "contents": "material CustomDP ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:(7)} ${8:[8]}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# (3) double, poissons ratio\n# (4) double, \\eta_y\n# (5) double, \\eta_f\n# (6) double, \\xi\n# (7) int, cohesion expression tag\n# [8] double, density, default: 0.0" }, { - "contents":"section NZ3D 150X5.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 150X5.0SHS", - "kind":"keyword", - "trigger":"150X5.0SHS" + "trigger": "CustomElastic1D", + "details": "uniaxial elastic material with custom function", + "kind": "type", + "contents": "element CustomElastic1D ${1:(1)} ${2:(2)} ${3:[3]}\n# (1) int, unique element tag\n# (2) int, expression tag\n# (3) double, density, default: 0" }, { - "contents":"section NZ2D 150X50X3.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 150X50X3.0RHS", - "kind":"keyword", - "trigger":"150X50X3.0RHS" + "trigger": "CustomGurson", + "details": "gurson model using custom hardening function", + "kind": "type", + "contents": "material CustomGurson ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5]} ${6:[6]} ${7:[7]} ${8:[8]} ${9:[9]} ${10:[10]}\n# (1) int, unique material tag\n# (2) int, expression tag\n# (3) double, elastic modulus\n# (4) double, poissons ratio\n# [5] double, q1, default: 1.0\n# [6] double, q2, default: 1.0\n# [7] double, fn, default: 0.0\n# [8] double, sn, default: 1.0\n# [9] double, en, default: 0.0\n# [10] double, density, default: 0.0" }, { - "contents":"section NZ3D 150X50X3.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 150X50X3.0RHS", - "kind":"keyword", - "trigger":"150X50X3.0RHS" + "trigger": "CustomGurson1D", + "details": "uniaxial gurson model using custom hardening function", + "kind": "type", + "contents": "material CustomGurson1D ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5]} ${6:[6]} ${7:[7]} ${8:[8]} ${9:[9]} ${10:[10]}\n# (1) int, unique material tag\n# (2) int, expression tag\n# (3) double, elastic modulus\n# (4) double, poissons ratio\n# [5] double, q1, default: 1.0\n# [6] double, q2, default: 1.0\n# [7] double, fn, default: 0.0\n# [8] double, sn, default: 1.0\n# [9] double, en, default: 0.0\n# [10] double, density, default: 0.0" }, { - "contents":"section NZ2D 150X50X4.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 150X50X4.0RHS", - "kind":"keyword", - "trigger":"150X50X4.0RHS" + "trigger": "CustomHoffman", + "details": "hoffman model with custom isotropic hardening", + "kind": "type", + "contents": "material CustomHoffman ${1:(1)} ${2:(2...7)} ${3:(8...10)} ${4:(11...19)} ${5:(20)} ${6:[21]}\n# (1) int, unique material tag\n# (2...7) double, six moduli: E_{xx}, E_{yy}, E_{zz}, E_{xy}, E_{yz}, E_{zx}\n# (8...10) double, three poissions ratios: v_{xx}, v_{yy}, v_{zz}\n# (11...19) double, nine yield stress\n# (20) int, hardening expression tag\n# [21] double, density, default: 0.0" }, { - "contents":"section NZ3D 150X50X4.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 150X50X4.0RHS", - "kind":"keyword", - "trigger":"150X50X4.0RHS" + "trigger": "CustomJ2", + "details": "j2 model with exponential isotropic hardening", + "kind": "type", + "contents": "material CustomJ2 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:[6]}\n#(1) int, unique material tag\n#(2) double, elastic modulus\n#(3) double, poissons ratio\n#(4) int, isotropic hardening expression tag\n#(5) int, kinematic hardening expression tag\n#[6] double, density, default: 0" }, { - "contents":"section NZ2D 150X50X5.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 150X50X5.0RHS", - "kind":"keyword", - "trigger":"150X50X5.0RHS" + "trigger": "CustomMises1D", + "details": "uniaxial j2 model with custom hardening function", + "kind": "type", + "contents": "element CustomMises1D ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5]}\n# (1) int, unique element tag\n# (2) double, elastic modulus\n# (3) int, isotropic hardening expression tag\n# (4) int, kinematic hardening expression tag\n# (5) double, density, default: 0" }, { - "contents":"section NZ3D 150X50X5.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 150X50X5.0RHS", - "kind":"keyword", - "trigger":"150X50X5.0RHS" + "trigger": "CustomStrainDegradation", + "details": "uniaxial degradation with custom rules", + "kind": "type", + "contents": "material CustomStrainDegradation ${1:(1)} ${2:(2)} ${3:(3)}\n# (1) int, unique material tag\n# (2) int, host material tag\n# (3) int, positive region degradation expression tag\n# [4] int, negative region degradation expression tag, default: (3)" }, { - "contents":"section NZ2D 150X6.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 150X6.0SHS", - "kind":"keyword", - "trigger":"150X6.0SHS" + "trigger": "CustomStressDegradation", + "details": "uniaxial degradation with custom rules", + "kind": "type", + "contents": "material CustomStressDegradation ${1:(1)} ${2:(2)} ${3:(3)}\n# (1) int, unique material tag\n# (2) int, host material tag\n# (3) int, positive region degradation expression tag\n# [4] int, negative region degradation expression tag, default: (3)" }, { - "contents":"section NZ3D 150X6.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 150X6.0SHS", - "kind":"keyword", - "trigger":"150X6.0SHS" + "trigger": "CustomViscosity", + "details": "viscosity with custom hardening", + "kind": "type", + "contents": "material CustomViscosity (1) (2)\n# (1) int, unique tag\n# (2) int, viscosity expression tag" }, { - "contents":"section NZ2D 150X9.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 150X9.0SHS", - "kind":"keyword", - "trigger":"150X9.0SHS" + "trigger": "DC3D4", + "details": "linear tetrahedral with phase field damage", + "kind": "type", + "contents": "element DC3D4 ${1:(1)} ${2:(2...5)} ${6:(6)} ${7:(7)} ${8:(8)}\n# (1) int, unique element tag\n# (2...5) int, four corner nodes with conventional order\n# (6) int, material tag\n# (7) double, characteristic length\n# (8) double, energy release rate" }, { - "contents":"section NZ3D 150X9.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 150X9.0SHS", - "kind":"keyword", - "trigger":"150X9.0SHS" + "trigger": "DC3D8", + "details": "linear cube/brick with phase field damage", + "kind": "type", + "contents": "element DC3D8 ${1:(1)} ${2:(2...9)} ${10:(10)} ${11:(11)} ${12:(12)}\n# (1) int, unique element tag\n# (2...9) int, eight corner nodes with conventional order\n# (10) int, material tag\n# (11) double, characteristic length\n# (12) double, energy release rate" }, { - "contents":"section NZ2D 165.1X3.0CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 165.1X3.0CHS", - "kind":"keyword", - "trigger":"165.1X3.0CHS" + "trigger": "DCP3", + "details": "constant strain triangle with crack phase", + "kind": "type", + "contents": "element DCP3 ${1:(1)} ${2:(2...4)} ${5:(5)} ${6:(6)} ${7:(7)} ${8:[8]}\n# (1) int, unique element tag\n# (2...4) int, node i, j, k\n# (5) int, material tag\n# (6) double, characteristic length\n# (7) double, energy release rate\n# [8] double, element thickness, default: 1.0" }, { - "contents":"section NZ3D 165.1X3.0CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 165.1X3.0CHS", - "kind":"keyword", - "trigger":"165.1X3.0CHS" + "trigger": "DCP4", + "details": "bilinear quadrilateral with crack phase", + "kind": "type", + "contents": "element DCP4 ${1:(1)} ${2:(2...5)} ${6:(6)} ${7:(7)} ${8:(8)} ${9:[9]}\n# (1) int, unique element tag\n# (2...5) int, node i, j, k, l\n# (6) int, material tag\n# (7) double, characteristic length\n# (8) double, energy release rate\n# [9] double, element thickness, default: 1.0" }, { - "contents":"section NZ2D 165.1X3.5CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 165.1X3.5CHS", - "kind":"keyword", - "trigger":"165.1X3.5CHS" + "trigger": "DKT3", + "details": "dkt triangle plate", + "kind": "type", + "contents": "element DKT3 ${1:(1)} ${2:(2...4)} ${5:(5)} ${6:(6)} ${7:[7]}\n# (1) int, unique element tag\n# (2...4) int, node i, j, k\n# (5) int, material tag\n# (6) double, thickness\n# [7] int, number of integration points, default: 3" }, { - "contents":"section NZ3D 165.1X3.5CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 165.1X3.5CHS", - "kind":"keyword", - "trigger":"165.1X3.5CHS" + "trigger": "DKT4", + "details": "dkt quadrilateral plate", + "kind": "type", + "contents": "element DKT4 ${1:(1)} ${2:(2...5)} ${6:(6)} ${7:(7)} ${8:[8]}\n# (1) int, unique element tag\n# (2...5) int, node i, j, k, l\n# (6) int, material tag\n# (7) double, thickness\n# [8] int, number of integration points along thickness, default: 3" }, { - "contents":"section NZ2D 165.1X5.0CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 165.1X5.0CHS", - "kind":"keyword", - "trigger":"165.1X5.0CHS" + "trigger": "DKTS3", + "details": "dkt triangle shell", + "kind": "type", + "contents": "element DKTS3 ${1:(1)} ${2:(2...4)} ${5:(5)} ${6:(6)} ${7:[7]} ${8:[8]}\n# (1) int, unique element tag\n# (2...4) int, node i, j, k\n# (5) int, material tag\n# (6) double, thickness\n# [7] int, number of integration points, default: 3\n# [7] bool, nonlinear geometry switch, default: false" }, { - "contents":"section NZ3D 165.1X5.0CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 165.1X5.0CHS", - "kind":"keyword", - "trigger":"165.1X5.0CHS" + "trigger": "DKTS4", + "details": "dkt quadrilateral shell", + "kind": "type", + "contents": "element DKTS4 ${1:(1)} ${2:(2...5)} ${6:(6)} ${7:(7)} ${8:[8]} ${9:[9]}\n# (1) int, unique element tag\n# (2...5) int, node i, j, k, l\n# (6) int, material tag\n# (7) double, thickness\n# [8] int, number of integration points, default: 3\n# [9] bool, nonlinear geometry switch, default: false" }, { - "contents":"section NZ2D 165.1X5.4CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 165.1X5.4CHS", - "kind":"keyword", - "trigger":"165.1X5.4CHS" + "trigger": "DafaliasManzari", + "details": "dafalias manzari sand material", + "kind": "type", + "contents": "material DafaliasMazanri ${1:(1)} ${2:(2-18)} ${19:[19]}\n# (1) int, unique material tag\n# (2) double, reference shear modulus G_0 ==> 125\n# (3) double, poissons ratio \\nu\n# (4) double, \\alpha^c ==> 1.5\n# (5) double, slope of critical state line \\lambda_c ==> 0.02\n# (6) double, initial void ratio e_0\n# (7) double, exponent \\xi ==> 0.7\n# (8) double, initial yield surface size m ==> 0.01\n# (9) double, hardening constant h_0\n# (10) double, hardening constant h_1 ==> 0.1\n# (11) double, hardening constant c_h ==> 0.9\n# (12) double, n^b ==> 1.1\n# (13) double, dilatancy constant A_0 ==> -0.7\n# (14) double, n^d ==> 3.5\n# (15) double, z_{max} ==> 4\n# (16) double, c_z ==> 600\n# (17) double, atmospheric pressure p_{at} ==> -130\n# (18) double, threshold G_r ==> 0.1\n# [19] double, density, default: 0.0" }, { - "contents":"section NZ3D 165.1X5.4CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 165.1X5.4CHS", - "kind":"keyword", - "trigger":"165.1X5.4CHS" + "trigger": "Damper01", + "details": "2d viscous damper", + "kind": "type", + "contents": "element Damper01 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)}\n# (1) int, unique tag\n# (2) int, node i\n# (3) int, node j\n# (4) int, material tag of associated viscosity material" }, { - "contents":"section NZ2D 168.3X4.8CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 168.3X4.8CHS", - "kind":"keyword", - "trigger":"168.3X4.8CHS" + "trigger": "Damper02", + "details": "2d viscous damper using the maxwell model", + "kind": "type", + "contents": "element Damper02 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:[6]} ${7:[7]} ${8:[8]}\n# (1) int, unique tag\n# (2) int, node i\n# (3) int, node j\n# (4) int, damper tag\n# (5) int, spring tag\n# [6] bool string, if to use matrix in iteration, default: true\n# [7] int, the maximum delay number, default: 0\n# [8] double, beta, default: 0.5" }, { - "contents":"section NZ3D 168.3X4.8CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 168.3X4.8CHS", - "kind":"keyword", - "trigger":"168.3X4.8CHS" + "trigger": "Damper03", + "details": "3d viscous damper", + "kind": "type", + "contents": "element Damper03 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)}\n# (1) int, unique tag\n# (2) int, node i\n# (3) int, node j\n# (4) int, material tag of associated viscosity material" }, { - "contents":"section NZ2D 168.3X6.4CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 168.3X6.4CHS", - "kind":"keyword", - "trigger":"168.3X6.4CHS" + "trigger": "Damper04", + "details": "3d viscous damper using the maxwell model", + "kind": "type", + "contents": "element Damper04 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:[6]} ${7:[7]} ${8:[8]}\n# (1) int, unique tag\n# (2) int, node i\n# (3) int, node j\n# (4) int, damper tag\n# (5) int, spring tag\n# [6] bool string, if to use matrix in iteration, default: true\n# [7] int, the maximum delay number, default: 0\n# [8] double, beta, default: 0.5" }, { - "contents":"section NZ3D 168.3X6.4CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 168.3X6.4CHS", - "kind":"keyword", - "trigger":"168.3X6.4CHS" + "trigger": "Decay", + "details": "decay amplitude", + "kind": "type", + "contents": "amplitude Decay ${1:(1)} ${2:(2)} ${3:(3)}\n# (1) int, unique amplitude tag\n# (2) double, initial amplitude A_0\n# (3) double, speed control parameter t_d" }, { - "contents":"section NZ2D 168.3X7.1CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 168.3X7.1CHS", - "kind":"keyword", - "trigger":"168.3X7.1CHS" + "trigger": "Dhakal", + "details": "dhakal rebar degradation model", + "kind": "type", + "contents": "material Dhakal ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)}\n# (1) int, unique material tag\n# (2) int, host material tag\n# (3) double, yield strain\n# (4) double, geometry parameter" }, { - "contents":"section NZ3D 168.3X7.1CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 168.3X7.1CHS", - "kind":"keyword", - "trigger":"168.3X7.1CHS" + "trigger": "Dynamic", + "details": "dynamic step", + "kind": "type", + "contents": "step dynamic ${1:(1)} ${2:(2)}\n# (1) int, unique step tag\n# (2) double, step size" }, { - "contents":"section NZ2D 180UB16.1 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 180UB16.1", - "kind":"keyword", - "trigger":"180UB16.1" + "trigger": "EB21", + "details": "2d elastic bernoulli beam", + "kind": "type", + "contents": "element EB21 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:[7]}\n# (1) int, unique element tag\n# (2) int, node i\n# (3) int, node j\n# (4) double, area\n# (5) double, moment inertia\n# (6) int, material tag\n# [7] bool string, nonlinear geometry switch, default: false" }, { - "contents":"section NZ3D 180UB16.1 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 180UB16.1", - "kind":"keyword", - "trigger":"180UB16.1" + "trigger": "Elastic1D", + "details": "uniaxial elastic material", + "kind": "type", + "contents": "material Elastic1D ${1:(1)} ${2:(2)} ${3:[3]}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# [3] double, density, default: 0.0" }, { - "contents":"section NZ2D 180UB18.1 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 180UB18.1", - "kind":"keyword", - "trigger":"180UB18.1" + "trigger": "Elastic2D", + "details": "2d elastic material", + "kind": "type", + "contents": "material Elastic2D ${1:(1)} ${2:(2)} ${3:(3)} ${4:[4]} ${5:[5]}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# (3) double, poissons ratio\n# [4] double, density, default: 0.0\n# [5] int, material type, plane stress = 0, plane strain = 1,, default: 0" }, { - "contents":"section NZ3D 180UB18.1 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 180UB18.1", - "kind":"keyword", - "trigger":"180UB18.1" + "trigger": "Elastic3D", + "details": "3d isotropic elastic material", + "kind": "type", + "contents": "material IsotropicElastic3D ${1:(1)} ${2:(2)} ${3:(3)} ${4:[4]}\n# (1) int, unique tag\n# (2) double, elastic modulus\n# (3) double, poissons ratio\n# [4] double, density, default: 0.0" }, { - "contents":"section NZ2D 180UB22.2 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 180UB22.2", - "kind":"keyword", - "trigger":"180UB22.2" + "trigger": "ElasticOS", + "details": "elastic material or beam sections", + "kind": "type", + "contents": "material ElasticOS ${1:(1)} ${2:(2)} ${3:[3]}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# [3] double, density, default: 0" }, { - "contents":"section NZ3D 180UB22.2 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 180UB22.2", - "kind":"keyword", - "trigger":"180UB22.2" + "trigger": "ElementalLee", + "details": "lee's elemental damping", + "kind": "type", + "contents": "modifier ElementalLee ${1:(1)} ${2:(2)} [${3:(3)}...]\n# (1) int, unique modifier tag\n# (2) double, damping ratio\n# [(3)...] int, element tags" }, { - "contents":"section NZ2D 200UB18.2 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 200UB18.2", - "kind":"keyword", - "trigger":"200UB18.2" + "trigger": "ElementalModal", + "details": "wilson penzien elemental damping", + "kind": "type", + "contents": "modifier ElementalModal ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4...)}\n# (1) int, unique modifier tag\n# (2) double, cut-off frequency\n# (3) double, damping ratio\n# (4...) int, element tags" }, { - "contents":"section NZ3D 200UB18.2 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 200UB18.2", - "kind":"keyword", - "trigger":"200UB18.2" + "trigger": "Embed2D", + "details": "2d embed constraint", + "kind": "type", + "contents": "constraint Embed2D ${1:(1)} ${2:(2)} ${3:(3)}\n# (1) int, unique constraint tag\n# (2) int, host element tag\n# (3) int, embedded node tag" }, { - "contents":"section NZ2D 200UB22.3 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 200UB22.3", - "kind":"keyword", - "trigger":"200UB22.3" + "trigger": "Embed3D", + "details": "3d embed constraint", + "kind": "type", + "contents": "constraint Embed3D ${1:(1)} ${2:(2)} ${3:(3)}\n# (1) int, unique constraint tag\n# (2) int, host element tag\n# (3) int, embedded node tag" }, { - "contents":"section NZ3D 200UB22.3 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 200UB22.3", - "kind":"keyword", - "trigger":"200UB22.3" + "trigger": "Embedded2D", + "details": "2d embedded element", + "kind": "type", + "contents": "element Embedded2D ${1:(1)} ${2:(2)} ${3:(3)} ${4:[4]}\n# (1) int, unique element tag\n# (2) int, host element tag\n# (3) int, slave node tag\n# [4] double, penalty factor, default: 1E4" }, { - "contents":"section NZ2D 200UB25.4 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 200UB25.4", - "kind":"keyword", - "trigger":"200UB25.4" + "trigger": "Embedded3D", + "details": "3d embedded element", + "kind": "type", + "contents": "element Embedded3D ${1:(1)} ${2:(2)} ${3:(3)} ${4:[4]}\n# (1) int, unique element tag\n# (2) int, host element tag\n# (3) int, slave node tag\n# [4] double, penalty factor, default: 1E4" }, { - "contents":"section NZ3D 200UB25.4 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 200UB25.4", - "kind":"keyword", - "trigger":"200UB25.4" + "trigger": "ExpCC", + "details": "cam-clay model with exponential hardening", + "kind": "type", + "contents": "material ExpCC ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:(7)} ${8:(8)} ${9:(9)} ${10:(10)} ${11:[11]}\n# (1) nt, unique material tag\n# (2) double, elastic modulus\n# (3) double, poissons ratio\n# (4) double, beta, controls compression side shapen# (5) double, m, slope of CSL\n# (6) double, p_t, initial tension strength\n# (7) double, a_0, initial a_0\n# (8) double, e_0, nitial void ratio\n# (9) double, lambda\n# (10) double, kappa\n# [11] double, density, default: 0.0" }, { - "contents":"section NZ2D 200UB29.8 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 200UB29.8", - "kind":"keyword", - "trigger":"200UB29.8" + "trigger": "ExpDP", + "details": "dp model with exponential hardening function", + "kind": "type", + "contents": "material ExpDP ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:(7)} ${8:(8)} ${9:(9)} ${10:[10]}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# (3) double, poissons ratio\n# (4) double, \\eta_y\n# (5) double, \\eta_f\n# (6) double, \\xi\n# (7) double, cohesion\n# (8) double, cohesion_a\n# (9) double, cohesion_b\n# [10] double, density, default: 0.0" }, { - "contents":"section NZ3D 200UB29.8 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 200UB29.8", - "kind":"keyword", - "trigger":"200UB29.8" + "trigger": "ExpGurson", + "details": "gurson model using exponential hardening function", + "kind": "type", + "contents": "material ExpGurson ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:[6]} ${7:[7]} ${8:[8]} ${9:[9]} ${10:[10]} ${11:[11]}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# (3) double, poissons ratio\n# (4) double, yield stress\n# (5) double, n\n# [6] double, q1, default: 1.0\n# [7] double, q2, default: 1.0\n# [8] double, fn, default: 0.0\n# [9] double, sn, default: 1.0\n# [10] double, en, default: 0.0\n# [11] double, density, default: 0.0" }, { - "contents":"section NZ2D 200UC46.2 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 200UC46.2", - "kind":"keyword", - "trigger":"200UC46.2" + "trigger": "ExpGurson1D", + "details": "uniaxial gurson model using exponential hardening function", + "kind": "type", + "contents": "material ExpGurson1D ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:[6]} ${7:[7]} ${8:[8]} ${9:[9]} ${10:[10]} ${11:[11]}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# (3) double, poissons ratio\n# (4) double, yield stress\n# (5) double, n\n# [6] double, q1, default: 1.0\n# [7] double, q2, default: 1.0\n# [8] double, fn, default: 0.0\n# [9] double, sn, default: 1.0\n# [10] double, en, default: 0.0\n# [11] double, density, default: 0.0" }, { - "contents":"section NZ3D 200UC46.2 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 200UC46.2", - "kind":"keyword", - "trigger":"200UC46.2" + "trigger": "ExpHoffman", + "details": "hoffman model with exponential isotropic hardening", + "kind": "type", + "contents": "material ExpHoffman ${1:(1)} ${2:(2...7)} ${3:(8...10)} ${4:(11...19)} ${5:(20)} ${6:(21)} ${7:[22]}\n# (1) int, unique material tag\n# (2...7) double, six moduli: E_{xx}, E_{yy}, E_{zz}, E_{xy}, E_{yz}, E_{zx}\n# (8...10) double, three poissions ratios: v_{xx}, v_{yy}, v_{zz}\n# (11...19) double, nine yield stress\n# (20) double, a\n# (21) double, b\n# [22] double, density, default: 0.0" }, { - "contents":"section NZ2D 200UC52.2 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 200UC52.2", - "kind":"keyword", - "trigger":"200UC52.2" + "trigger": "ExpJ2", + "details": "j2 model with exponential isotropic hardening", + "kind": "type", + "contents": "material ExpJ2 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:[7]}\n#(1) int, unique material tag\n#(2) double, elastic modulus\n#(3) double, poissons ratio\n#(4) double, yield stress\n#(5) double, a\n#(6) double, b\n#[7] double, density, default: 0" }, { - "contents":"section NZ3D 200UC52.2 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 200UC52.2", - "kind":"keyword", - "trigger":"200UC52.2" + "trigger": "ExpMises1D", + "details": "uniaxial j2 material with exponential isotropic hardening", + "kind": "type", + "contents": "material ExpMises1D ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:[7]}\n# (1) int, unique tag\n# (2) double, elastic modulus\n# (3) double, yield stress\n# (4) double, a\n# (5) double, b\n# (6) double, c\n# [7] double, density, default: 0" }, { - "contents":"section NZ2D 200UC59.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 200UC59.5", - "kind":"keyword", - "trigger":"200UC59.5" + "trigger": "ExplicitDynamic", + "details": "explicit dynamic step", + "kind": "type", + "contents": "step explicitdynamic ${1:(1)} ${2:(2)}\n# (1) int, unique step tag\n# (2) double, step size" }, { - "contents":"section NZ3D 200UC59.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 200UC59.5", - "kind":"keyword", - "trigger":"200UC59.5" + "trigger": "F21", + "details": "2d force based bernoulli beam", + "kind": "type", + "contents": "element F21 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5]} ${6:[6]}\n# (1) int, unique element tag\n# (2) int, node i\n# (3) int, node j\n# (4) int, section tag\n# [5] int, number of integration points, default: 6\n# [6] bool string, nonlinear geometry switch, default: false" }, { - "contents":"section NZ2D 200X100X4.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 200X100X4.0RHS", - "kind":"keyword", - "trigger":"200X100X4.0RHS" + "trigger": "F21H", + "details": "2d force based bernoulli beam with lumped end hinges", + "kind": "type", + "contents": "element F21H ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5]} ${6:[6]}\n# (1) int, unique element tag\n# (2) int, node i\n# (3) int, node j\n# (4) int, section tag\n# [5] double, normalized length of each end hinge, default: 0.2\n# [6] bool string, nonlinear geometry switch, default: false" }, { - "contents":"section NZ3D 200X100X4.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 200X100X4.0RHS", - "kind":"keyword", - "trigger":"200X100X4.0RHS" + "trigger": "F31", + "details": "3d displacement based bernoulli beam", + "kind": "type", + "contents": "element F31 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:[6]} ${7:[7]}\n# (1) int, unique element tag\n# (2) int, node i\n# (3) int, node j\n# (4) int, section tag\n# (5) int, orientation tag\n# [6] int, number of integration points, default: 5\n# [7] bool string, nonlinear geometry switch, default: false" }, { - "contents":"section NZ2D 200X100X5.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 200X100X5.0RHS", - "kind":"keyword", - "trigger":"200X100X5.0RHS" + "trigger": "FEAST", + "details": "feast eigen solver", + "kind": "type", + "contents": "solver FEAST ${1:(1)} ${2:(2)} ${3:(3)}\n# (1) int, unique solver tag\n# (2) int, number of eigen modes\n# (3) double, radius" }, { - "contents":"section NZ3D 200X100X5.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 200X100X5.0RHS", - "kind":"keyword", - "trigger":"200X100X5.0RHS" + "trigger": "FGMRES", + "details": "fgmres solver", + "kind": "keyword", + "contents": "set system_solver FGMRES" }, { - "contents":"section NZ2D 200X100X6.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 200X100X6.0RHS", - "kind":"keyword", - "trigger":"200X100X6.0RHS" + "trigger": "Fibre1D", + "details": "1d fibre section", + "kind": "type", + "contents": "section Fibre1D ${1:(1)} [${2:(2)}...]\n# (1) int, unique section tag\n# [(2)...] int, associated section tags" }, { - "contents":"section NZ3D 200X100X6.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 200X100X6.0RHS", - "kind":"keyword", - "trigger":"200X100X6.0RHS" + "trigger": "Fibre2D", + "details": "2d fibre section", + "kind": "type", + "contents": "section Fibre2D ${1:(1)} [${2:(2)}...]\n# (1) int, unique section tag\n# [(2)...] int, associated section tags" }, { - "contents":"section NZ2D 200X100X9.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 200X100X9.0RHS", - "kind":"keyword", - "trigger":"200X100X9.0RHS" + "trigger": "Fibre3D", + "details": "3d fibre section", + "kind": "type", + "contents": "section Fibre3D ${1:(1)} [${2:(2)}...]\n# (1) int, unique section tag\n# [(2)...] int, associated section tags" }, { - "contents":"section NZ3D 200X100X9.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 200X100X9.0RHS", - "kind":"keyword", - "trigger":"200X100X9.0RHS" + "trigger": "Fibre3DOS", + "details": "3d fibre open section", + "kind": "type", + "contents": "section Fibre3DOS ${1:(1)} [${2:(2)}...]\n# (1) int, unique section tag\n# [(2)...] int, associated section tags" }, { - "contents":"section NZ2D 200X5.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 200X5.0SHS", - "kind":"keyword", - "trigger":"200X5.0SHS" + "trigger": "FixedLength2D", + "details": "2d fixed length constraint", + "kind": "keyword", + "contents": "fixedlength2d ${1:(1)} ${2:(2)} ${3:(3)}\nconstraint fixedlength2d ${1:(1)} ${2:(2)} ${3:(3)}\n# (1) int, unique constraint tag\n# (2) int, node tag\n# (3) int, node tag" }, { - "contents":"section NZ3D 200X5.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 200X5.0SHS", - "kind":"keyword", - "trigger":"200X5.0SHS" + "trigger": "FixedLength3D", + "details": "3d fixed length constraint", + "kind": "keyword", + "contents": "fixedlength3d ${1:(1)} ${2:(2)} ${3:(3)}\nconstraint fixedlength3d ${1:(1)} ${2:(2)} ${3:(3)}\n# (1) int, unique constraint tag\n# (2) int, node tag\n# (3) int, node tag" }, { - "contents":"section NZ2D 200X6.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 200X6.0SHS", - "kind":"keyword", - "trigger":"200X6.0SHS" + "trigger": "FixedNumber", + "details": "fixed number of iterations converger", + "kind": "keyword", + "contents": "converger FixedNumber ${1:(1)} ${2:(2)} ${3:[3]}\n# (1) int, unique tag\n# (2) int, maximum iteration\n# [3] bool string, print switch, default: false" }, { - "contents":"section NZ3D 200X6.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 200X6.0SHS", - "kind":"keyword", - "trigger":"200X6.0SHS" + "trigger": "Flag01", + "details": "flag shaped material", + "kind": "type", + "contents": "material Flag01 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# (3) double, yield stress, positive\n# (4) double, residual stress, can be either positive or negative\n# (5) double, hardening ratio" }, { - "contents":"section NZ2D 200X9.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 200X9.0SHS", - "kind":"keyword", - "trigger":"200X9.0SHS" + "trigger": "Flag02", + "details": "flag shaped material", + "kind": "type", + "contents": "material Flag02 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:(7)} ${8:(8)}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# (3) double, tension yield stress, positive\n# (4) double, tension residual stress, can be either positive or negative\n# (5) double, tension hardening ratio\n# (6) double, compression yield stress, negative\n# (7) double, compression residual stress, can be either positive or negative\n# (8) double, compression hardening ratio" }, { - "contents":"section NZ3D 200X9.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 200X9.0SHS", - "kind":"keyword", - "trigger":"200X9.0SHS" + "trigger": "Fluid", + "details": "fluid material", + "kind": "type", + "contents": "material Fluid ${1:(1)} ${2:(2)} ${3:(3)}\n# (1) int, unique material tag\n# (2) double, bulk modulus\n# (3) double, density" }, { - "contents":"section NZ2D 20X1.6SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 20X1.6SHS", - "kind":"keyword", - "trigger":"20X1.6SHS" + "trigger": "Frequency", + "details": "frequency step", + "kind": "type", + "contents": "step frequency ${1:(1)} ${2:(2)}\n# (1) int, unique step tag\n# (2) int, number of eigen modes to be solved" }, { - "contents":"section NZ3D 20X1.6SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 20X1.6SHS", - "kind":"keyword", - "trigger":"20X1.6SHS" + "trigger": "GCMQ", + "details": "generalized conforming mixed quadrilateral with drilling dofs", + "kind": "type", + "contents": "element GCMQI ${1:(1)} ${2:(2...5)} ${6:(6)} ${7:[7]} ${8:[8]}\nelement GCMQL ${1:(1)} ${2:(2...5)} ${6:(6)} ${7:[7]} ${8:[8]}\nelement GCMQG ${1:(1)} ${2:(2...5)} ${6:(6)} ${7:[7]} ${8:[8]}\n# (1) int, unique element tag\n# (2...5) int, node i, j, k, l\n# (6) int, material tag\n# [7] double, element thickness, default: 1.0" }, { - "contents":"section NZ2D 219.1X4.8CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 219.1X4.8CHS", - "kind":"keyword", - "trigger":"219.1X4.8CHS" + "trigger": "GCMQG", + "details": "generalized conforming mixed quadrilateral with drilling dofs", + "kind": "type", + "contents": "element GCMQG ${1:(1)} ${2:(2...5)} ${6:(6)} ${7:[7]} ${8:[8]}\n# (1) int, unique element tag\n# (2...5) int, node i, j, k, l\n# (6) int, material tag\n# [7] double, element thickness, default: 1.0" }, { - "contents":"section NZ3D 219.1X4.8CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 219.1X4.8CHS", - "kind":"keyword", - "trigger":"219.1X4.8CHS" + "trigger": "GCMQI", + "details": "generalized conforming mixed quadrilateral with drilling dofs", + "kind": "type", + "contents": "element GCMQI ${1:(1)} ${2:(2...5)} ${6:(6)} ${7:[7]} ${8:[8]}\n# (1) int, unique element tag\n# (2...5) int, node i, j, k, l\n# (6) int, material tag\n# [7] double, element thickness, default: 1.0" }, { - "contents":"section NZ2D 219.1X6.4CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 219.1X6.4CHS", - "kind":"keyword", - "trigger":"219.1X6.4CHS" + "trigger": "GCMQL", + "details": "generalized conforming mixed quadrilateral with drilling dofs", + "kind": "type", + "contents": "element GCMQL ${1:(1)} ${2:(2...5)} ${6:(6)} ${7:[7]} ${8:[8]}\n# (1) int, unique element tag\n# (2...5) int, node i, j, k, l\n# (6) int, material tag\n# [7] double, element thickness, default: 1.0" }, { - "contents":"section NZ3D 219.1X6.4CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 219.1X6.4CHS", - "kind":"keyword", - "trigger":"219.1X6.4CHS" + "trigger": "GMRES", + "details": "gmres solver", + "kind": "keyword", + "contents": "set system_solver GMRES" }, { - "contents":"section NZ2D 219.1X8.2CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 219.1X8.2CHS", - "kind":"keyword", - "trigger":"219.1X8.2CHS" + "trigger": "GQ12", + "details": "quadrilateral with drilling dofs", + "kind": "type", + "contents": "element GQ12 ${1:(1)} ${2:(2...5)} ${6:(6)} ${7:[7]}\n# (1) int, unique element tag\n# (2...5) int, node i, j, k, l\n# (6) int, material tag\n# [7] double, element thickness, default: 1.0" }, { - "contents":"section NZ3D 219.1X8.2CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 219.1X8.2CHS", - "kind":"keyword", - "trigger":"219.1X8.2CHS" + "trigger": "GSSSSOptimal", + "details": "optimal scheme for gssss", + "kind": "keyword", + "contents": "integrator GSSSSOptimal ${1:(1)} ${2:[2]}\n# (1) int, unique integrator tag\n# [2] double, spectral radius, default: 0.5" }, { - "contents":"section NZ2D 250UB25.7 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 250UB25.7", - "kind":"keyword", - "trigger":"250UB25.7" + "trigger": "GSSSSU0", + "details": "u0 family scheme for gssss", + "kind": "keyword", + "contents": "integrator GSSSSU0 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)}\n# (1) int, unique integrator tag\n# (2-4) double, three spectral radii" }, { - "contents":"section NZ3D 250UB25.7 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 250UB25.7", - "kind":"keyword", - "trigger":"250UB25.7" + "trigger": "GSSSSV0", + "details": "v0 family scheme for gssss", + "kind": "keyword", + "contents": "integrator GSSSSV0 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)}\n# (1) int, unique integrator tag\n# (2-4) double, three spectral radii" }, { - "contents":"section NZ2D 250UB31.4 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 250UB31.4", - "kind":"keyword", - "trigger":"250UB31.4" + "trigger": "Gap01", + "details": "a gap material", + "kind": "type", + "contents": "material Gap01 ${1:(1)} ${2:(2)} ${3:(3)} ${4:[4]} ${5:[5]}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# (3) double, yield stress\n# [4] double, gap strain, default: 0.0\n# [5] double, density, default: 0.0" }, { - "contents":"section NZ3D 250UB31.4 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 250UB31.4", - "kind":"keyword", - "trigger":"250UB31.4" + "trigger": "GeneralisedAlpha", + "details": "generalized-alpha time integration", + "kind": "keyword", + "contents": "integrator GeneralisedAlpha ${1:(1)} ${2:[2]}\n# (1) int, unique tag\n# [2] double, spectral radius at infinite frequency, default: 0.5\n\nintegrator GeneralisedAlpha ${1:(1)} ${2:(2)} ${3:(3)}\n# (1) int, unique tag\n# (2) double, \\alpha_f\n# (3) double, \\alpha_m" }, { - "contents":"section NZ2D 250UB37.3 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 250UB37.3", - "kind":"keyword", - "trigger":"250UB37.3" + "trigger": "GeneralisedAlphaExplicit", + "details": "explicit generalized-alpha time integration", + "kind": "keyword", + "contents": "integrator GeneralisedAlphaExplicit ${1:(1)} ${2:[2]}\n# (1) int, unique tag\n# [2] double, spectral radius at infinite frequency, default: 0.5" }, { - "contents":"section NZ3D 250UB37.3 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 250UB37.3", - "kind":"keyword", - "trigger":"250UB37.3" + "trigger": "GeneralizedAlpha", + "details": "generalized-alpha time integration", + "kind": "keyword", + "contents": "integrator GeneralisedAlpha ${1:(1)} ${2:[2]}\n# (1) int, unique tag\n# [2] double, spectral radius at infinite frequency, default: 0.5\n\nintegrator GeneralisedAlpha ${1:(1)} ${2:(2)} ${3:(3)}\n# (1) int, unique tag\n# (2) double, \\alpha_f\n# (3) double, \\alpha_m" }, { - "contents":"section NZ2D 250UC72.9 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 250UC72.9", - "kind":"keyword", - "trigger":"250UC72.9" + "trigger": "GroupMultiplierBC", + "details": "boundary condition", + "kind": "keyword", + "contents": "groupmultiplierbc ${1:(1)} ${2:(2)} ${3:(3...)}\n# (1) int, unique tag\n# (2) string, dof identifier\n# (3...) int, tags of groups that shall be constrained" }, { - "contents":"section NZ3D 250UC72.9 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 250UC72.9", - "kind":"keyword", - "trigger":"250UC72.9" + "trigger": "GroupPenaltyBC", + "details": "boundary condition", + "kind": "keyword", + "contents": "grouppenaltybc ${1:(1)} ${2:(2)} ${3:(3...)}\n# (1) int, unique tag\n# (2) string, dof identifier\n# (3...) int, tags of groups that shall be constrained" }, { - "contents":"section NZ2D 250UC89.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 250UC89.5", - "kind":"keyword", - "trigger":"250UC89.5" + "trigger": "HSection2D", + "details": "2d h-section", + "kind": "type", + "contents": "section HSection2D ${1:(1)} ${2:(2...7)} ${8:(8)} ${9:[9]} ${10:[10]}\n# (1) int, unique tag\n# (2...7) double, section dimensions\n# (8) int, material tag\n# [9] int, number of integration points, default: 6\n# [10] double, eccentricity measured from the centre, default: 0.0" }, { - "contents":"section NZ3D 250UC89.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 250UC89.5", - "kind":"keyword", - "trigger":"250UC89.5" + "trigger": "ILU", + "details": "ilu preconditioner", + "kind": "keyword", + "contents": "set preconditioner ILU" }, { - "contents":"section NZ2D 250X150X5.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 250X150X5.0RHS", - "kind":"keyword", - "trigger":"250X150X5.0RHS" + "trigger": "ISection2D", + "details": "2d i-section", + "kind": "type", + "contents": "section ISection2D ${1:(1)} ${2:(2...7)} ${8:(8)} ${9:[9]} ${10:[10]}\n# (1) int, unique tag\n# (2...7) double, section dimensions\n# (8) int, material tag\n# [9] int, number of integration points, default: 6\n# [10] double, eccentricity measured from the centre, default: 0.0" }, { - "contents":"section NZ3D 250X150X5.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 250X150X5.0RHS", - "kind":"keyword", - "trigger":"250X150X5.0RHS" + "trigger": "ISection3D", + "details": "3d i-section", + "kind": "type", + "contents": "section ISection3D ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:(7)} ${8:(8)} ${9:[9]} ${10:[10]} ${11:[11]}\n# (1) int, unique section tag\n# (2) double, top flange width\n# (3) double, top flange thickness\n# (4) double, bottom flange width\n# (5) double, bottom flange thickness\n# (6) double, web height\n# (7) double, web thickness\n# (8) int, material tag\n# [9] int, number of integration points, default: 6\n# [10] double, eccentricity along y axis, default: 0.0\n# [11] double, eccentricity along z axis, default: 0.0" }, { - "contents":"section NZ2D 250X150X6.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 250X150X6.0RHS", - "kind":"keyword", - "trigger":"250X150X6.0RHS" + "trigger": "ImplicitDynamic", + "details": "implicit dynamic step", + "kind": "type", + "contents": "step implicitdynamic ${1:(1)} ${2:(2)}\n# (1) int, unique step tag\n# (2) double, step size" }, { - "contents":"section NZ3D 250X150X6.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 250X150X6.0RHS", - "kind":"keyword", - "trigger":"250X150X6.0RHS" + "trigger": "IsotropicElastic3D", + "details": "3d isotropic elastic material", + "kind": "type", + "contents": "material IsotropicElastic3D ${1:(1)} ${2:(2)} ${3:[3]}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# [3] double, density, default: 0" }, { - "contents":"section NZ2D 250X150X9.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 250X150X9.0RHS", - "kind":"keyword", - "trigger":"250X150X9.0RHS" + "trigger": "Jacobi", + "details": "jacobi preconditioner", + "kind": "keyword", + "contents": "set preconditioner Jacobi" }, { - "contents":"section NZ3D 250X150X9.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 250X150X9.0RHS", - "kind":"keyword", - "trigger":"250X150X9.0RHS" + "trigger": "Joint", + "details": "joint element", + "kind": "type", + "contents": "element Joint ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4...)}\n# (1) int, unique element tag\n# (2) int, node i\n# (3) int, node j\n# (4...) int, material tags" }, { - "contents":"section NZ2D 250X6.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 250X6.0SHS", - "kind":"keyword", - "trigger":"250X6.0SHS" + "trigger": "Kelvin", + "details": "kelvin material", + "kind": "type", + "contents": "material Kelvin ${1:(1)} ${2:(2)} ${3:(3)}\n# (1) int, unique material tag\n# (2) int, damper tag\n# (3) int, spring tag" }, { - "contents":"section NZ3D 250X6.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 250X6.0SHS", - "kind":"keyword", - "trigger":"250X6.0SHS" + "trigger": "LAPACK", + "details": "lapack solver", + "kind": "keyword", + "contents": "set system_solver LAPACK" }, { - "contents":"section NZ2D 250X9.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 250X9.0SHS", - "kind":"keyword", - "trigger":"250X9.0SHS" + "trigger": "LBFGS", + "details": "lbfgs solver", + "kind": "type", + "contents": "solver LBFGS ${1:(1)} ${2:[2]}\n# (1) int, unique solver tag\n# [2] int, maximum number of history, default: 20" }, { - "contents":"section NZ3D 250X9.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 250X9.0SHS", - "kind":"keyword", - "trigger":"250X9.0SHS" + "trigger": "LJPotential2D", + "details": "2d lj potential constraint", + "kind": "type", + "contents": "constraint LJPotential2D ${1:(1)} ${2:[2]} ${3:[3]}\n# (1) int, unique constraint tag\n# [2] double, spacing, default: 1.0\n# [3] double, alpha, default: 1.0" }, { - "contents":"section NZ2D 25X1.6SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 25X1.6SHS", - "kind":"keyword", - "trigger":"25X1.6SHS" + "trigger": "Laminated", + "details": "parallel wrapper for 2d material models", + "kind": "type", + "contents": "material Laminated ${1:(1)} ${2:(2...)}\n# (1) int, unique material tag\n# (2...) int, material tags of 2D models need to be contained" }, { - "contents":"section NZ3D 25X1.6SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 25X1.6SHS", - "kind":"keyword", - "trigger":"25X1.6SHS" + "trigger": "LeeElementalNewmark", + "details": "elemental damping using lee's method", + "kind": "keyword", + "contents": "integrator LeeElementalNewmark ${1:(1)} ${2:(2)} ${3:(3)} (${4:(4)} ${5:(5)}...)\n# (1) int, unique integrator tag\n# (2) double, alpha\n# (3) double, beta\n# (4) double, reference damping ratio \\zeta_p at the peak of each mode\n# (5) double, circular frequency \\omega_p at the peak of each mode" }, { - "contents":"section NZ2D 25X2.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 25X2.0SHS", - "kind":"keyword", - "trigger":"25X2.0SHS" + "trigger": "LeeNewmark", + "details": "newmark with lee's damping model", + "kind": "keyword", + "contents": "integrator LeeNewmark ${1:(1)} ${2:(2)} ${3:(3)} (${4:(4)} ${5:(5)}...)\n# (1) int, unique integrator tag\n# (2) double, alpha\n# (3) double, beta\n# (4) double, damping ratio \\zeta_p at the peak of each mode\n# (5) double, circular frequency \\omega_p at the peak of each mode" }, { - "contents":"section NZ3D 25X2.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 25X2.0SHS", - "kind":"keyword", - "trigger":"25X2.0SHS" + "trigger": "LeeNewmarkFull", + "details": "newmark with lee's damping model (full mode)", + "kind": "keyword", + "contents": "integrator LeeNewmarkFull ${1:(1)} ${2:(2)} ${3:(3)} (${4:(4)} ${5:(5)} ${6:(6)} ${7:[7...]}...)\n# (1) int, unique integrator tag\n# (2) double, alpha in Newmark method\n# (3) double, beta in Newmark method\n# (4) string, type identifier\n# (5) double, \\zeta_p\n# (6) double, \\omega_p\n# (7...) double/int, parameters associated with the mode" }, { - "contents":"section NZ2D 25X2.5SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 25X2.5SHS", - "kind":"keyword", - "trigger":"25X2.5SHS" + "trigger": "LineUDL2D", + "details": "2d linear udl", + "kind": "keyword", + "contents": "lineudl2d ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5...)}\nload lineudl2d ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5...)}\n# (1) int, unique tag\n# (2) int, amplitude tag, 0 to use a default `Ramp` amplitude\n# (3) double, nominal magnitude\n# (4) int, dof tag\n# (5...) int, node tags" }, { - "contents":"section NZ3D 25X2.5SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 25X2.5SHS", - "kind":"keyword", - "trigger":"25X2.5SHS" + "trigger": "LineUDL3D", + "details": "3d linear udl", + "kind": "keyword", + "contents": "lineudl3d ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5...)}\nload lineudl3d ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5...)}\n# (1) int, unique tag\n# (2) int, amplitude tag, 0 to use a default `Ramp` amplitude\n# (3) double, nominal magnitude\n# (4) int, dof tag\n# (5...) int, node tags" }, { - "contents":"section NZ2D 25X3.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 25X3.0SHS", - "kind":"keyword", - "trigger":"25X3.0SHS" + "trigger": "Linear", + "details": "linear amplitude", + "kind": "keyword", + "contents": "amplitutde Linear ${1:(1)} ${2:(2)}\n# (1) int, unique amplitude tag\n# (2) double, slope V" }, { - "contents":"section NZ3D 25X3.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 25X3.0SHS", - "kind":"keyword", - "trigger":"25X3.0SHS" + "trigger": "LinearDamage", + "details": "linear damage model", + "kind": "type", + "contents": "material LinearDamage ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5]}\n# (1) int, unique material tag\n# (2) int, associated material tag\n# (3) double, start strain\n# (4) double, end strain\n# [5] double, end damage value, default: 0.0" }, { - "contents":"section NZ2D 273.1X4.8CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 273.1X4.8CHS", - "kind":"keyword", - "trigger":"273.1X4.8CHS" + "trigger": "LinearViscosity", + "details": "linear viscosity modifier", + "kind": "type", + "contents": "modifier LinearViscosity ${1:(1)} ${2:(2)} [${3:(3)}...]\n# (1) int, unique modifier tag\n# (2) double, \\mu\n# [(3)...] int, element tags" }, { - "contents":"section NZ3D 273.1X4.8CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 273.1X4.8CHS", - "kind":"keyword", - "trigger":"273.1X4.8CHS" + "trigger": "LogicAND", + "details": "apply logical operations to two convergers.", + "kind": "keyword", + "contents": "converger LogicAND ${1:(1)} ${2:(2)} ${3:(3)}\n# (1) int, unique converger tag\n# (2) int, tag of first converger in logical operation\n# (3) int, tag of second converger in logical operation" }, { - "contents":"section NZ2D 273.1X6.4CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 273.1X6.4CHS", - "kind":"keyword", - "trigger":"273.1X6.4CHS" + "trigger": "LogicOR", + "details": "apply logical operations to two convergers.", + "kind": "keyword", + "contents": "converger LogicOR ${1:(1)} ${2:(2)} ${3:(3)}\n# (1) int, unique converger tag\n# (2) int, tag of first converger in logical operation\n# (3) int, tag of second converger in logical operation" }, { - "contents":"section NZ3D 273.1X6.4CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 273.1X6.4CHS", - "kind":"keyword", - "trigger":"273.1X6.4CHS" + "trigger": "LogicXOR", + "details": "apply logical operations to two convergers.", + "kind": "keyword", + "contents": "converger LogicXOR ${1:(1)} ${2:(2)} ${3:(3)}\n# (1) int, unique converger tag\n# (2) int, tag of first converger in logical operation\n# (3) int, tag of second converger in logical operation" }, { - "contents":"section NZ2D 273.1X9.3CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 273.1X9.3CHS", - "kind":"keyword", - "trigger":"273.1X9.3CHS" + "trigger": "LumpedScale", + "details": "lumped mass by scaling diagonals", + "kind": "type", + "contents": "modifier LumpedScale ${1:(1)} (2...)\n# (1) int, unique modifier tag\n# (2...) int, element tags" }, { - "contents":"section NZ3D 273.1X9.3CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 273.1X9.3CHS", - "kind":"keyword", - "trigger":"273.1X9.3CHS" + "trigger": "LumpedSimple", + "details": "lumped mass simple", + "kind": "type", + "contents": "modifier LumpedSimple ${1:(1)} (2...)\n# (1) int, unique modifier tag\n# (2...) int, element tags" }, { - "contents":"section NZ2D 30X1.6SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 30X1.6SHS", - "kind":"keyword", - "trigger":"30X1.6SHS" + "trigger": "MPC", + "details": "multi-point constraint", + "kind": "keyword", + "contents": "mpc ${1:(1)} ${2:(2)} ${3:(3)} [${4:(4)} ${5:(5)} ${6:(6)})...]\nconstraint mpc ${1:(1)} ${2:(2)} ${3:(3)} [${4:(4)} ${5:(5)} ${6:(6)})...]\n# (1) int, unique constraint tag\n# (2) int, amplitude tag, can be zero\n# (3) double, right hand side of the constraint equation, the constraint is homogeneous if this parameter is zero\n# (4) int, node tag\n# (5) int, dof tag\n# (6) double, weight" }, { - "contents":"section NZ3D 30X1.6SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 30X1.6SHS", - "kind":"keyword", - "trigger":"30X1.6SHS" + "trigger": "MPDC", + "details": "displacement controlled solver", + "kind": "type", + "contents": "solver MPDC ${1:(1)}\nsolver DisplacementControl ${1:(1)}\n# (1) int, unique solver tag" }, { - "contents":"section NZ2D 30X2.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 30X2.0SHS", - "kind":"keyword", - "trigger":"30X2.0SHS" + "trigger": "MPF", + "details": "menegotto-pinto-filippou steel model", + "kind": "type", + "contents": "material MPF ${1:(1)} ${2:(2)} ${3:(3)} ${4:[4]} ${5:[5]} ${6:[6]} ${7:[7]} ${8:[8]} ${9:[9]} ${10:[10]} ${11:[11]} ${12:[12]}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# (3) double, initial yield stress\n# [4] double, hardening ratio, default: 0.05\n# [5] double, R0, default: 20.0\n# [6] double, A1, default: 18.5\n# [7] double, A2, default: 0.15\n# [8] double, A3, default: 0.01\n# [9] double, A4, default: 7.0\n# [10] bool string, isotropic hardening switch, default: false\n# [11] bool string, constant radius switch, default: false\n# [12] double, density, default: 0.0" }, { - "contents":"section NZ3D 30X2.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 30X2.0SHS", - "kind":"keyword", - "trigger":"30X2.0SHS" + "trigger": "MUMPS", + "details": "mumps solver", + "kind": "keyword", + "contents": "set system_solver MUMPS" }, { - "contents":"section NZ2D 310UB32.0 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 310UB32.0", - "kind":"keyword", - "trigger":"310UB32.0" + "trigger": "MVLEM", + "details": "multiple vertical line element model", + "kind": "type", + "contents": "element MVLEM ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} (${6:(6)} ${7:(7)} ${8:(8)} ${9:(9)} ${10:(10)}...)\n# (1) int, unique element tag\n# (2) int, node i\n# (3) int, node j\n# (4) int, material tag of shear spring\n# (5) double, height of shear spring, ranges from 0 to 1\n# (6) double, fibre width\n# (7) double, fibre thickness\n# (8) double, reinforcement ratio of target fibre\n# (9) int, concrete material ${host:(host)} tag\n# (10) int, steel material tag" }, { - "contents":"section NZ3D 310UB32.0 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 310UB32.0", - "kind":"keyword", - "trigger":"310UB32.0" + "trigger": "Mass", + "details": "point mass", + "kind": "keyword", + "contents": "Mass ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4...)}\nelement Mass ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4...)}\n# (1) int, unique element tag\n# (2) int, node tag\n# (3) double, magnitude\n# (4...) int, dof tag" }, { - "contents":"section NZ2D 310UB40.4 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 310UB40.4", - "kind":"keyword", - "trigger":"310UB40.4" + "trigger": "Mass2D", + "details": "2d mass", + "kind": "type", + "contents": "element Mass2D ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4...)}\n# (1) int, unique element tag\n# (2) int, node tag\n# (3) double, magnitude\n# (4...) int, dof tag" }, { - "contents":"section NZ3D 310UB40.4 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 310UB40.4", - "kind":"keyword", - "trigger":"310UB40.4" + "trigger": "Mass3D", + "details": "3d mass", + "kind": "type", + "contents": "element Mass3D ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4...)}\n# (1) int, unique element tag\n# (2) int, node tag\n# (3) double, magnitude\n# (4...) int, dof tag" }, { - "contents":"section NZ2D 310UB46.2 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 310UB46.2", - "kind":"keyword", - "trigger":"310UB46.2" + "trigger": "MassPoint2D", + "details": "uniform 2d mass point", + "kind": "type", + "contents": "element MassPoint2D ${1:(1)} ${2:(2)} ${3:(3)} ${4:[4]}\n# (1) int, unique element tag\n# (2) int, node tag\n# (3) double, translational mass magnitude\n# [4] double, optional, rotational inertia magnitude" }, { - "contents":"section NZ3D 310UB46.2 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 310UB46.2", - "kind":"keyword", - "trigger":"310UB46.2" + "trigger": "MassPoint3D", + "details": "uniform 3d mass point", + "kind": "type", + "contents": "element MassPoint3D ${1:(1)} ${2:(2)} ${3:(3)} ${4:[4]}\n# (1) int, unique element tag\n# (2) int, node tag\n# (3) double, translational mass magnitude\n# [4] double, optional, rotational inertia magnitude" }, { - "contents":"section NZ2D 310UC118 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 310UC118", - "kind":"keyword", - "trigger":"310UC118" + "trigger": "MaxDisplacement", + "details": "max displacement criterion", + "kind": "type", + "contents": "criterion MaxDisplacement ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)}\n# (1) int, unique criterion tag\n# (2) int, node\n# (3) int, dof\n# (4) double, limit" }, { - "contents":"section NZ3D 310UC118 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 310UC118", - "kind":"keyword", - "trigger":"310UC118" + "trigger": "MaxGap2D", + "details": "gap constraint", + "kind": "type", + "contents": "constraint MaxGap2D ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)}\n# (1) int, unique constraint tag\n# (2) int, node tag\n# (3) int, node tag\n# (4) double, gap" }, { - "contents":"section NZ2D 310UC137 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 310UC137", - "kind":"keyword", - "trigger":"310UC137" + "trigger": "MaxGap3D", + "details": "gap constraint", + "kind": "type", + "contents": "constraint MaxGap3D ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)}\n# (1) int, unique constraint tag\n# (2) int, node tag\n# (3) int, node tag\n# (4) double, gap" }, { - "contents":"section NZ3D 310UC137 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 310UC137", - "kind":"keyword", - "trigger":"310UC137" + "trigger": "MaxHistory", + "details": "max history criterion", + "kind": "type", + "contents": "criterion MaxHisotry ${1:(1)} ${2:(2)} ${3:(3)}\n# (1) int, unique criterion tag\n# (2) string, history vairable type\n# (3) double, limit" }, { - "contents":"section NZ2D 310UC96.8 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 310UC96.8", - "kind":"keyword", - "trigger":"310UC96.8" + "trigger": "MaxResistance", + "details": "max resistance criterion", + "kind": "type", + "contents": "criterion MaxResistance ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)}\n# (1) int, unique criterion tag\n# (2) int, node\n# (3) int, dof\n# (4) double, limit" }, { - "contents":"section NZ3D 310UC96.8 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 310UC96.8", - "kind":"keyword", - "trigger":"310UC96.8" + "trigger": "MaximumGap2D", + "details": "gap constraint", + "kind": "type", + "contents": "constraint MaximumGap2D ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)}\n# (1) int, unique constraint tag\n# (2) int, node tag\n# (3) int, node tag\n# (4) double, gap" }, { - "contents":"section NZ2D 320UC158 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 320UC158", - "kind":"keyword", - "trigger":"320UC158" + "trigger": "MaximumGap3D", + "details": "gap constraint", + "kind": "type", + "contents": "constraint MaximumGap3D ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)}\n# (1) int, unique constraint tag\n# (2) int, node tag\n# (3) int, node tag\n# (4) double, gap" }, { - "contents":"section NZ3D 320UC158 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 320UC158", - "kind":"keyword", - "trigger":"320UC158" + "trigger": "Maxwell", + "details": "maxwell material", + "kind": "type", + "contents": "material Maxwell ${1:(1)} ${2:(2)} ${3:(3)} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, damper tag\n# (3) int, spring tag\n# [4] bool string, if to use matrix formulation, default: false\n# [5] int, the maximum unconverged substep allowed, default: 1\n# [6] double, local time integration parameter, default: 0.0" }, { - "contents":"section NZ2D 323.9X12.7CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 323.9X12.7CHS", - "kind":"keyword", - "trigger":"323.9X12.7CHS" + "trigger": "MinDisplacement", + "details": "min displacement criterion", + "kind": "type", + "contents": "criterion MinDisplacement ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)}\n# (1) int, unique criterion tag\n# (2) int, node\n# (3) int, dof\n# (4) double, limit" }, { - "contents":"section NZ3D 323.9X12.7CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 323.9X12.7CHS", - "kind":"keyword", - "trigger":"323.9X12.7CHS" + "trigger": "MinGap2D", + "details": "gap constraint", + "kind": "type", + "contents": "constraint MinGap2D ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)}\n# (1) int, unique constraint tag\n# (2) int, node tag\n# (3) int, node tag\n# (4) double, gap" }, { - "contents":"section NZ2D 323.9X6.4CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 323.9X6.4CHS", - "kind":"keyword", - "trigger":"323.9X6.4CHS" + "trigger": "MinGap3D", + "details": "gap constraint", + "kind": "type", + "contents": "constraint MinGap3D ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)}\n# (1) int, unique constraint tag\n# (2) int, node tag\n# (3) int, node tag\n# (4) double, gap" }, { - "contents":"section NZ3D 323.9X6.4CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 323.9X6.4CHS", - "kind":"keyword", - "trigger":"323.9X6.4CHS" + "trigger": "MinResistance", + "details": "min resistance criterion", + "kind": "type", + "contents": "criterion MinResistance ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)}\n# (1) int, unique criterion tag\n# (2) int, node\n# (3) int, dof\n# (4) double, limit" }, { - "contents":"section NZ2D 323.9X9.5CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 323.9X9.5CHS", - "kind":"keyword", - "trigger":"323.9X9.5CHS" + "trigger": "Mindlin", + "details": "mindlin plate element", + "kind": "type", + "contents": "element Mindlin ${1:(1)} ${2:(2...5)} ${6:(6)} ${7:(7)} ${8:[8]}\n# (1) int, unique element tag\n# (2...5) int, node i, j, k, l\n# (6) int, material tag\n# (7) double, thickness\n# [8] int, numer of integration points, default: 5" }, { - "contents":"section NZ3D 323.9X9.5CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 323.9X9.5CHS", - "kind":"keyword", - "trigger":"323.9X9.5CHS" + "trigger": "MinimumGap2D", + "details": "gap constraint", + "kind": "type", + "contents": "constraint MinimumGap2D ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)}\n# (1) int, unique constraint tag\n# (2) int, node tag\n# (3) int, node tag\n# (4) double, gap" }, { - "contents":"section NZ2D 350WC197 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 350WC197", - "kind":"keyword", - "trigger":"350WC197" + "trigger": "MinimumGap3D", + "details": "gap constraint", + "kind": "type", + "contents": "constraint MinimumGap3D ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)}\n# (1) int, unique constraint tag\n# (2) int, node tag\n# (3) int, node tag\n# (4) double, gap" }, { - "contents":"section NZ3D 350WC197 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 350WC197", - "kind":"keyword", - "trigger":"350WC197" + "trigger": "Modulated", + "details": "modulated amplitude", + "kind": "type", + "contents": "amplitude Modulated ${1:(1)} ${2:(2)} ${3:(3)} [${4:(4)}...]\n# (1) int, unique tag\n# (2) double, base amplitude A_0\n# (3) double, first frequency \\omega_0\n# [(4)...] double, optional frequencies for higher modes" }, { - "contents":"section NZ2D 350WC230 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 350WC230", - "kind":"keyword", - "trigger":"350WC230" + "trigger": "MooneyRivlin", + "details": "mooney rivlin rubber material", + "kind": "type", + "contents": "material MoonetRivlin ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5]}\n# (1) int, unique tag\n# (2) double, bulk modulus\n# (3) double, A_{10}\n# (4) double, A_{01}\n# [5] double, density, default: 0.0" }, { - "contents":"section NZ3D 350WC230 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 350WC230", - "kind":"keyword", - "trigger":"350WC230" + "trigger": "MultilinearElastic1D", + "details": "uniaxial multilinear elastic material", + "kind": "type", + "contents": "material MultilinearElastic1D ${1:(1)} ${2:(2 3...)} ${4:[4]}\n# (1) int, unique material tag\n# (2) double, strain of the data point\n# (3) double, stress of the data point\n# [4] double, density, default: 0.0" }, { - "contents":"section NZ2D 350WC258 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 350WC258", - "kind":"keyword", - "trigger":"350WC258" + "trigger": "MultilinearJ2", + "details": "multilinear j2 material", + "kind": "type", + "contents": "material MultilinearJ2 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} (${5:(5)} ${6:(6)}...)\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# (3) double, Poisson's ratio\n# (4) double, density\n# (5) double, plastic strain of control point\n# (6) double, stress of control point" }, { - "contents":"section NZ3D 350WC258 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 350WC258", - "kind":"keyword", - "trigger":"350WC258" + "trigger": "MultilinearMises1D", + "details": "uniaxial multiliear j2 material", + "kind": "type", + "contents": "material MultilinearMises1D ${1:(1)} ${2:(2)} ${3:(3)} (${4:(4)} ${5:(5)}...)\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# (3) double, density\n# (4) double, plastic strain of control point\n# (5) double, stress of control point" }, { - "contents":"section NZ2D 350WC280 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 350WC280", - "kind":"keyword", - "trigger":"350WC280" + "trigger": "MultilinearOO", + "details": "multilinear origin oriented hysteresis model", + "kind": "type", + "contents": "material MultilinearOO ${1:(1)} ${2:(2)} ${3:(3)} ${4:[4]}\n# (1) int, unique material tag\n# (2) string, file name of tension backbone\n# (3) string, file name of compression backbone\n# [4] double, density, default: 0.0" }, { - "contents":"section NZ3D 350WC280 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 350WC280", - "kind":"keyword", - "trigger":"350WC280" + "trigger": "MultilinearPO", + "details": "multilinear peak oriented hysteresis model", + "kind": "type", + "contents": "material multilinearpo ${1:(1)} ${2:(2)} ${3:(3)} ${4:[4]}\n# (1) int, unique material tag\n# (2) string, file name of tension backbone\n# (3) string, file name of compression backbone\n# [4] double, density, default: 0.0" }, { - "contents":"section NZ2D 355.6X12.7CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 355.6X12.7CHS", - "kind":"keyword", - "trigger":"355.6X12.7CHS" + "trigger": "MultiplierBC", + "details": "boundary condition", + "kind": "keyword", + "contents": "multiplierbc ${1:(1)} ${2:(2)} ${3:(3...)}\n# (1) int, unique tag\n# (2) string, dof identifier\n# (3...) int, tags of nodes that shall be constrained" }, { - "contents":"section NZ3D 355.6X12.7CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 355.6X12.7CHS", - "kind":"keyword", - "trigger":"355.6X12.7CHS" + "trigger": "NLE1D01", + "details": "nonlinear elastic 1d type 01", + "kind": "type", + "contents": "material NLE1D01 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5]} ${6:[6]}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# (3) double, turning stress\n# (4) double, hardening ratio\n# [5] double, radius of transition, default: 20\n# [6] double, density, default: 0.0" }, { - "contents":"section NZ2D 355.6X6.4CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 355.6X6.4CHS", - "kind":"keyword", - "trigger":"355.6X6.4CHS" + "trigger": "NLE3D01", + "details": "3d nonlinear elastic material", + "kind": "type", + "contents": "material NLE3D01 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:[6]}\n# (1) int, unique material tag\n# (2) double, bulk modulus\n# (3) double, reference strain\n# (4) double, reference stress\n# (5) double, m\n# [6] double, density, default: 0.0" }, { - "contents":"section NZ3D 355.6X6.4CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 355.6X6.4CHS", - "kind":"keyword", - "trigger":"355.6X6.4CHS" + "trigger": "NM2D1", + "details": "n-m interaction elastic section", + "kind": "type", + "contents": "section NM2D1 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)}\n# (1) int, unique section tag\n# (2) double, EA\n# (3) double, EI\n# (4) double, linear density" }, { - "contents":"section NZ2D 355.6X9.5CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 355.6X9.5CHS", - "kind":"keyword", - "trigger":"355.6X9.5CHS" + "trigger": "NM2D2", + "details": "n-m interaction inelastic section with linear hardening", + "kind": "type", + "contents": "section NM2D2 ${1:(1)} ${2:(2...9)} [${10:(10)} ${11:(11)} ${12:(12)}...]\n# (1) int, unique section tag\n# (2) double, EA\n# (3) double, EI\n# (4) double, yielding axial force\n# (5) double, yielding strong axis moment\n# (6) double, d\n# (7) double, isotropic hardening parameter H\n# (8) double, kinematic hardening parameter K\n# (9) double, linear density\n# (10) double, a_i\n# (11) double, b_i\n# (12) double, c_i" }, { - "contents":"section NZ3D 355.6X9.5CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 355.6X9.5CHS", - "kind":"keyword", - "trigger":"355.6X9.5CHS" + "trigger": "NM2D3", + "details": "n-m interaction inelastic section with nonlinear hardening", + "kind": "type", + "contents": "section NM2D3 ${1:(1)} ${2:(2...12)} [${13:(13)} ${14:(14)} ${15:(15)}) ...]\n# (1) int, unique section tag\n# (2) double, EA\n# (3) double, EI\n# (4) double, yielding axial force\n# (5) double, yielding strong axis moment\n# (6) double, d\n# (7) double, isotropic hardening modulus, H\n# (8) double, isotropic hardening saturation, s\n# (9) double, isotropic hardening decay, m\n# (10) double, kinematic hardening modulus, K_b\n# (11) double, kinematic hardening base, K_a\n# (12) double, linear density\n# (13) double, a_i\n# (14) double, b_i\n# (15) double, c_i" }, { - "contents":"section NZ2D 35X1.6SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 35X1.6SHS", - "kind":"keyword", - "trigger":"35X1.6SHS" + "trigger": "NM2D3K", + "details": "n-m interaction inelastic section with nonlinear hardening", + "kind": "type", + "contents": "section NM2D3K ${1:(1)} (2...14) [${15:(15)} ${16:(16)} ${17:(17)} ...]\n# (1) int, unique section tag\n# (2) double, EA\n# (3) double, EI\n# (4) double, yielding axial force\n# (5) double, yielding strong axis moment\n# (6) double, d\n# (7) double, isotropic hardening modulus, H\n# (8) double, isotropic hardening saturation, s\n# (9) double, isotropic hardening decay, m\n# (10) double, kinematic hardening modulus for axial force, K_b\n# (11) double, kinematic hardening modulus for strong axis moment, K_b\n# (12) double, kinematic hardening base for axial force, K_a\n# (13) double, kinematic hardening base for strong axis moment, K_a\n# (14) double, linear density\n# (15) double, a_i\n# (16) double, b_i\n# (17) double, c_i" }, { - "contents":"section NZ3D 35X1.6SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 35X1.6SHS", - "kind":"keyword", - "trigger":"35X1.6SHS" + "trigger": "NM3D1", + "details": "n-m interaction elastic section", + "kind": "type", + "contents": "section NM3D1 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)}\n# (1) int, unique section tag\n# (2) double, EA\n# (3) double, EI of strong axis\n# (4) double, EI of weak axis\n# (5) double, linear density" }, { - "contents":"section NZ2D 35X2.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 35X2.0SHS", - "kind":"keyword", - "trigger":"35X2.0SHS" + "trigger": "NM3D2", + "details": "n-m interaction inelastic section with linear hardening", + "kind": "type", + "contents": "section NM3D2 ${1:(1)} ${2:(2...11)}\n# (1) int, unique section tag\n# (2) double, EA\n# (3) double, strong axis EI\n# (4) double, weak axis EI\n# (5) double, yielding axial force\n# (6) double, yielding strong axis moment\n# (7) double, yielding weak axis moment\n# (8) double, c\n# (9) double, isotropic hardening parameter H\n# (10) double, kinematic hardening parameter K\n# (11) double, linear density" }, { - "contents":"section NZ3D 35X2.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 35X2.0SHS", - "kind":"keyword", - "trigger":"35X2.0SHS" + "trigger": "NM3D3", + "details": "n-m interaction inelastic section with nonlinear hardening", + "kind": "type", + "contents": "section NM3D3 ${1:(1)} (2...14) [${15:(15)} ${16:(16)} ${17:(17)} ${18:(18)}...]\n# (1) int, unique section tag\n# (2) double, EA\n# (3) double, strong axis EI\n# (4) double, weak axis EI\n# (5) double, yielding axial force\n# (6) double, yielding strong axis moment\n# (7) double, yielding weak axis moment\n# (8) double, e\n# (9) double, isotropic hardening modulus, H\n# (10) double, isotropic hardening saturation, s\n# (11) double, isotropic hardening decay, m\n# (12) double, kinematic hardening modulus, K_b\n# (13) double, kinematic hardening base, K_a\n# (14) double, linear density\n# (15) double, a_i\n# (16) double, b_i\n# (17) double, c_i\n# (18) double, d_i" }, { - "contents":"section NZ2D 35X2.5SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 35X2.5SHS", - "kind":"keyword", - "trigger":"35X2.5SHS" + "trigger": "NM3D3K", + "details": "n-m interaction inelastic section with nonlinear hardening", + "kind": "type", + "contents": "section NM3D3K ${1:(1)} (2...18) [${19:(19)} ${20:(20)} ${21:(21)} ${22:(22)}...]\n# (1) int, unique section tag\n# (2) double, EA\n# (3) double, strong axis EI\n# (4) double, weak axis EI\n# (5) double, yielding axial force\n# (6) double, yielding strong axis moment\n# (7) double, yielding weak axis moment\n# (8) double, e\n# (9) double, isotropic hardening modulus, H\n# (10) double, isotropic hardening saturation, s\n# (11) double, isotropic hardening decay, m\n# (12) double, kinematic hardening modulus for axial force, K_b\n# (13) double, kinematic hardening modulus for strong axis moment, K_b\n# (14) double, kinematic hardening modulus for weak axis moment, K_b\n# (15) double, kinematic hardening base for axial force, K_a\n# (16) double, kinematic hardening base for strong axis moment, K_a\n# (17) double, kinematic hardening base for weak axis moment, K_a\n# (18) double, linear density\n# (19) double, a_i\n# (20) double, b_i\n# (21) double, c_i\n# (22) double, d_i" }, { - "contents":"section NZ3D 35X2.5SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 35X2.5SHS", - "kind":"keyword", - "trigger":"35X2.5SHS" + "trigger": "NMB21", + "details": "2d displacement based bernoulli beam with n-m interaction sections", + "kind": "type", + "contents": "element NMB21 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5]}\n# (1) int, unique element tag\n# (2) int, node i\n# (3) int, node j\n# (4) int, section tag\n# [5] bool string, nonlinear geometry switch, default: false" }, { - "contents":"section NZ2D 35X3.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 35X3.0SHS", - "kind":"keyword", - "trigger":"35X3.0SHS" + "trigger": "NMB21EH", + "details": "2d displacement based bernoulli beam with n-m interaction sections and high end moment release", + "kind": "type", + "contents": "element NMB21EH ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5]}\n# (1) int, unique element tag\n# (2) int, node i\n# (3) int, node j\n# (4) int, section tag\n# [5] bool string, nonlinear geometry switch, default: false" }, { - "contents":"section NZ3D 35X3.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 35X3.0SHS", - "kind":"keyword", - "trigger":"35X3.0SHS" + "trigger": "NMB21EL", + "details": "2d displacement based bernoulli beam with n-m interaction sections and low end moment release", + "kind": "type", + "contents": "element NMB21EL ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5]}\n# (1) int, unique element tag\n# (2) int, node i\n# (3) int, node j\n# (4) int, section tag\n# [5] bool string, nonlinear geometry switch, default: false" }, { - "contents":"section NZ2D 360UB44.7 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 360UB44.7", - "kind":"keyword", - "trigger":"360UB44.7" + "trigger": "NMB31", + "details": "3d displacement based bernoulli beam with n-m interaction sections", + "kind": "type", + "contents": "element NMB31 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:[6]}\n# (1) int, unique element tag\n# (2) int, node i\n# (3) int, node j\n# (4) int, section tag\n# (5) int, orientation tag\n# [6] bool string, nonlinear geometry switch, default: false" }, { - "contents":"section NZ3D 360UB44.7 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 360UB44.7", - "kind":"keyword", - "trigger":"360UB44.7" + "trigger": "NZStrongMotion", + "details": "strong motion amplitude", + "kind": "type", + "contents": "amplitude NZStrongMotion ${1:(1)} ${2:(2)}\n# (1) int, unique amplitude tag\n# (2) string, record name" }, { - "contents":"section NZ2D 360UB50.7 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 360UB50.7", - "kind":"keyword", - "trigger":"360UB50.7" + "trigger": "Newmark", + "details": "newmark time integration", + "kind": "keyword", + "contents": "integrator Newmark ${1:(1)} ${2:[2]} ${3:[3]}\n# (1) int, unique tag\n# [2] double, alpha, default: 0.25\n# [3] double, beta, default: 0.5" }, { - "contents":"section NZ3D 360UB50.7 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 360UB50.7", - "kind":"keyword", - "trigger":"360UB50.7" + "trigger": "NodeFacet", + "details": "node facet constraint", + "kind": "type", + "contents": "constraint NodeFacet ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)}\n# (1) int, unique constraint tag\n# (2) int, master node i tag\n# (3) int, master node j tag\n# (4) int, master node k tag\n# (5) int, slave node l tag" }, { - "contents":"section NZ2D 360UB56.7 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 360UB56.7", - "kind":"keyword", - "trigger":"360UB56.7" + "trigger": "NodeLine", + "details": "node line constraint", + "kind": "type", + "contents": "constraint NodeLine ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)}\n# (1) int, unique constraint tag\n# (2) int, master node i tag\n# (3) int, master node j tag\n# (4) int, slave node k tag" }, { - "contents":"section NZ3D 360UB56.7 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 360UB56.7", - "kind":"keyword", - "trigger":"360UB56.7" + "trigger": "NonviscousNewmark", + "details": "newmark method with nonviscous damping", + "kind": "keyword", + "contents": "integrator NonviscousNewmark ${1:(1)} ${2:(2)} ${3:(3)} (${4:(4)} ${5:(5)})...\n# (1) int, unique tag\n# (2) double, alpha, typical: 0.25\n# (3) double, beta, typical: 0.5\n# (4) double, m\n# (5) double, s" }, { - "contents":"section NZ2D 400WC144 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 400WC144", - "kind":"keyword", - "trigger":"400WC144" + "trigger": "OALTS", + "details": "oalts doi:10.1002/nme.6188", + "kind": "keyword", + "contents": "integrator OALTS ${1:(1)} ${2:[2]}\n# (1) int, unique integrator tag\n# [2] double, spectral radius, default: 0.5" }, { - "contents":"section NZ3D 400WC144 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 400WC144", - "kind":"keyword", - "trigger":"400WC144" + "trigger": "OS146", + "details": "wrapper 3d -> os", + "kind": "type", + "contents": "material OS146 ${1:(1)} ${2:(2)}\n# (1) int, unique tag\n# (2) int, 3D material tag" }, { - "contents":"section NZ2D 400WC181 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 400WC181", - "kind":"keyword", - "trigger":"400WC181" + "trigger": "OS146S", + "details": "wrapper 1d -> os", + "kind": "type", + "contents": "material OS146S ${1:(1)} ${2:(2)} ${3:(3)}\n# (1) int, unique tag\n# (2) int, 1D material tag\n# (3) double, shear modulus" }, { - "contents":"section NZ3D 400WC181 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 400WC181", - "kind":"keyword", - "trigger":"400WC181" + "trigger": "Optimisation", + "details": "optimisation step", + "kind": "type", + "contents": "step Optimisation ${1:(1)}\n# (1) int, unique step tag" }, { - "contents":"section NZ2D 400WC212 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 400WC212", - "kind":"keyword", - "trigger":"400WC212" + "trigger": "Orientation", + "details": "section orientation for 3d beams", + "kind": "keyword", + "contents": "orientation ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)}\n# (1) int, unique orientation tag\n# (2) string, orientation type\n# (3) double, x component of local z axis\n# (4) double, y component of local z axis\n# (5) double, z component of local z axis" }, { - "contents":"section NZ3D 400WC212 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 400WC212", - "kind":"keyword", - "trigger":"400WC212" + "trigger": "OrthotropicElastic3D", + "details": "3d orthotropic elastic material", + "kind": "type", + "contents": "material OrthotropicElastic3D ${1:(1)} ${2:(2...7)} ${8:(8...10)} ${11:[11]}\n# (1) int, unique tag\n# (2..7) double, six moduli\n# (8...10) double, three poissons ratio\n# [11] double, density, default: 0.0" }, { - "contents":"section NZ2D 400WC270 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 400WC270", - "kind":"keyword", - "trigger":"400WC270" + "trigger": "PARDISO", + "details": "pardiso solver", + "kind": "keyword", + "contents": "set system_solver PARDISO" }, { - "contents":"section NZ3D 400WC270 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 400WC270", - "kind":"keyword", - "trigger":"400WC270" + "trigger": "PCPE4DC", + "details": "bilinear quadrilateral with pore pressure", + "kind": "type", + "contents": "element PCPE4DC ${1:(1)} ${2:(2...5)} ${6:(6)} ${7:(7)} ${8:(8)} ${9:(9)} ${10:(10)}\n# (1) int, unique element tag\n# (2...5) int, node i, j, k, l\n# (6) int, solid material tag\n# (7) int, fluid material tag\n# (8) double, alpha\n# (9) double, porosity n\n# (10) double, permeability k" }, { - "contents":"section NZ2D 400WC303 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 400WC303", - "kind":"keyword", - "trigger":"400WC303" + "trigger": "PCPE4UC", + "details": "bilinear quadrilateral with pore pressure", + "kind": "type", + "contents": "element PCPE4UC ${1:(1)} ${2:(2...5)} ${6:(6)} ${7:(7)} ${8:(8)} ${9:(9)}\n# (1) int, unique element tag\n# (2...5) int, node i, j, k, l\n# (6) int, solid material tag\n# (7) int, fluid material tag\n# (8) double, alpha\n# (9) double, porosity n" }, { - "contents":"section NZ3D 400WC303 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 400WC303", - "kind":"keyword", - "trigger":"400WC303" + "trigger": "PCPE8DC", + "details": "quadratic quadrilateral with pore pressure", + "kind": "type", + "contents": "element PCPE8DC ${1:(1)} ${2:(2...9)} ${10:(10)} ${11:(11)} ${12:(12)} ${13:(13)} ${14:(14)}\n# (1) int, unique element tag\n# (2...9) int, node i, j, k, l\n# (10) int, solid material tag\n# (11) int, fluid material tag\n# (12) double, alpha\n# (13) double, porosity n\n# (14) double, permeability k" }, { - "contents":"section NZ2D 400WC328 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 400WC328", - "kind":"keyword", - "trigger":"400WC328" + "trigger": "PCPE8UC", + "details": "quadratic quadrilateral with pore pressure", + "kind": "type", + "contents": "element PCPE8UC ${1:(1)} ${2:(2...9)} ${10:(10)} ${11:(11)} ${12:(12)} ${13:(13)}\n# (1) int, unique element tag\n# (2...9) int, node i, j, k, l\n# (10) int, solid material tag\n# (11) int, fluid material tag\n# (12) double, alpha\n# (13) double, porosity n" }, { - "contents":"section NZ3D 400WC328 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 400WC328", - "kind":"keyword", - "trigger":"400WC328" + "trigger": "PS", + "details": "pian-sumihara quadrilateral element", + "kind": "type", + "contents": "element PS ${1:(1)} ${2:(2...5)} ${6:(6)} ${7:[7]}\n# (1) int, unique element tag\n# (2...5) int, node i, j, k, l\n# (6) int, material tag\n# [7] double, element thickness, default: 1.0" }, { - "contents":"section NZ2D 400WC361 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 400WC361", - "kind":"keyword", - "trigger":"400WC361" + "trigger": "Parallel", + "details": "parallel wrapper for 1d material models", + "kind": "type", + "contents": "material Parallel ${1:(1)} ${2:(2...)}\n# (1) int, unique material tag\n# (2...) int, material tags of 1D models need to be contained" }, { - "contents":"section NZ3D 400WC361 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 400WC361", - "kind":"keyword", - "trigger":"400WC361" + "trigger": "ParticleCollision2D", + "details": "2d particle collision constraint", + "kind": "keyword", + "contents": "ParticleCollision2D ${1:(1)} ${2:(2)} ${3:(3)}\nconstraint ParticleCollision2D ${1:(1)} ${2:(2)} ${3:(3)}\n# (1) int, unique constraint tag\n# (2) double, space\n# (3) double, penalty number" }, { - "contents":"section NZ2D 406.4X12.7CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 406.4X12.7CHS", - "kind":"keyword", - "trigger":"406.4X12.7CHS" + "trigger": "ParticleCollision3D", + "details": "3d particle collision constraint", + "kind": "keyword", + "contents": "ParticleCollision3D ${1:(1)} ${2:(2)} ${3:(3)}\nconstraint ParticleCollision3D ${1:(1)} ${2:(2)} ${3:(3)}\n# (1) int, unique constraint tag\n# (2) double, space\n# (3) double, penalty number" }, { - "contents":"section NZ3D 406.4X12.7CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 406.4X12.7CHS", - "kind":"keyword", - "trigger":"406.4X12.7CHS" + "trigger": "PatchCube", + "details": "patch of hexahedron elements", + "kind": "type", + "contents": "element PatchCube ${1:(1)} -node ${2:(2...)} -knotx ${3:(3...)} -knoty ${4:(4...)} -knotz ${5:(5...)} -material ${6:(6)} ${-thickness (7:[-thickness (7)}]\n# (1) int, unique element ${patch:(patch)} tag\n# (2...) int, node tags of control node polygon\n# (3...) double, knot vector along x axis\n# (4...) double, knot vector along y axis\n# (5...) double, knot vector along z axis\n# (6) int, material tag\n# (7) double, thickness" }, { - "contents":"section NZ2D 406.4X6.4CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 406.4X6.4CHS", - "kind":"keyword", - "trigger":"406.4X6.4CHS" + "trigger": "PatchQuad", + "details": "patch of quadrilateral elements", + "kind": "type", + "contents": "element PatchQuad ${1:(1)} -node ${2:(2...)} -knotx ${3:(3...)} -knoty ${4:(4...)} -material ${5:(5)} ${-thickness (6:[-thickness (6)}]\n# (1) int, unique element ${patch:(patch)} tag\n# (2...) int, node tags of control node polygon\n# (3...) double, knot vector along x axis\n# (4...) double, knot vector along y axis\n# (5) int, material tag\n# (6) double, thickness" }, { - "contents":"section NZ3D 406.4X6.4CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 406.4X6.4CHS", - "kind":"keyword", - "trigger":"406.4X6.4CHS" + "trigger": "PenaltyBC", + "details": "boundary condition", + "kind": "keyword", + "contents": "penaltybc ${1:(1)} ${2:(2)} ${3:(3...)}\n# (1) int, unique tag\n# (2) string, dof identifier\n# (3...) int, tags of nodes that shall be constrained" }, { - "contents":"section NZ2D 406.4X9.5CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 406.4X9.5CHS", - "kind":"keyword", - "trigger":"406.4X9.5CHS" + "trigger": "PlaneStrain", + "details": "plane strain wrapper", + "kind": "type", + "contents": "material PlaneStrain ${1:(1)} ${2:(2)}\n# (1) int, unique tag\n# (2) int, 3D material tag" }, { - "contents":"section NZ3D 406.4X9.5CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 406.4X9.5CHS", - "kind":"keyword", - "trigger":"406.4X9.5CHS" + "trigger": "PlaneStress", + "details": "plane stress wrapper", + "kind": "type", + "contents": "material PlaneStress ${1:(1)} ${2:(2)}\n# (1) int, unique tag\n# (2) int, 3D material tag" }, { - "contents":"section NZ2D 40X1.6SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 40X1.6SHS", - "kind":"keyword", - "trigger":"40X1.6SHS" + "trigger": "PlaneSymmetric13", + "details": "plane wrapper", + "kind": "type", + "contents": "material PlaneSymmetric13 ${1:(1)} ${2:(2)}\n# (1) int, unique material tag\n# (2) int, 3D reference material tag" }, { - "contents":"section NZ3D 40X1.6SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 40X1.6SHS", - "kind":"keyword", - "trigger":"40X1.6SHS" + "trigger": "PlaneSymmetric23", + "details": "plane wrapper", + "kind": "type", + "contents": "material PlaneSymmetric23 ${1:(1)} ${2:(2)}\n# (1) int, unique material tag\n# (2) int, 3D reference material tag" }, { - "contents":"section NZ2D 40X2.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 40X2.0SHS", - "kind":"keyword", - "trigger":"40X2.0SHS" + "trigger": "PolyElastic1D", + "details": "polynomial based uniaxial nonlinear elastic", + "kind": "type", + "contents": "material PolyElastic1D ${1:(1)} [${2:(2)}...]\n# (1) int, unique material tag\n# (2) double, polynomial parameters, a_n" }, { - "contents":"section NZ3D 40X2.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 40X2.0SHS", - "kind":"keyword", - "trigger":"40X2.0SHS" + "trigger": "PolyJ2", + "details": "j2 material with polynomial hardening", + "kind": "type", + "contents": "material PolyJ2 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} [${5:(5)}...]\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# (3) double, poisson's ratio\n# (4) double, density\n# [(5)...] double, parameters in polynomial" }, { - "contents":"section NZ2D 40X2.5SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 40X2.5SHS", - "kind":"keyword", - "trigger":"40X2.5SHS" + "trigger": "QE2", + "details": "mixed four-node quadrilateral element", + "kind": "type", + "contents": "element QE2 ${1:(1)} ${2:(2...5)} ${6:(6)} ${7:[7]}\n# (1) int, unique element tag\n# (2...5) int, node i, j, k, l\n# (6) int, material tag\n# [7] double, element thickness, default: 1.0" }, { - "contents":"section NZ3D 40X2.5SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 40X2.5SHS", - "kind":"keyword", - "trigger":"40X2.5SHS" + "trigger": "R2D2", + "details": "2d fixed length constraint", + "kind": "keyword", + "contents": "R2D2 ${1:(1)} ${2:(2)} ${3:(3)}\nconstraint R2D2 ${1:(1)} ${2:(2)} ${3:(3)}\n# (1) int, unique constraint tag\n# (2) int, node tag\n# (3) int, node tag" }, { - "contents":"section NZ2D 40X4.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 40X4.0SHS", - "kind":"keyword", - "trigger":"40X4.0SHS" + "trigger": "R3D2", + "details": "2d fixed length constraint", + "kind": "keyword", + "contents": "R3D2 ${1:(1)} ${2:(2)} ${3:(3)}\nconstraint R3D2 ${1:(1)} ${2:(2)} ${3:(3)}\n# (1) int, unique constraint tag\n# (2) int, node tag\n# (3) int, node tag" }, { - "contents":"section NZ3D 40X4.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 40X4.0SHS", - "kind":"keyword", - "trigger":"40X4.0SHS" + "trigger": "RambergOsgood", + "details": "ramberg-osgood steel model", + "kind": "type", + "contents": "material RambergOsgood ${1:(1)} ${2:(2)} ${3:(3)} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# (3) double, initial yield stress\n# [4] double, offset alpha, default: 1.0\n# [5] double, n, default: 4.0\n# [6] double, density, default: 0.0" }, { - "contents":"section NZ2D 410UB53.7 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 410UB53.7", - "kind":"keyword", - "trigger":"410UB53.7" + "trigger": "Ramm", + "details": "ramm's arc-length algorithm", + "kind": "type", + "contents": "solver Ramm (1)\n# (1) int, unique solver tag" }, { - "contents":"section NZ3D 410UB53.7 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 410UB53.7", - "kind":"keyword", - "trigger":"410UB53.7" + "trigger": "Ramp", + "details": "ramp amplitude", + "kind": "type", + "contents": "amplitude Ramp ${1:(1)}\n# (1) int, unique amplitude tag" }, { - "contents":"section NZ2D 410UB59.7 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 410UB59.7", - "kind":"keyword", - "trigger":"410UB59.7" + "trigger": "Rayleigh", + "details": "rayleigh damping", + "kind": "type", + "contents": "modifier Rayleigh ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6...)}\n# (1) int, unique modifier tag\n# (2) double, a\n# (3) double, b\n# (4) double, c\n# (5) double, d\n# (6...) int, element tags" }, { - "contents":"section NZ3D 410UB59.7 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 410UB59.7", - "kind":"keyword", - "trigger":"410UB59.7" + "trigger": "RayleighNewmark", + "details": "newmark time integration with rayleigh damping model", + "kind": "keyword", + "contents": "integrator RayleighNewmark ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:(7)}\n# (1) int, unique tag\n# (2) double, alpha (beta in some references) in Newmark method, normally 0.25\n# (3) double, beta (gamma in some references) in Newmark method, normally 0.5\n# (4) double, alpha\n# (5) double, beta\n# (6) double, theta\n# (7) double, eta" }, { - "contents":"section NZ2D 42.4X3.2CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 42.4X3.2CHS", - "kind":"keyword", - "trigger":"42.4X3.2CHS" + "trigger": "Rebar2D", + "details": "2d rebar layer", + "kind": "type", + "contents": "material Rebar2D ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)}\n# (1) int, unique material tag\n# (2) int, x direction steel material tag\n# (3) int, y direction steel material tag\n# (4) double, x direction reinforcement ratio\n# (5) double, y direction reinforcement ratio" }, { - "contents":"section NZ3D 42.4X3.2CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 42.4X3.2CHS", - "kind":"keyword", - "trigger":"42.4X3.2CHS" + "trigger": "Rebar3D", + "details": "3d rebar layer", + "kind": "type", + "contents": "material Rebar3D ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:(7)}\n# (1) int, unique material tag\n# (2) int, x direction steel material tag\n# (3) int, y direction steel material tag\n# (4) int, z direction steel material tag\n# (5) double, x direction reinforcement ratio\n# (6) double, y direction reinforcement ratio\n# (7) double, z direction reinforcement ratio" }, { - "contents":"section NZ2D 42.4X4.0CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 42.4X4.0CHS", - "kind":"keyword", - "trigger":"42.4X4.0CHS" + "trigger": "Rectangle1D", + "details": "1d rectangle section", + "kind": "type", + "contents": "section Rectangle1D ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)}\n# (1) int, unique section tag\n# (2) double, section width\n# (3) double, section height\n# (4) int, material tag" }, { - "contents":"section NZ3D 42.4X4.0CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 42.4X4.0CHS", - "kind":"keyword", - "trigger":"42.4X4.0CHS" + "trigger": "Rectangle2D", + "details": "2d rectangle section", + "kind": "type", + "contents": "section Rectangle2D ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) double, section width\n# (3) double, section height\n# (4) int, material tag\n# [5] int, number of integration points, default: 6\n# [6] double, eccentricity measured from the centre, default: 0.0" }, { - "contents":"section NZ2D 42.4X4.9CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 42.4X4.9CHS", - "kind":"keyword", - "trigger":"42.4X4.9CHS" + "trigger": "Rectangle3D", + "details": "3d rectangle section", + "kind": "type", + "contents": "section Rectangle3D ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5]} ${6:[6]} ${7:[7]}\n# (1) int, unique section tag\n# (2) double, section width\n# (3) double, section height\n# (4) int, material tag\n# [5] int, number of integration points, default: 3\n# [6] double, eccentricity along y axis, default: 0.0\n# [7] double, eccentricity along z axis, default: 0.0" }, { - "contents":"section NZ3D 42.4X4.9CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 42.4X4.9CHS", - "kind":"keyword", - "trigger":"42.4X4.9CHS" + "trigger": "RelDisp", + "details": "converger reldisp", + "kind": "keyword", + "contents": "converger RelDisp ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]}\n# (1) int, unique tag\n# (2) double, tolerance\n# [3] int, maximum iteration, default: 10\n# [4] bool string, print switch, default: false" }, { - "contents":"section NZ2D 457.0X12.7CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 457.0X12.7CHS", - "kind":"keyword", - "trigger":"457.0X12.7CHS" + "trigger": "RelError", + "details": "converger relerror", + "kind": "keyword", + "contents": "converger RelError ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]}\n# (1) int, unique tag\n# (2) double, tolerance\n# [3] int, maximum iteration, default: 10\n# [4] bool string, print switch, default: false" }, { - "contents":"section NZ3D 457.0X12.7CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 457.0X12.7CHS", - "kind":"keyword", - "trigger":"457.0X12.7CHS" + "trigger": "RelIncreAcc", + "details": "converger relincreacc", + "kind": "keyword", + "contents": "converger RelIncreAcc ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]}\n# (1) int, unique tag\n# (2) double, tolerance\n# [3] int, maximum iteration, default: 10\n# [4] bool string, print switch, default: false" }, { - "contents":"section NZ2D 457.0X6.4CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 457.0X6.4CHS", - "kind":"keyword", - "trigger":"457.0X6.4CHS" + "trigger": "RelIncreDisp", + "details": "converger relincredisp", + "kind": "keyword", + "contents": "converger RelIncreDisp ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]}\n# (1) int, unique tag\n# (2) double, tolerance\n# [3] int, maximum iteration, default: 10\n# [4] bool string, print switch, default: false" }, { - "contents":"section NZ3D 457.0X6.4CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 457.0X6.4CHS", - "kind":"keyword", - "trigger":"457.0X6.4CHS" + "trigger": "RelIncreEnergy", + "details": "converger relincreenergy", + "kind": "keyword", + "contents": "converger RelIncreEnergy ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]}\n# (1) int, unique tag\n# (2) double, tolerance\n# [3] int, maximum iteration, default: 10\n# [4] bool string, print switch, default: false" }, { - "contents":"section NZ2D 457.0X9.5CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 457.0X9.5CHS", - "kind":"keyword", - "trigger":"457.0X9.5CHS" + "trigger": "RelResidual", + "details": "converger relresidual", + "kind": "keyword", + "contents": "converger RelResidual ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]}\n# (1) int, unique tag\n# (2) double, tolerance\n# [3] int, maximum iteration, default: 10\n# [4] bool string, print switch, default: false" }, { - "contents":"section NZ3D 457.0X9.5CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 457.0X9.5CHS", - "kind":"keyword", - "trigger":"457.0X9.5CHS" + "trigger": "Rotation2D", + "details": "2d rotation wrapper", + "kind": "type", + "contents": "material Rotation2D ${1:(1)} ${2:(2)} ${3:(3)}\n# (1) int, unique material tag\n# (2) int, associated material tag\n# (3) double, angle rotated (anti-clockwise positive)" }, { - "contents":"section NZ2D 460UB67.1 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 460UB67.1", - "kind":"keyword", - "trigger":"460UB67.1" + "trigger": "Rotation3D", + "details": "3d rotation wrapper", + "kind": "type", + "contents": "material Rotation3D ${1:(1)} ${2:(2)} ${3:(3...5)}\n# (1) int, unique material tag\n# (2) int, associated material tag\n# (3...5) double, three components of rotation vector" }, { - "contents":"section NZ3D 460UB67.1 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 460UB67.1", - "kind":"keyword", - "trigger":"460UB67.1" + "trigger": "S4", + "details": "four node shell element", + "kind": "type", + "contents": "element S4 ${1:(1)} ${2:(2...5)} ${6:(6)} ${7:(7)} ${8:[8]}\n# (1) int, unique element tag\n# (2...5) int, node i, j, k, l\n# (6) int, material tag\n# (7) double, thickness\n# [8] bool, nonlinear geometry switch, default: false" }, { - "contents":"section NZ2D 460UB74.6 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 460UB74.6", - "kind":"keyword", - "trigger":"460UB74.6" + "trigger": "SGCMQ", + "details": "generalized conforming mixed quadrilateral with drilling dofs", + "kind": "type", + "contents": "element SGCMQI ${1:(1)} ${2:(2...5)} ${6:(6)} ${7:[7]} ${8:[8]}\nelement SGCMQL ${1:(1)} ${2:(2...5)} ${6:(6)} ${7:[7]} ${8:[8]}\nelement SGCMQG ${1:(1)} ${2:(2...5)} ${6:(6)} ${7:[7]} ${8:[8]}\n# (1) int, unique element tag\n# (2...5) int, node i, j, k, l\n# (6) int, material tag\n# [7] double, element thickness, default: 1.0" }, { - "contents":"section NZ3D 460UB74.6 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 460UB74.6", - "kind":"keyword", - "trigger":"460UB74.6" + "trigger": "SGCMQG", + "details": "generalized conforming mixed quadrilateral with drilling dofs", + "kind": "type", + "contents": "element SGCMQG ${1:(1)} ${2:(2...5)} ${6:(6)} ${7:[7]} ${8:[8]}\n# (1) int, unique element tag\n# (2...5) int, node i, j, k, l\n# (6) int, material tag\n# [7] double, element thickness, default: 1.0" }, { - "contents":"section NZ2D 460UB82.1 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 460UB82.1", - "kind":"keyword", - "trigger":"460UB82.1" + "trigger": "SGCMQI", + "details": "generalized conforming mixed quadrilateral with drilling dofs", + "kind": "type", + "contents": "element SGCMQI ${1:(1)} ${2:(2...5)} ${6:(6)} ${7:[7]} ${8:[8]}\n# (1) int, unique element tag\n# (2...5) int, node i, j, k, l\n# (6) int, material tag\n# [7] double, element thickness, default: 1.0" }, { - "contents":"section NZ3D 460UB82.1 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 460UB82.1", - "kind":"keyword", - "trigger":"460UB82.1" + "trigger": "SGCMQL", + "details": "generalized conforming mixed quadrilateral with drilling dofs", + "kind": "type", + "contents": "element SGCMQL ${1:(1)} ${2:(2...5)} ${6:(6)} ${7:[7]} ${8:[8]}\n# (1) int, unique element tag\n# (2...5) int, node i, j, k, l\n# (6) int, material tag\n# [7] double, element thickness, default: 1.0" }, { - "contents":"section NZ2D 48.3X3.2CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 48.3X3.2CHS", - "kind":"keyword", - "trigger":"48.3X3.2CHS" + "trigger": "SGCMS", + "details": "simplified generalized conforming mixed shell element", + "kind": "type", + "contents": "element SGCMS ${1:(1)} ${2:(2...5)} ${6:(6)} ${7:(7)} ${8:[8]}\n# (1) int, unique element tag\n# (2...5) int, node i, j, k, l\n# (6) int, material tag\n# (7) double, thickness\n# [8] bool, nonlinear geometry switch, default: false" }, { - "contents":"section NZ3D 48.3X3.2CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 48.3X3.2CHS", - "kind":"keyword", - "trigger":"48.3X3.2CHS" + "trigger": "Sequential", + "details": "uniaxial wrapper", + "kind": "type", + "contents": "material Sequential ${1:(1)} ${2:(2...)}\n# (1) int, unique material tag\n# (2...) int, material tags of 1D models need to be contained" }, { - "contents":"section NZ2D 48.3X4.0CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 48.3X4.0CHS", - "kind":"keyword", - "trigger":"48.3X4.0CHS" + "trigger": "SimpleSand", + "details": "simple sand material", + "kind": "type", + "contents": "material SimpleSand ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:(7)} ${8:(8)} ${9:(9)} ${10:(10)} ${11:(11)} ${12:(12)} ${13:(13)} ${14:[14]}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# (3) double, poissons ratio\n# (4) double, m, size of yield surface\n# (5) double, A, dilatancy related parameter, often negative\n# (6) double, h, dilatancy related hardening parameter\n# (7) double, alpha_c, critical alpha\n# (8) double, n_b, bounding surface evolution parameter\n# (9) double, n_d, dilatancy surface evolution parameter\n# (10) double, v_c, critical specific volume\n# (11) double, p_c, critical hydrostatic stress, should be negative\n# (12) double, lambda_c, the slope of critical state line\n# (13) double, v_0, initial specific volume\n# [14] double, density, default: 0.0" }, { - "contents":"section NZ3D 48.3X4.0CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 48.3X4.0CHS", - "kind":"keyword", - "trigger":"48.3X4.0CHS" + "trigger": "Sine", + "details": "sine amplitude", + "kind": "type", + "contents": "amplitude Sine ${1:(1)} ${2:(2)} ${3:(3)} [${4:(4)}...]\n# (1) int, unique tag\n# (2) double, base period T_0\n# (3) double, amplitude at base period/frequency a_0\n# [(4)...] double, optional amplitudes at higher periods a_i" }, { - "contents":"section NZ2D 48.3X5.4CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 48.3X5.4CHS", - "kind":"keyword", - "trigger":"48.3X5.4CHS" + "trigger": "SingleSection2D", + "details": "2d single section", + "kind": "type", + "contents": "element SingleSection2D ${1:(1)} ${2:(2)} ${3:(3)}\n# (1) int, unique tag\n# (2) int, node tag\n# (3) int, section tag" }, { - "contents":"section NZ3D 48.3X5.4CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 48.3X5.4CHS", - "kind":"keyword", - "trigger":"48.3X5.4CHS" + "trigger": "SingleSection3D", + "details": "3d single section", + "kind": "type", + "contents": "element SingleSection3D ${1:(1)} ${2:(2)} ${3:(3)}\n# (1) int, unique tag\n# (2) int, node tag\n# (3) int, section tag" }, { - "contents":"section NZ2D 500WC228 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 500WC228", - "kind":"keyword", - "trigger":"500WC228" + "trigger": "Sinh1D", + "details": "uniaxial nonlinear elastic material using sinh", + "kind": "type", + "contents": "material Sinh1D ${1:(1)} ${2:(2)} ${3:[3]}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# [3] double, density, default: 0.0" }, { - "contents":"section NZ3D 500WC228 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 500WC228", - "kind":"keyword", - "trigger":"500WC228" + "trigger": "Sleeve2D", + "details": "", + "kind": "keyword", + "contents": "" }, { - "contents":"section NZ2D 500WC267 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 500WC267", - "kind":"keyword", - "trigger":"500WC267" + "trigger": "Sleeve3D", + "details": "", + "kind": "keyword", + "contents": "" }, { - "contents":"section NZ3D 500WC267 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 500WC267", - "kind":"keyword", - "trigger":"500WC267" + "trigger": "SlipLock", + "details": "slip-lock material", + "kind": "type", + "contents": "material SlipLock ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5]} ${6:[6]}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# (3) double, initial yield strain\n# (4) double, hardening ratio\n# [5] double, radius, default: 20.0\n# [6] double, density, default: 0.0" }, { - "contents":"section NZ2D 500WC290 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 500WC290", - "kind":"keyword", - "trigger":"500WC290" + "trigger": "Spike", + "details": "spike solver", + "kind": "keyword", + "contents": "set system_solver Spike" }, { - "contents":"section NZ3D 500WC290 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 500WC290", - "kind":"keyword", - "trigger":"500WC290" + "trigger": "Spring01", + "details": "spring using displacement", + "kind": "type", + "contents": "element Spring01 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)}\n# (1) int, unique tag\n# (2) int, node i\n# (3) int, node j\n# (4) int, tag of associated material" }, { - "contents":"section NZ2D 500WC340 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 500WC340", - "kind":"keyword", - "trigger":"500WC340" + "trigger": "Spring02", + "details": "spring using strain", + "kind": "type", + "contents": "element Spring02 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)}\n# (1) int, unique tag\n# (2) int, node i\n# (3) int, node j\n# (4) int, tag of associated material" }, { - "contents":"section NZ3D 500WC340 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 500WC340", - "kind":"keyword", - "trigger":"500WC340" + "trigger": "Stacked", + "details": "parallel wrapper for 3d material models", + "kind": "type", + "contents": "material Stacked ${1:(1)} ${2:(2...)}\n# (1) int, unique material tag\n# (2...) int, material tags of 3D models need to be contained" }, { - "contents":"section NZ2D 500WC383 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 500WC383", - "kind":"keyword", - "trigger":"500WC383" + "trigger": "Static", + "details": "static step", + "kind": "type", + "contents": "step static ${1:(1)} ${2:[2]}\n# (1) int, unique step tag\n# [2] double, step length, default: 1.0" }, { - "contents":"section NZ3D 500WC383 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 500WC383", - "kind":"keyword", - "trigger":"500WC383" + "trigger": "SteelBRB", + "details": "steel model for modelling brb", + "kind": "type", + "contents": "material SteelBRB ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:(7)} ${8:(8)} ${9:(9)} ${10:(10)} ${11:[11]}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# (3) double, yield stress\n# (4) double, plastic modulus\n# (5) double, tension saturated stress\n# (6) double, tension delta_r\n# (7) double, tension alpha\n# (8) double, compression saturated stress\n# (9) double, compression delta_r\n# (10) double, compression alpha\n# [11] double, density, default: 0.0" }, { - "contents":"section NZ2D 500WC414 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 500WC414", - "kind":"keyword", - "trigger":"500WC414" + "trigger": "StrainEnergyEvolution", + "details": "strain energy evolution criterion", + "kind": "type", + "contents": "criterion StrainEnergyEvolution ${1:(1)} ${2:(2)} ${3:(3)} ${4:[4]} ${5:[5]} ${6:[6]} ${7:[7]} ${8:[8]}\n# (1) int, unique criterion tag\n# (2) int, increment of rejection level in percentage\n# (3) int, target rejection level in percentage\n# [4] double, weight of central element, used in averaging\n# [5] int, number of iterations of averaging\n# [6] int, reactivation rate in percentage\n# [7] double, propagation weight\n# [8] double, tolerance" }, { - "contents":"section NZ3D 500WC414 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 500WC414", - "kind":"keyword", - "trigger":"500WC414" + "trigger": "Substepping", + "details": "substepping wrapper", + "kind": "type", + "contents": "material Substepping ${1:(1)} ${2:(2)} ${3:[3]}\n# (1) int, unique material tag\n# (2) int, associated material tag\n# [3] int, maximum iteration, default: 20" }, { - "contents":"section NZ2D 500WC440 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 500WC440", - "kind":"keyword", - "trigger":"500WC440" + "trigger": "SuperLU", + "details": "superlu solver", + "kind": "keyword", + "contents": "set system_solver SuperLU" }, { - "contents":"section NZ3D 500WC440 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 500WC440", - "kind":"keyword", - "trigger":"500WC440" + "trigger": "T2D2", + "details": "2d linear truss", + "kind": "type", + "contents": "element T2D2 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:[6]} ${7:[7]} ${8:[8]} ${9:[9]}\n# (1) int, unique element tag\n# (2) int, node i\n# (3) int, node j\n# (4) int, material tag\n# (5) double, cross sectional area\n# [6] bool string, nonlinear geometry switch, default: false\n# [7] bool string, if to update sectional area, default: false\n# [8] bool string, if to use log strain, default: false\n# [9] double, flexural rigidity, -1.0" }, { - "contents":"section NZ2D 508.0X12.7CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 508.0X12.7CHS", - "kind":"keyword", - "trigger":"508.0X12.7CHS" + "trigger": "T2D2S", + "details": "2d linear truss using section", + "kind": "type", + "contents": "element T2D2S ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${6:[6]} ${7:[7]} ${8:[8]}\n# (1) int, unique element tag\n# (2) int, node i\n# (3) int, node j\n# (4) int, section tag\n# [5] bool string, nonlinear geometry switch, default: false\n# [6] bool string, if to use log strain, default: false" }, { - "contents":"section NZ3D 508.0X12.7CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 508.0X12.7CHS", - "kind":"keyword", - "trigger":"508.0X12.7CHS" + "trigger": "T3D2", + "details": "3d linear truss", + "kind": "type", + "contents": "element T3D2 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:[6]} ${7:[7]} ${8:[8]}\n# (1) int, unique element tag\n# (2) int, node i\n# (3) int, node j\n# (4) int, material tag\n# (5) double, cross sectional area\n# [6] bool string, nonlinear geometry switch, default: false\n# [7] bool string, if to update sectional area, default: false\n# [8] bool string, if to use log strain, default: false" }, { - "contents":"section NZ2D 508.0X6.4CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 508.0X6.4CHS", - "kind":"keyword", - "trigger":"508.0X6.4CHS" + "trigger": "T3D2S", + "details": "3d linear truss using section", + "kind": "type", + "contents": "element T3D2S ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${6:[6]} ${7:[7]} ${8:[8]}\n# (1) int, unique element tag\n# (2) int, node i\n# (3) int, node j\n# (4) int, section tag\n# [5] bool string, nonlinear geometry switch, default: false\n# [6] bool string, if to use log strain, default: false" }, { - "contents":"section NZ3D 508.0X6.4CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 508.0X6.4CHS", - "kind":"keyword", - "trigger":"508.0X6.4CHS" + "trigger": "TSection2D", + "details": "2d t-section", + "kind": "type", + "contents": "section TSection2D ${1:(1)} ${2:(2...5)} ${6:(6)} ${7:[7]} ${8:[8]}\n# (1) int, unique tag\n# (2...5) double, section dimensions\n# (6) int, material tag\n# [7] int, number of integration points, default: 6\n# [8] double, eccentricity measured from the centre, default: 0.0" }, { - "contents":"section NZ2D 508.0X9.5CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 508.0X9.5CHS", - "kind":"keyword", - "trigger":"508.0X9.5CHS" + "trigger": "TSection3D", + "details": "3d t-section", + "kind": "type", + "contents": "section TSection3D ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:[7]} ${8:[8]} ${9:[9]}\n# (1) int, unique section tag\n# (2) double, top flange width\n# (3) double, top flange thickness\n# (4) double, web height\n# (5) double, web thickness\n# (6) int, material tag\n# [7] int, number of integration points, default: 6\n# [8] double, eccentricity along y axis, default: 0.0\n# [9] double, eccentricity along z axis, default: 0.0" }, { - "contents":"section NZ3D 508.0X9.5CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 508.0X9.5CHS", - "kind":"keyword", - "trigger":"508.0X9.5CHS" + "trigger": "TableCDP", + "details": "cdp model with tabular data support", + "kind": "type", + "contents": "material TableCDP ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:(7)} ${8:[8]} ${9:[9]} ${10:[10]} ${11:[11]}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# (3) double, poisson's ratio\n# (4) string, file name of tension backbone table\n# (5) string, file name of compression backbone table\n# (6) string, file name of tension damage table\n# (7) string, file name of compression damage table\n# [8] double, dilatancy parameter, default: 0.2\n# [9] double, biaxial compression strength ratio, default: 1.16\n# [10] double, stiffness recovery ratio, default: 0.5\n# [11] double, density, default: 0" }, { - "contents":"section NZ2D 50X1.6SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 50X1.6SHS", - "kind":"keyword", - "trigger":"50X1.6SHS" + "trigger": "TableGurson", + "details": "gurson material with table hardening", + "kind": "type", + "contents": "material TableGurson ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:(7)} ${8:(8)} ${9:(9)} ${10:[10]}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# (3) double, poisson's ratio\n# (4) string, table file name\n# (5) double, q1\n# (6) double, q2\n# (7) double, fn\n# (8) double, sn\n# (9) double, en\n# [10] double, density, default: 0.0" }, { - "contents":"section NZ3D 50X1.6SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 50X1.6SHS", - "kind":"keyword", - "trigger":"50X1.6SHS" + "trigger": "Tabular", + "details": "amplitude using tabular data", + "kind": "type", + "contents": "amplitude Tabular ${1:(1)} ${2:(2)}\n# (1) int, unique amplitude tag\n# (2) string, file name of tabular data" }, { - "contents":"section NZ2D 50X2.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 50X2.0SHS", - "kind":"keyword", - "trigger":"50X2.0SHS" + "trigger": "Tanh1D", + "details": "uniaxial nonlinear elastic material using tanh", + "kind": "type", + "contents": "material Tanh1D ${1:(1)} ${2:(2)} ${3:[3]}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# [3] double, density, default: 0.0" }, { - "contents":"section NZ3D 50X2.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 50X2.0SHS", - "kind":"keyword", - "trigger":"50X2.0SHS" + "trigger": "Tchamwa", + "details": "tchamwa explicit time integration", + "kind": "keyword", + "contents": "integrator Tchamwa ${1:(1)} ${2:(2)}\n# (1) int, unique integrator tag\n# [2] double, spectral radius, default: 0.5" }, { - "contents":"section NZ2D 50X2.5SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 50X2.5SHS", - "kind":"keyword", - "trigger":"50X2.5SHS" + "trigger": "Tie", + "details": "tie constraint", + "kind": "type", + "contents": "element Tie ${1:(1)} ${2:(2)} ${3:(3)} [${4:(4)} ${5:(5)} ${6:(6)}...]\n# (1) int, unique element tag\n# (2) double, right hand side of the constraint equation, the constraint is homogeneous if this parameter is zero\n# (3) double, penalty number, a relatively large number\n# (4) int, node tag\n# (5) int, dof tag\n# (6) double, weight" }, { - "contents":"section NZ3D 50X2.5SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 50X2.5SHS", - "kind":"keyword", - "trigger":"50X2.5SHS" + "trigger": "TimberPD", + "details": "plastic damage model for timber", + "kind": "type", + "contents": "material TimberPD ${1:(1)} ${2:(2...7)} ${3:(8...10)} ${4:(11...19)} ${5:(20...26)} ${6:[27]}\n# (1) int, unique material tag\n# (2...7) double, six moduli: E_{xx}, E_{yy}, E_{zz}, E_{xy}, E_{yz}, E_{zx}\n# (8...10) double, three poissions ratios: v_{xy}, v_{yz}, v_{zx}\n# (11...19) double, nine yield stresses\n# (20...26) double, hardening parameters\n# [27] double, density, default: 0.0" }, { - "contents":"section NZ2D 50X20X1.6RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 50X20X1.6RHS", - "kind":"keyword", - "trigger":"50X20X1.6RHS" + "trigger": "TranslationConnector2D", + "details": "define 2d translation connector", + "kind": "type", + "contents": "element TranslationConnector2D ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)}\n# (1) int, unique element tag\n# (2) int, node i\n# (3) int, node j\n# (4) int, node k" }, { - "contents":"section NZ3D 50X20X1.6RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 50X20X1.6RHS", - "kind":"keyword", - "trigger":"50X20X1.6RHS" + "trigger": "TranslationConnector3D", + "details": "define 3d translation connector", + "kind": "type", + "contents": "element TranslationConnector3D ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)}\n# (1) int, unique element tag\n# (2) int, node i\n# (3) int, node j\n# (4) int, node k" }, { - "contents":"section NZ2D 50X20X2.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 50X20X2.0RHS", - "kind":"keyword", - "trigger":"50X20X2.0RHS" + "trigger": "TrilinearStrainDegradation", + "details": "trilinear strain degradation", + "kind": "type", + "contents": "material TrilinearStrainDegradation ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)}\n# (1) int, unique material tag\n# (2) int, host material tag\n# (3) double, degradation initiation strain\n# (4) double, degradation final strain\n# (5) double, degradation final factor" }, { - "contents":"section NZ3D 50X20X2.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 50X20X2.0RHS", - "kind":"keyword", - "trigger":"50X20X2.0RHS" + "trigger": "Trivial", + "details": "trivial material", + "kind": "type", + "contents": "material Trivial ${1:(1)}\n# (1) int, unique material tag" }, { - "contents":"section NZ2D 50X20X2.5RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 50X20X2.5RHS", - "kind":"keyword", - "trigger":"50X20X2.5RHS" + "trigger": "TrussSection", + "details": "1d truss section", + "kind": "type", + "contents": "section TrussSection ${1:(1)} ${2:(2)} ${3:(3)}\n# (1) int, unique section tag\n# (2) double, section area\n# (3) int, material tag" }, { - "contents":"section NZ3D 50X20X2.5RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 50X20X2.5RHS", - "kind":"keyword", - "trigger":"50X20X2.5RHS" + "trigger": "Uniaxial", + "details": "uniaxial wrapper", + "kind": "type", + "contents": "material Uniaxial ${1:(1)} ${2:(2)} ${3:[3]}\n# (1) int, unique material tag\n# (2) int, associated 3D material tag\n# [3] int, maximum iteration allowed, default: 1" }, { - "contents":"section NZ2D 50X20X3.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 50X20X3.0RHS", - "kind":"keyword", - "trigger":"50X20X3.0RHS" + "trigger": "VAFCRP", + "details": "vafcrp material", + "kind": "type", + "contents": "material VAFCRP ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:(7)} ${8:(8)} ${9:(9)} [${10:(10)} ${11:(11)...] ${12:[12]}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# (3) double, poissons ratio\n# (4) double, yield stress\n# (5) double, saturated stress\n# (6) double, linear hardening modulus\n# (7) double, m\n# (8) double, mu\n# (9) double, epsilon\n# (10) double, a\n# (11) double, b\n# [12] double, density, default: 0.0" }, { - "contents":"section NZ3D 50X20X3.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 50X20X3.0RHS", - "kind":"keyword", - "trigger":"50X20X3.0RHS" + "trigger": "VAFCRP1D", + "details": "uniaxial vafcrp material", + "kind": "type", + "contents": "material VAFCRP1D ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:(7)} ${8:(8)} [${9:(9)} ${10:(10)}...] ${11:[11]}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# (3) double, yield stress\n# (4) double, saturated stress\n# (5) double, linear hardening modulus\n# (6) double, m\n# (7) double, mu\n# (8) double, epsilon\n# (9) double, a\n# (10) double, b\n# [11] double, density, default: 0.0" }, { - "contents":"section NZ2D 50X25X1.6RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 50X25X1.6RHS", - "kind":"keyword", - "trigger":"50X25X1.6RHS" + "trigger": "Viscosity01", + "details": "linear viscosity material", + "kind": "type", + "contents": "material Viscosity01 ${1:(1)} ${2:(2)} ${3:(3)}\n# (1) int, unique tag\n# (2) double, alpha\n# (3) double, damping coefficient" }, { - "contents":"section NZ3D 50X25X1.6RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 50X25X1.6RHS", - "kind":"keyword", - "trigger":"50X25X1.6RHS" + "trigger": "Viscosity02", + "details": "nonlinear viscosity material", + "kind": "type", + "contents": "material Viscosity02 ${1:(1)} ${2:(2)} ${3:(3)} ${4:[4]} ${5:[5]} ${6:[6]} ${7:[7]} ${8:[8]}\n# (1) int, unique tag\n# (2) double, alpha\n# (3) double, damping coefficient \\eta_1\n# [4] double, damping coefficient \\eta_2, default: (3)\n# [5] double, damping coefficient \\eta_3, default: (3)\n# [6] double, damping coefficient \\eta_4, default: (3)\n# [7] double, steepness factor g_1, default: 1E3\n# [8] double, steepness factor g_2, default: 1E3" }, { - "contents":"section NZ2D 50X25X2.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 50X25X2.0RHS", - "kind":"keyword", - "trigger":"50X25X2.0RHS" + "trigger": "WilsonPenzienNewmark", + "details": "newmark time integration with wilson penzien damping model", + "kind": "keyword", + "contents": "integrator WilsonPenzienNewmark ${1:(1)} ${2:(2)} ${3:(3)} ${4:[4...]}\n# (1) int, unique integrator tag\n# (2) double, alpha in Newmark algorithm\n# (3) double, beta in Newmark algorithm\n# [4...] double, damping ratios on the first n modes" }, { - "contents":"section NZ3D 50X25X2.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 50X25X2.0RHS", - "kind":"keyword", - "trigger":"50X25X2.0RHS" + "trigger": "Yeoh", + "details": "yeoh material", + "kind": "type", + "contents": "material Yeoh ${1:(1)} ${2:(2...)}\n# (1) int, unique material tag\n# (2...) double, material constants with possible density" }, { - "contents":"section NZ2D 50X25X2.5RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 50X25X2.5RHS", - "kind":"keyword", - "trigger":"50X25X2.5RHS" + "trigger": "acceleration", + "details": "acceleration load", + "kind": "keyword", + "contents": "acceleration ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5...]}\nload acceleration ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5...]}\n# (1) int, unique tag\n# (2) int, amplitude tag, 0 to use a default `Ramp` amplitude\n# (3) double, nominal magnitude\n# (4) int, dof tag\n# [5...] int, node tags" }, { - "contents":"section NZ3D 50X25X2.5RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 50X25X2.5RHS", - "kind":"keyword", - "trigger":"50X25X2.5RHS" + "trigger": "band_mat", + "details": "enable/disable banded storage", + "kind": "keyword", + "contents": "set band_mat ${1:(1)}\n# (1) bool, true of false" }, { - "contents":"section NZ2D 50X25X3.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 50X25X3.0RHS", - "kind":"keyword", - "trigger":"50X25X3.0RHS" + "trigger": "bodyforce", + "details": "body force load", + "kind": "keyword", + "contents": "bodyforce ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5...]}\nload bodyforce ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5...]}\n# (1) int, unique tag\n# (2) int, amplitude tag, 0 to use a default `Ramp` amplitude\n# (3) double, nominal magnitude\n# (4) int, dof tag\n# (5...) int, element tags" }, { - "contents":"section NZ3D 50X25X3.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 50X25X3.0RHS", - "kind":"keyword", - "trigger":"50X25X3.0RHS" + "trigger": "clear", + "details": "clear domain", + "kind": "keyword", + "contents": "clear" }, { - "contents":"section NZ2D 50X3.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 50X3.0SHS", - "kind":"keyword", - "trigger":"50X3.0SHS" + "trigger": "cload", + "details": "concentrated nodal load", + "kind": "keyword", + "contents": "cload ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5...]}\nload cload ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5...]}\n# (1) int, unique tag\n# (2) int, amplitude tag, 0 to use a default `Ramp` amplitude\n# (3) double, nominal magnitude\n# (4) int, dof tag\n# (5...) int, node tags" }, { - "contents":"section NZ3D 50X3.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 50X3.0SHS", - "kind":"keyword", - "trigger":"50X3.0SHS" + "trigger": "color_model", + "details": "set coloring algorithm", + "kind": "keyword", + "contents": "set color_model ${1:(1)}\n# (1) string, color algorithm, one of WP, MIS and false" }, { - "contents":"section NZ2D 50X4.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 50X4.0SHS", - "kind":"keyword", - "trigger":"50X4.0SHS" + "trigger": "command", + "details": "show all commands", + "kind": "keyword", + "contents": "command" }, { - "contents":"section NZ3D 50X4.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 50X4.0SHS", - "kind":"keyword", - "trigger":"50X4.0SHS" + "trigger": "constraint_multiplier", + "details": "set multiplier for constraint", + "kind": "keyword", + "contents": "set constraint_multiplier ${1:(1)}\n# (1) double, multiplier" }, { - "contents":"section NZ2D 530UB82.0 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 530UB82.0", - "kind":"keyword", - "trigger":"530UB82.0" + "trigger": "converger", + "details": "convergence tester", + "kind": "keyword", + "contents": "converger ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5]}\n# (1) string, converger type\n# (2) int, unique tag\n# (3) double, tolerance\n# (4) int, maximum iteration\n# [5] bool string, print switch, default: false" }, { - "contents":"section NZ3D 530UB82.0 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 530UB82.0", - "kind":"keyword", - "trigger":"530UB82.0" + "trigger": "customnodegroup", + "details": "node group based on custom rule", + "kind": "keyword", + "contents": "customnodegroup ${1:(1)} ${2:(2)}\n# (1) int, unique tag\n# (2) int, tag of expression" }, { - "contents":"section NZ2D 530UB92.4 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 530UB92.4", - "kind":"keyword", - "trigger":"530UB92.4" + "trigger": "displacement", + "details": "prescribed displacement", + "kind": "keyword", + "contents": "displacement ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5...]}\nload displacement ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5...]}\n# (1) int, unique tag\n# (2) int, amplitude tag, 0 to use a default `Ramp` amplitude\n# (3) double, nominal magnitude\n# (4) int, dof tag\n# (5...) int, node tags" }, { - "contents":"section NZ3D 530UB92.4 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 530UB92.4", - "kind":"keyword", - "trigger":"530UB92.4" + "trigger": "domain", + "details": "switch to target domain", + "kind": "keyword", + "contents": "domain ${1:(1)}\n# (1) int, domain tag" }, { - "contents":"section NZ2D 60.3X3.6CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 60.3X3.6CHS", - "kind":"keyword", - "trigger":"60.3X3.6CHS" + "trigger": "eigen_number", + "details": "set eigen number", + "kind": "keyword", + "contents": "set eigen_number ${1:(1)}\n# (1) int, number of eigenvalues" }, { - "contents":"section NZ3D 60.3X3.6CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 60.3X3.6CHS", - "kind":"keyword", - "trigger":"60.3X3.6CHS" + "trigger": "elementgroup", + "details": "element group", + "kind": "keyword", + "contents": "group ElementGroup ${1:(1)} ${2:(2...)}\n# (1) int, unique group tag\n# (2...) int, tags of elements to be included" }, { - "contents":"section NZ2D 60.3X4.5CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 60.3X4.5CHS", - "kind":"keyword", - "trigger":"60.3X4.5CHS" + "trigger": "exit", + "details": "exit/quit", + "kind": "keyword", + "contents": "exit" }, { - "contents":"section NZ3D 60.3X4.5CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 60.3X4.5CHS", - "kind":"keyword", - "trigger":"60.3X4.5CHS" + "trigger": "expression", + "details": "simple scalar valued maths expression", + "kind": "type", + "contents": "expression SimpleScalar ${1:(1)} ${2:(2)} ${3:(3)}\n# (1) int, unique expression tag\n# (2) string, variable list, vertical line separated\n# (3) string, expression or name of file containing expression" }, { - "contents":"section NZ2D 60.3X5.4CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 60.3X5.4CHS", - "kind":"keyword", - "trigger":"60.3X5.4CHS" + "trigger": "file", + "details": "load external file", + "kind": "keyword", + "contents": "file ${1:(1)}\n# (1) string, file name with or without suffix .sp" }, { - "contents":"section NZ3D 60.3X5.4CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 60.3X5.4CHS", - "kind":"keyword", - "trigger":"60.3X5.4CHS" + "trigger": "fix", + "details": "boundary condition", + "kind": "keyword", + "contents": "fix ${1:(1)} ${2:(2)} ${3:(3...)}\n# (1) int, unique tag\n# (2) string, dof identifier\n# (3...) int, tags of nodes that shall be constrained" }, { - "contents":"section NZ2D 610.0X12.7CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 610.0X12.7CHS", - "kind":"keyword", - "trigger":"610.0X12.7CHS" + "trigger": "fix2", + "details": "boundary condition", + "kind": "keyword", + "contents": "fix2 ${1:(1)} ${2:(2)} ${3:(3...)}\n# (1) int, unique tag\n# (2) string, dof identifier\n# (3...) int, tags of nodes that shall be constrained" }, { - "contents":"section NZ3D 610.0X12.7CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 610.0X12.7CHS", - "kind":"keyword", - "trigger":"610.0X12.7CHS" + "trigger": "fixed_step_size", + "details": "set if to use fixed step size or allow automatic adjustment", + "kind": "keyword", + "contents": "set fixed_step_size ${1:(1)}\n# (1) bool, true or false" }, { - "contents":"section NZ2D 610.0X6.4CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 610.0X6.4CHS", - "kind":"keyword", - "trigger":"610.0X6.4CHS" + "trigger": "fullname", + "details": "print full name (including path) of the executable", + "kind": "keyword", + "contents": "fullname" }, { - "contents":"section NZ3D 610.0X6.4CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 610.0X6.4CHS", - "kind":"keyword", - "trigger":"610.0X6.4CHS" + "trigger": "generate", + "details": "generate groups", + "kind": "keyword", + "contents": "# to hold one node/element only\ngenerate nodegroup ${1:(1)} ${2:(2)}\ngenerate elementgroup ${1:(1)} ${2:(2)}\n# (1) int, unique group tag\n# (2) int, object tag\n# generate from tag (2) to tag (3) with unit increment\ngenerate nodegroup ${1:(1)} ${2:(2)} ${3:(3)}\ngenerate elementgroup ${1:(1)} ${2:(2)} ${3:(3)}\n# (1) int, unique group tag\n# (2) int, starting object tag\n# (3) int, ending object tag\n# generate according to given increment\ngenerate nodegroup ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)}\ngenerate elementgroup ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)}\n# (1) int, unique group tag\n# (2) int, starting object tag\n# (3) int, interval\n# (4) int, ending object tag" }, { - "contents":"section NZ2D 610.0X9.5CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 610.0X9.5CHS", - "kind":"keyword", - "trigger":"610.0X9.5CHS" + "trigger": "generatebyplane", + "details": "generate node groups based on plane", + "kind": "keyword", + "contents": "generatebyplane nodegroup ${1:(1)} [${2:(2)}...]\n# (1) int, unique group tag\n# [(2)...] double, parameters that define a plane" }, { - "contents":"section NZ3D 610.0X9.5CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 610.0X9.5CHS", - "kind":"keyword", - "trigger":"610.0X9.5CHS" + "trigger": "generatebypoint", + "details": "generate node groups based on the line segment", + "kind": "keyword", + "contents": "generatebypoint nodegroup ${1:(1)} [${2:(2)}...]\n# (1) int, unique group tag\n# [(2)...] double, coordinates of two end points" }, { - "contents":"section NZ2D 610UB101 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 610UB101", - "kind":"keyword", - "trigger":"610UB101" + "trigger": "generatebyrule", + "details": "generate node groups by rule", + "kind": "keyword", + "contents": "generatebyrule nodegroup ${1:(1)} ${2:(2)} [${3:(3)}...]\n# (1) int, unique group tag\n# (2) int, DoF tag that polynomial shall be applied on\n# [(3)...] double, parameters a_n, a_{n-1}, a_{n-2},..., a_0" }, { - "contents":"section NZ3D 610UB101 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 610UB101", - "kind":"keyword", - "trigger":"610UB101" + "trigger": "groupbodyforce", + "details": "body force load", + "kind": "keyword", + "contents": "groupbodyforce ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5...]}\nload groupbodyforce ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5...]}\n# (1) int, unique tag\n# (2) int, amplitude tag, 0 to use a default `Ramp` amplitude\n# (3) double, nominal magnitude\n# (4) int, dof tag\n# (5...) int, element group tags" }, { - "contents":"section NZ2D 610UB113 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 610UB113", - "kind":"keyword", - "trigger":"610UB113" + "trigger": "groupcload", + "details": "concentrated nodal load", + "kind": "keyword", + "contents": "groupcload ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5...]}\nload groupcload ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5...]}\n# (1) int, unique tag\n# (2) int, amplitude tag, 0 to use a default `Ramp` amplitude\n# (3) double, nominal magnitude\n# (4) int, dof tag\n# (5...) int, node group tags" }, { - "contents":"section NZ3D 610UB113 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 610UB113", - "kind":"keyword", - "trigger":"610UB113" + "trigger": "groupdisplacement", + "details": "prescribed displacement", + "kind": "keyword", + "contents": "groupdisplacement ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5...]}\nload groupdisplacement ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5...]}\n# (1) int, unique tag\n# (2) int, amplitude tag, 0 to use a default `Ramp` amplitude\n# (3) double, nominal magnitude\n# (4) int, dof tag\n# (5...) int, node group tags" }, { - "contents":"section NZ2D 610UB125 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 610UB125", - "kind":"keyword", - "trigger":"610UB125" + "trigger": "groupgroup", + "details": "group of groups", + "kind": "keyword", + "contents": "group GroupGroup ${1:(1)} (2...)\n# (1) int, unique group tag\n# (2...) int, tags of groups to be included" }, { - "contents":"section NZ3D 610UB125 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 610UB125", - "kind":"keyword", - "trigger":"610UB125" + "trigger": "hdf5recorder", + "details": "recorder in hdf5 format", + "kind": "keyword", + "contents": "recorder ${1:(1)} hdf5 ${2:(2)} ${3:(3)} ${4:[every 4]} ${5:[5...]}\n# (1) int, unique recorder tag\n# (2) string, recorder type\n# (3) string, object type that needs to be recorded\n# [4] int, optional argument with leading keyword \"every\" to indicate the interval of recording\n# [5...] int, tags of elements/nodes, etc." }, { - "contents":"section NZ2D 65X2.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 65X2.0SHS", - "kind":"keyword", - "trigger":"65X2.0SHS" + "trigger": "help", + "details": "print help information", + "kind": "keyword", + "contents": "help" }, { - "contents":"section NZ3D 65X2.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 65X2.0SHS", - "kind":"keyword", - "trigger":"65X2.0SHS" + "trigger": "import", + "details": "import external module", + "kind": "keyword", + "contents": "import ${1:(1)}\n# (1) string, external module name" }, { - "contents":"section NZ2D 65X2.5SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 65X2.5SHS", - "kind":"keyword", - "trigger":"65X2.5SHS" + "trigger": "ini_step_size", + "details": "set initial step size", + "kind": "keyword", + "contents": "set ini_step_size ${1:(1)}\n# (1) double, step size" }, { - "contents":"section NZ3D 65X2.5SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 65X2.5SHS", - "kind":"keyword", - "trigger":"65X2.5SHS" + "trigger": "initial", + "details": "initial condition", + "kind": "keyword", + "contents": "initial displacement ${1:(1)} ${2:(2)} ${3:[3...]}\ninitial velocity ${1:(1)} ${2:(2)} ${3:[3...]}\ninitial acceleration ${1:(1)} ${2:(2)} ${3:[3...]}\n# (1) double, magnitude\n# (2) int, dof\n# [3...] int, node tags\n\ninitial history ${1:(1)} ${2:[2...]}\n# (1) int, material model tag\n# [2...] double, initial history vector" }, { - "contents":"section NZ2D 65X3.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 65X3.0SHS", - "kind":"keyword", - "trigger":"65X3.0SHS" + "trigger": "iterative_refinement", + "details": "set iterative refinement number", + "kind": "keyword", + "contents": "set iterative_refinement ${1:(1)}\n# (1) int, number of refinement steps" }, { - "contents":"section NZ3D 65X3.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 65X3.0SHS", - "kind":"keyword", - "trigger":"65X3.0SHS" + "trigger": "load_multiplier", + "details": "set multiplier for load", + "kind": "keyword", + "contents": "set load_multiplier ${1:(1)}\n# (1) double, multiplier" }, { - "contents":"section NZ2D 65X35X2.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 65X35X2.0RHS", - "kind":"keyword", - "trigger":"65X35X2.0RHS" + "trigger": "materialtest1d", + "details": "uniaxial material tester", + "kind": "type", + "contents": "materialTest1D ${1:(1)} ${2:(2)} ${3:(3)} ${4:[4...]}\n# (1) int, unique tag of the material model to use\n# (2) double, size of per strain increment\n# (3) int, number of steps along increment direction\n# [4...] int, optional numbers of steps for strain history" }, { - "contents":"section NZ3D 65X35X2.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 65X35X2.0RHS", - "kind":"keyword", - "trigger":"65X35X2.0RHS" + "trigger": "materialtest2d", + "details": "2d material tester", + "kind": "type", + "contents": "materialTest2D ${1:(1)} (2...4) ${5:(5)} ${6:[6...]}\n# (1) int, unique tag of the material model to use\n# (2...4) double, size of per strain increment\n# (5) int, number of steps along increment direction\n# [6...] int, optional numbers of steps for strain history" }, { - "contents":"section NZ2D 65X35X2.5RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 65X35X2.5RHS", - "kind":"keyword", - "trigger":"65X35X2.5RHS" + "trigger": "materialtest3d", + "details": "3d material tester", + "kind": "type", + "contents": "materialTest3D ${1:(1)} (2...7) ${8:(8)} ${9:[9...]}\n# (1) int, unique tag of the material model to use\n# (2...7) double, size of per strain increment\n# (8) int, number of steps along increment direction\n# [9...] int, optional numbers of steps for strain history" }, { - "contents":"section NZ3D 65X35X2.5RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 65X35X2.5RHS", - "kind":"keyword", - "trigger":"65X35X2.5RHS" + "trigger": "materialtestbyload1d", + "details": "uniaxial material tester", + "kind": "type", + "contents": "materialTest1D ${1:(1)} ${2:(2)} ${3:(3)} ${4:[4...]}\n# (1) int, unique tag of the material model to use\n# (2) double, size of per load increment\n# (3) int, number of steps along increment direction\n# [4...] int, optional numbers of steps for load history" }, { - "contents":"section NZ2D 65X35X3.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 65X35X3.0RHS", - "kind":"keyword", - "trigger":"65X35X3.0RHS" + "trigger": "materialtestbyload2d", + "details": "2d material tester", + "kind": "type", + "contents": "materialTest2D ${1:(1)} (2...4) ${5:(5)} ${6:[6...]}\n# (1) int, unique tag of the material model to use\n# (2...4) double, size of per load increment\n# (5) int, number of steps along increment direction\n# [6...] int, optional numbers of steps for load history" }, { - "contents":"section NZ3D 65X35X3.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 65X35X3.0RHS", - "kind":"keyword", - "trigger":"65X35X3.0RHS" + "trigger": "materialtestbyload3d", + "details": "3d material tester", + "kind": "type", + "contents": "materialTest3D ${1:(1)} (2...7) ${8:(8)} ${9:[9...]}\n# (1) int, unique tag of the material model to use\n# (2...7) double, size of per load increment\n# (8) int, number of steps along increment direction\n# [9...] int, optional numbers of steps for load history" }, { - "contents":"section NZ2D 700WB115 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 700WB115", - "kind":"keyword", - "trigger":"700WB115" + "trigger": "max_iteration", + "details": "set maximum iteration", + "kind": "keyword", + "contents": "set max_iteration ${1:(1)}\n# (1) int, number of iterations" }, { - "contents":"section NZ3D 700WB115 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 700WB115", - "kind":"keyword", - "trigger":"700WB115" + "trigger": "max_step_size", + "details": "set maximum step size", + "kind": "keyword", + "contents": "set max_step_size ${1:(1)}\n# (1) double, step size" }, { - "contents":"section NZ2D 700WB130 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 700WB130", - "kind":"keyword", - "trigger":"700WB130" + "trigger": "min_step_size", + "details": "set minimum step size", + "kind": "keyword", + "contents": "set min_step_size ${1:(1)}\n# (1) double, step size" }, { - "contents":"section NZ3D 700WB130 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 700WB130", - "kind":"keyword", - "trigger":"700WB130" + "trigger": "node", + "details": "define node", + "kind": "keyword", + "contents": "node ${1:(1)} ${2:[2...]}\n# (1) int, unique tag\n# [2...] double, coordinates" }, { - "contents":"section NZ2D 700WB150 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 700WB150", - "kind":"keyword", - "trigger":"700WB150" + "trigger": "nodegroup", + "details": "define node group", + "kind": "keyword", + "contents": "group nodegroup ${1:(1)} ${2:(2...)}\n# (1) int, unique group tag\n# (2...) int, tags of nodes to be included" }, { - "contents":"section NZ3D 700WB150 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 700WB150", - "kind":"keyword", - "trigger":"700WB150" + "trigger": "num_threads", + "details": "set number of threads used by openmp", + "kind": "keyword", + "contents": "set num_threads ${1:(1)}\n# (1) int, thread number" }, { - "contents":"section NZ2D 700WB173 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 700WB173", - "kind":"keyword", - "trigger":"700WB173" + "trigger": "output_folder", + "details": "change output folder", + "kind": "keyword", + "contents": "set output_folder ${1:(1)}\n# (1) string, absolute/relative path to the output folder" }, { - "contents":"section NZ3D 700WB173 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 700WB173", - "kind":"keyword", - "trigger":"700WB173" + "trigger": "peek", + "details": "quick check", + "kind": "keyword", + "contents": "peek ${1:(1)} ${2:(2...)}\n# (1) string, object type\n# (2...) int, tags" }, { - "contents":"section NZ2D 75X2.5SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 75X2.5SHS", - "kind":"keyword", - "trigger":"75X2.5SHS" + "trigger": "plainrecorder", + "details": "recorder in plain text format", + "kind": "keyword", + "contents": "recorder ${1:(1)} plain ${2:(2)} ${3:(3)} ${4:[every 4]} ${5:[5...]}\n# (1) int, unique recorder tag\n# (2) string, recorder type\n# (3) string, object type that needs to be recorded\n# [4] int, optional argument with leading keyword \"every\" to indicate the interval of recording\n# [5...] int, tags of elements/nodes, etc." }, { - "contents":"section NZ3D 75X2.5SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 75X2.5SHS", - "kind":"keyword", - "trigger":"75X2.5SHS" + "trigger": "plot", + "details": "plot model", + "kind": "keyword", + "contents": "plot [-keyword [-parameters]...]" }, { - "contents":"section NZ2D 75X25X1.6RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 75X25X1.6RHS", - "kind":"keyword", - "trigger":"75X25X1.6RHS" + "trigger": "precheck", + "details": "dry-run analysis", + "kind": "keyword", + "contents": "precheck" }, { - "contents":"section NZ3D 75X25X1.6RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 75X25X1.6RHS", - "kind":"keyword", - "trigger":"75X25X1.6RHS" + "trigger": "precision", + "details": "set solving precision", + "kind": "keyword", + "contents": "set precision ${1:(1)}\n# (1) string, preconditioner type, full or mixed" }, { - "contents":"section NZ2D 75X25X2.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 75X25X2.0RHS", - "kind":"keyword", - "trigger":"75X25X2.0RHS" + "trigger": "preconditioner", + "details": "set preconditioner algorithm", + "kind": "keyword", + "contents": "set preconditioner ${1:(1)}\n# (1) string, preconditioner type, one of Jacobi, ILU and None" }, { - "contents":"section NZ3D 75X25X2.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 75X25X2.0RHS", - "kind":"keyword", - "trigger":"75X25X2.0RHS" + "trigger": "protect", + "details": "protect node/element from being deactivated", + "kind": "keyword", + "contents": "protect [node|element] ${1:(1...)}\n# (1) int, tag" }, { - "contents":"section NZ2D 75X25X2.5RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 75X25X2.5RHS", - "kind":"keyword", - "trigger":"75X25X2.5RHS" + "trigger": "pwd", + "details": "print or change current working folder", + "kind": "keyword", + "contents": "pwd ${1:[1]}\n# [1] string, path name" }, { - "contents":"section NZ3D 75X25X2.5RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 75X25X2.5RHS", - "kind":"keyword", - "trigger":"75X25X2.5RHS" + "trigger": "quit", + "details": "exit/quit", + "kind": "keyword", + "contents": "quit" }, { - "contents":"section NZ2D 75X3.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 75X3.0SHS", - "kind":"keyword", - "trigger":"75X3.0SHS" + "trigger": "recorder", + "details": "recorder", + "kind": "keyword", + "contents": "recorder ${1:(1)} hdf5 ${2:(2)} ${3:(3)} ${4:[every 4]} ${5:[5...]}\nrecorder ${1:(1)} plain ${2:(2)} ${3:(3)} ${4:[every 4]} ${5:[5...]}\n# (1) int, unique recorder tag\n# (2) string, recorder type\n# (3) string, object type that needs to be recorded\n# [4] int, optional argument with leading keyword \"every\" to indicate the interval of recording\n# [5...] int, tags of elements/nodes, etc." }, { - "contents":"section NZ3D 75X3.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 75X3.0SHS", - "kind":"keyword", - "trigger":"75X3.0SHS" + "trigger": "reset", + "details": "reset domain", + "kind": "keyword", + "contents": "reset" }, { - "contents":"section NZ2D 75X3.5SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 75X3.5SHS", - "kind":"keyword", - "trigger":"75X3.5SHS" + "trigger": "response_spectrum", + "details": "compute response spectrum of a target ground motion over given periods", + "kind": "keyword", + "contents": "response_spectrum ${1:(motion_file_name)} ${2:(period_file_name)} ${3:[interval]} ${4:(damping_ratio)}" }, { - "contents":"section NZ3D 75X3.5SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 75X3.5SHS", - "kind":"keyword", - "trigger":"75X3.5SHS" + "trigger": "save", + "details": "save recorded data to disk", + "kind": "keyword", + "contents": "save recorder ${1:(1...)}\n# (1...) int, tags of recorders need to be saved" }, { - "contents":"section NZ2D 75X4.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 75X4.0SHS", - "kind":"keyword", - "trigger":"75X4.0SHS" + "trigger": "screen_output", + "details": "turn on/off screen output", + "kind": "keyword", + "contents": "set screen_output ${1:(1)}\n# (1) bool string, true or false" }, { - "contents":"section NZ3D 75X4.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 75X4.0SHS", - "kind":"keyword", - "trigger":"75X4.0SHS" + "trigger": "sdof_response", + "details": "perform response history analysis on a sdof system with target natural frequency and damping ratio", + "kind": "keyword", + "contents": "sdof_response ${1:(motion_file_name)} ${2:[interval]} ${3:(natural_frequency)} ${4:(damping_ratio)}" }, { - "contents":"section NZ2D 75X5.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 75X5.0SHS", - "kind":"keyword", - "trigger":"75X5.0SHS" + "trigger": "sparse_mat", + "details": "switch on/off sparse storage", + "kind": "keyword", + "contents": "set sparse_mat ${1:(1)}\n# (1) bool string, true of false" }, { - "contents":"section NZ3D 75X5.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 75X5.0SHS", - "kind":"keyword", - "trigger":"75X5.0SHS" + "trigger": "summary", + "details": "print a summary of the domain", + "kind": "keyword", + "contents": "summary" }, { - "contents":"section NZ2D 75X50X2.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 75X50X2.0RHS", - "kind":"keyword", - "trigger":"75X50X2.0RHS" + "trigger": "supportacceleration", + "details": "acceleration load on support", + "kind": "keyword", + "contents": "supportacceleration ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5...)}\nload supportacceleration ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5...)}\n# (1) int, unique tag\n# (2) int, amplitude tag, 0 to use a default `Ramp` amplitude\n# (3) double, nominal magnitude\n# (4) int, dof tag\n# (5...) int, node tags" }, { - "contents":"section NZ3D 75X50X2.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 75X50X2.0RHS", - "kind":"keyword", - "trigger":"75X50X2.0RHS" + "trigger": "supportdisplacement", + "details": "displacement load on support", + "kind": "keyword", + "contents": "supportdisplacement ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5...)}\nload supportdisplacement ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5...)}\n# (1) int, unique tag\n# (2) int, amplitude tag, 0 to use a default `Ramp` amplitude\n# (3) double, nominal magnitude\n# (4) int, dof tag\n# (5...) int, node tags" }, { - "contents":"section NZ2D 75X50X2.5RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 75X50X2.5RHS", - "kind":"keyword", - "trigger":"75X50X2.5RHS" + "trigger": "supportvelocity", + "details": "velocity load on support", + "kind": "keyword", + "contents": "supportvelocity ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5...)}\nload supportvelocity ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5...)}\n# (1) int, unique tag\n# (2) int, amplitude tag, 0 to use a default `Ramp` amplitude\n# (3) double, nominal magnitude\n# (4) int, dof tag\n# (5...) int, node tags" }, { - "contents":"section NZ3D 75X50X2.5RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 75X50X2.5RHS", - "kind":"keyword", - "trigger":"75X50X2.5RHS" + "trigger": "symm_mat", + "details": "enable/disable symmetric storage", + "kind": "keyword", + "contents": "set symm_mat ${1:(1)}\n# (1) bool string, true of false" }, { - "contents":"section NZ2D 75X50X3.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 75X50X3.0RHS", - "kind":"keyword", - "trigger":"75X50X3.0RHS" + "trigger": "system_solver", + "details": "set system solver type", + "kind": "keyword", + "contents": "set system_solver ${1:(1)}\n# (1) string, solver type" }, { - "contents":"section NZ3D 75X50X3.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 75X50X3.0RHS", - "kind":"keyword", - "trigger":"75X50X3.0RHS" + "trigger": "tabularspline", + "details": "amplitude using tabular data with spline interpolation", + "kind": "type", + "contents": "amplitude TabularSpline ${1:(1)} ${2:(2)}\n# (1) int, unique amplitude tag\n# (2) string, external file name" }, { - "contents":"section NZ2D 75X50X4.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 75X50X4.0RHS", - "kind":"keyword", - "trigger":"75X50X4.0RHS" + "trigger": "terminal", + "details": "execute terminal command", + "kind": "keyword", + "contents": "terminal ${1:(1)}\n# (1) string, commands to be executed" }, { - "contents":"section NZ3D 75X50X4.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 75X50X4.0RHS", - "kind":"keyword", - "trigger":"75X50X4.0RHS" + "trigger": "tolerance", + "details": "set tolerance of the iterative solver", + "kind": "keyword", + "contents": "set tolerance ${1:(1)}\n# (1) double, tolerance of the iterative solver" }, { - "contents":"section NZ2D 75X6.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 75X6.0SHS", - "kind":"keyword", - "trigger":"75X6.0SHS" + "trigger": "upsampling", + "details": "upsample a given ground motion using a specific window type", + "kind": "keyword", + "contents": "upsampling ${1:(1)} ${2:(2)} ${3:(3)}\n# (1) string, file name\n# (2) int, upsampling ratio\n# (3) string, window type, one of Hamming, Hann, Blackman, BlackmanNuttall, BlackmanHarris and FlatTop" }, { - "contents":"section NZ3D 75X6.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 75X6.0SHS", - "kind":"keyword", - "trigger":"75X6.0SHS" + "trigger": "version", + "details": "output version information", + "kind": "keyword", + "contents": "version" }, { - "contents":"section NZ2D 76.1X2.3CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 76.1X2.3CHS", - "kind":"keyword", - "trigger":"76.1X2.3CHS" + "trigger": "1000WB215", + "details": "NZ 2D Section 1000WB215", + "kind": "type", + "contents": "section NZ2D 1000WB215 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section NZ3D 76.1X2.3CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 76.1X2.3CHS", - "kind":"keyword", - "trigger":"76.1X2.3CHS" + "trigger": "1000WB215", + "details": "NZ 3D Section 1000WB215", + "kind": "type", + "contents": "section NZ3D 1000WB215 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section NZ2D 76.1X3.2CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 76.1X3.2CHS", - "kind":"keyword", - "trigger":"76.1X3.2CHS" + "trigger": "1000WB258", + "details": "NZ 2D Section 1000WB258", + "kind": "type", + "contents": "section NZ2D 1000WB258 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section NZ3D 76.1X3.2CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 76.1X3.2CHS", - "kind":"keyword", - "trigger":"76.1X3.2CHS" + "trigger": "1000WB258", + "details": "NZ 3D Section 1000WB258", + "kind": "type", + "contents": "section NZ3D 1000WB258 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section NZ2D 76.1X3.6CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 76.1X3.6CHS", - "kind":"keyword", - "trigger":"76.1X3.6CHS" + "trigger": "1000WB296", + "details": "NZ 2D Section 1000WB296", + "kind": "type", + "contents": "section NZ2D 1000WB296 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section NZ3D 76.1X3.6CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 76.1X3.6CHS", - "kind":"keyword", - "trigger":"76.1X3.6CHS" + "trigger": "1000WB296", + "details": "NZ 3D Section 1000WB296", + "kind": "type", + "contents": "section NZ3D 1000WB296 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section NZ2D 76.1X4.5CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 76.1X4.5CHS", - "kind":"keyword", - "trigger":"76.1X4.5CHS" + "trigger": "1000WB322", + "details": "NZ 2D Section 1000WB322", + "kind": "type", + "contents": "section NZ2D 1000WB322 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section NZ3D 76.1X4.5CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 76.1X4.5CHS", - "kind":"keyword", - "trigger":"76.1X4.5CHS" + "trigger": "1000WB322", + "details": "NZ 3D Section 1000WB322", + "kind": "type", + "contents": "section NZ3D 1000WB322 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section NZ2D 76.1X5.9CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 76.1X5.9CHS", - "kind":"keyword", - "trigger":"76.1X5.9CHS" + "trigger": "100UC14.8", + "details": "NZ 2D Section 100UC14.8", + "kind": "type", + "contents": "section NZ2D 100UC14.8 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section NZ3D 76.1X5.9CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 76.1X5.9CHS", - "kind":"keyword", - "trigger":"76.1X5.9CHS" + "trigger": "100UC14.8", + "details": "NZ 3D Section 100UC14.8", + "kind": "type", + "contents": "section NZ3D 100UC14.8 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section NZ2D 800WB122 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 800WB122", - "kind":"keyword", - "trigger":"800WB122" + "trigger": "100X3.0SHS", + "details": "NZ 2D Section 100X3.0SHS", + "kind": "type", + "contents": "section NZ2D 100X3.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section NZ3D 800WB122 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 800WB122", - "kind":"keyword", - "trigger":"800WB122" + "trigger": "100X3.0SHS", + "details": "NZ 3D Section 100X3.0SHS", + "kind": "type", + "contents": "section NZ3D 100X3.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section NZ2D 800WB146 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 800WB146", - "kind":"keyword", - "trigger":"800WB146" + "trigger": "100X4.0SHS", + "details": "NZ 2D Section 100X4.0SHS", + "kind": "type", + "contents": "section NZ2D 100X4.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section NZ3D 800WB146 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 800WB146", - "kind":"keyword", - "trigger":"800WB146" + "trigger": "100X4.0SHS", + "details": "NZ 3D Section 100X4.0SHS", + "kind": "type", + "contents": "section NZ3D 100X4.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section NZ2D 800WB168 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 800WB168", - "kind":"keyword", - "trigger":"800WB168" + "trigger": "100X5.0SHS", + "details": "NZ 2D Section 100X5.0SHS", + "kind": "type", + "contents": "section NZ2D 100X5.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section NZ3D 800WB168 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 800WB168", - "kind":"keyword", - "trigger":"800WB168" + "trigger": "100X5.0SHS", + "details": "NZ 3D Section 100X5.0SHS", + "kind": "type", + "contents": "section NZ3D 100X5.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section NZ2D 800WB192 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 800WB192", - "kind":"keyword", - "trigger":"800WB192" + "trigger": "100X50X2.0RHS", + "details": "NZ 2D Section 100X50X2.0RHS", + "kind": "type", + "contents": "section NZ2D 100X50X2.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section NZ3D 800WB192 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 800WB192", - "kind":"keyword", - "trigger":"800WB192" + "trigger": "100X50X2.0RHS", + "details": "NZ 3D Section 100X50X2.0RHS", + "kind": "type", + "contents": "section NZ3D 100X50X2.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section NZ2D 88.9X2.6CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 88.9X2.6CHS", - "kind":"keyword", - "trigger":"88.9X2.6CHS" + "trigger": "100X50X2.5RHS", + "details": "NZ 2D Section 100X50X2.5RHS", + "kind": "type", + "contents": "section NZ2D 100X50X2.5RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section NZ3D 88.9X2.6CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 88.9X2.6CHS", - "kind":"keyword", - "trigger":"88.9X2.6CHS" + "trigger": "100X50X2.5RHS", + "details": "NZ 3D Section 100X50X2.5RHS", + "kind": "type", + "contents": "section NZ3D 100X50X2.5RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section NZ2D 88.9X3.2CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 88.9X3.2CHS", - "kind":"keyword", - "trigger":"88.9X3.2CHS" + "trigger": "100X50X3.0RHS", + "details": "NZ 2D Section 100X50X3.0RHS", + "kind": "type", + "contents": "section NZ2D 100X50X3.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section NZ3D 88.9X3.2CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 88.9X3.2CHS", - "kind":"keyword", - "trigger":"88.9X3.2CHS" + "trigger": "100X50X3.0RHS", + "details": "NZ 3D Section 100X50X3.0RHS", + "kind": "type", + "contents": "section NZ3D 100X50X3.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section NZ2D 88.9X4.0CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 88.9X4.0CHS", - "kind":"keyword", - "trigger":"88.9X4.0CHS" + "trigger": "100X50X3.5RHS", + "details": "NZ 2D Section 100X50X3.5RHS", + "kind": "type", + "contents": "section NZ2D 100X50X3.5RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section NZ3D 88.9X4.0CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 88.9X4.0CHS", - "kind":"keyword", - "trigger":"88.9X4.0CHS" + "trigger": "100X50X3.5RHS", + "details": "NZ 3D Section 100X50X3.5RHS", + "kind": "type", + "contents": "section NZ3D 100X50X3.5RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section NZ2D 88.9X4.8CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 88.9X4.8CHS", - "kind":"keyword", - "trigger":"88.9X4.8CHS" + "trigger": "100X50X4.0RHS", + "details": "NZ 2D Section 100X50X4.0RHS", + "kind": "type", + "contents": "section NZ2D 100X50X4.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section NZ3D 88.9X4.8CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 88.9X4.8CHS", - "kind":"keyword", - "trigger":"88.9X4.8CHS" + "trigger": "100X50X4.0RHS", + "details": "NZ 3D Section 100X50X4.0RHS", + "kind": "type", + "contents": "section NZ3D 100X50X4.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section NZ2D 88.9X5.0CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 88.9X5.0CHS", - "kind":"keyword", - "trigger":"88.9X5.0CHS" + "trigger": "100X50X5.0RHS", + "details": "NZ 2D Section 100X50X5.0RHS", + "kind": "type", + "contents": "section NZ2D 100X50X5.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section NZ3D 88.9X5.0CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 88.9X5.0CHS", - "kind":"keyword", - "trigger":"88.9X5.0CHS" + "trigger": "100X50X5.0RHS", + "details": "NZ 3D Section 100X50X5.0RHS", + "kind": "type", + "contents": "section NZ3D 100X50X5.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section NZ2D 88.9X5.5CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 88.9X5.5CHS", - "kind":"keyword", - "trigger":"88.9X5.5CHS" + "trigger": "100X50X6.0RHS", + "details": "NZ 2D Section 100X50X6.0RHS", + "kind": "type", + "contents": "section NZ2D 100X50X6.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section NZ3D 88.9X5.5CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 88.9X5.5CHS", - "kind":"keyword", - "trigger":"88.9X5.5CHS" + "trigger": "100X50X6.0RHS", + "details": "NZ 3D Section 100X50X6.0RHS", + "kind": "type", + "contents": "section NZ3D 100X50X6.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section NZ2D 88.9X5.9CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 88.9X5.9CHS", - "kind":"keyword", - "trigger":"88.9X5.9CHS" + "trigger": "100X6.0SHS", + "details": "NZ 2D Section 100X6.0SHS", + "kind": "type", + "contents": "section NZ2D 100X6.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section NZ3D 88.9X5.9CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 88.9X5.9CHS", - "kind":"keyword", - "trigger":"88.9X5.9CHS" + "trigger": "100X6.0SHS", + "details": "NZ 3D Section 100X6.0SHS", + "kind": "type", + "contents": "section NZ3D 100X6.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section NZ2D 89X3.5SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 89X3.5SHS", - "kind":"keyword", - "trigger":"89X3.5SHS" + "trigger": "100X9.0SHS", + "details": "NZ 2D Section 100X9.0SHS", + "kind": "type", + "contents": "section NZ2D 100X9.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section NZ3D 89X3.5SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 89X3.5SHS", - "kind":"keyword", - "trigger":"89X3.5SHS" + "trigger": "100X9.0SHS", + "details": "NZ 3D Section 100X9.0SHS", + "kind": "type", + "contents": "section NZ3D 100X9.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section NZ2D 89X5.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 89X5.0SHS", - "kind":"keyword", - "trigger":"89X5.0SHS" + "trigger": "101.6X2.6CHS", + "details": "NZ 2D Section 101.6X2.6CHS", + "kind": "type", + "contents": "section NZ2D 101.6X2.6CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section NZ3D 89X5.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 89X5.0SHS", - "kind":"keyword", - "trigger":"89X5.0SHS" + "trigger": "101.6X2.6CHS", + "details": "NZ 3D Section 101.6X2.6CHS", + "kind": "type", + "contents": "section NZ3D 101.6X2.6CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section NZ2D 89X6.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 89X6.0SHS", - "kind":"keyword", - "trigger":"89X6.0SHS" + "trigger": "101.6X3.2CHS", + "details": "NZ 2D Section 101.6X3.2CHS", + "kind": "type", + "contents": "section NZ2D 101.6X3.2CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section NZ3D 89X6.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 89X6.0SHS", - "kind":"keyword", - "trigger":"89X6.0SHS" + "trigger": "101.6X3.2CHS", + "details": "NZ 3D Section 101.6X3.2CHS", + "kind": "type", + "contents": "section NZ3D 101.6X3.2CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section NZ2D 900WB175 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 900WB175", - "kind":"keyword", - "trigger":"900WB175" + "trigger": "101.6X4.0CHS", + "details": "NZ 2D Section 101.6X4.0CHS", + "kind": "type", + "contents": "section NZ2D 101.6X4.0CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section NZ3D 900WB175 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 900WB175", - "kind":"keyword", - "trigger":"900WB175" + "trigger": "101.6X4.0CHS", + "details": "NZ 3D Section 101.6X4.0CHS", + "kind": "type", + "contents": "section NZ3D 101.6X4.0CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section NZ2D 900WB218 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 900WB218", - "kind":"keyword", - "trigger":"900WB218" + "trigger": "101.6X5.0CHS", + "details": "NZ 2D Section 101.6X5.0CHS", + "kind": "type", + "contents": "section NZ2D 101.6X5.0CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section NZ3D 900WB218 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 900WB218", - "kind":"keyword", - "trigger":"900WB218" + "trigger": "101.6X5.0CHS", + "details": "NZ 3D Section 101.6X5.0CHS", + "kind": "type", + "contents": "section NZ3D 101.6X5.0CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section NZ2D 900WB257 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 900WB257", - "kind":"keyword", - "trigger":"900WB257" + "trigger": "114.3X3.2CHS", + "details": "NZ 2D Section 114.3X3.2CHS", + "kind": "type", + "contents": "section NZ2D 114.3X3.2CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section NZ3D 900WB257 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 900WB257", - "kind":"keyword", - "trigger":"900WB257" + "trigger": "114.3X3.2CHS", + "details": "NZ 3D Section 114.3X3.2CHS", + "kind": "type", + "contents": "section NZ3D 114.3X3.2CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section NZ2D 900WB282 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"NZ 2D Section 900WB282", - "kind":"keyword", - "trigger":"900WB282" + "trigger": "114.3X3.6CHS", + "details": "NZ 2D Section 114.3X3.6CHS", + "kind": "type", + "contents": "section NZ2D 114.3X3.6CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section NZ3D 900WB282 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"NZ 3D Section 900WB282", - "kind":"keyword", - "trigger":"900WB282" + "trigger": "114.3X3.6CHS", + "details": "NZ 3D Section 114.3X3.6CHS", + "kind": "type", + "contents": "section NZ3D 114.3X3.6CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"AFC" + "trigger": "114.3X4.5CHS", + "details": "NZ 2D Section 114.3X4.5CHS", + "kind": "type", + "contents": "section NZ2D 114.3X4.5CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"material AFC01 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:(7)} ${8:(8)}\n# (1) int, unique tag\n# (2) double, elastic modulus\n# (3) double, tension yield stress\n# (4) double, tension hardening modulus\n# (5) double, tension unloading modulus\n# (6) double, compression yield stress\n# (7) double, compression hardening modulus\n# (8) double, compression unloading modulus", - "details":"Asymmetrical Friction Connection", - "kind":"type", - "trigger":"AFC01" + "trigger": "114.3X4.5CHS", + "details": "NZ 3D Section 114.3X4.5CHS", + "kind": "type", + "contents": "section NZ3D 114.3X4.5CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"material AFC02 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)}\n# (1) int, unique tag\n# (2) double, elastic modulus\n# (3) double, yield stress\n# (4) double, hardening modulus\n# (5) double, unloading modulus", - "details":"Symmetrical Friction Connection", - "kind":"type", - "trigger":"AFC02" + "trigger": "114.3X4.8CHS", + "details": "NZ 2D Section 114.3X4.8CHS", + "kind": "type", + "contents": "section NZ2D 114.3X4.8CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"AFC03" + "trigger": "114.3X4.8CHS", + "details": "NZ 3D Section 114.3X4.8CHS", + "kind": "type", + "contents": "section NZ3D 114.3X4.8CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"material AFCN ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:(7)} ${8:(8)} ${9:[9]} ${10:[10]}\n# (1) int, unique tag\n# (2) double, elastic modulus\n# (3) double, tension yield stress\n# (4) double, tension hardening modulus\n# (5) double, tension unloading modulus\n# (6) double, compression yield stress\n# (7) double, compression hardening modulus\n# (8) double, compression unloading modulus\n# [9] double, non-negative degradation paramater, default: 0.0\n# [10] double, density, default: 0.0", - "details":"Nonlinear Version of AFC", - "kind":"type", - "trigger":"AFCN" + "trigger": "114.3X5.4CHS", + "details": "NZ 2D Section 114.3X5.4CHS", + "kind": "type", + "contents": "section NZ2D 114.3X5.4CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"AFCS" + "trigger": "114.3X5.4CHS", + "details": "NZ 3D Section 114.3X5.4CHS", + "kind": "type", + "contents": "section NZ3D 114.3X5.4CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"converger AbsDisp ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]}\n# (2) int, unique tag\n# (3) double, tolerance\n# (4) int, maximum iteration\n# [5] bool string, print switch, default: false\n", - "details":"Converger AbsDisp", - "kind":"type", - "trigger":"AbsDisp" + "trigger": "114.3X6.0CHS", + "details": "NZ 2D Section 114.3X6.0CHS", + "kind": "type", + "contents": "section NZ2D 114.3X6.0CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"converger AbsError ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]}\n# (2) int, unique tag\n# (3) double, tolerance\n# (4) int, maximum iteration\n# [5] bool string, print switch, default: false\n", - "details":"Converger AbsError", - "kind":"type", - "trigger":"AbsError" + "trigger": "114.3X6.0CHS", + "details": "NZ 3D Section 114.3X6.0CHS", + "kind": "type", + "contents": "section NZ3D 114.3X6.0CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"converger AbsIncreAcc ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]}\n# (2) int, unique tag\n# (3) double, tolerance\n# (4) int, maximum iteration\n# [5] bool string, print switch, default: false\n", - "details":"Converger AbsIncreAcc", - "kind":"type", - "trigger":"AbsIncreAcc" + "trigger": "1200WB249", + "details": "NZ 2D Section 1200WB249", + "kind": "type", + "contents": "section NZ2D 1200WB249 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"converger AbsIncreDisp ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]}\n# (2) int, unique tag\n# (3) double, tolerance\n# (4) int, maximum iteration\n# [5] bool string, print switch, default: false\n", - "details":"Converger AbsIncreDisp", - "kind":"type", - "trigger":"AbsIncreDisp" + "trigger": "1200WB249", + "details": "NZ 3D Section 1200WB249", + "kind": "type", + "contents": "section NZ3D 1200WB249 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"converger AbsIncreEnergy ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]}\n# (2) int, unique tag\n# (3) double, tolerance\n# (4) int, maximum iteration\n# [5] bool string, print switch, default: false\n", - "details":"Converger AbsIncreEnergy", - "kind":"type", - "trigger":"AbsIncreEnergy" + "trigger": "1200WB278", + "details": "NZ 2D Section 1200WB278", + "kind": "type", + "contents": "section NZ2D 1200WB278 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"converger AbsResidual ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]}\n# (2) int, unique tag\n# (3) double, tolerance\n# (4) int, maximum iteration\n# [5] bool string, print switch, default: false\n", - "details":"Converger AbsResidual", - "kind":"type", - "trigger":"AbsResidual" + "trigger": "1200WB278", + "details": "NZ 3D Section 1200WB278", + "kind": "type", + "contents": "section NZ3D 1200WB278 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"element Allman ${1:(1)} ${2:(2...4)} ${5:(5)} ${6:[6]}\n# (1) int, unique element tag\n# (2...4) int, node i, j, k\n# (5) int, material tag\n# [6] double, element thickness, default: 1.0", - "details":"Allman\u2019s Triangle With Drilling DoFs", - "kind":"type", - "trigger":"Allman" + "trigger": "1200WB317", + "details": "NZ 2D Section 1200WB317", + "kind": "type", + "contents": "section NZ2D 1200WB317 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"ArcLength" + "trigger": "1200WB317", + "details": "NZ 3D Section 1200WB317", + "kind": "type", + "contents": "section NZ3D 1200WB317 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"ArmstrongFrederick" + "trigger": "1200WB342", + "details": "NZ 2D Section 1200WB342", + "kind": "type", + "contents": "section NZ2D 1200WB342 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"ArmstrongFrederick1D" + "trigger": "1200WB342", + "details": "NZ 3D Section 1200WB342", + "kind": "type", + "contents": "section NZ3D 1200WB342 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Axisymmetric" + "trigger": "1200WB392", + "details": "NZ 2D Section 1200WB392", + "kind": "type", + "contents": "section NZ2D 1200WB392 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"AxisymmetricElastic" + "trigger": "1200WB392", + "details": "NZ 3D Section 1200WB392", + "kind": "type", + "contents": "section NZ3D 1200WB392 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"element B21 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5]} ${6:[6]}\n# (1) int, unique element tag\n# (2) int, node i\n# (3) int, node j\n# (4) int, section tag\n# [5] int, number of integration points, default: 6\n# [6] bool string, nonlinear geometry switch, default: false", - "details":"2D Displacement Based Bernoulli Beam", - "kind":"type", - "trigger":"B21" + "trigger": "1200WB423", + "details": "NZ 2D Section 1200WB423", + "kind": "type", + "contents": "section NZ2D 1200WB423 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"element B21EH ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5]} ${6:[6]}\n# (1) int, unique element tag\n# (2) int, node i\n# (3) int, node j\n# (4) int, section tag\n# [5] int, number of integration points, default: 6\n# [6] bool string, nonlinear geometry switch, default: false", - "details":"2D Displacement Based Bernoulli Beam With End Moment Release", - "kind":"type", - "trigger":"B21EH" + "trigger": "1200WB423", + "details": "NZ 3D Section 1200WB423", + "kind": "type", + "contents": "section NZ3D 1200WB423 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"element B21EL ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5]} ${6:[6]}\n# (1) int, unique element tag\n# (2) int, node i\n# (3) int, node j\n# (4) int, section tag\n# [5] int, number of integration points, default: 6\n# [6] bool string, nonlinear geometry switch, default: false", - "details":"2D Displacement Based Bernoulli Beam With End Moment Release", - "kind":"type", - "trigger":"B21EL" + "trigger": "1200WB455", + "details": "NZ 2D Section 1200WB455", + "kind": "type", + "contents": "section NZ2D 1200WB455 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"element B21H ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5]} ${6:[6]}\n# (1) int, unique element tag\n# (2) int, node i\n# (3) int, node j\n# (4) int, section tag\n# [5] double, normalized length of each end hinge, default: 0.2 \n# [6] bool string, nonlinear geometry switch, default: false", - "details":"2D Displacement Based Bernoulli Beam with Lumped End Hinges", - "kind":"type", - "trigger":"B21H" + "trigger": "1200WB455", + "details": "NZ 3D Section 1200WB455", + "kind": "type", + "contents": "section NZ3D 1200WB455 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"element B31 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:[6]} ${7:[7]}\n# (1) int, unique element tag\n# (2) int, node i\n# (3) int, node j\n# (4) int, section tag\n# (5) int, orientation tag\n# [6] int, number of integration points, default: 5\n# [7] bool string, nonlinear geometry switch, default: false", - "details":"3D Displacement Based Bernoulli Beam", - "kind":"type", - "trigger":"B31" + "trigger": "125X4.0SHS", + "details": "NZ 2D Section 125X4.0SHS", + "kind": "type", + "contents": "section NZ2D 125X4.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"B3DL" + "trigger": "125X4.0SHS", + "details": "NZ 3D Section 125X4.0SHS", + "kind": "type", + "contents": "section NZ3D 125X4.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"set system_solver BICGSTAB", - "details":"Use BICGSTAB Solver", - "kind":"type", - "trigger":"BICGSTAB" + "trigger": "125X5.0SHS", + "details": "NZ 2D Section 125X5.0SHS", + "kind": "type", + "contents": "section NZ2D 125X5.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"material BWBN ${1:(1)} ${2:[2...18]}\n# (1) int, unique material tag\n# [2] double, elastic modulus, default: 2E5\n# [3] double, yield stress, default: 4E2\n# [4] double, hardening ratio, default: 1E-2\n# [5] double, beta (>0), default: 0.5\n# [6] double, exponent n (>0, normally >=1), default: 1.0\n# [7] double, initial \nu (>0), default: 1.0\n# [8] double, slope of \nu (>0), default: 0.0\n# [9] double, initial eta (>0), default: 1.0\n# [10] double, slope of eta (>0), default: 0.0\n# [11] double, initial phi (>0), default: 1.0\n# [12] double, slope of phi (>0), default: 0.0\n# [13] double, zeta ${1>zeta>0:(1>zeta>0)}, default: 0.0\n# [14] double, slope of A (>0), default: 0.0\n# [15] double, p (>0), default: 0.0\n# [16] double, q (>0), default: 0.0\n# [17] double, lambda (>0), default: 1.0\n# [18] double, density, default: 0.0", - "details":"Bouc-Wen-Baber-Noori Model", - "kind":"type", - "trigger":"BWBN" + "trigger": "125X5.0SHS", + "details": "NZ 3D Section 125X5.0SHS", + "kind": "type", + "contents": "section NZ3D 125X5.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section Bar2D ${1:(1)} ${2:(2)} ${3:(3)} ${4:[4]}\n# (1) int, unique section tag\n# (2) double, area\n# (3) int, material tag\n# [4] double, eccentricity, default: 0.0", - "details":"2D Reinforcing Bar Section", - "kind":"type", - "trigger":"Bar2D" + "trigger": "125X6.0SHS", + "details": "NZ 2D Section 125X6.0SHS", + "kind": "type", + "contents": "section NZ2D 125X6.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section Bar3D ${1:(1)} ${2:(2)} ${3:(3)} ${4:[4]} ${5:[5]}\n# (1) int, unique section tag\n# (2) double, area\n# (3) int, material tag\n# [4] double, eccentricity along y axis, default: 0.0\n# [5] double, eccentricity along z axis, default: 0.0", - "details":"3D Reinforcing Bar Section", - "kind":"type", - "trigger":"Bar3D" + "trigger": "125X6.0SHS", + "details": "NZ 3D Section 125X6.0SHS", + "kind": "type", + "contents": "section NZ3D 125X6.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"integrator BatheExplicit ${1:(1)} ${2:(2)}\n# (1) int, unique integrator tag\n# [2] double, spectral radius, default: 0.5", - "details":"", - "kind":"type", - "trigger":"BatheExplicit" + "trigger": "125X75X3.0RHS", + "details": "NZ 2D Section 125X75X3.0RHS", + "kind": "type", + "contents": "section NZ2D 125X75X3.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"integrator BatheTwoStep ${1:(1)} ${2:(2)} ${3:(3)}\n# (1) int, unique integrator tag\n# [2] double, spectral radius, default: 0\n# [3] double, sub-step size, default: 0.5", - "details":"", - "kind":"type", - "trigger":"BatheTwoStep" + "trigger": "125X75X3.0RHS", + "details": "NZ 3D Section 125X75X3.0RHS", + "kind": "type", + "contents": "section NZ3D 125X75X3.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Bilinear1D" + "trigger": "125X75X4.0RHS", + "details": "NZ 2D Section 125X75X4.0RHS", + "kind": "type", + "contents": "section NZ2D 125X75X4.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Bilinear2D" + "trigger": "125X75X4.0RHS", + "details": "NZ 3D Section 125X75X4.0RHS", + "kind": "type", + "contents": "section NZ3D 125X75X4.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"material BilinearCC ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:(7)} ${8:(8)} ${9:[9]}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# (3) double, poissons ratio\n# (4) double, beta, controls compression side shape\n# (5) double, m, slope of CSL\n# (6) double, p_t, initial tension strength\n# (7) double, a_0, initial a_0\n# (8) double, H\n# [9] double, density, default: 0.0", - "details":"Cam-Clay model with bilinear hardening model", - "kind":"type", - "trigger":"BilinearCC" + "trigger": "125X75X5.0RHS", + "details": "NZ 2D Section 125X75X5.0RHS", + "kind": "type", + "contents": "section NZ2D 125X75X5.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"material CustomCC ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:(7)} ${8:[8]}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# (3) double, poissons ratio\n# (4) double, beta, controls compression side shape\n# (5) double, m, slope of CSL\n# (6) double, p_t, initial tension strength\n# (7) int, hardening expression tag\n# [8] double, density, default: 0.0", - "details":"Cam-Clay model with custom hardening function", - "kind":"type", - "trigger":"CustomCC" + "trigger": "125X75X5.0RHS", + "details": "NZ 3D Section 125X75X5.0RHS", + "kind": "type", + "contents": "section NZ3D 125X75X5.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"material BilinearDP ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:(7)} ${8:(8)} ${9:[9]}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# (3) double, poissons ratio\n# (4) double, \\eta_y\n# (5) double, \\eta_f\n# (6) double, \\xi\n# (7) double, cohesion\n# (8) double, hardening ratio\n# [9] double, density, default: 0.0", - "details":"DP model with bilinear hardening function", - "kind":"type", - "trigger":"BilinearDP" + "trigger": "125X9.0SHS", + "details": "NZ 2D Section 125X9.0SHS", + "kind": "type", + "contents": "section NZ2D 125X9.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"material BilinearElastic1D ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5]}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# (3) double, yield stress\n# (4) double, hardening modulus\n# [5] double, density, default: 0.0", - "details":"Uniaxial Bilinear Elastic Material", - "kind":"type", - "trigger":"BilinearElastic1D" + "trigger": "125X9.0SHS", + "details": "NZ 3D Section 125X9.0SHS", + "kind": "type", + "contents": "section NZ3D 125X9.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"material BilinearHoffman ${1:(1)} ${2:(2...7)} ${3:(8...10)} ${4:(11...19)} ${5:[20]} ${6:[21]}\n# (1) int, unique material tag\n# (2...7) double, six moduli: E_{xx}, E_{yy}, E_{zz}, E_{xy}, E_{yz}, E_{zx}\n# (8...10) double, three poissions ratios: v_{xy}, v_{yz}, v_{zx}\n# (11...19) double, nine yield stresses\n# [20] double, hardening ratio, default: 0.0\n# [21] double, density, default: 0.0", - "details":"", - "kind":"type", - "trigger":"BilinearHoffman" + "trigger": "139.7X3.0CHS", + "details": "NZ 2D Section 139.7X3.0CHS", + "kind": "type", + "contents": "section NZ2D 139.7X3.0CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"material TimberPD ${1:(1)} ${2:(2...7)} ${3:(8...10)} ${4:(11...19)} ${5:(20...26)} ${6:[27]}\n# (1) int, unique material tag\n# (2...7) double, six moduli: E_{xx}, E_{yy}, E_{zz}, E_{xy}, E_{yz}, E_{zx}\n# (8...10) double, three poissions ratios: v_{xy}, v_{yz}, v_{zx}\n# (11...19) double, nine yield stresses\n# (20...26) double, hardening parameters\n# [27] double, density, default: 0.0", - "details":"", - "kind":"type", - "trigger":"TimberPD" + "trigger": "139.7X3.0CHS", + "details": "NZ 3D Section 139.7X3.0CHS", + "kind": "type", + "contents": "section NZ3D 139.7X3.0CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"BilinearJ2" + "trigger": "139.7X3.5CHS", + "details": "NZ 2D Section 139.7X3.5CHS", + "kind": "type", + "contents": "section NZ2D 139.7X3.5CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"BilinearMises1D" + "trigger": "139.7X3.5CHS", + "details": "NZ 3D Section 139.7X3.5CHS", + "kind": "type", + "contents": "section NZ3D 139.7X3.5CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"material BilinearOO ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:[7]}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# (3) double, tension yield strain\n# (4) double, tension hardening ratio\n# (5) double, compression yield strain\n# (6) double, compression hardening ratio\n# [7] double, density, default: 0.0", - "details":"Bilinear Origin Oriented Model", - "kind":"type", - "trigger":"BilinearOO" + "trigger": "139.7X5.0CHS", + "details": "NZ 2D Section 139.7X5.0CHS", + "kind": "type", + "contents": "section NZ2D 139.7X5.0CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"material BilinearPO ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:[7]}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# (3) double, tension yield strain\n# (4) double, tension hardening ratio\n# (5) double, compression yield strain\n# (6) double, compression hardening ratio\n# [7] double, density, default: 0.0", - "details":"Bilinear Peak Oriented Model", - "kind":"type", - "trigger":"BilinearPO" + "trigger": "139.7X5.0CHS", + "details": "NZ 3D Section 139.7X5.0CHS", + "kind": "type", + "contents": "section NZ3D 139.7X5.0CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"BilinearPeric" + "trigger": "139.7X5.4CHS", + "details": "NZ 2D Section 139.7X5.4CHS", + "kind": "type", + "contents": "section NZ2D 139.7X5.4CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"material BilinearViscosity ${1:(1)} ${2:(2)} ${3:(3)} ${4:[4]}\n# (1) int, unique material tag\n# (2) double, damping coefficient\n# (3) double, yield stress\n# [4] double, hardening ratio, default: 0", - "details":"Viscosity with bilinear hardening", - "kind":"type", - "trigger":"BilinearViscosity" + "trigger": "139.7X5.4CHS", + "details": "NZ 3D Section 139.7X5.4CHS", + "kind": "type", + "contents": "section NZ3D 139.7X5.4CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"material CustomViscosity (1) (2)\n# (1) int, unique tag\n# (2) int, viscosity expression tag", - "details":"Viscosity with custom hardening", - "kind":"type", - "trigger":"CustomViscosity" + "trigger": "150UB14.0", + "details": "NZ 2D Section 150UB14.0", + "kind": "type", + "contents": "section NZ2D 150UB14.0 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"BlatzKo" + "trigger": "150UB14.0", + "details": "NZ 3D Section 150UB14.0", + "kind": "type", + "contents": "section NZ3D 150UB14.0 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"material BoucWen ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# (3) double, yield stress\n# (4) double, hardening ratio\n# (5) double, beta, a positive parameter\n# (6) double, n, a positive exponent", - "details":"Bouc-Wen Model", - "kind":"type", - "trigger":"BouncWen" + "trigger": "150UB18.0", + "details": "NZ 2D Section 150UB18.0", + "kind": "type", + "contents": "section NZ2D 150UB18.0 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section Box2D ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:[6]} ${7:[7]}\n# (1) int, unique section tag\n# (2) double, width\n# (3) double, height\n# (4) double, thickness\n# (5) int, material tag\n# [6] int, number of integration points, default: 6\n# [7] double, eccentricity, default: 0.0", - "details":"2D Box Section", - "kind":"type", - "trigger":"Box2D" + "trigger": "150UB18.0", + "details": "NZ 3D Section 150UB18.0", + "kind": "type", + "contents": "section NZ3D 150UB18.0 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section Box3D ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:[6]} ${7:[7]} ${8:[8]}\n# (1) int, unique section tag\n# (2) double, width\n# (3) double, height\n# (4) double, thickness\n# (5) int, material tag\n# [6] int, number of integration points, default: 3\n# [7] double, eccentricity along y axis, default: 0.0\n# [8] double, eccentricity along z axis, default: 0.0", - "details":"3D Box Section", - "kind":"type", - "trigger":"Box3D" + "trigger": "150UC23.4", + "details": "NZ 2D Section 150UC23.4", + "kind": "type", + "contents": "section NZ2D 150UC23.4 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Buckle" + "trigger": "150UC23.4", + "details": "NZ 3D Section 150UC23.4", + "kind": "type", + "contents": "section NZ3D 150UC23.4 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"element C3D20 ${1:(1)} ${2:(2...21)} ${22:(22)} ${23:[23]} ${24:[24]}\n# (1) int, unique element tag\n# (2...21) int, eight corner nodes with conventional order\n# (22) int, material tag\n# [23] bool string, reduced integration scheme switch, default: true\n# [24] bool string, nonlinear geometry switch, default: false", - "details":"Second Order Cube/Brick", - "kind":"type", - "trigger":"C3D20" + "trigger": "150UC30.0", + "details": "NZ 2D Section 150UC30.0", + "kind": "type", + "contents": "section NZ2D 150UC30.0 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"element C3D4 ${1:(1)} ${2:(2...5)} ${6:(6)} ${7:[7]}\n# (1) int, unique element tag\n# (2...5) int, four corner nodes with conventional order\n# (6) int, material tag\n# [7] bool string, nonlinear geometry switch, default: false", - "details":"Linear Tetrahedral", - "kind":"type", - "trigger":"C3D4" + "trigger": "150UC30.0", + "details": "NZ 3D Section 150UC30.0", + "kind": "type", + "contents": "section NZ3D 150UC30.0 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"element C3D8 ${1:(1)} ${2:(2...9)} ${10:(10)} ${11:[11]} ${12:[12]}\n# (1) int, unique element tag\n# (2...9) int, eight corner nodes with conventional order\n# (10) int, material tag\n# [11] string, integration scheme, default: 'I'\n# [12] bool string, nonlinear geometry switch, default: false", - "details":"Linear Cube/Brick", - "kind":"type", - "trigger":"C3D8" + "trigger": "150UC37.2", + "details": "NZ 2D Section 150UC37.2", + "kind": "type", + "contents": "section NZ2D 150UC37.2 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"element C3D8I ${1:(1)} ${2:(2...9)} ${10:(10)}\n# (1) int, unique element tag\n# (2...9) int, eight corner nodes with conventional order\n# (10) int, material tag", - "details":"Linear Cube/Brick with Incompatible Modes", - "kind":"type", - "trigger":"C3D8I" + "trigger": "150UC37.2", + "details": "NZ 3D Section 150UC37.2", + "kind": "type", + "contents": "section NZ3D 150UC37.2 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"C3D8R" + "trigger": "150X100X4.0RHS", + "details": "NZ 2D Section 150X100X4.0RHS", + "kind": "type", + "contents": "section NZ2D 150X100X4.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"element CAX3 ${1:(1)} ${2:(2...4)} ${5:(5)} ${6:[6]}\n# (1) int, unique element tag\n# (2...4) int, node tags\n# (5) int, material tag\n# [6] bool string, nonlinear geometry switch, default: false", - "details":"Axisymmetric Linear Triangle", - "kind":"type", - "trigger":"CAX3" + "trigger": "150X100X4.0RHS", + "details": "NZ 3D Section 150X100X4.0RHS", + "kind": "type", + "contents": "section NZ3D 150X100X4.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"element CAX4 ${1:(1)} ${2:(2...5)} ${6:(6)}\n# (1) int, unique element tag\n# (2...5) int, node i, j, k, l\n# (6) int, material tag", - "details":"Axisymmetric Linear Quadrilateral", - "kind":"type", - "trigger":"CAX4" + "trigger": "150X100X5.0RHS", + "details": "NZ 2D Section 150X100X5.0RHS", + "kind": "type", + "contents": "section NZ2D 150X100X5.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"element CAX8 ${1:(1)} ${2:(2...9)} ${10:(10)}\n# (1) int, unique element tag\n# (2...9) int, node tags\n# (10) int, material tag", - "details":"Axisymmetric Quadratic Quadrilateral", - "kind":"type", - "trigger":"CAX8" + "trigger": "150X100X5.0RHS", + "details": "NZ 3D Section 150X100X5.0RHS", + "kind": "type", + "contents": "section NZ3D 150X100X5.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"CDP" + "trigger": "150X100X6.0RHS", + "details": "NZ 2D Section 150X100X6.0RHS", + "kind": "type", + "contents": "section NZ2D 150X100X6.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"CDPM2" + "trigger": "150X100X6.0RHS", + "details": "NZ 3D Section 150X100X6.0RHS", + "kind": "type", + "contents": "section NZ3D 150X100X6.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"CDPM2ANISO" + "trigger": "150X5.0SHS", + "details": "NZ 2D Section 150X5.0SHS", + "kind": "type", + "contents": "section NZ2D 150X5.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"CDPM2ISO" + "trigger": "150X5.0SHS", + "details": "NZ 3D Section 150X5.0SHS", + "kind": "type", + "contents": "section NZ3D 150X5.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"CDPM2NO" + "trigger": "150X50X3.0RHS", + "details": "NZ 2D Section 150X50X3.0RHS", + "kind": "type", + "contents": "section NZ2D 150X50X3.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"CIN3D8" + "trigger": "150X50X3.0RHS", + "details": "NZ 3D Section 150X50X3.0RHS", + "kind": "type", + "contents": "section NZ3D 150X50X3.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"Linear Infinite Cube/Brick", - "kind":"type", - "trigger":"CIN3D8" + "trigger": "150X50X4.0RHS", + "details": "NZ 2D Section 150X50X4.0RHS", + "kind": "type", + "contents": "section NZ2D 150X50X4.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"element CINP4 ${1:(1)} ${2:(2...5)} ${6:(6)} ${7:[7]}\n# (1) int, unique element tag\n# (2...5) int, node i, j, k, l\n# (6) int, material tag\n# [7] double, element thickness, default: 1.0", - "details":"Bilinear Infinite Quadrilateral", - "kind":"type", - "trigger":"CINP4" + "trigger": "150X50X4.0RHS", + "details": "NZ 3D Section 150X50X4.0RHS", + "kind": "type", + "contents": "section NZ3D 150X50X4.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"element CP3 ${1:(1)} ${2:(2...4)} ${5:(5)} ${6:[6]} ${7:[7]}\n# (1) int, unique element tag\n# (2...4) int, node i, j, k\n# (5) int, material tag\n# [6] double, element thickness, default: 1.0\n# [7] bool string, nonlinear geometry switch, default: false", - "details":"Constant Strain Triangle", - "kind":"type", - "trigger":"CP3" + "trigger": "150X50X5.0RHS", + "details": "NZ 2D Section 150X50X5.0RHS", + "kind": "type", + "contents": "section NZ2D 150X50X5.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"element CP4 ${1:(1)} ${2:(2...5)} ${6:(6)} ${7:[7]} ${8:[8]} ${9:[9]}\n# (1) int, unique element tag\n# (2...5) int, node i, j, k, l\n# (6) int, material tag\n# [7] double, element thickness, default: 1.0\n# [8] bool string, reduced integration switch, default: false\n# [9] bool string, nonlinear geometry switch, default: false", - "details":"Bilinear Quadrilateral", - "kind":"type", - "trigger":"CP4" + "trigger": "150X50X5.0RHS", + "details": "NZ 3D Section 150X50X5.0RHS", + "kind": "type", + "contents": "section NZ3D 150X50X5.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"element CP4I ${1:(1)} ${2:(2...5)} ${6:(6)} ${7:[7]}\n# (1) int, unique element tag\n# (2...5) int, node i, j, k, l\n# (6) int, material tag\n# [7] double, element thickness, default: 1.0", - "details":"Bilinear Incompatible Quadrilateral", - "kind":"type", - "trigger":"CP4I" + "trigger": "150X6.0SHS", + "details": "NZ 2D Section 150X6.0SHS", + "kind": "type", + "contents": "section NZ2D 150X6.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"CP4R" + "trigger": "150X6.0SHS", + "details": "NZ 3D Section 150X6.0SHS", + "kind": "type", + "contents": "section NZ3D 150X6.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"element CP5 ${1:(1)} ${2:(2...6)} ${7:(7)} ${8:[8]} ${9:[9]}\n# (1) int, unique element tag\n# (2...6) int, node tags that define the element\n# (7) int, material tag\n# [8] double, element thickness, default: 1.0\n# [9] bool string, nonlinear geometry switch, default: false", - "details":"Five-Point Quadrilateral", - "kind":"type", - "trigger":"CP5" + "trigger": "150X9.0SHS", + "details": "NZ 2D Section 150X9.0SHS", + "kind": "type", + "contents": "section NZ2D 150X9.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"element CP6 ${1:(1)} ${2:(2...7)} ${8:(8)} ${9:[9]} ${10:[10]}\n# (1) int, unique element tag\n# (2...7) int, node tags that define the element\n# (8) int, material tag\n# [9] double, element thickness, default: 1.0\n# [10] bool string, nonlinear geometry switch, default: false", - "details":"Quadratic Triangle", - "kind":"type", - "trigger":"CP6" + "trigger": "150X9.0SHS", + "details": "NZ 3D Section 150X9.0SHS", + "kind": "type", + "contents": "section NZ3D 150X9.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"element CP7 ${1:(1)} ${2:(2...8)} ${9:(9)} ${10:[10]} ${11:[11]}\n# (1) int, unique element tag\n# (2...8) int, node tags that define the element\n# (9) int, material tag\n# [10] double, element thickness, default: 1.0\n# [11] bool string, nonlinear geometry switch, default: false", - "details":"Seven-Point Quadrilateral", - "kind":"type", - "trigger":"CP7" + "trigger": "165.1X3.0CHS", + "details": "NZ 2D Section 165.1X3.0CHS", + "kind": "type", + "contents": "section NZ2D 165.1X3.0CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"element CP8 ${1:(1)} ${2:(2...9)} ${10:(10)} ${11:[11]} ${12:[12]} ${13:[13]}\n# (1) int, unique element tag\n# (2...9) int, node 1 to node 8\n# (10) int, material tag\n# [11] double, element thickness, default: 1.0\n# [12] bool string, reduced integration switch, default: false\n# [13] bool string, nonlinear geometry switch, default: false", - "details":"Second Order Quadrilateral", - "kind":"type", - "trigger":"CP8" + "trigger": "165.1X3.0CHS", + "details": "NZ 3D Section 165.1X3.0CHS", + "kind": "type", + "contents": "section NZ3D 165.1X3.0CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"CPE8" + "trigger": "165.1X3.5CHS", + "details": "NZ 2D Section 165.1X3.5CHS", + "kind": "type", + "contents": "section NZ2D 165.1X3.5CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"CPE8R" + "trigger": "165.1X3.5CHS", + "details": "NZ 3D Section 165.1X3.5CHS", + "kind": "type", + "contents": "section NZ3D 165.1X3.5CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"CPS8" + "trigger": "165.1X5.0CHS", + "details": "NZ 2D Section 165.1X5.0CHS", + "kind": "type", + "contents": "section NZ2D 165.1X5.0CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"CSMQ4" + "trigger": "165.1X5.0CHS", + "details": "NZ 3D Section 165.1X5.0CHS", + "kind": "type", + "contents": "section NZ3D 165.1X5.0CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"CSMQ5" + "trigger": "165.1X5.4CHS", + "details": "NZ 2D Section 165.1X5.4CHS", + "kind": "type", + "contents": "section NZ2D 165.1X5.4CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"CSMQ6" + "trigger": "165.1X5.4CHS", + "details": "NZ 3D Section 165.1X5.4CHS", + "kind": "type", + "contents": "section NZ3D 165.1X5.4CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"CSMQ7" + "trigger": "168.3X4.8CHS", + "details": "NZ 2D Section 168.3X4.8CHS", + "kind": "type", + "contents": "section NZ2D 168.3X4.8CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"CSMQ8" + "trigger": "168.3X4.8CHS", + "details": "NZ 3D Section 168.3X4.8CHS", + "kind": "type", + "contents": "section NZ3D 168.3X4.8CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"CSMT3" + "trigger": "168.3X6.4CHS", + "details": "NZ 2D Section 168.3X6.4CHS", + "kind": "type", + "contents": "section NZ2D 168.3X6.4CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"CSMT6" + "trigger": "168.3X6.4CHS", + "details": "NZ 3D Section 168.3X6.4CHS", + "kind": "type", + "contents": "section NZ3D 168.3X6.4CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"set system_solver CUDA", - "details":"Use CUDA Solver", - "kind":"type", - "trigger":"CUDA" + "trigger": "168.3X7.1CHS", + "details": "NZ 2D Section 168.3X7.1CHS", + "kind": "type", + "contents": "section NZ2D 168.3X7.1CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section Circle1D ${1:(1)} ${2:(2)} ${3:(3)}\n# (1) int, unique section tag\n# (2) double, radius\n# (3) int, material tag", - "details":"1D Circle Section", - "kind":"type", - "trigger":"Circle1D" + "trigger": "168.3X7.1CHS", + "details": "NZ 3D Section 168.3X7.1CHS", + "kind": "type", + "contents": "section NZ3D 168.3X7.1CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section Circle2D ${1:(1)} ${2:(2)} ${3:(3)} ${4:[4]} ${5:[5]}\n# (1) int, unique section tag\n# (2) double, radius\n# (3) int, material tag\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0", - "details":"2D Circle Section", - "kind":"type", - "trigger":"Circle2D" + "trigger": "180UB16.1", + "details": "NZ 2D Section 180UB16.1", + "kind": "type", + "contents": "section NZ2D 180UB16.1 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section Circle3D ${1:(1)} ${2:(2)} ${3:(3)} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique section tag\n# (2) double, radius\n# (3) int, material tag\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity along y axis, default: 0.0\n# [6] double, eccentricity along z axis, default: 0.0", - "details":"3D Circle Section", - "kind":"type", - "trigger":"Circle3D" + "trigger": "180UB16.1", + "details": "NZ 3D Section 180UB16.1", + "kind": "type", + "contents": "section NZ3D 180UB16.1 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section CircularHollow3D ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5]} ${6:[6]} ${7:[7]}\n# (1) int, unique section tag\n# (2) double, radius\n# (3) double, thickness\n# (4) int, material tag\n# [5] int, number of integration points, default: 10\n# [6] double, eccentricity along y axis, default: 0.0\n# [7] double, eccentricity along z axis, default: 0.0", - "details":"3D Hollow Circle Section", - "kind":"type", - "trigger":"CircleHollow3D" + "trigger": "180UB18.1", + "details": "NZ 2D Section 180UB18.1", + "kind": "type", + "contents": "section NZ2D 180UB18.1 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section CircularHollow2D ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5]} ${6:[6]}\n# (1) int, unique section tag\n# (2) double, radius\n# (3) double, thickness\n# (4) int, material tag\n# [5] int, number of integration points, default: 10\n# [6] double, eccentricity, default: 0.0", - "details":"2D Hollow Circular Section", - "kind":"type", - "trigger":"CircularHollow2D" + "trigger": "180UB18.1", + "details": "NZ 3D Section 180UB18.1", + "kind": "type", + "contents": "section NZ3D 180UB18.1 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"CircularHollow3D" + "trigger": "180UB22.2", + "details": "NZ 2D Section 180UB22.2", + "kind": "type", + "contents": "section NZ2D 180UB22.2 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Combine" + "trigger": "180UB22.2", + "details": "NZ 3D Section 180UB22.2", + "kind": "type", + "contents": "section NZ3D 180UB22.2 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Concrete21" + "trigger": "200UB18.2", + "details": "NZ 2D Section 200UB18.2", + "kind": "type", + "contents": "section NZ2D 200UB18.2 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Concrete22" + "trigger": "200UB18.2", + "details": "NZ 3D Section 200UB18.2", + "kind": "type", + "contents": "section NZ3D 200UB18.2 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"material ConcreteCM ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:[7]} ${8:[8]} ${9:[9]} ${10:[10]}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# (3) double, compression strength, should be negative but sign insensitive\n# (4) double, tension strength, should be positive but sign insensitive\n# (5) double, NC\n# (6) double, NT\n# [7] double, strain at compression strength, default: -2E-3\n# [8] double, strain at tension strength, default: 1E-4\n# [9] bool string, linear transition switch, default: false\n# [10] double, density, default: 0.0", - "details":"Chang-Mander Concrete Model", - "kind":"type", - "trigger":"ConcreteCM" + "trigger": "200UB22.3", + "details": "NZ 2D Section 200UB22.3", + "kind": "type", + "contents": "section NZ2D 200UB22.3 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"material ConcreteExp ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:(7)} ${8:(8)} ${9:[9]} ${10:[10]}\n# (1) int, unique tag\n# (2) double, elastic modulus\n# (3) double, f_t\n# (4) double, a_t\n# (5) double, g_t\n# (6) double, f_{c,m}\n# (7) double, a_c\n# (8) double, g_c\n# [9] double, middle point, default: 0.2\n# [10] double, density, default: 0.0", - "details":"Objective Concrete Model", - "kind":"type", - "trigger":"ConcreteExp" + "trigger": "200UB22.3", + "details": "NZ 3D Section 200UB22.3", + "kind": "type", + "contents": "section NZ3D 200UB22.3 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"ConcreteTable" + "trigger": "200UB25.4", + "details": "NZ 2D Section 200UB25.4", + "kind": "type", + "contents": "section NZ2D 200UB25.4 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"material ConcreteTsai ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:(7)} ${8:[8]} ${9:[9]} ${10:[10]} ${11:[11]}\n# (1) int, unique material tag\n# (2) double, compression strength, should be negative but sign insensitive\n# (3) double, tension strength, should be positive but sign insensitive\n# (4) double, MC\n# (5) double, NC\n# (6) double, MT\n# (7) double, NT\n# [8] double, strain at compression strength, default: -2E-3\n# [9] double, strain at tension strength, default: 1E-4\n# [10] double, middle point, default: 0.2\n# [11] double, density, default: 0.0", - "details":"Uniaxial Concrete Model Using Tsai's Equation", - "kind":"type", - "trigger":"ConcreteTsai" + "trigger": "200UB25.4", + "details": "NZ 3D Section 200UB25.4", + "kind": "type", + "contents": "section NZ3D 200UB25.4 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Constant" + "trigger": "200UB29.8", + "details": "NZ 2D Section 200UB29.8", + "kind": "type", + "contents": "section NZ2D 200UB29.8 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"element Contact2D ${1:(1)} ${2:(2)} ${3:(3)} ${4:[4]}\n# (1) int, unique element tag\n# (2) int, master group tag\n# (3) int, slave group tag\n# [4] double, penalty factor", - "details":"2D Node${Slave:(Slave)}-Line${Master:(Master)} Contact Element", - "kind":"type", - "trigger":"Contact2D" + "trigger": "200UB29.8", + "details": "NZ 3D Section 200UB29.8", + "kind": "type", + "contents": "section NZ3D 200UB29.8 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"element Contact3D ${1:(1)} ${2:(2)} ${3:(3)} ${4:[4]}\n# (1) int, unique element tag\n# (2) int, master group tag\n# (3) int, slave group tag\n# [4] double, penalty factor", - "details":"3D Node${Slave:(Slave)}-Triangular Facet${Master:(Master)} Contact Element", - "kind":"type", - "trigger":"Contact3D" + "trigger": "200UC46.2", + "details": "NZ 2D Section 200UC46.2", + "kind": "type", + "contents": "section NZ2D 200UC46.2 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Cosine" + "trigger": "200UC46.2", + "details": "NZ 3D Section 200UC46.2", + "kind": "type", + "contents": "section NZ3D 200UC46.2 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"CoulombFriction" + "trigger": "200UC52.2", + "details": "NZ 2D Section 200UC52.2", + "kind": "type", + "contents": "section NZ2D 200UC52.2 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"element CustomElastic1D ${1:(1)} ${2:(2)} ${3:[3]}\n# (1) int, unique element tag\n# (2) int, expression tag\n# (3) double, density, default: 0", - "details":"", - "kind":"type", - "trigger":"CustomElastic1D" + "trigger": "200UC52.2", + "details": "NZ 3D Section 200UC52.2", + "kind": "type", + "contents": "section NZ3D 200UC52.2 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"element CustomMises1D ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5]}\n# (1) int, unique element tag\n# (2) double, elastic modulus\n# (3) int, isotropic hardening expression tag\n# (4) int, kinematic hardening expression tag\n# (5) double, density, default: 0", - "details":"", - "kind":"type", - "trigger":"CustomMises1D" + "trigger": "200UC59.5", + "details": "NZ 2D Section 200UC59.5", + "kind": "type", + "contents": "section NZ2D 200UC59.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"DC3D4" + "trigger": "200UC59.5", + "details": "NZ 3D Section 200UC59.5", + "kind": "type", + "contents": "section NZ3D 200UC59.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"DC3D4" + "trigger": "200X100X4.0RHS", + "details": "NZ 2D Section 200X100X4.0RHS", + "kind": "type", + "contents": "section NZ2D 200X100X4.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"DC3D8" + "trigger": "200X100X4.0RHS", + "details": "NZ 3D Section 200X100X4.0RHS", + "kind": "type", + "contents": "section NZ3D 200X100X4.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"DC3D8" + "trigger": "200X100X5.0RHS", + "details": "NZ 2D Section 200X100X5.0RHS", + "kind": "type", + "contents": "section NZ2D 200X100X5.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"element DCP3 ${1:(1)} ${2:(2...4)} ${5:(5)} ${6:(6)} ${7:(7)} ${8:[8]}\n# (1) int, unique element tag\n# (2...4) int, node i, j, k\n# (5) int, material tag\n# (6) double, characteristic length\n# (7) double, energy release rate\n# [8] double, element thickness, default: 1.0", - "details":"Constant Strain Triangle With Crack Phase", - "kind":"type", - "trigger":"DCP3" + "trigger": "200X100X5.0RHS", + "details": "NZ 3D Section 200X100X5.0RHS", + "kind": "type", + "contents": "section NZ3D 200X100X5.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"element DCP4 ${1:(1)} ${2:(2...5)} ${6:(6)} ${7:(7)} ${8:(8)} ${9:[9]}\n# (1) int, unique element tag\n# (2...5) int, node i, j, k, l\n# (6) int, material tag\n# (7) double, characteristic length\n# (8) double, energy release rate\n# [9] double, element thickness, default: 1.0", - "details":"Bilinear Quadrilateral With Crack Phase", - "kind":"type", - "trigger":"DCP4" + "trigger": "200X100X6.0RHS", + "details": "NZ 2D Section 200X100X6.0RHS", + "kind": "type", + "contents": "section NZ2D 200X100X6.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"element DKT3 ${1:(1)} ${2:(2...4)} ${5:(5)} ${6:(6)} ${7:[7]}\n# (1) int, unique element tag\n# (2...4) int, node i, j, k\n# (5) int, material tag\n# (6) double, thickness\n# [7] int, number of integration points, default: 3", - "details":"DKT Triangle Plate", - "kind":"type", - "trigger":"DKT3" + "trigger": "200X100X6.0RHS", + "details": "NZ 3D Section 200X100X6.0RHS", + "kind": "type", + "contents": "section NZ3D 200X100X6.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"element DKT4 ${1:(1)} ${2:(2...5)} ${6:(6)} ${7:(7)} ${8:[8]}\n# (1) int, unique element tag\n# (2...5) int, node i, j, k, l\n# (6) int, material tag\n# (7) double, thickness\n# [8] int, number of integration points along thickness, default: 3", - "details":"DKT Quadrilateral Plate", - "kind":"type", - "trigger":"DKT4" + "trigger": "200X100X9.0RHS", + "details": "NZ 2D Section 200X100X9.0RHS", + "kind": "type", + "contents": "section NZ2D 200X100X9.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"element DKTS3 ${1:(1)} ${2:(2...4)} ${5:(5)} ${6:(6)} ${7:[7]} ${8:[8]}\n# (1) int, unique element tag\n# (2...4) int, node i, j, k\n# (5) int, material tag\n# (6) double, thickness\n# [7] int, number of integration points, default: 3\n# [7] bool, nonlinear geometry switch, default: false", - "details":"DKT Triangle Shell", - "kind":"type", - "trigger":"DKTS3" + "trigger": "200X100X9.0RHS", + "details": "NZ 3D Section 200X100X9.0RHS", + "kind": "type", + "contents": "section NZ3D 200X100X9.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"element DKTS4 ${1:(1)} ${2:(2...5)} ${6:(6)} ${7:(7)} ${8:[8]} ${9:[9]}\n# (1) int, unique element tag\n# (2...5) int, node i, j, k, l\n# (6) int, material tag\n# (7) double, thickness\n# [8] int, number of integration points, default: 3\n# [9] bool, nonlinear geometry switch, default: false", - "details":"DKT Quadrilateral Shell", - "kind":"type", - "trigger":"DKTS4" + "trigger": "200X5.0SHS", + "details": "NZ 2D Section 200X5.0SHS", + "kind": "type", + "contents": "section NZ2D 200X5.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"DafaliasManzari" + "trigger": "200X5.0SHS", + "details": "NZ 3D Section 200X5.0SHS", + "kind": "type", + "contents": "section NZ3D 200X5.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"element Damper01 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)}\n# (1) int, unique tag\n# (2) int, node i\n# (3) int, node j\n# (4) int, material tag of associated viscosity material", - "details":"2D Viscous Damper", - "kind":"type", - "trigger":"Damper01" + "trigger": "200X6.0SHS", + "details": "NZ 2D Section 200X6.0SHS", + "kind": "type", + "contents": "section NZ2D 200X6.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"element Damper02 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:[6]} ${7:[7]} ${8:[8]}\n# (1) int, unique tag\n# (2) int, node i\n# (3) int, node j\n# (4) int, damper tag\n# (5) int, spring tag\n# [6] bool string, if to use matrix in iteration, default: true\n# [7] int, the maximum delay number, default: 0\n# [8] double, beta, default: 0.5", - "details":"2D Maxwell Model", - "kind":"type", - "trigger":"Damper02" + "trigger": "200X6.0SHS", + "details": "NZ 3D Section 200X6.0SHS", + "kind": "type", + "contents": "section NZ3D 200X6.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"element Damper03 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)}\n# (1) int, unique tag\n# (2) int, node i\n# (3) int, node j\n# (4) int, material tag of associated viscosity material", - "details":"3D Viscous Damper", - "kind":"type", - "trigger":"Damper03" + "trigger": "200X9.0SHS", + "details": "NZ 2D Section 200X9.0SHS", + "kind": "type", + "contents": "section NZ2D 200X9.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"element Damper04 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:[6]} ${7:[7]} ${8:[8]}\n# (1) int, unique tag\n# (2) int, node i\n# (3) int, node j\n# (4) int, damper tag\n# (5) int, spring tag\n# [6] bool string, if to use matrix in iteration, default: true\n# [7] int, the maximum delay number, default: 0\n# [8] double, beta, default: 0.5", - "details":"3D Maxwell Model", - "kind":"type", - "trigger":"Damper04" + "trigger": "200X9.0SHS", + "details": "NZ 3D Section 200X9.0SHS", + "kind": "type", + "contents": "section NZ3D 200X9.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Damping" + "trigger": "20X1.6SHS", + "details": "NZ 2D Section 20X1.6SHS", + "kind": "type", + "contents": "section NZ2D 20X1.6SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Decay" + "trigger": "20X1.6SHS", + "details": "NZ 3D Section 20X1.6SHS", + "kind": "type", + "contents": "section NZ3D 20X1.6SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Dhakal" + "trigger": "219.1X4.8CHS", + "details": "NZ 2D Section 219.1X4.8CHS", + "kind": "type", + "contents": "section NZ2D 219.1X4.8CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Dynamic" + "trigger": "219.1X4.8CHS", + "details": "NZ 3D Section 219.1X4.8CHS", + "kind": "type", + "contents": "section NZ3D 219.1X4.8CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"element EB21 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:[7]}\n# (1) int, unique element tag\n# (2) int, node i\n# (3) int, node j\n# (4) double, area\n# (5) double, moment inertia\n# (6) int, material tag\n# [7] bool string, nonlinear geometry switch, default: false", - "details":"2D Elastic Bernoulli Beam", - "kind":"type", - "trigger":"EB21" + "trigger": "219.1X6.4CHS", + "details": "NZ 2D Section 219.1X6.4CHS", + "kind": "type", + "contents": "section NZ2D 219.1X6.4CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"EU2D" + "trigger": "219.1X6.4CHS", + "details": "NZ 3D Section 219.1X6.4CHS", + "kind": "type", + "contents": "section NZ3D 219.1X6.4CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"EU3D" + "trigger": "219.1X8.2CHS", + "details": "NZ 2D Section 219.1X8.2CHS", + "kind": "type", + "contents": "section NZ2D 219.1X8.2CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Eigen" + "trigger": "219.1X8.2CHS", + "details": "NZ 3D Section 219.1X8.2CHS", + "kind": "type", + "contents": "section NZ3D 219.1X8.2CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"material Elastic1D ${1:(1)} ${2:(2)} ${3:[3]}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# [3] double, density, default: 0.0", - "details":"Uniaxial Elastic Material", - "kind":"type", - "trigger":"Elastic1D" + "trigger": "250UB25.7", + "details": "NZ 2D Section 250UB25.7", + "kind": "type", + "contents": "section NZ2D 250UB25.7 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"material AsymmElastic1D ${1:(1)} ${2:(2)} ${3:(3)} ${4:[4]}\n# (1) int, unique material tag\n# (2) double, tension elastic modulus\n# (3) double, compression elastic modulus\n# [4] double, density, default: 0.0", - "details":"Uniaxial Elastic Material", - "kind":"type", - "trigger":"AsymmElastic1D" + "trigger": "250UB25.7", + "details": "NZ 3D Section 250UB25.7", + "kind": "type", + "contents": "section NZ3D 250UB25.7 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Elastic2D" + "trigger": "250UB31.4", + "details": "NZ 2D Section 250UB31.4", + "kind": "type", + "contents": "section NZ2D 250UB31.4 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Elastic3D" + "trigger": "250UB31.4", + "details": "NZ 3D Section 250UB31.4", + "kind": "type", + "contents": "section NZ3D 250UB31.4 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Element" + "trigger": "250UB37.3", + "details": "NZ 2D Section 250UB37.3", + "kind": "type", + "contents": "section NZ2D 250UB37.3 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"ElementalModal" + "trigger": "250UB37.3", + "details": "NZ 3D Section 250UB37.3", + "kind": "type", + "contents": "section NZ3D 250UB37.3 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Embed2D" + "trigger": "250UC72.9", + "details": "NZ 2D Section 250UC72.9", + "kind": "type", + "contents": "section NZ2D 250UC72.9 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Embed3D" + "trigger": "250UC72.9", + "details": "NZ 3D Section 250UC72.9", + "kind": "type", + "contents": "section NZ3D 250UC72.9 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"element Embedded2D ${1:(1)} ${2:(2)} ${3:(3)} ${4:[4]}\n# (1) int, unique element tag\n# (2) int, host element tag\n# (3) int, slave node tag\n# [4] double, penalty factor, default: 1E4", - "details":"2D Embedded Element", - "kind":"type", - "trigger":"Embedded2D" + "trigger": "250UC89.5", + "details": "NZ 2D Section 250UC89.5", + "kind": "type", + "contents": "section NZ2D 250UC89.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"element Embedded3D ${1:(1)} ${2:(2)} ${3:(3)} ${4:[4]}\n# (1) int, unique element tag\n# (2) int, host element tag\n# (3) int, slave node tag\n# [4] double, penalty factor, default: 1E4", - "details":"3D Embedded Element", - "kind":"type", - "trigger":"Embedded3D" + "trigger": "250UC89.5", + "details": "NZ 3D Section 250UC89.5", + "kind": "type", + "contents": "section NZ3D 250UC89.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"material ExpCC ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:(7)} ${8:(8)} ${9:(9)} ${10:(10)} ${11:[11]}\n# (1) nt, unique material tag\n# (2) double, elastic modulus\n# (3) double, poissons ratio\n# (4) double, beta, controls compression side shapen# (5) double, m, slope of CSL\n# (6) double, p_t, initial tension strength\n# (7) double, a_0, initial a_0\n# (8) double, e_0, nitial void ratio\n# (9) double, lambda\n# (10) double, kappa\n# [11] double, density, default: 0.0", - "details":"Cam-Clay model with exponential hardening", - "kind":"type", - "trigger":"ExpCC" + "trigger": "250X150X5.0RHS", + "details": "NZ 2D Section 250X150X5.0RHS", + "kind": "type", + "contents": "section NZ2D 250X150X5.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"material ExpDP ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:(7)} ${8:(8)} ${9:(9)} ${10:[10]}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# (3) double, poissons ratio\n# (4) double, \\eta_y\n# (5) double, \\eta_f\n# (6) double, \\xi\n# (7) double, cohesion\n# (8) double, cohesion_a\n# (9) double, cohesion_b\n# [10] double, density, default: 0.0", - "details":"DP model with exponential hardening function", - "kind":"type", - "trigger":"ExpDP" + "trigger": "250X150X5.0RHS", + "details": "NZ 3D Section 250X150X5.0RHS", + "kind": "type", + "contents": "section NZ3D 250X150X5.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"material CustomDP ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:(7)} ${8:[8]}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# (3) double, poissons ratio\n# (4) double, \\eta_y\n# (5) double, \\eta_f\n# (6) double, \\xi\n# (7) int, cohesion expression tag\n# [8] double, density, default: 0.0", - "details":"DP model with custom hardening function", - "kind":"type", - "trigger":"CustomDP" + "trigger": "250X150X6.0RHS", + "details": "NZ 2D Section 250X150X6.0RHS", + "kind": "type", + "contents": "section NZ2D 250X150X6.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"material ExpGurson1D ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:[6]} ${7:[7]} ${8:[8]} ${9:[9]} ${10:[10]} ${11:[11]}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# (3) double, poissons ratio\n# (4) double, yield stress\n# (5) double, n\n# [6] double, q1, default: 1.0\n# [7] double, q2, default: 1.0\n# [8] double, fn, default: 0.0\n# [9] double, sn, default: 1.0\n# [10] double, en, default: 0.0\n# [11] double, density, default: 0.0", - "details":"Uniaxial Gurson model using exponential hardening function", - "kind":"type", - "trigger":"ExpGurson1D" + "trigger": "250X150X6.0RHS", + "details": "NZ 3D Section 250X150X6.0RHS", + "kind": "type", + "contents": "section NZ3D 250X150X6.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"material CustomGurson1D ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5]} ${6:[6]} ${7:[7]} ${8:[8]} ${9:[9]} ${10:[10]}\n# (1) int, unique material tag\n# (2) int, expression tag\n# (3) double, elastic modulus\n# (4) double, poissons ratio\n# [5] double, q1, default: 1.0\n# [6] double, q2, default: 1.0\n# [7] double, fn, default: 0.0\n# [8] double, sn, default: 1.0\n# [9] double, en, default: 0.0\n# [10] double, density, default: 0.0", - "details":"Uniaxial Gurson model using custom hardening function", - "kind":"type", - "trigger":"CustomGurson1D" + "trigger": "250X150X9.0RHS", + "details": "NZ 2D Section 250X150X9.0RHS", + "kind": "type", + "contents": "section NZ2D 250X150X9.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"material ExpGurson ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:[6]} ${7:[7]} ${8:[8]} ${9:[9]} ${10:[10]} ${11:[11]}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# (3) double, poissons ratio\n# (4) double, yield stress\n# (5) double, n\n# [6] double, q1, default: 1.0\n# [7] double, q2, default: 1.0\n# [8] double, fn, default: 0.0\n# [9] double, sn, default: 1.0\n# [10] double, en, default: 0.0\n# [11] double, density, default: 0.0", - "details":"Gurson model using exponential hardening function", - "kind":"type", - "trigger":"ExpGurson" + "trigger": "250X150X9.0RHS", + "details": "NZ 3D Section 250X150X9.0RHS", + "kind": "type", + "contents": "section NZ3D 250X150X9.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"material CustomGurson ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5]} ${6:[6]} ${7:[7]} ${8:[8]} ${9:[9]} ${10:[10]}\n# (1) int, unique material tag\n# (2) int, expression tag\n# (3) double, elastic modulus\n# (4) double, poissons ratio\n# [5] double, q1, default: 1.0\n# [6] double, q2, default: 1.0\n# [7] double, fn, default: 0.0\n# [8] double, sn, default: 1.0\n# [9] double, en, default: 0.0\n# [10] double, density, default: 0.0", - "details":"Gurson model using custom hardening function", - "kind":"type", - "trigger":"CustomGurson" + "trigger": "250X6.0SHS", + "details": "NZ 2D Section 250X6.0SHS", + "kind": "type", + "contents": "section NZ2D 250X6.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"material ExpHoffman ${1:(1)} ${2:(2...7)} ${3:(8...10)} ${4:(11...19)} ${5:(20)} ${6:(21)} ${7:[22]}\n# (1) int, unique material tag\n# (2...7) double, six moduli: E_{xx}, E_{yy}, E_{zz}, E_{xy}, E_{yz}, E_{zx}\n# (8...10) double, three poissions ratios: v_{xx}, v_{yy}, v_{zz}\n# (11...19) double, nine yield stress\n# (20) double, a\n# (21) double, b\n# [22] double, density, default: 0.0", - "details":"Hoffman model with exponential isotropic hardening", - "kind":"type", - "trigger":"ExpHoffman" + "trigger": "250X6.0SHS", + "details": "NZ 3D Section 250X6.0SHS", + "kind": "type", + "contents": "section NZ3D 250X6.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"material CustomHoffman ${1:(1)} ${2:(2...7)} ${3:(8...10)} ${4:(11...19)} ${5:(20)} ${6:[21]}\n# (1) int, unique material tag\n# (2...7) double, six moduli: E_{xx}, E_{yy}, E_{zz}, E_{xy}, E_{yz}, E_{zx}\n# (8...10) double, three poissions ratios: v_{xx}, v_{yy}, v_{zz}\n# (11...19) double, nine yield stress\n# (20) int, hardening expression tag\n# [21] double, density, default: 0.0", - "details":"Hoffman model with custom isotropic hardening", - "kind":"type", - "trigger":"CustomHoffman" + "trigger": "250X9.0SHS", + "details": "NZ 2D Section 250X9.0SHS", + "kind": "type", + "contents": "section NZ2D 250X9.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"material ExpJ2 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:[7]}\n#(1) int, unique material tag\n#(2) double, elastic modulus\n#(3) double, poissons ratio\n#(4) double, yield stress\n#(5) double, a\n#(6) double, b\n#[7] double, density, default: 0", - "details":"J2 model with exponential isotropic hardening", - "kind":"type", - "trigger":"ExpJ2" + "trigger": "250X9.0SHS", + "details": "NZ 3D Section 250X9.0SHS", + "kind": "type", + "contents": "section NZ3D 250X9.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"material CustomJ2 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:[6]}\n#(1) int, unique material tag\n#(2) double, elastic modulus\n#(3) double, poissons ratio\n#(4) int, isotropic hardening expression tag\n#(5) int, kinematic hardening expression tag\n#[6] double, density, default: 0", - "details":"J2 model with exponential isotropic hardening", - "kind":"type", - "trigger":"CustomJ2" + "trigger": "25X1.6SHS", + "details": "NZ 2D Section 25X1.6SHS", + "kind": "type", + "contents": "section NZ2D 25X1.6SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"ExpMises1D" + "trigger": "25X1.6SHS", + "details": "NZ 3D Section 25X1.6SHS", + "kind": "type", + "contents": "section NZ3D 25X1.6SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"ExplicitDynamic" + "trigger": "25X2.0SHS", + "details": "NZ 2D Section 25X2.0SHS", + "kind": "type", + "contents": "section NZ2D 25X2.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"element F21 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5]} ${6:[6]}\n# (1) int, unique element tag\n# (2) int, node i\n# (3) int, node j\n# (4) int, section tag\n# [5] int, number of integration points, default: 6\n# [6] bool string, nonlinear geometry switch, default: false", - "details":"2D Force Based Bernoulli Beam", - "kind":"type", - "trigger":"F21" + "trigger": "25X2.0SHS", + "details": "NZ 3D Section 25X2.0SHS", + "kind": "type", + "contents": "section NZ3D 25X2.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"element F21H ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5]} ${6:[6]}\n# (1) int, unique element tag\n# (2) int, node i\n# (3) int, node j\n# (4) int, section tag\n# [5] double, normalized length of each end hinge, default: 0.2 \n# [6] bool string, nonlinear geometry switch, default: false", - "details":"2D Force Based Bernoulli Beam With Lumped End Hinges", - "kind":"type", - "trigger":"F21H" + "trigger": "25X2.5SHS", + "details": "NZ 2D Section 25X2.5SHS", + "kind": "type", + "contents": "section NZ2D 25X2.5SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"element F31 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:[6]} ${7:[7]}\n# (1) int, unique element tag\n# (2) int, node i\n# (3) int, node j\n# (4) int, section tag\n# (5) int, orientation tag\n# [6] int, number of integration points, default: 5\n# [7] bool string, nonlinear geometry switch, default: false", - "details":"3D Displacement Based Bernoulli Beam", - "kind":"type", - "trigger":"F31" + "trigger": "25X2.5SHS", + "details": "NZ 3D Section 25X2.5SHS", + "kind": "type", + "contents": "section NZ3D 25X2.5SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"FEAST" + "trigger": "25X3.0SHS", + "details": "NZ 2D Section 25X3.0SHS", + "kind": "type", + "contents": "section NZ2D 25X3.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"set system_solver FGMRES", - "details":"Use FGMRES Solver", - "kind":"type", - "trigger":"FGMRES" + "trigger": "25X3.0SHS", + "details": "NZ 3D Section 25X3.0SHS", + "kind": "type", + "contents": "section NZ3D 25X3.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section Fibre1D ${1:(1)} [${2:(2)}...]\n# (1) int, unique section tag\n# [(2)...] int, associated section tags", - "details":"1D Fibre Section", - "kind":"type", - "trigger":"Fibre1D" + "trigger": "273.1X4.8CHS", + "details": "NZ 2D Section 273.1X4.8CHS", + "kind": "type", + "contents": "section NZ2D 273.1X4.8CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section Fibre2D ${1:(1)} [${2:(2)}...]\n# (1) int, unique section tag\n# [(2)...] int, associated section tags", - "details":"2D Fibre Section", - "kind":"type", - "trigger":"Fibre2D" + "trigger": "273.1X4.8CHS", + "details": "NZ 3D Section 273.1X4.8CHS", + "kind": "type", + "contents": "section NZ3D 273.1X4.8CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section Fibre3D ${1:(1)} [${2:(2)}...]\n# (1) int, unique section tag\n# [(2)...] int, associated section tags", - "details":"3D Fibre Section", - "kind":"type", - "trigger":"Fibre3D" + "trigger": "273.1X6.4CHS", + "details": "NZ 2D Section 273.1X6.4CHS", + "kind": "type", + "contents": "section NZ2D 273.1X6.4CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"FixedLength2D" + "trigger": "273.1X6.4CHS", + "details": "NZ 3D Section 273.1X6.4CHS", + "kind": "type", + "contents": "section NZ3D 273.1X6.4CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"FixedLength3D" + "trigger": "273.1X9.3CHS", + "details": "NZ 2D Section 273.1X9.3CHS", + "kind": "type", + "contents": "section NZ2D 273.1X9.3CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"FixedNumber" + "trigger": "273.1X9.3CHS", + "details": "NZ 3D Section 273.1X9.3CHS", + "kind": "type", + "contents": "section NZ3D 273.1X9.3CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"material Flag01 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# (3) double, yield stress, positive\n# (4) double, residual stress, can be either positive or negative\n# (5) double, hardening ratio", - "details":"", - "kind":"type", - "trigger":"Flag01" + "trigger": "30X1.6SHS", + "details": "NZ 2D Section 30X1.6SHS", + "kind": "type", + "contents": "section NZ2D 30X1.6SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"material Flag02 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:(7)} ${8:(8)}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# (3) double, tension yield stress, positive\n# (4) double, tension residual stress, can be either positive or negative\n# (5) double, tension hardening ratio\n# (6) double, compression yield stress, negative\n# (7) double, compression residual stress, can be either positive or negative\n# (8) double, compression hardening ratio", - "details":"", - "kind":"type", - "trigger":"Flag02" + "trigger": "30X1.6SHS", + "details": "NZ 3D Section 30X1.6SHS", + "kind": "type", + "contents": "section NZ3D 30X1.6SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Fluid" + "trigger": "30X2.0SHS", + "details": "NZ 2D Section 30X2.0SHS", + "kind": "type", + "contents": "section NZ2D 30X2.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Frame" + "trigger": "30X2.0SHS", + "details": "NZ 3D Section 30X2.0SHS", + "kind": "type", + "contents": "section NZ3D 30X2.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Frequency" + "trigger": "310UB32.0", + "details": "NZ 2D Section 310UB32.0", + "kind": "type", + "contents": "section NZ2D 310UB32.0 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"element GCMQI ${1:(1)} ${2:(2...5)} ${6:(6)} ${7:[7]} ${8:[8]}\nelement GCMQL ${1:(1)} ${2:(2...5)} ${6:(6)} ${7:[7]} ${8:[8]}\nelement GCMQG ${1:(1)} ${2:(2...5)} ${6:(6)} ${7:[7]} ${8:[8]}\n# (1) int, unique element tag\n# (2...5) int, node i, j, k, l\n# (6) int, material tag\n# [7] double, element thickness, default: 1.0", - "details":"Generalized Conforming Mixed Quadrilateral With Drilling DoFs", - "kind":"type", - "trigger":"GCMQ" + "trigger": "310UB32.0", + "details": "NZ 3D Section 310UB32.0", + "kind": "type", + "contents": "section NZ3D 310UB32.0 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"GCMQG" + "trigger": "310UB40.4", + "details": "NZ 2D Section 310UB40.4", + "kind": "type", + "contents": "section NZ2D 310UB40.4 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"GCMQI" + "trigger": "310UB40.4", + "details": "NZ 3D Section 310UB40.4", + "kind": "type", + "contents": "section NZ3D 310UB40.4 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"GCMQL" + "trigger": "310UB46.2", + "details": "NZ 2D Section 310UB46.2", + "kind": "type", + "contents": "section NZ2D 310UB46.2 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"set system_solver GMRES", - "details":"Use GMRES Solver", - "kind":"type", - "trigger":"GMRES" + "trigger": "310UB46.2", + "details": "NZ 3D Section 310UB46.2", + "kind": "type", + "contents": "section NZ3D 310UB46.2 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"element GQ12 ${1:(1)} ${2:(2...5)} ${6:(6)} ${7:[7]}\n# (1) int, unique element tag\n# (2...5) int, node i, j, k, l\n# (6) int, material tag\n# [7] double, element thickness, default: 1.0", - "details":"Quadrilateral With Drilling DoFs", - "kind":"type", - "trigger":"GQ12" + "trigger": "310UC118", + "details": "NZ 2D Section 310UC118", + "kind": "type", + "contents": "section NZ2D 310UC118 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"integrator GSSSSOptimal ${1:(1)} ${2:[2]}\n# (1) int, unique integrator tag\n# [2] double, spectral radius, default: 0.5", - "details":"Optimal scheme for GSSSS", - "kind":"type", - "trigger":"GSSSSOptimal" + "trigger": "310UC118", + "details": "NZ 3D Section 310UC118", + "kind": "type", + "contents": "section NZ3D 310UC118 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"integrator GSSSSU0 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)}\n# (1) int, unique integrator tag\n# (2-4) double, three spectral radii", - "details":"U0 family scheme for GSSSS", - "kind":"type", - "trigger":"GSSSSU0" + "trigger": "310UC137", + "details": "NZ 2D Section 310UC137", + "kind": "type", + "contents": "section NZ2D 310UC137 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"integrator GSSSSV0 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)}\n# (1) int, unique integrator tag\n# (2-4) double, three spectral radii", - "details":"V0 family scheme for GSSSS", - "kind":"type", - "trigger":"GSSSSV0" + "trigger": "310UC137", + "details": "NZ 3D Section 310UC137", + "kind": "type", + "contents": "section NZ3D 310UC137 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Gap01" + "trigger": "310UC96.8", + "details": "NZ 2D Section 310UC96.8", + "kind": "type", + "contents": "section NZ2D 310UC96.8 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"integrator GeneralisedAlpha ${1:(1)} ${2:[2]}\n# (1) int, unique tag\n# [2] double, spectral radius at infinite frequency, default: 0.5\n\nintegrator GeneralisedAlpha ${1:(1)} ${2:(2)} ${3:(3)}\n# (1) int, unique tag\n# (2) double, \\alpha_f\n# (3) double, \\alpha_m", - "details":"", - "kind":"type", - "trigger":"GeneralisedAlpha" + "trigger": "310UC96.8", + "details": "NZ 3D Section 310UC96.8", + "kind": "type", + "contents": "section NZ3D 310UC96.8 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"integrator GeneralisedAlphaExplicit ${1:(1)} ${2:[2]}\n# (1) int, unique tag\n# [2] double, spectral radius at infinite frequency, default: 0.5", - "details":"", - "kind":"type", - "trigger":"GeneralisedAlphaExplicit" + "trigger": "320UC158", + "details": "NZ 2D Section 320UC158", + "kind": "type", + "contents": "section NZ2D 320UC158 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"integrator GeneralisedAlpha ${1:(1)} ${2:[2]}\n# (1) int, unique tag\n# [2] double, spectral radius at infinite frequency, default: 0.5\n\nintegrator GeneralisedAlpha ${1:(1)} ${2:(2)} ${3:(3)}\n# (1) int, unique tag\n# (2) double, \\alpha_f\n# (3) double, \\alpha_m", - "details":"", - "kind":"type", - "trigger":"GeneralizedAlpha" + "trigger": "320UC158", + "details": "NZ 3D Section 320UC158", + "kind": "type", + "contents": "section NZ3D 320UC158 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Global" + "trigger": "323.9X12.7CHS", + "details": "NZ 2D Section 323.9X12.7CHS", + "kind": "type", + "contents": "section NZ2D 323.9X12.7CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"GroupElement" + "trigger": "323.9X12.7CHS", + "details": "NZ 3D Section 323.9X12.7CHS", + "kind": "type", + "contents": "section NZ3D 323.9X12.7CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"GroupMultiplierBC" + "trigger": "323.9X6.4CHS", + "details": "NZ 2D Section 323.9X6.4CHS", + "kind": "type", + "contents": "section NZ2D 323.9X6.4CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"GroupNode" + "trigger": "323.9X6.4CHS", + "details": "NZ 3D Section 323.9X6.4CHS", + "kind": "type", + "contents": "section NZ3D 323.9X6.4CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"GroupPenaltyBC" + "trigger": "323.9X9.5CHS", + "details": "NZ 2D Section 323.9X9.5CHS", + "kind": "type", + "contents": "section NZ2D 323.9X9.5CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"GroupSum" + "trigger": "323.9X9.5CHS", + "details": "NZ 3D Section 323.9X9.5CHS", + "kind": "type", + "contents": "section NZ3D 323.9X9.5CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEA100 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEA100", - "kind":"keyword", - "trigger":"HEA100" + "trigger": "350WC197", + "details": "NZ 2D Section 350WC197", + "kind": "type", + "contents": "section NZ2D 350WC197 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEA100 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEA100", - "kind":"keyword", - "trigger":"HEA100" + "trigger": "350WC197", + "details": "NZ 3D Section 350WC197", + "kind": "type", + "contents": "section NZ3D 350WC197 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEA1000 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEA1000", - "kind":"keyword", - "trigger":"HEA1000" + "trigger": "350WC230", + "details": "NZ 2D Section 350WC230", + "kind": "type", + "contents": "section NZ2D 350WC230 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEA1000 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEA1000", - "kind":"keyword", - "trigger":"HEA1000" + "trigger": "350WC230", + "details": "NZ 3D Section 350WC230", + "kind": "type", + "contents": "section NZ3D 350WC230 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEA120 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEA120", - "kind":"keyword", - "trigger":"HEA120" + "trigger": "350WC258", + "details": "NZ 2D Section 350WC258", + "kind": "type", + "contents": "section NZ2D 350WC258 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEA120 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEA120", - "kind":"keyword", - "trigger":"HEA120" + "trigger": "350WC258", + "details": "NZ 3D Section 350WC258", + "kind": "type", + "contents": "section NZ3D 350WC258 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEA140 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEA140", - "kind":"keyword", - "trigger":"HEA140" + "trigger": "350WC280", + "details": "NZ 2D Section 350WC280", + "kind": "type", + "contents": "section NZ2D 350WC280 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEA140 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEA140", - "kind":"keyword", - "trigger":"HEA140" + "trigger": "350WC280", + "details": "NZ 3D Section 350WC280", + "kind": "type", + "contents": "section NZ3D 350WC280 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEA160 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEA160", - "kind":"keyword", - "trigger":"HEA160" + "trigger": "355.6X12.7CHS", + "details": "NZ 2D Section 355.6X12.7CHS", + "kind": "type", + "contents": "section NZ2D 355.6X12.7CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEA160 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEA160", - "kind":"keyword", - "trigger":"HEA160" + "trigger": "355.6X12.7CHS", + "details": "NZ 3D Section 355.6X12.7CHS", + "kind": "type", + "contents": "section NZ3D 355.6X12.7CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEA180 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEA180", - "kind":"keyword", - "trigger":"HEA180" + "trigger": "355.6X6.4CHS", + "details": "NZ 2D Section 355.6X6.4CHS", + "kind": "type", + "contents": "section NZ2D 355.6X6.4CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEA180 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEA180", - "kind":"keyword", - "trigger":"HEA180" + "trigger": "355.6X6.4CHS", + "details": "NZ 3D Section 355.6X6.4CHS", + "kind": "type", + "contents": "section NZ3D 355.6X6.4CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEA200 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEA200", - "kind":"keyword", - "trigger":"HEA200" + "trigger": "355.6X9.5CHS", + "details": "NZ 2D Section 355.6X9.5CHS", + "kind": "type", + "contents": "section NZ2D 355.6X9.5CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEA200 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEA200", - "kind":"keyword", - "trigger":"HEA200" + "trigger": "355.6X9.5CHS", + "details": "NZ 3D Section 355.6X9.5CHS", + "kind": "type", + "contents": "section NZ3D 355.6X9.5CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEA220 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEA220", - "kind":"keyword", - "trigger":"HEA220" + "trigger": "35X1.6SHS", + "details": "NZ 2D Section 35X1.6SHS", + "kind": "type", + "contents": "section NZ2D 35X1.6SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEA220 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEA220", - "kind":"keyword", - "trigger":"HEA220" + "trigger": "35X1.6SHS", + "details": "NZ 3D Section 35X1.6SHS", + "kind": "type", + "contents": "section NZ3D 35X1.6SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEA240 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEA240", - "kind":"keyword", - "trigger":"HEA240" + "trigger": "35X2.0SHS", + "details": "NZ 2D Section 35X2.0SHS", + "kind": "type", + "contents": "section NZ2D 35X2.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEA240 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEA240", - "kind":"keyword", - "trigger":"HEA240" + "trigger": "35X2.0SHS", + "details": "NZ 3D Section 35X2.0SHS", + "kind": "type", + "contents": "section NZ3D 35X2.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEA260 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEA260", - "kind":"keyword", - "trigger":"HEA260" + "trigger": "35X2.5SHS", + "details": "NZ 2D Section 35X2.5SHS", + "kind": "type", + "contents": "section NZ2D 35X2.5SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEA260 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEA260", - "kind":"keyword", - "trigger":"HEA260" + "trigger": "35X2.5SHS", + "details": "NZ 3D Section 35X2.5SHS", + "kind": "type", + "contents": "section NZ3D 35X2.5SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEA280 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEA280", - "kind":"keyword", - "trigger":"HEA280" + "trigger": "35X3.0SHS", + "details": "NZ 2D Section 35X3.0SHS", + "kind": "type", + "contents": "section NZ2D 35X3.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEA280 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEA280", - "kind":"keyword", - "trigger":"HEA280" + "trigger": "35X3.0SHS", + "details": "NZ 3D Section 35X3.0SHS", + "kind": "type", + "contents": "section NZ3D 35X3.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEA300 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEA300", - "kind":"keyword", - "trigger":"HEA300" + "trigger": "360UB44.7", + "details": "NZ 2D Section 360UB44.7", + "kind": "type", + "contents": "section NZ2D 360UB44.7 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEA300 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEA300", - "kind":"keyword", - "trigger":"HEA300" + "trigger": "360UB44.7", + "details": "NZ 3D Section 360UB44.7", + "kind": "type", + "contents": "section NZ3D 360UB44.7 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEA320 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEA320", - "kind":"keyword", - "trigger":"HEA320" + "trigger": "360UB50.7", + "details": "NZ 2D Section 360UB50.7", + "kind": "type", + "contents": "section NZ2D 360UB50.7 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEA320 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEA320", - "kind":"keyword", - "trigger":"HEA320" + "trigger": "360UB50.7", + "details": "NZ 3D Section 360UB50.7", + "kind": "type", + "contents": "section NZ3D 360UB50.7 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEA340 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEA340", - "kind":"keyword", - "trigger":"HEA340" + "trigger": "360UB56.7", + "details": "NZ 2D Section 360UB56.7", + "kind": "type", + "contents": "section NZ2D 360UB56.7 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEA340 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEA340", - "kind":"keyword", - "trigger":"HEA340" + "trigger": "360UB56.7", + "details": "NZ 3D Section 360UB56.7", + "kind": "type", + "contents": "section NZ3D 360UB56.7 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEA360 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEA360", - "kind":"keyword", - "trigger":"HEA360" + "trigger": "400WC144", + "details": "NZ 2D Section 400WC144", + "kind": "type", + "contents": "section NZ2D 400WC144 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEA360 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEA360", - "kind":"keyword", - "trigger":"HEA360" + "trigger": "400WC144", + "details": "NZ 3D Section 400WC144", + "kind": "type", + "contents": "section NZ3D 400WC144 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEA400 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEA400", - "kind":"keyword", - "trigger":"HEA400" + "trigger": "400WC181", + "details": "NZ 2D Section 400WC181", + "kind": "type", + "contents": "section NZ2D 400WC181 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEA400 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEA400", - "kind":"keyword", - "trigger":"HEA400" + "trigger": "400WC181", + "details": "NZ 3D Section 400WC181", + "kind": "type", + "contents": "section NZ3D 400WC181 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEA450 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEA450", - "kind":"keyword", - "trigger":"HEA450" + "trigger": "400WC212", + "details": "NZ 2D Section 400WC212", + "kind": "type", + "contents": "section NZ2D 400WC212 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEA450 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEA450", - "kind":"keyword", - "trigger":"HEA450" + "trigger": "400WC212", + "details": "NZ 3D Section 400WC212", + "kind": "type", + "contents": "section NZ3D 400WC212 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEA500 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEA500", - "kind":"keyword", - "trigger":"HEA500" + "trigger": "400WC270", + "details": "NZ 2D Section 400WC270", + "kind": "type", + "contents": "section NZ2D 400WC270 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEA500 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEA500", - "kind":"keyword", - "trigger":"HEA500" + "trigger": "400WC270", + "details": "NZ 3D Section 400WC270", + "kind": "type", + "contents": "section NZ3D 400WC270 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEA550 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEA550", - "kind":"keyword", - "trigger":"HEA550" + "trigger": "400WC303", + "details": "NZ 2D Section 400WC303", + "kind": "type", + "contents": "section NZ2D 400WC303 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEA550 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEA550", - "kind":"keyword", - "trigger":"HEA550" + "trigger": "400WC303", + "details": "NZ 3D Section 400WC303", + "kind": "type", + "contents": "section NZ3D 400WC303 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEA600 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEA600", - "kind":"keyword", - "trigger":"HEA600" + "trigger": "400WC328", + "details": "NZ 2D Section 400WC328", + "kind": "type", + "contents": "section NZ2D 400WC328 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEA600 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEA600", - "kind":"keyword", - "trigger":"HEA600" + "trigger": "400WC328", + "details": "NZ 3D Section 400WC328", + "kind": "type", + "contents": "section NZ3D 400WC328 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEA650 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEA650", - "kind":"keyword", - "trigger":"HEA650" + "trigger": "400WC361", + "details": "NZ 2D Section 400WC361", + "kind": "type", + "contents": "section NZ2D 400WC361 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEA650 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEA650", - "kind":"keyword", - "trigger":"HEA650" + "trigger": "400WC361", + "details": "NZ 3D Section 400WC361", + "kind": "type", + "contents": "section NZ3D 400WC361 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEA700 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEA700", - "kind":"keyword", - "trigger":"HEA700" + "trigger": "406.4X12.7CHS", + "details": "NZ 2D Section 406.4X12.7CHS", + "kind": "type", + "contents": "section NZ2D 406.4X12.7CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEA700 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEA700", - "kind":"keyword", - "trigger":"HEA700" + "trigger": "406.4X12.7CHS", + "details": "NZ 3D Section 406.4X12.7CHS", + "kind": "type", + "contents": "section NZ3D 406.4X12.7CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEA800 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEA800", - "kind":"keyword", - "trigger":"HEA800" + "trigger": "406.4X6.4CHS", + "details": "NZ 2D Section 406.4X6.4CHS", + "kind": "type", + "contents": "section NZ2D 406.4X6.4CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEA800 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEA800", - "kind":"keyword", - "trigger":"HEA800" + "trigger": "406.4X6.4CHS", + "details": "NZ 3D Section 406.4X6.4CHS", + "kind": "type", + "contents": "section NZ3D 406.4X6.4CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEA900 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEA900", - "kind":"keyword", - "trigger":"HEA900" + "trigger": "406.4X9.5CHS", + "details": "NZ 2D Section 406.4X9.5CHS", + "kind": "type", + "contents": "section NZ2D 406.4X9.5CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEA900 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEA900", - "kind":"keyword", - "trigger":"HEA900" + "trigger": "406.4X9.5CHS", + "details": "NZ 3D Section 406.4X9.5CHS", + "kind": "type", + "contents": "section NZ3D 406.4X9.5CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEB100 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEB100", - "kind":"keyword", - "trigger":"HEB100" + "trigger": "40X1.6SHS", + "details": "NZ 2D Section 40X1.6SHS", + "kind": "type", + "contents": "section NZ2D 40X1.6SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEB100 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEB100", - "kind":"keyword", - "trigger":"HEB100" + "trigger": "40X1.6SHS", + "details": "NZ 3D Section 40X1.6SHS", + "kind": "type", + "contents": "section NZ3D 40X1.6SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEB1000 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEB1000", - "kind":"keyword", - "trigger":"HEB1000" + "trigger": "40X2.0SHS", + "details": "NZ 2D Section 40X2.0SHS", + "kind": "type", + "contents": "section NZ2D 40X2.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEB1000 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEB1000", - "kind":"keyword", - "trigger":"HEB1000" + "trigger": "40X2.0SHS", + "details": "NZ 3D Section 40X2.0SHS", + "kind": "type", + "contents": "section NZ3D 40X2.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEB120 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEB120", - "kind":"keyword", - "trigger":"HEB120" + "trigger": "40X2.5SHS", + "details": "NZ 2D Section 40X2.5SHS", + "kind": "type", + "contents": "section NZ2D 40X2.5SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEB120 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEB120", - "kind":"keyword", - "trigger":"HEB120" + "trigger": "40X2.5SHS", + "details": "NZ 3D Section 40X2.5SHS", + "kind": "type", + "contents": "section NZ3D 40X2.5SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEB140 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEB140", - "kind":"keyword", - "trigger":"HEB140" + "trigger": "40X4.0SHS", + "details": "NZ 2D Section 40X4.0SHS", + "kind": "type", + "contents": "section NZ2D 40X4.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEB140 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEB140", - "kind":"keyword", - "trigger":"HEB140" + "trigger": "40X4.0SHS", + "details": "NZ 3D Section 40X4.0SHS", + "kind": "type", + "contents": "section NZ3D 40X4.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEB160 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEB160", - "kind":"keyword", - "trigger":"HEB160" + "trigger": "410UB53.7", + "details": "NZ 2D Section 410UB53.7", + "kind": "type", + "contents": "section NZ2D 410UB53.7 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEB160 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEB160", - "kind":"keyword", - "trigger":"HEB160" + "trigger": "410UB53.7", + "details": "NZ 3D Section 410UB53.7", + "kind": "type", + "contents": "section NZ3D 410UB53.7 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEB180 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEB180", - "kind":"keyword", - "trigger":"HEB180" + "trigger": "410UB59.7", + "details": "NZ 2D Section 410UB59.7", + "kind": "type", + "contents": "section NZ2D 410UB59.7 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEB180 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEB180", - "kind":"keyword", - "trigger":"HEB180" + "trigger": "410UB59.7", + "details": "NZ 3D Section 410UB59.7", + "kind": "type", + "contents": "section NZ3D 410UB59.7 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEB200 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEB200", - "kind":"keyword", - "trigger":"HEB200" + "trigger": "42.4X3.2CHS", + "details": "NZ 2D Section 42.4X3.2CHS", + "kind": "type", + "contents": "section NZ2D 42.4X3.2CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEB200 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEB200", - "kind":"keyword", - "trigger":"HEB200" + "trigger": "42.4X3.2CHS", + "details": "NZ 3D Section 42.4X3.2CHS", + "kind": "type", + "contents": "section NZ3D 42.4X3.2CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEB220 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEB220", - "kind":"keyword", - "trigger":"HEB220" + "trigger": "42.4X4.0CHS", + "details": "NZ 2D Section 42.4X4.0CHS", + "kind": "type", + "contents": "section NZ2D 42.4X4.0CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEB220 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEB220", - "kind":"keyword", - "trigger":"HEB220" + "trigger": "42.4X4.0CHS", + "details": "NZ 3D Section 42.4X4.0CHS", + "kind": "type", + "contents": "section NZ3D 42.4X4.0CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEB240 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEB240", - "kind":"keyword", - "trigger":"HEB240" + "trigger": "42.4X4.9CHS", + "details": "NZ 2D Section 42.4X4.9CHS", + "kind": "type", + "contents": "section NZ2D 42.4X4.9CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEB240 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEB240", - "kind":"keyword", - "trigger":"HEB240" + "trigger": "42.4X4.9CHS", + "details": "NZ 3D Section 42.4X4.9CHS", + "kind": "type", + "contents": "section NZ3D 42.4X4.9CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEB260 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEB260", - "kind":"keyword", - "trigger":"HEB260" + "trigger": "457.0X12.7CHS", + "details": "NZ 2D Section 457.0X12.7CHS", + "kind": "type", + "contents": "section NZ2D 457.0X12.7CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEB260 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEB260", - "kind":"keyword", - "trigger":"HEB260" + "trigger": "457.0X12.7CHS", + "details": "NZ 3D Section 457.0X12.7CHS", + "kind": "type", + "contents": "section NZ3D 457.0X12.7CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEB280 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEB280", - "kind":"keyword", - "trigger":"HEB280" + "trigger": "457.0X6.4CHS", + "details": "NZ 2D Section 457.0X6.4CHS", + "kind": "type", + "contents": "section NZ2D 457.0X6.4CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEB280 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEB280", - "kind":"keyword", - "trigger":"HEB280" + "trigger": "457.0X6.4CHS", + "details": "NZ 3D Section 457.0X6.4CHS", + "kind": "type", + "contents": "section NZ3D 457.0X6.4CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEB300 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEB300", - "kind":"keyword", - "trigger":"HEB300" + "trigger": "457.0X9.5CHS", + "details": "NZ 2D Section 457.0X9.5CHS", + "kind": "type", + "contents": "section NZ2D 457.0X9.5CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEB300 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEB300", - "kind":"keyword", - "trigger":"HEB300" + "trigger": "457.0X9.5CHS", + "details": "NZ 3D Section 457.0X9.5CHS", + "kind": "type", + "contents": "section NZ3D 457.0X9.5CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEB320 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEB320", - "kind":"keyword", - "trigger":"HEB320" + "trigger": "460UB67.1", + "details": "NZ 2D Section 460UB67.1", + "kind": "type", + "contents": "section NZ2D 460UB67.1 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEB320 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEB320", - "kind":"keyword", - "trigger":"HEB320" + "trigger": "460UB67.1", + "details": "NZ 3D Section 460UB67.1", + "kind": "type", + "contents": "section NZ3D 460UB67.1 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEB340 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEB340", - "kind":"keyword", - "trigger":"HEB340" + "trigger": "460UB74.6", + "details": "NZ 2D Section 460UB74.6", + "kind": "type", + "contents": "section NZ2D 460UB74.6 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEB340 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEB340", - "kind":"keyword", - "trigger":"HEB340" + "trigger": "460UB74.6", + "details": "NZ 3D Section 460UB74.6", + "kind": "type", + "contents": "section NZ3D 460UB74.6 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEB360 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEB360", - "kind":"keyword", - "trigger":"HEB360" + "trigger": "460UB82.1", + "details": "NZ 2D Section 460UB82.1", + "kind": "type", + "contents": "section NZ2D 460UB82.1 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEB360 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEB360", - "kind":"keyword", - "trigger":"HEB360" + "trigger": "460UB82.1", + "details": "NZ 3D Section 460UB82.1", + "kind": "type", + "contents": "section NZ3D 460UB82.1 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEB400 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEB400", - "kind":"keyword", - "trigger":"HEB400" + "trigger": "48.3X3.2CHS", + "details": "NZ 2D Section 48.3X3.2CHS", + "kind": "type", + "contents": "section NZ2D 48.3X3.2CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEB400 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEB400", - "kind":"keyword", - "trigger":"HEB400" + "trigger": "48.3X3.2CHS", + "details": "NZ 3D Section 48.3X3.2CHS", + "kind": "type", + "contents": "section NZ3D 48.3X3.2CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEB450 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEB450", - "kind":"keyword", - "trigger":"HEB450" + "trigger": "48.3X4.0CHS", + "details": "NZ 2D Section 48.3X4.0CHS", + "kind": "type", + "contents": "section NZ2D 48.3X4.0CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEB450 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEB450", - "kind":"keyword", - "trigger":"HEB450" + "trigger": "48.3X4.0CHS", + "details": "NZ 3D Section 48.3X4.0CHS", + "kind": "type", + "contents": "section NZ3D 48.3X4.0CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEB500 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEB500", - "kind":"keyword", - "trigger":"HEB500" + "trigger": "48.3X5.4CHS", + "details": "NZ 2D Section 48.3X5.4CHS", + "kind": "type", + "contents": "section NZ2D 48.3X5.4CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEB500 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEB500", - "kind":"keyword", - "trigger":"HEB500" + "trigger": "48.3X5.4CHS", + "details": "NZ 3D Section 48.3X5.4CHS", + "kind": "type", + "contents": "section NZ3D 48.3X5.4CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEB550 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEB550", - "kind":"keyword", - "trigger":"HEB550" + "trigger": "500WC228", + "details": "NZ 2D Section 500WC228", + "kind": "type", + "contents": "section NZ2D 500WC228 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEB550 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEB550", - "kind":"keyword", - "trigger":"HEB550" + "trigger": "500WC228", + "details": "NZ 3D Section 500WC228", + "kind": "type", + "contents": "section NZ3D 500WC228 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEB600 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEB600", - "kind":"keyword", - "trigger":"HEB600" + "trigger": "500WC267", + "details": "NZ 2D Section 500WC267", + "kind": "type", + "contents": "section NZ2D 500WC267 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEB600 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEB600", - "kind":"keyword", - "trigger":"HEB600" + "trigger": "500WC267", + "details": "NZ 3D Section 500WC267", + "kind": "type", + "contents": "section NZ3D 500WC267 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEB650 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEB650", - "kind":"keyword", - "trigger":"HEB650" + "trigger": "500WC290", + "details": "NZ 2D Section 500WC290", + "kind": "type", + "contents": "section NZ2D 500WC290 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEB650 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEB650", - "kind":"keyword", - "trigger":"HEB650" + "trigger": "500WC290", + "details": "NZ 3D Section 500WC290", + "kind": "type", + "contents": "section NZ3D 500WC290 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEB700 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEB700", - "kind":"keyword", - "trigger":"HEB700" + "trigger": "500WC340", + "details": "NZ 2D Section 500WC340", + "kind": "type", + "contents": "section NZ2D 500WC340 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEB700 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEB700", - "kind":"keyword", - "trigger":"HEB700" + "trigger": "500WC340", + "details": "NZ 3D Section 500WC340", + "kind": "type", + "contents": "section NZ3D 500WC340 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEB800 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEB800", - "kind":"keyword", - "trigger":"HEB800" + "trigger": "500WC383", + "details": "NZ 2D Section 500WC383", + "kind": "type", + "contents": "section NZ2D 500WC383 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEB800 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEB800", - "kind":"keyword", - "trigger":"HEB800" + "trigger": "500WC383", + "details": "NZ 3D Section 500WC383", + "kind": "type", + "contents": "section NZ3D 500WC383 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEB900 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEB900", - "kind":"keyword", - "trigger":"HEB900" + "trigger": "500WC414", + "details": "NZ 2D Section 500WC414", + "kind": "type", + "contents": "section NZ2D 500WC414 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEB900 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEB900", - "kind":"keyword", - "trigger":"HEB900" + "trigger": "500WC414", + "details": "NZ 3D Section 500WC414", + "kind": "type", + "contents": "section NZ3D 500WC414 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEM100 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEM100", - "kind":"keyword", - "trigger":"HEM100" + "trigger": "500WC440", + "details": "NZ 2D Section 500WC440", + "kind": "type", + "contents": "section NZ2D 500WC440 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEM100 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEM100", - "kind":"keyword", - "trigger":"HEM100" + "trigger": "500WC440", + "details": "NZ 3D Section 500WC440", + "kind": "type", + "contents": "section NZ3D 500WC440 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEM1000 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEM1000", - "kind":"keyword", - "trigger":"HEM1000" + "trigger": "508.0X12.7CHS", + "details": "NZ 2D Section 508.0X12.7CHS", + "kind": "type", + "contents": "section NZ2D 508.0X12.7CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEM1000 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEM1000", - "kind":"keyword", - "trigger":"HEM1000" + "trigger": "508.0X12.7CHS", + "details": "NZ 3D Section 508.0X12.7CHS", + "kind": "type", + "contents": "section NZ3D 508.0X12.7CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEM120 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEM120", - "kind":"keyword", - "trigger":"HEM120" + "trigger": "508.0X6.4CHS", + "details": "NZ 2D Section 508.0X6.4CHS", + "kind": "type", + "contents": "section NZ2D 508.0X6.4CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEM120 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEM120", - "kind":"keyword", - "trigger":"HEM120" + "trigger": "508.0X6.4CHS", + "details": "NZ 3D Section 508.0X6.4CHS", + "kind": "type", + "contents": "section NZ3D 508.0X6.4CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEM140 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEM140", - "kind":"keyword", - "trigger":"HEM140" + "trigger": "508.0X9.5CHS", + "details": "NZ 2D Section 508.0X9.5CHS", + "kind": "type", + "contents": "section NZ2D 508.0X9.5CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEM140 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEM140", - "kind":"keyword", - "trigger":"HEM140" + "trigger": "508.0X9.5CHS", + "details": "NZ 3D Section 508.0X9.5CHS", + "kind": "type", + "contents": "section NZ3D 508.0X9.5CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEM160 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEM160", - "kind":"keyword", - "trigger":"HEM160" + "trigger": "50X1.6SHS", + "details": "NZ 2D Section 50X1.6SHS", + "kind": "type", + "contents": "section NZ2D 50X1.6SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEM160 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEM160", - "kind":"keyword", - "trigger":"HEM160" + "trigger": "50X1.6SHS", + "details": "NZ 3D Section 50X1.6SHS", + "kind": "type", + "contents": "section NZ3D 50X1.6SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEM180 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEM180", - "kind":"keyword", - "trigger":"HEM180" + "trigger": "50X2.0SHS", + "details": "NZ 2D Section 50X2.0SHS", + "kind": "type", + "contents": "section NZ2D 50X2.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEM180 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEM180", - "kind":"keyword", - "trigger":"HEM180" + "trigger": "50X2.0SHS", + "details": "NZ 3D Section 50X2.0SHS", + "kind": "type", + "contents": "section NZ3D 50X2.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEM200 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEM200", - "kind":"keyword", - "trigger":"HEM200" + "trigger": "50X2.5SHS", + "details": "NZ 2D Section 50X2.5SHS", + "kind": "type", + "contents": "section NZ2D 50X2.5SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEM200 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEM200", - "kind":"keyword", - "trigger":"HEM200" + "trigger": "50X2.5SHS", + "details": "NZ 3D Section 50X2.5SHS", + "kind": "type", + "contents": "section NZ3D 50X2.5SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEM220 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEM220", - "kind":"keyword", - "trigger":"HEM220" + "trigger": "50X20X1.6RHS", + "details": "NZ 2D Section 50X20X1.6RHS", + "kind": "type", + "contents": "section NZ2D 50X20X1.6RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEM220 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEM220", - "kind":"keyword", - "trigger":"HEM220" + "trigger": "50X20X1.6RHS", + "details": "NZ 3D Section 50X20X1.6RHS", + "kind": "type", + "contents": "section NZ3D 50X20X1.6RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEM240 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEM240", - "kind":"keyword", - "trigger":"HEM240" + "trigger": "50X20X2.0RHS", + "details": "NZ 2D Section 50X20X2.0RHS", + "kind": "type", + "contents": "section NZ2D 50X20X2.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEM240 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEM240", - "kind":"keyword", - "trigger":"HEM240" + "trigger": "50X20X2.0RHS", + "details": "NZ 3D Section 50X20X2.0RHS", + "kind": "type", + "contents": "section NZ3D 50X20X2.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEM260 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEM260", - "kind":"keyword", - "trigger":"HEM260" + "trigger": "50X20X2.5RHS", + "details": "NZ 2D Section 50X20X2.5RHS", + "kind": "type", + "contents": "section NZ2D 50X20X2.5RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEM260 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEM260", - "kind":"keyword", - "trigger":"HEM260" + "trigger": "50X20X2.5RHS", + "details": "NZ 3D Section 50X20X2.5RHS", + "kind": "type", + "contents": "section NZ3D 50X20X2.5RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEM280 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEM280", - "kind":"keyword", - "trigger":"HEM280" + "trigger": "50X20X3.0RHS", + "details": "NZ 2D Section 50X20X3.0RHS", + "kind": "type", + "contents": "section NZ2D 50X20X3.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEM280 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEM280", - "kind":"keyword", - "trigger":"HEM280" + "trigger": "50X20X3.0RHS", + "details": "NZ 3D Section 50X20X3.0RHS", + "kind": "type", + "contents": "section NZ3D 50X20X3.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEM300 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEM300", - "kind":"keyword", - "trigger":"HEM300" + "trigger": "50X25X1.6RHS", + "details": "NZ 2D Section 50X25X1.6RHS", + "kind": "type", + "contents": "section NZ2D 50X25X1.6RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEM300 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEM300", - "kind":"keyword", - "trigger":"HEM300" + "trigger": "50X25X1.6RHS", + "details": "NZ 3D Section 50X25X1.6RHS", + "kind": "type", + "contents": "section NZ3D 50X25X1.6RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEM320 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEM320", - "kind":"keyword", - "trigger":"HEM320" + "trigger": "50X25X2.0RHS", + "details": "NZ 2D Section 50X25X2.0RHS", + "kind": "type", + "contents": "section NZ2D 50X25X2.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEM320 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEM320", - "kind":"keyword", - "trigger":"HEM320" + "trigger": "50X25X2.0RHS", + "details": "NZ 3D Section 50X25X2.0RHS", + "kind": "type", + "contents": "section NZ3D 50X25X2.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEM340 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEM340", - "kind":"keyword", - "trigger":"HEM340" + "trigger": "50X25X2.5RHS", + "details": "NZ 2D Section 50X25X2.5RHS", + "kind": "type", + "contents": "section NZ2D 50X25X2.5RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEM340 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEM340", - "kind":"keyword", - "trigger":"HEM340" + "trigger": "50X25X2.5RHS", + "details": "NZ 3D Section 50X25X2.5RHS", + "kind": "type", + "contents": "section NZ3D 50X25X2.5RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEM360 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEM360", - "kind":"keyword", - "trigger":"HEM360" + "trigger": "50X25X3.0RHS", + "details": "NZ 2D Section 50X25X3.0RHS", + "kind": "type", + "contents": "section NZ2D 50X25X3.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEM360 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEM360", - "kind":"keyword", - "trigger":"HEM360" + "trigger": "50X25X3.0RHS", + "details": "NZ 3D Section 50X25X3.0RHS", + "kind": "type", + "contents": "section NZ3D 50X25X3.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEM400 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEM400", - "kind":"keyword", - "trigger":"HEM400" + "trigger": "50X3.0SHS", + "details": "NZ 2D Section 50X3.0SHS", + "kind": "type", + "contents": "section NZ2D 50X3.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEM400 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEM400", - "kind":"keyword", - "trigger":"HEM400" + "trigger": "50X3.0SHS", + "details": "NZ 3D Section 50X3.0SHS", + "kind": "type", + "contents": "section NZ3D 50X3.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEM450 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEM450", - "kind":"keyword", - "trigger":"HEM450" + "trigger": "50X4.0SHS", + "details": "NZ 2D Section 50X4.0SHS", + "kind": "type", + "contents": "section NZ2D 50X4.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEM450 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEM450", - "kind":"keyword", - "trigger":"HEM450" + "trigger": "50X4.0SHS", + "details": "NZ 3D Section 50X4.0SHS", + "kind": "type", + "contents": "section NZ3D 50X4.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEM500 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEM500", - "kind":"keyword", - "trigger":"HEM500" + "trigger": "530UB82.0", + "details": "NZ 2D Section 530UB82.0", + "kind": "type", + "contents": "section NZ2D 530UB82.0 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEM500 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEM500", - "kind":"keyword", - "trigger":"HEM500" + "trigger": "530UB82.0", + "details": "NZ 3D Section 530UB82.0", + "kind": "type", + "contents": "section NZ3D 530UB82.0 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEM550 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEM550", - "kind":"keyword", - "trigger":"HEM550" + "trigger": "530UB92.4", + "details": "NZ 2D Section 530UB92.4", + "kind": "type", + "contents": "section NZ2D 530UB92.4 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEM550 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEM550", - "kind":"keyword", - "trigger":"HEM550" + "trigger": "530UB92.4", + "details": "NZ 3D Section 530UB92.4", + "kind": "type", + "contents": "section NZ3D 530UB92.4 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEM600 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEM600", - "kind":"keyword", - "trigger":"HEM600" + "trigger": "60.3X3.6CHS", + "details": "NZ 2D Section 60.3X3.6CHS", + "kind": "type", + "contents": "section NZ2D 60.3X3.6CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEM600 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEM600", - "kind":"keyword", - "trigger":"HEM600" + "trigger": "60.3X3.6CHS", + "details": "NZ 3D Section 60.3X3.6CHS", + "kind": "type", + "contents": "section NZ3D 60.3X3.6CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEM650 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEM650", - "kind":"keyword", - "trigger":"HEM650" + "trigger": "60.3X4.5CHS", + "details": "NZ 2D Section 60.3X4.5CHS", + "kind": "type", + "contents": "section NZ2D 60.3X4.5CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEM650 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEM650", - "kind":"keyword", - "trigger":"HEM650" + "trigger": "60.3X4.5CHS", + "details": "NZ 3D Section 60.3X4.5CHS", + "kind": "type", + "contents": "section NZ3D 60.3X4.5CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEM700 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEM700", - "kind":"keyword", - "trigger":"HEM700" + "trigger": "60.3X5.4CHS", + "details": "NZ 2D Section 60.3X5.4CHS", + "kind": "type", + "contents": "section NZ2D 60.3X5.4CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEM700 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEM700", - "kind":"keyword", - "trigger":"HEM700" + "trigger": "60.3X5.4CHS", + "details": "NZ 3D Section 60.3X5.4CHS", + "kind": "type", + "contents": "section NZ3D 60.3X5.4CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEM800 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEM800", - "kind":"keyword", - "trigger":"HEM800" + "trigger": "610.0X12.7CHS", + "details": "NZ 2D Section 610.0X12.7CHS", + "kind": "type", + "contents": "section NZ2D 610.0X12.7CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEM800 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEM800", - "kind":"keyword", - "trigger":"HEM800" + "trigger": "610.0X12.7CHS", + "details": "NZ 3D Section 610.0X12.7CHS", + "kind": "type", + "contents": "section NZ3D 610.0X12.7CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D HEM900 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section HEM900", - "kind":"keyword", - "trigger":"HEM900" + "trigger": "610.0X6.4CHS", + "details": "NZ 2D Section 610.0X6.4CHS", + "kind": "type", + "contents": "section NZ2D 610.0X6.4CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D HEM900 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section HEM900", - "kind":"keyword", - "trigger":"HEM900" + "trigger": "610.0X6.4CHS", + "details": "NZ 3D Section 610.0X6.4CHS", + "kind": "type", + "contents": "section NZ3D 610.0X6.4CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D HP10X42 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section HP10X42", - "kind":"keyword", - "trigger":"HP10X42" + "trigger": "610.0X9.5CHS", + "details": "NZ 2D Section 610.0X9.5CHS", + "kind": "type", + "contents": "section NZ2D 610.0X9.5CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D HP10X42 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section HP10X42", - "kind":"keyword", - "trigger":"HP10X42" + "trigger": "610.0X9.5CHS", + "details": "NZ 3D Section 610.0X9.5CHS", + "kind": "type", + "contents": "section NZ3D 610.0X9.5CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D HP10X57 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section HP10X57", - "kind":"keyword", - "trigger":"HP10X57" + "trigger": "610UB101", + "details": "NZ 2D Section 610UB101", + "kind": "type", + "contents": "section NZ2D 610UB101 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D HP10X57 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section HP10X57", - "kind":"keyword", - "trigger":"HP10X57" + "trigger": "610UB101", + "details": "NZ 3D Section 610UB101", + "kind": "type", + "contents": "section NZ3D 610UB101 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D HP12X53 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section HP12X53", - "kind":"keyword", - "trigger":"HP12X53" + "trigger": "610UB113", + "details": "NZ 2D Section 610UB113", + "kind": "type", + "contents": "section NZ2D 610UB113 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D HP12X53 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section HP12X53", - "kind":"keyword", - "trigger":"HP12X53" + "trigger": "610UB113", + "details": "NZ 3D Section 610UB113", + "kind": "type", + "contents": "section NZ3D 610UB113 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D HP12X63 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section HP12X63", - "kind":"keyword", - "trigger":"HP12X63" + "trigger": "610UB125", + "details": "NZ 2D Section 610UB125", + "kind": "type", + "contents": "section NZ2D 610UB125 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D HP12X63 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section HP12X63", - "kind":"keyword", - "trigger":"HP12X63" + "trigger": "610UB125", + "details": "NZ 3D Section 610UB125", + "kind": "type", + "contents": "section NZ3D 610UB125 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D HP12X74 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section HP12X74", - "kind":"keyword", - "trigger":"HP12X74" + "trigger": "65X2.0SHS", + "details": "NZ 2D Section 65X2.0SHS", + "kind": "type", + "contents": "section NZ2D 65X2.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D HP12X74 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section HP12X74", - "kind":"keyword", - "trigger":"HP12X74" + "trigger": "65X2.0SHS", + "details": "NZ 3D Section 65X2.0SHS", + "kind": "type", + "contents": "section NZ3D 65X2.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D HP12X84 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section HP12X84", - "kind":"keyword", - "trigger":"HP12X84" + "trigger": "65X2.5SHS", + "details": "NZ 2D Section 65X2.5SHS", + "kind": "type", + "contents": "section NZ2D 65X2.5SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D HP12X84 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section HP12X84", - "kind":"keyword", - "trigger":"HP12X84" + "trigger": "65X2.5SHS", + "details": "NZ 3D Section 65X2.5SHS", + "kind": "type", + "contents": "section NZ3D 65X2.5SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D HP12X89 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section HP12X89", - "kind":"keyword", - "trigger":"HP12X89" + "trigger": "65X3.0SHS", + "details": "NZ 2D Section 65X3.0SHS", + "kind": "type", + "contents": "section NZ2D 65X3.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D HP12X89 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section HP12X89", - "kind":"keyword", - "trigger":"HP12X89" + "trigger": "65X3.0SHS", + "details": "NZ 3D Section 65X3.0SHS", + "kind": "type", + "contents": "section NZ3D 65X3.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D HP14X102 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section HP14X102", - "kind":"keyword", - "trigger":"HP14X102" + "trigger": "65X35X2.0RHS", + "details": "NZ 2D Section 65X35X2.0RHS", + "kind": "type", + "contents": "section NZ2D 65X35X2.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D HP14X102 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section HP14X102", - "kind":"keyword", - "trigger":"HP14X102" + "trigger": "65X35X2.0RHS", + "details": "NZ 3D Section 65X35X2.0RHS", + "kind": "type", + "contents": "section NZ3D 65X35X2.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D HP14X117 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section HP14X117", - "kind":"keyword", - "trigger":"HP14X117" + "trigger": "65X35X2.5RHS", + "details": "NZ 2D Section 65X35X2.5RHS", + "kind": "type", + "contents": "section NZ2D 65X35X2.5RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D HP14X117 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section HP14X117", - "kind":"keyword", - "trigger":"HP14X117" + "trigger": "65X35X2.5RHS", + "details": "NZ 3D Section 65X35X2.5RHS", + "kind": "type", + "contents": "section NZ3D 65X35X2.5RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D HP14X73 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section HP14X73", - "kind":"keyword", - "trigger":"HP14X73" + "trigger": "65X35X3.0RHS", + "details": "NZ 2D Section 65X35X3.0RHS", + "kind": "type", + "contents": "section NZ2D 65X35X3.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D HP14X73 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section HP14X73", - "kind":"keyword", - "trigger":"HP14X73" + "trigger": "65X35X3.0RHS", + "details": "NZ 3D Section 65X35X3.0RHS", + "kind": "type", + "contents": "section NZ3D 65X35X3.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D HP14X89 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section HP14X89", - "kind":"keyword", - "trigger":"HP14X89" + "trigger": "700WB115", + "details": "NZ 2D Section 700WB115", + "kind": "type", + "contents": "section NZ2D 700WB115 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D HP14X89 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section HP14X89", - "kind":"keyword", - "trigger":"HP14X89" + "trigger": "700WB115", + "details": "NZ 3D Section 700WB115", + "kind": "type", + "contents": "section NZ3D 700WB115 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D HP16X101 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section HP16X101", - "kind":"keyword", - "trigger":"HP16X101" + "trigger": "700WB130", + "details": "NZ 2D Section 700WB130", + "kind": "type", + "contents": "section NZ2D 700WB130 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D HP16X101 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section HP16X101", - "kind":"keyword", - "trigger":"HP16X101" + "trigger": "700WB130", + "details": "NZ 3D Section 700WB130", + "kind": "type", + "contents": "section NZ3D 700WB130 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D HP16X121 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section HP16X121", - "kind":"keyword", - "trigger":"HP16X121" + "trigger": "700WB150", + "details": "NZ 2D Section 700WB150", + "kind": "type", + "contents": "section NZ2D 700WB150 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D HP16X121 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section HP16X121", - "kind":"keyword", - "trigger":"HP16X121" + "trigger": "700WB150", + "details": "NZ 3D Section 700WB150", + "kind": "type", + "contents": "section NZ3D 700WB150 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D HP16X141 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section HP16X141", - "kind":"keyword", - "trigger":"HP16X141" + "trigger": "700WB173", + "details": "NZ 2D Section 700WB173", + "kind": "type", + "contents": "section NZ2D 700WB173 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D HP16X141 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section HP16X141", - "kind":"keyword", - "trigger":"HP16X141" + "trigger": "700WB173", + "details": "NZ 3D Section 700WB173", + "kind": "type", + "contents": "section NZ3D 700WB173 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D HP16X162 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section HP16X162", - "kind":"keyword", - "trigger":"HP16X162" + "trigger": "75X2.5SHS", + "details": "NZ 2D Section 75X2.5SHS", + "kind": "type", + "contents": "section NZ2D 75X2.5SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D HP16X162 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section HP16X162", - "kind":"keyword", - "trigger":"HP16X162" + "trigger": "75X2.5SHS", + "details": "NZ 3D Section 75X2.5SHS", + "kind": "type", + "contents": "section NZ3D 75X2.5SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D HP16X183 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section HP16X183", - "kind":"keyword", - "trigger":"HP16X183" + "trigger": "75X25X1.6RHS", + "details": "NZ 2D Section 75X25X1.6RHS", + "kind": "type", + "contents": "section NZ2D 75X25X1.6RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D HP16X183 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section HP16X183", - "kind":"keyword", - "trigger":"HP16X183" + "trigger": "75X25X1.6RHS", + "details": "NZ 3D Section 75X25X1.6RHS", + "kind": "type", + "contents": "section NZ3D 75X25X1.6RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D HP16X88 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section HP16X88", - "kind":"keyword", - "trigger":"HP16X88" + "trigger": "75X25X2.0RHS", + "details": "NZ 2D Section 75X25X2.0RHS", + "kind": "type", + "contents": "section NZ2D 75X25X2.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D HP16X88 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section HP16X88", - "kind":"keyword", - "trigger":"HP16X88" + "trigger": "75X25X2.0RHS", + "details": "NZ 3D Section 75X25X2.0RHS", + "kind": "type", + "contents": "section NZ3D 75X25X2.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D HP18X135 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section HP18X135", - "kind":"keyword", - "trigger":"HP18X135" + "trigger": "75X25X2.5RHS", + "details": "NZ 2D Section 75X25X2.5RHS", + "kind": "type", + "contents": "section NZ2D 75X25X2.5RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D HP18X135 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section HP18X135", - "kind":"keyword", - "trigger":"HP18X135" + "trigger": "75X25X2.5RHS", + "details": "NZ 3D Section 75X25X2.5RHS", + "kind": "type", + "contents": "section NZ3D 75X25X2.5RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D HP18X157 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section HP18X157", - "kind":"keyword", - "trigger":"HP18X157" + "trigger": "75X3.0SHS", + "details": "NZ 2D Section 75X3.0SHS", + "kind": "type", + "contents": "section NZ2D 75X3.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D HP18X157 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section HP18X157", - "kind":"keyword", - "trigger":"HP18X157" + "trigger": "75X3.0SHS", + "details": "NZ 3D Section 75X3.0SHS", + "kind": "type", + "contents": "section NZ3D 75X3.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D HP18X181 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section HP18X181", - "kind":"keyword", - "trigger":"HP18X181" + "trigger": "75X3.5SHS", + "details": "NZ 2D Section 75X3.5SHS", + "kind": "type", + "contents": "section NZ2D 75X3.5SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D HP18X181 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section HP18X181", - "kind":"keyword", - "trigger":"HP18X181" + "trigger": "75X3.5SHS", + "details": "NZ 3D Section 75X3.5SHS", + "kind": "type", + "contents": "section NZ3D 75X3.5SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D HP18X204 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section HP18X204", - "kind":"keyword", - "trigger":"HP18X204" + "trigger": "75X4.0SHS", + "details": "NZ 2D Section 75X4.0SHS", + "kind": "type", + "contents": "section NZ2D 75X4.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D HP18X204 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section HP18X204", - "kind":"keyword", - "trigger":"HP18X204" + "trigger": "75X4.0SHS", + "details": "NZ 3D Section 75X4.0SHS", + "kind": "type", + "contents": "section NZ3D 75X4.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D HP8X36 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section HP8X36", - "kind":"keyword", - "trigger":"HP8X36" + "trigger": "75X5.0SHS", + "details": "NZ 2D Section 75X5.0SHS", + "kind": "type", + "contents": "section NZ2D 75X5.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D HP8X36 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section HP8X36", - "kind":"keyword", - "trigger":"HP8X36" + "trigger": "75X5.0SHS", + "details": "NZ 3D Section 75X5.0SHS", + "kind": "type", + "contents": "section NZ3D 75X5.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section HSection2D ${1:(1)} ${2:(2...7)} ${8:(8)} ${9:[9]} ${10:[10]}\n# (1) int, unique tag\n# (2...7) double, section dimensions\n# (8) int, material tag\n# [9] int, number of integration points, default: 6\n# [10] double, eccentricity measured from the centre, default: 0.0", - "details":"2D H-Section", - "kind":"type", - "trigger":"HSection2D" + "trigger": "75X50X2.0RHS", + "details": "NZ 2D Section 75X50X2.0RHS", + "kind": "type", + "contents": "section NZ2D 75X50X2.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"ILU" + "trigger": "75X50X2.0RHS", + "details": "NZ 3D Section 75X50X2.0RHS", + "kind": "type", + "contents": "section NZ3D 75X50X2.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D IPE100 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section IPE100", - "kind":"keyword", - "trigger":"IPE100" + "trigger": "75X50X2.5RHS", + "details": "NZ 2D Section 75X50X2.5RHS", + "kind": "type", + "contents": "section NZ2D 75X50X2.5RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D IPE100 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section IPE100", - "kind":"keyword", - "trigger":"IPE100" + "trigger": "75X50X2.5RHS", + "details": "NZ 3D Section 75X50X2.5RHS", + "kind": "type", + "contents": "section NZ3D 75X50X2.5RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D IPE120 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section IPE120", - "kind":"keyword", - "trigger":"IPE120" + "trigger": "75X50X3.0RHS", + "details": "NZ 2D Section 75X50X3.0RHS", + "kind": "type", + "contents": "section NZ2D 75X50X3.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D IPE120 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section IPE120", - "kind":"keyword", - "trigger":"IPE120" + "trigger": "75X50X3.0RHS", + "details": "NZ 3D Section 75X50X3.0RHS", + "kind": "type", + "contents": "section NZ3D 75X50X3.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D IPE140 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section IPE140", - "kind":"keyword", - "trigger":"IPE140" + "trigger": "75X50X4.0RHS", + "details": "NZ 2D Section 75X50X4.0RHS", + "kind": "type", + "contents": "section NZ2D 75X50X4.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D IPE140 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section IPE140", - "kind":"keyword", - "trigger":"IPE140" + "trigger": "75X50X4.0RHS", + "details": "NZ 3D Section 75X50X4.0RHS", + "kind": "type", + "contents": "section NZ3D 75X50X4.0RHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D IPE160 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section IPE160", - "kind":"keyword", - "trigger":"IPE160" + "trigger": "75X6.0SHS", + "details": "NZ 2D Section 75X6.0SHS", + "kind": "type", + "contents": "section NZ2D 75X6.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D IPE160 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section IPE160", - "kind":"keyword", - "trigger":"IPE160" + "trigger": "75X6.0SHS", + "details": "NZ 3D Section 75X6.0SHS", + "kind": "type", + "contents": "section NZ3D 75X6.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D IPE180 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section IPE180", - "kind":"keyword", - "trigger":"IPE180" + "trigger": "76.1X2.3CHS", + "details": "NZ 2D Section 76.1X2.3CHS", + "kind": "type", + "contents": "section NZ2D 76.1X2.3CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D IPE180 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section IPE180", - "kind":"keyword", - "trigger":"IPE180" + "trigger": "76.1X2.3CHS", + "details": "NZ 3D Section 76.1X2.3CHS", + "kind": "type", + "contents": "section NZ3D 76.1X2.3CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D IPE200 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section IPE200", - "kind":"keyword", - "trigger":"IPE200" + "trigger": "76.1X3.2CHS", + "details": "NZ 2D Section 76.1X3.2CHS", + "kind": "type", + "contents": "section NZ2D 76.1X3.2CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D IPE200 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section IPE200", - "kind":"keyword", - "trigger":"IPE200" + "trigger": "76.1X3.2CHS", + "details": "NZ 3D Section 76.1X3.2CHS", + "kind": "type", + "contents": "section NZ3D 76.1X3.2CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D IPE220 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section IPE220", - "kind":"keyword", - "trigger":"IPE220" + "trigger": "76.1X3.6CHS", + "details": "NZ 2D Section 76.1X3.6CHS", + "kind": "type", + "contents": "section NZ2D 76.1X3.6CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D IPE220 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section IPE220", - "kind":"keyword", - "trigger":"IPE220" + "trigger": "76.1X3.6CHS", + "details": "NZ 3D Section 76.1X3.6CHS", + "kind": "type", + "contents": "section NZ3D 76.1X3.6CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D IPE240 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section IPE240", - "kind":"keyword", - "trigger":"IPE240" + "trigger": "76.1X4.5CHS", + "details": "NZ 2D Section 76.1X4.5CHS", + "kind": "type", + "contents": "section NZ2D 76.1X4.5CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D IPE240 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section IPE240", - "kind":"keyword", - "trigger":"IPE240" + "trigger": "76.1X4.5CHS", + "details": "NZ 3D Section 76.1X4.5CHS", + "kind": "type", + "contents": "section NZ3D 76.1X4.5CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D IPE270 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section IPE270", - "kind":"keyword", - "trigger":"IPE270" + "trigger": "76.1X5.9CHS", + "details": "NZ 2D Section 76.1X5.9CHS", + "kind": "type", + "contents": "section NZ2D 76.1X5.9CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D IPE270 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section IPE270", - "kind":"keyword", - "trigger":"IPE270" + "trigger": "76.1X5.9CHS", + "details": "NZ 3D Section 76.1X5.9CHS", + "kind": "type", + "contents": "section NZ3D 76.1X5.9CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D IPE300 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section IPE300", - "kind":"keyword", - "trigger":"IPE300" + "trigger": "800WB122", + "details": "NZ 2D Section 800WB122", + "kind": "type", + "contents": "section NZ2D 800WB122 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D IPE300 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section IPE300", - "kind":"keyword", - "trigger":"IPE300" + "trigger": "800WB122", + "details": "NZ 3D Section 800WB122", + "kind": "type", + "contents": "section NZ3D 800WB122 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D IPE330 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section IPE330", - "kind":"keyword", - "trigger":"IPE330" + "trigger": "800WB146", + "details": "NZ 2D Section 800WB146", + "kind": "type", + "contents": "section NZ2D 800WB146 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D IPE330 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section IPE330", - "kind":"keyword", - "trigger":"IPE330" + "trigger": "800WB146", + "details": "NZ 3D Section 800WB146", + "kind": "type", + "contents": "section NZ3D 800WB146 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D IPE360 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section IPE360", - "kind":"keyword", - "trigger":"IPE360" + "trigger": "800WB168", + "details": "NZ 2D Section 800WB168", + "kind": "type", + "contents": "section NZ2D 800WB168 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D IPE360 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section IPE360", - "kind":"keyword", - "trigger":"IPE360" + "trigger": "800WB168", + "details": "NZ 3D Section 800WB168", + "kind": "type", + "contents": "section NZ3D 800WB168 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D IPE400 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section IPE400", - "kind":"keyword", - "trigger":"IPE400" + "trigger": "800WB192", + "details": "NZ 2D Section 800WB192", + "kind": "type", + "contents": "section NZ2D 800WB192 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D IPE400 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section IPE400", - "kind":"keyword", - "trigger":"IPE400" + "trigger": "800WB192", + "details": "NZ 3D Section 800WB192", + "kind": "type", + "contents": "section NZ3D 800WB192 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D IPE450 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section IPE450", - "kind":"keyword", - "trigger":"IPE450" + "trigger": "88.9X2.6CHS", + "details": "NZ 2D Section 88.9X2.6CHS", + "kind": "type", + "contents": "section NZ2D 88.9X2.6CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D IPE450 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section IPE450", - "kind":"keyword", - "trigger":"IPE450" + "trigger": "88.9X2.6CHS", + "details": "NZ 3D Section 88.9X2.6CHS", + "kind": "type", + "contents": "section NZ3D 88.9X2.6CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D IPE500 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section IPE500", - "kind":"keyword", - "trigger":"IPE500" + "trigger": "88.9X3.2CHS", + "details": "NZ 2D Section 88.9X3.2CHS", + "kind": "type", + "contents": "section NZ2D 88.9X3.2CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D IPE500 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section IPE500", - "kind":"keyword", - "trigger":"IPE500" + "trigger": "88.9X3.2CHS", + "details": "NZ 3D Section 88.9X3.2CHS", + "kind": "type", + "contents": "section NZ3D 88.9X3.2CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D IPE550 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section IPE550", - "kind":"keyword", - "trigger":"IPE550" + "trigger": "88.9X4.0CHS", + "details": "NZ 2D Section 88.9X4.0CHS", + "kind": "type", + "contents": "section NZ2D 88.9X4.0CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D IPE550 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section IPE550", - "kind":"keyword", - "trigger":"IPE550" + "trigger": "88.9X4.0CHS", + "details": "NZ 3D Section 88.9X4.0CHS", + "kind": "type", + "contents": "section NZ3D 88.9X4.0CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D IPE600 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section IPE600", - "kind":"keyword", - "trigger":"IPE600" + "trigger": "88.9X4.8CHS", + "details": "NZ 2D Section 88.9X4.8CHS", + "kind": "type", + "contents": "section NZ2D 88.9X4.8CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D IPE600 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section IPE600", - "kind":"keyword", - "trigger":"IPE600" + "trigger": "88.9X4.8CHS", + "details": "NZ 3D Section 88.9X4.8CHS", + "kind": "type", + "contents": "section NZ3D 88.9X4.8CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section EU2D IPE80 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"EU 2D Section IPE80", - "kind":"keyword", - "trigger":"IPE80" + "trigger": "88.9X5.0CHS", + "details": "NZ 2D Section 88.9X5.0CHS", + "kind": "type", + "contents": "section NZ2D 88.9X5.0CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section EU3D IPE80 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"EU 3D Section IPE80", - "kind":"keyword", - "trigger":"IPE80" + "trigger": "88.9X5.0CHS", + "details": "NZ 3D Section 88.9X5.0CHS", + "kind": "type", + "contents": "section NZ3D 88.9X5.0CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section ISection2D ${1:(1)} ${2:(2...7)} ${8:(8)} ${9:[9]} ${10:[10]}\n# (1) int, unique tag\n# (2...7) double, section dimensions\n# (8) int, material tag\n# [9] int, number of integration points, default: 6\n# [10] double, eccentricity measured from the centre, default: 0.0", - "details":"2D I-Section", - "kind":"type", - "trigger":"ISection2D" + "trigger": "88.9X5.5CHS", + "details": "NZ 2D Section 88.9X5.5CHS", + "kind": "type", + "contents": "section NZ2D 88.9X5.5CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section ISection3D ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:(7)} ${8:(8)} ${9:[9]} ${10:[10]} ${11:[11]}\n# (1) int, unique section tag\n# (2) double, top flange width\n# (3) double, top flange thickness\n# (4) double, bottom flange width\n# (5) double, bottom flange thickness\n# (6) double, web height\n# (7) double, web thickness\n# (8) int, material tag\n# [9] int, number of integration points, default: 3\n# [10] double, eccentricity along y axis, default: 0.0\n# [11] double, eccentricity along z axis, default: 0.0", - "details":"3D I-Section", - "kind":"type", - "trigger":"ISection3D" + "trigger": "88.9X5.5CHS", + "details": "NZ 3D Section 88.9X5.5CHS", + "kind": "type", + "contents": "section NZ3D 88.9X5.5CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"ImplicitDynamic" + "trigger": "88.9X5.9CHS", + "details": "NZ 2D Section 88.9X5.9CHS", + "kind": "type", + "contents": "section NZ2D 88.9X5.9CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"IsotropicElastic3D" + "trigger": "88.9X5.9CHS", + "details": "NZ 3D Section 88.9X5.9CHS", + "kind": "type", + "contents": "section NZ3D 88.9X5.9CHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Jacobi" + "trigger": "89X3.5SHS", + "details": "NZ 2D Section 89X3.5SHS", + "kind": "type", + "contents": "section NZ2D 89X3.5SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"element Joint ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4...)}\n# (1) int, unique element tag\n# (2) int, node i\n# (3) int, node j\n# (4...) int, material tags", - "details":"Joint Element", - "kind":"type", - "trigger":"Joint" + "trigger": "89X3.5SHS", + "details": "NZ 3D Section 89X3.5SHS", + "kind": "type", + "contents": "section NZ3D 89X3.5SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Kelvin" + "trigger": "89X5.0SHS", + "details": "NZ 2D Section 89X5.0SHS", + "kind": "type", + "contents": "section NZ2D 89X5.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"set system_solver LAPACK", - "details":"Use LAPACK Solver", - "kind":"type", - "trigger":"LAPACK" + "trigger": "89X5.0SHS", + "details": "NZ 3D Section 89X5.0SHS", + "kind": "type", + "contents": "section NZ3D 89X5.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"LBFGS" + "trigger": "89X6.0SHS", + "details": "NZ 2D Section 89X6.0SHS", + "kind": "type", + "contents": "section NZ2D 89X6.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"LJPotential2D" + "trigger": "89X6.0SHS", + "details": "NZ 3D Section 89X6.0SHS", + "kind": "type", + "contents": "section NZ3D 89X6.0SHS ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"material Laminated ${1:(1)} ${2:(2...)}\n# (1) int, unique material tag\n# (2...) int, material tags of 2D models need to be contained", - "details":"Parallel Wrapper For 2D Material Models", - "kind":"type", - "trigger":"Laminated" + "trigger": "900WB175", + "details": "NZ 2D Section 900WB175", + "kind": "type", + "contents": "section NZ2D 900WB175 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"LeeElementalDamping" + "trigger": "900WB175", + "details": "NZ 3D Section 900WB175", + "kind": "type", + "contents": "section NZ3D 900WB175 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"integrator LeeElementalNewmark ${1:(1)} ${2:(2)} ${3:(3)} (${4:(4)} ${5:(5)}...)\n# (1) int, unique integrator tag\n# (2) double, alpha\n# (3) double, beta\n# (4) double, damping ratio \\zeta_p at the peak of each mode\n# (5) double, circular frequency\\omega_p at the peak of each mode", - "details":"", - "kind":"type", - "trigger":"LeeElementalNewmark" + "trigger": "900WB218", + "details": "NZ 2D Section 900WB218", + "kind": "type", + "contents": "section NZ2D 900WB218 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"integrator LeeNewmark ${1:(1)} ${2:(2)} ${3:(3)} (${4:(4)} ${5:(5)}...)\n# (1) int, unique integrator tag\n# (2) double, alpha\n# (3) double, beta\n# (4) double, damping ratio \\zeta_p at the peak of each mode\n# (5) double, circular frequency\\omega_p at the peak of each mode", - "details":"", - "kind":"type", - "trigger":"LeeNewmark" + "trigger": "900WB218", + "details": "NZ 3D Section 900WB218", + "kind": "type", + "contents": "section NZ3D 900WB218 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"integrator LeeNewmarkFull ${1:(1)} ${2:(2)} ${3:(3)} (${4:(4)} ${5:(5)} ${6:(6)} ${7:[7...]}...)\n# (1) int, unique integrator tag\n# (2) double, alpha in Newmark method\n# (3) double, beta in Newmark method\n# (4) string, type identifier\n# (5) double, \\zeta_p\n# (6) double, \\omega_p\n# (7...) double/int, parameters associated with the mode", - "details":"", - "kind":"type", - "trigger":"LeeNewmarkFull" + "trigger": "900WB257", + "details": "NZ 2D Section 900WB257", + "kind": "type", + "contents": "section NZ2D 900WB257 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"LineUDL2D" + "trigger": "900WB257", + "details": "NZ 3D Section 900WB257", + "kind": "type", + "contents": "section NZ3D 900WB257 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"LineUDL3D" + "trigger": "900WB282", + "details": "NZ 2D Section 900WB282", + "kind": "type", + "contents": "section NZ2D 900WB282 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Linear" + "trigger": "900WB282", + "details": "NZ 3D Section 900WB282", + "kind": "type", + "contents": "section NZ3D 900WB282 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"LinearDamage" + "trigger": "HEA100", + "details": "EU 2D Section HEA100", + "kind": "type", + "contents": "section EU2D HEA100 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"LinearViscosity" + "trigger": "HEA100", + "details": "EU 3D Section HEA100", + "kind": "type", + "contents": "section EU3D HEA100 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"converger LogicAND ${1:(1)} ${2:(2)} ${3:(3)}\n# (1) int, unique converger tag\n# (2) int, tag of first converger in logical operation\n# (3) int, tag of second converger in logical operation", - "details":"Apply logical operations to two convergers.", - "kind":"type", - "trigger":"LogicAND" + "trigger": "HEA1000", + "details": "EU 2D Section HEA1000", + "kind": "type", + "contents": "section EU2D HEA1000 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"converger LogicOR ${1:(1)} ${2:(2)} ${3:(3)}\n# (1) int, unique converger tag\n# (2) int, tag of first converger in logical operation\n# (3) int, tag of second converger in logical operation", - "details":"Apply logical operations to two convergers.", - "kind":"type", - "trigger":"LogicOR" + "trigger": "HEA1000", + "details": "EU 3D Section HEA1000", + "kind": "type", + "contents": "section EU3D HEA1000 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"converger LogicXOR ${1:(1)} ${2:(2)} ${3:(3)}\n# (1) int, unique converger tag\n# (2) int, tag of first converger in logical operation\n# (3) int, tag of second converger in logical operation", - "details":"Apply logical operations to two convergers.", - "kind":"type", - "trigger":"LogicXOR" + "trigger": "HEA120", + "details": "EU 2D Section HEA120", + "kind": "type", + "contents": "section EU2D HEA120 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"LumpedScale" + "trigger": "HEA120", + "details": "EU 3D Section HEA120", + "kind": "type", + "contents": "section EU3D HEA120 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"LumpedSimple" + "trigger": "HEA140", + "details": "EU 2D Section HEA140", + "kind": "type", + "contents": "section EU2D HEA140 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US2D M10X7.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section M10X7.5", - "kind":"keyword", - "trigger":"M10X7.5" + "trigger": "HEA140", + "details": "EU 3D Section HEA140", + "kind": "type", + "contents": "section EU3D HEA140 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US3D M10X7.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section M10X7.5", - "kind":"keyword", - "trigger":"M10X7.5" + "trigger": "HEA160", + "details": "EU 2D Section HEA160", + "kind": "type", + "contents": "section EU2D HEA160 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US2D M10X8 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section M10X8", - "kind":"keyword", - "trigger":"M10X8" + "trigger": "HEA160", + "details": "EU 3D Section HEA160", + "kind": "type", + "contents": "section EU3D HEA160 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US3D M10X8 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section M10X8", - "kind":"keyword", - "trigger":"M10X8" + "trigger": "HEA180", + "details": "EU 2D Section HEA180", + "kind": "type", + "contents": "section EU2D HEA180 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US2D M10X9 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section M10X9", - "kind":"keyword", - "trigger":"M10X9" + "trigger": "HEA180", + "details": "EU 3D Section HEA180", + "kind": "type", + "contents": "section EU3D HEA180 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US3D M10X9 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section M10X9", - "kind":"keyword", - "trigger":"M10X9" + "trigger": "HEA200", + "details": "EU 2D Section HEA200", + "kind": "type", + "contents": "section EU2D HEA200 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US2D M12.5X11.6 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section M12.5X11.6", - "kind":"keyword", - "trigger":"M12.5X11.6" + "trigger": "HEA200", + "details": "EU 3D Section HEA200", + "kind": "type", + "contents": "section EU3D HEA200 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US3D M12.5X11.6 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section M12.5X11.6", - "kind":"keyword", - "trigger":"M12.5X11.6" + "trigger": "HEA220", + "details": "EU 2D Section HEA220", + "kind": "type", + "contents": "section EU2D HEA220 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US2D M12.5X12.4 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section M12.5X12.4", - "kind":"keyword", - "trigger":"M12.5X12.4" + "trigger": "HEA220", + "details": "EU 3D Section HEA220", + "kind": "type", + "contents": "section EU3D HEA220 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US3D M12.5X12.4 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section M12.5X12.4", - "kind":"keyword", - "trigger":"M12.5X12.4" + "trigger": "HEA240", + "details": "EU 2D Section HEA240", + "kind": "type", + "contents": "section EU2D HEA240 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US2D M12X10 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section M12X10", - "kind":"keyword", - "trigger":"M12X10" + "trigger": "HEA240", + "details": "EU 3D Section HEA240", + "kind": "type", + "contents": "section EU3D HEA240 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US3D M12X10 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section M12X10", - "kind":"keyword", - "trigger":"M12X10" + "trigger": "HEA260", + "details": "EU 2D Section HEA260", + "kind": "type", + "contents": "section EU2D HEA260 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US2D M12X10.8 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section M12X10.8", - "kind":"keyword", - "trigger":"M12X10.8" + "trigger": "HEA260", + "details": "EU 3D Section HEA260", + "kind": "type", + "contents": "section EU3D HEA260 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US3D M12X10.8 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section M12X10.8", - "kind":"keyword", - "trigger":"M12X10.8" + "trigger": "HEA280", + "details": "EU 2D Section HEA280", + "kind": "type", + "contents": "section EU2D HEA280 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US2D M12X11.8 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section M12X11.8", - "kind":"keyword", - "trigger":"M12X11.8" + "trigger": "HEA280", + "details": "EU 3D Section HEA280", + "kind": "type", + "contents": "section EU3D HEA280 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US3D M12X11.8 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section M12X11.8", - "kind":"keyword", - "trigger":"M12X11.8" + "trigger": "HEA300", + "details": "EU 2D Section HEA300", + "kind": "type", + "contents": "section EU2D HEA300 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US2D M3X2.9 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section M3X2.9", - "kind":"keyword", - "trigger":"M3X2.9" + "trigger": "HEA300", + "details": "EU 3D Section HEA300", + "kind": "type", + "contents": "section EU3D HEA300 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US3D M3X2.9 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section M3X2.9", - "kind":"keyword", - "trigger":"M3X2.9" + "trigger": "HEA320", + "details": "EU 2D Section HEA320", + "kind": "type", + "contents": "section EU2D HEA320 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US2D M4X3.2 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section M4X3.2", - "kind":"keyword", - "trigger":"M4X3.2" + "trigger": "HEA320", + "details": "EU 3D Section HEA320", + "kind": "type", + "contents": "section EU3D HEA320 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US3D M4X3.2 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section M4X3.2", - "kind":"keyword", - "trigger":"M4X3.2" + "trigger": "HEA340", + "details": "EU 2D Section HEA340", + "kind": "type", + "contents": "section EU2D HEA340 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US2D M4X3.45 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section M4X3.45", - "kind":"keyword", - "trigger":"M4X3.45" + "trigger": "HEA340", + "details": "EU 3D Section HEA340", + "kind": "type", + "contents": "section EU3D HEA340 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US3D M4X3.45 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section M4X3.45", - "kind":"keyword", - "trigger":"M4X3.45" + "trigger": "HEA360", + "details": "EU 2D Section HEA360", + "kind": "type", + "contents": "section EU2D HEA360 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US2D M4X4.08 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section M4X4.08", - "kind":"keyword", - "trigger":"M4X4.08" + "trigger": "HEA360", + "details": "EU 3D Section HEA360", + "kind": "type", + "contents": "section EU3D HEA360 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US3D M4X4.08 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section M4X4.08", - "kind":"keyword", - "trigger":"M4X4.08" + "trigger": "HEA400", + "details": "EU 2D Section HEA400", + "kind": "type", + "contents": "section EU2D HEA400 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US2D M4X6 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section M4X6", - "kind":"keyword", - "trigger":"M4X6" + "trigger": "HEA400", + "details": "EU 3D Section HEA400", + "kind": "type", + "contents": "section EU3D HEA400 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US3D M4X6 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section M4X6", - "kind":"keyword", - "trigger":"M4X6" + "trigger": "HEA450", + "details": "EU 2D Section HEA450", + "kind": "type", + "contents": "section EU2D HEA450 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US2D M5X18.9 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section M5X18.9", - "kind":"keyword", - "trigger":"M5X18.9" + "trigger": "HEA450", + "details": "EU 3D Section HEA450", + "kind": "type", + "contents": "section EU3D HEA450 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US3D M5X18.9 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section M5X18.9", - "kind":"keyword", - "trigger":"M5X18.9" + "trigger": "HEA500", + "details": "EU 2D Section HEA500", + "kind": "type", + "contents": "section EU2D HEA500 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US2D M6X3.7 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section M6X3.7", - "kind":"keyword", - "trigger":"M6X3.7" + "trigger": "HEA500", + "details": "EU 3D Section HEA500", + "kind": "type", + "contents": "section EU3D HEA500 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US3D M6X3.7 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section M6X3.7", - "kind":"keyword", - "trigger":"M6X3.7" + "trigger": "HEA550", + "details": "EU 2D Section HEA550", + "kind": "type", + "contents": "section EU2D HEA550 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US2D M6X4.4 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section M6X4.4", - "kind":"keyword", - "trigger":"M6X4.4" + "trigger": "HEA550", + "details": "EU 3D Section HEA550", + "kind": "type", + "contents": "section EU3D HEA550 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US3D M6X4.4 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section M6X4.4", - "kind":"keyword", - "trigger":"M6X4.4" + "trigger": "HEA600", + "details": "EU 2D Section HEA600", + "kind": "type", + "contents": "section EU2D HEA600 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US2D M8X6.2 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section M8X6.2", - "kind":"keyword", - "trigger":"M8X6.2" + "trigger": "HEA600", + "details": "EU 3D Section HEA600", + "kind": "type", + "contents": "section EU3D HEA600 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US3D M8X6.2 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section M8X6.2", - "kind":"keyword", - "trigger":"M8X6.2" + "trigger": "HEA650", + "details": "EU 2D Section HEA650", + "kind": "type", + "contents": "section EU2D HEA650 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US2D M8X6.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section M8X6.5", - "kind":"keyword", - "trigger":"M8X6.5" + "trigger": "HEA650", + "details": "EU 3D Section HEA650", + "kind": "type", + "contents": "section EU3D HEA650 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US3D M8X6.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section M8X6.5", - "kind":"keyword", - "trigger":"M8X6.5" + "trigger": "HEA700", + "details": "EU 2D Section HEA700", + "kind": "type", + "contents": "section EU2D HEA700 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"MPC" + "trigger": "HEA700", + "details": "EU 3D Section HEA700", + "kind": "type", + "contents": "section EU3D HEA700 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"MPDC" + "trigger": "HEA800", + "details": "EU 2D Section HEA800", + "kind": "type", + "contents": "section EU2D HEA800 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"material MPF ${1:(1)} ${2:(2)} ${3:(3)} ${4:[4]} ${5:[5]} ${6:[6]} ${7:[7]} ${8:[8]} ${9:[9]} ${10:[10]} ${11:[11]} ${12:[12]}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# (3) double, initial yield stress\n# [4] double, hardening ratio, default: 0.05\n# [5] double, R0, default: 20.0\n# [6] double, A1, default: 18.5\n# [7] double, A2, default: 0.15\n# [8] double, A3, default: 0.01\n# [9] double, A4, default: 7.0\n# [10] bool string, isotropic hardening switch, default: false\n# [11] bool string, constant radius switch, default: false\n# [12] double, density, default: 0.0", - "details":"Menegotto-Pinto-Filippou Steel Model", - "kind":"type", - "trigger":"MPF" + "trigger": "HEA800", + "details": "EU 3D Section HEA800", + "kind": "type", + "contents": "section EU3D HEA800 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D MT2.5X9.45 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section MT2.5X9.45", - "kind":"keyword", - "trigger":"MT2.5X9.45" + "trigger": "HEA900", + "details": "EU 2D Section HEA900", + "kind": "type", + "contents": "section EU2D HEA900 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D MT2.5X9.45 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section MT2.5X9.45", - "kind":"keyword", - "trigger":"MT2.5X9.45" + "trigger": "HEA900", + "details": "EU 3D Section HEA900", + "kind": "type", + "contents": "section EU3D HEA900 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D MT2X3 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section MT2X3", - "kind":"keyword", - "trigger":"MT2X3" + "trigger": "HEB100", + "details": "EU 2D Section HEB100", + "kind": "type", + "contents": "section EU2D HEB100 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D MT2X3 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section MT2X3", - "kind":"keyword", - "trigger":"MT2X3" + "trigger": "HEB100", + "details": "EU 3D Section HEB100", + "kind": "type", + "contents": "section EU3D HEB100 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D MT3X1.85 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section MT3X1.85", - "kind":"keyword", - "trigger":"MT3X1.85" + "trigger": "HEB1000", + "details": "EU 2D Section HEB1000", + "kind": "type", + "contents": "section EU2D HEB1000 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D MT3X1.85 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section MT3X1.85", - "kind":"keyword", - "trigger":"MT3X1.85" + "trigger": "HEB1000", + "details": "EU 3D Section HEB1000", + "kind": "type", + "contents": "section EU3D HEB1000 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D MT3X2.2 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section MT3X2.2", - "kind":"keyword", - "trigger":"MT3X2.2" + "trigger": "HEB120", + "details": "EU 2D Section HEB120", + "kind": "type", + "contents": "section EU2D HEB120 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D MT3X2.2 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section MT3X2.2", - "kind":"keyword", - "trigger":"MT3X2.2" + "trigger": "HEB120", + "details": "EU 3D Section HEB120", + "kind": "type", + "contents": "section EU3D HEB120 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D MT4X3.1 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section MT4X3.1", - "kind":"keyword", - "trigger":"MT4X3.1" + "trigger": "HEB140", + "details": "EU 2D Section HEB140", + "kind": "type", + "contents": "section EU2D HEB140 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D MT4X3.1 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section MT4X3.1", - "kind":"keyword", - "trigger":"MT4X3.1" + "trigger": "HEB140", + "details": "EU 3D Section HEB140", + "kind": "type", + "contents": "section EU3D HEB140 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D MT4X3.25 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section MT4X3.25", - "kind":"keyword", - "trigger":"MT4X3.25" + "trigger": "HEB160", + "details": "EU 2D Section HEB160", + "kind": "type", + "contents": "section EU2D HEB160 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D MT4X3.25 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section MT4X3.25", - "kind":"keyword", - "trigger":"MT4X3.25" + "trigger": "HEB160", + "details": "EU 3D Section HEB160", + "kind": "type", + "contents": "section EU3D HEB160 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D MT5X3.75 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section MT5X3.75", - "kind":"keyword", - "trigger":"MT5X3.75" + "trigger": "HEB180", + "details": "EU 2D Section HEB180", + "kind": "type", + "contents": "section EU2D HEB180 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D MT5X3.75 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section MT5X3.75", - "kind":"keyword", - "trigger":"MT5X3.75" + "trigger": "HEB180", + "details": "EU 3D Section HEB180", + "kind": "type", + "contents": "section EU3D HEB180 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D MT5X4 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section MT5X4", - "kind":"keyword", - "trigger":"MT5X4" + "trigger": "HEB200", + "details": "EU 2D Section HEB200", + "kind": "type", + "contents": "section EU2D HEB200 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D MT5X4 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section MT5X4", - "kind":"keyword", - "trigger":"MT5X4" + "trigger": "HEB200", + "details": "EU 3D Section HEB200", + "kind": "type", + "contents": "section EU3D HEB200 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D MT5X4.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section MT5X4.5", - "kind":"keyword", - "trigger":"MT5X4.5" + "trigger": "HEB220", + "details": "EU 2D Section HEB220", + "kind": "type", + "contents": "section EU2D HEB220 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D MT5X4.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section MT5X4.5", - "kind":"keyword", - "trigger":"MT5X4.5" + "trigger": "HEB220", + "details": "EU 3D Section HEB220", + "kind": "type", + "contents": "section EU3D HEB220 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D MT6.25X5.8 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section MT6.25X5.8", - "kind":"keyword", - "trigger":"MT6.25X5.8" + "trigger": "HEB240", + "details": "EU 2D Section HEB240", + "kind": "type", + "contents": "section EU2D HEB240 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D MT6.25X5.8 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section MT6.25X5.8", - "kind":"keyword", - "trigger":"MT6.25X5.8" + "trigger": "HEB240", + "details": "EU 3D Section HEB240", + "kind": "type", + "contents": "section EU3D HEB240 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D MT6.25X6.2 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section MT6.25X6.2", - "kind":"keyword", - "trigger":"MT6.25X6.2" + "trigger": "HEB260", + "details": "EU 2D Section HEB260", + "kind": "type", + "contents": "section EU2D HEB260 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D MT6.25X6.2 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section MT6.25X6.2", - "kind":"keyword", - "trigger":"MT6.25X6.2" + "trigger": "HEB260", + "details": "EU 3D Section HEB260", + "kind": "type", + "contents": "section EU3D HEB260 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D MT6X5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section MT6X5", - "kind":"keyword", - "trigger":"MT6X5" + "trigger": "HEB280", + "details": "EU 2D Section HEB280", + "kind": "type", + "contents": "section EU2D HEB280 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D MT6X5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section MT6X5", - "kind":"keyword", - "trigger":"MT6X5" + "trigger": "HEB280", + "details": "EU 3D Section HEB280", + "kind": "type", + "contents": "section EU3D HEB280 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D MT6X5.4 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section MT6X5.4", - "kind":"keyword", - "trigger":"MT6X5.4" + "trigger": "HEB300", + "details": "EU 2D Section HEB300", + "kind": "type", + "contents": "section EU2D HEB300 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D MT6X5.4 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section MT6X5.4", - "kind":"keyword", - "trigger":"MT6X5.4" + "trigger": "HEB300", + "details": "EU 3D Section HEB300", + "kind": "type", + "contents": "section EU3D HEB300 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D MT6X5.9 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section MT6X5.9", - "kind":"keyword", - "trigger":"MT6X5.9" + "trigger": "HEB320", + "details": "EU 2D Section HEB320", + "kind": "type", + "contents": "section EU2D HEB320 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D MT6X5.9 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section MT6X5.9", - "kind":"keyword", - "trigger":"MT6X5.9" + "trigger": "HEB320", + "details": "EU 3D Section HEB320", + "kind": "type", + "contents": "section EU3D HEB320 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"set system_solver MUMPS", - "details":"Use MUMPS Solver", - "kind":"type", - "trigger":"MUMPS" + "trigger": "HEB340", + "details": "EU 2D Section HEB340", + "kind": "type", + "contents": "section EU2D HEB340 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"element MVLEM ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} (${6:(6)} ${7:(7)} ${8:(8)} ${9:(9)} ${10:(10)}...)\n# (1) int, unique element tag\n# (2) int, node i\n# (3) int, node j\n# (4) int, material tag of shear spring\n# (5) double, height of shear spring, ranges from 0 to 1\n# (6) double, fibre width\n# (7) double, fibre thickness\n# (8) double, reinforcement ratio of target fibre\n# (9) int, concrete material ${host:(host)} tag\n# (10) int, steel material tag", - "details":"Multiple Vertical Line Element Model", - "kind":"type", - "trigger":"MVLEM" + "trigger": "HEB340", + "details": "EU 3D Section HEB340", + "kind": "type", + "contents": "section EU3D HEB340 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"Mass ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4...)}\nelement Mass ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4...)}\n# (1) int, unique element tag\n# (2) int, node tag\n# (3) double, magnitude\n# (4...) int, dof tag", - "details":"Point Mass", - "kind":"type", - "trigger":"Mass" + "trigger": "HEB360", + "details": "EU 2D Section HEB360", + "kind": "type", + "contents": "section EU2D HEB360 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Mass2D" + "trigger": "HEB360", + "details": "EU 3D Section HEB360", + "kind": "type", + "contents": "section EU3D HEB360 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Mass3D" + "trigger": "HEB400", + "details": "EU 2D Section HEB400", + "kind": "type", + "contents": "section EU2D HEB400 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"MassPoint2D" + "trigger": "HEB400", + "details": "EU 3D Section HEB400", + "kind": "type", + "contents": "section EU3D HEB400 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"MassPoint3D" + "trigger": "HEB450", + "details": "EU 2D Section HEB450", + "kind": "type", + "contents": "section EU2D HEB450 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"MaxDisplacement" + "trigger": "HEB450", + "details": "EU 3D Section HEB450", + "kind": "type", + "contents": "section EU3D HEB450 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"MaxGap2D" + "trigger": "HEB500", + "details": "EU 2D Section HEB500", + "kind": "type", + "contents": "section EU2D HEB500 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"MaxGap3D" + "trigger": "HEB500", + "details": "EU 3D Section HEB500", + "kind": "type", + "contents": "section EU3D HEB500 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"MaxHistory" + "trigger": "HEB550", + "details": "EU 2D Section HEB550", + "kind": "type", + "contents": "section EU2D HEB550 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"MaxResistance" + "trigger": "HEB550", + "details": "EU 3D Section HEB550", + "kind": "type", + "contents": "section EU3D HEB550 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"MaximumGap2D" + "trigger": "HEB600", + "details": "EU 2D Section HEB600", + "kind": "type", + "contents": "section EU2D HEB600 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"MaximumGap3D" + "trigger": "HEB600", + "details": "EU 3D Section HEB600", + "kind": "type", + "contents": "section EU3D HEB600 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Maxwell" + "trigger": "HEB650", + "details": "EU 2D Section HEB650", + "kind": "type", + "contents": "section EU2D HEB650 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"MinDisplacement" + "trigger": "HEB650", + "details": "EU 3D Section HEB650", + "kind": "type", + "contents": "section EU3D HEB650 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"MinGap2D" + "trigger": "HEB700", + "details": "EU 2D Section HEB700", + "kind": "type", + "contents": "section EU2D HEB700 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"MinGap3D" + "trigger": "HEB700", + "details": "EU 3D Section HEB700", + "kind": "type", + "contents": "section EU3D HEB700 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"MinResistance" + "trigger": "HEB800", + "details": "EU 2D Section HEB800", + "kind": "type", + "contents": "section EU2D HEB800 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"element Mindlin ${1:(1)} ${2:(2...5)} ${6:(6)} ${7:(7)} ${8:[8]}\n# (1) int, unique element tag\n# (2...5) int, node i, j, k, l\n# (6) int, material tag\n# (7) double, thickness\n# [8] int, numer of integration points, default: 5", - "details":"Mindlin Plate Element", - "kind":"type", - "trigger":"Mindlin" + "trigger": "HEB800", + "details": "EU 3D Section HEB800", + "kind": "type", + "contents": "section EU3D HEB800 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"MinimumGap2D" + "trigger": "HEB900", + "details": "EU 2D Section HEB900", + "kind": "type", + "contents": "section EU2D HEB900 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"MinimumGap3D" + "trigger": "HEB900", + "details": "EU 3D Section HEB900", + "kind": "type", + "contents": "section EU3D HEB900 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Model" + "trigger": "HEM100", + "details": "EU 2D Section HEM100", + "kind": "type", + "contents": "section EU2D HEM100 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Modulated" + "trigger": "HEM100", + "details": "EU 3D Section HEM100", + "kind": "type", + "contents": "section EU3D HEM100 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"MooneyRivlin" + "trigger": "HEM1000", + "details": "EU 2D Section HEM1000", + "kind": "type", + "contents": "section EU2D HEM1000 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"material MultilinearElastic1D ${1:(1)} ${2:(2 3...)} ${4:[4]}\n# (1) int, unique material tag\n# (2) double, strain of the data point\n# (3) double, stress of the data point\n# [4] double, density, default: 0.0", - "details":"Uniaxial Multilinear Elastic Material", - "kind":"type", - "trigger":"MultilinearElastic1D" + "trigger": "HEM1000", + "details": "EU 3D Section HEM1000", + "kind": "type", + "contents": "section EU3D HEM1000 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"MultilinearJ2" + "trigger": "HEM120", + "details": "EU 2D Section HEM120", + "kind": "type", + "contents": "section EU2D HEM120 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"MultilinearMises1D" + "trigger": "HEM120", + "details": "EU 3D Section HEM120", + "kind": "type", + "contents": "section EU3D HEM120 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"material MultilinearOO ${1:(1)} ${2:(2)} ${3:(3)} ${4:[4]}\n# (1) int, unique material tag\n# (2) string, file name of tension backbone\n# (3) string, file name of compression backbone\n# [4] double, density, default: 0.0", - "details":"Multilinear Origin Oriented Hysteresis Model", - "kind":"type", - "trigger":"MultilinearOO" + "trigger": "HEM140", + "details": "EU 2D Section HEM140", + "kind": "type", + "contents": "section EU2D HEM140 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"Multilinear Peak Oriented Hysteresis Model", - "details":"material MultilinearPO ${1:(1)} ${2:(2)} ${3:(3)} ${4:[4]}\n# (1) int, unique material tag\n# (2) string, file name of tension backbone\n# (3) string, file name of compression backbone\n# [4] double, density, default: 0.0", - "kind":"type", - "trigger":"MultilinearPO" + "trigger": "HEM140", + "details": "EU 3D Section HEM140", + "kind": "type", + "contents": "section EU3D HEM140 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"MultiplierBC" + "trigger": "HEM160", + "details": "EU 2D Section HEM160", + "kind": "type", + "contents": "section EU2D HEM160 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"material NLE1D01 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5]} ${6:[6]}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# (3) double, turning stress\n# (4) double, hardening ratio\n# [5] double, radius of transition, default: 20\n# [6] double, density, default: 0.0", - "details":"Nonlinear Elastic 1D Type 01", - "kind":"type", - "trigger":"NLE1D01" + "trigger": "HEM160", + "details": "EU 3D Section HEM160", + "kind": "type", + "contents": "section EU3D HEM160 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"NLE3D01" + "trigger": "HEM180", + "details": "EU 2D Section HEM180", + "kind": "type", + "contents": "section EU2D HEM180 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section NM2D1 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)}\n# (1) int, unique section tag\n# (2) double, EA\n# (3) double, EI\n# (4) double, linear density", - "details":"N-M Interaction Elastic Section", - "kind":"type", - "trigger":"NM2D1" + "trigger": "HEM180", + "details": "EU 3D Section HEM180", + "kind": "type", + "contents": "section EU3D HEM180 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section NM2D2 ${1:(1)} ${2:(2...9)} [${10:(10)} ${11:(11)} ${12:(12)}...]\n# (1) int, unique section tag\n# (2) double, EA\n# (3) double, EI\n# (4) double, yielding axial force\n# (5) double, yielding strong axis moment\n# (6) double, d\n# (7) double, isotropic hardening parameter H\n# (8) double, kinematic hardening parameter K\n# (9) double, linear density\n# (10) double, a_i\n# (11) double, b_i\n# (12) double, c_i", - "details":"N-M Interaction Elastic Section", - "kind":"type", - "trigger":"NM2D2" + "trigger": "HEM200", + "details": "EU 2D Section HEM200", + "kind": "type", + "contents": "section EU2D HEM200 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"NM2D3" + "trigger": "HEM200", + "details": "EU 3D Section HEM200", + "kind": "type", + "contents": "section EU3D HEM200 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"NM2D3K" + "trigger": "HEM220", + "details": "EU 2D Section HEM220", + "kind": "type", + "contents": "section EU2D HEM220 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section NM3D1 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)}\n# (1) int, unique section tag\n# (2) double, EA\n# (3) double, EI of strong axis\n# (4) double, EI of weak axis\n# (5) double, linear density", - "details":"N-M Interaction Elastic Section", - "kind":"type", - "trigger":"NM3D1" + "trigger": "HEM220", + "details": "EU 3D Section HEM220", + "kind": "type", + "contents": "section EU3D HEM220 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section NM3D2 ${1:(1)} ${2:(2...11)}\n# (1) int, unique section tag\n# (2) double, EA\n# (3) double, strong axis EI\n# (4) double, weak axis EI\n# (5) double, yielding axial force\n# (6) double, yielding strong axis moment\n# (7) double, yielding weak axis moment\n# (8) double, c\n# (9) double, isotropic hardening parameter H\n# (10) double, kinematic hardening parameter K\n# (11) double, linear density", - "details":"N-M Interaction Elastic Section", - "kind":"type", - "trigger":"NM3D2" + "trigger": "HEM240", + "details": "EU 2D Section HEM240", + "kind": "type", + "contents": "section EU2D HEM240 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"NM3D3" + "trigger": "HEM240", + "details": "EU 3D Section HEM240", + "kind": "type", + "contents": "section EU3D HEM240 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"NM3D3K" + "trigger": "HEM260", + "details": "EU 2D Section HEM260", + "kind": "type", + "contents": "section EU2D HEM260 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"element NMB21 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5]}\n# (1) int, unique element tag\n# (2) int, node i\n# (3) int, node j\n# (4) int, section tag\n# [5] bool string, nonlinear geometry switch, default: false", - "details":"2D Displacement Based Bernoulli Beam with N-M Interaction Sections", - "kind":"type", - "trigger":"NMB21" + "trigger": "HEM260", + "details": "EU 3D Section HEM260", + "kind": "type", + "contents": "section EU3D HEM260 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"element NMB21EH ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5]}\n# (1) int, unique element tag\n# (2) int, node i\n# (3) int, node j\n# (4) int, section tag\n# [5] bool string, nonlinear geometry switch, default: false", - "details":"2D Displacement Based Bernoulli Beam with N-M Interaction Sections and High End Moment Release", - "kind":"type", - "trigger":"NMB21EH" + "trigger": "HEM280", + "details": "EU 2D Section HEM280", + "kind": "type", + "contents": "section EU2D HEM280 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"element NMB21EL ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5]}\n# (1) int, unique element tag\n# (2) int, node i\n# (3) int, node j\n# (4) int, section tag\n# [5] bool string, nonlinear geometry switch, default: false", - "details":"2D Displacement Based Bernoulli Beam with N-M Interaction Sections and Low End Moment Release", - "kind":"type", - "trigger":"NMB21EL" + "trigger": "HEM280", + "details": "EU 3D Section HEM280", + "kind": "type", + "contents": "section EU3D HEM280 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"element NMB31 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:[6]}\n# (1) int, unique element tag\n# (2) int, node i\n# (3) int, node j\n# (4) int, section tag\n# (5) int, orientation tag\n# [6] bool string, nonlinear geometry switch, default: false", - "details":"3D Displacement Based Bernoulli Beam with N-M Interaction Sections", - "kind":"type", - "trigger":"NMB31" + "trigger": "HEM300", + "details": "EU 2D Section HEM300", + "kind": "type", + "contents": "section EU2D HEM300 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"NZ2D" + "trigger": "HEM300", + "details": "EU 3D Section HEM300", + "kind": "type", + "contents": "section EU3D HEM300 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"NZ3D" + "trigger": "HEM320", + "details": "EU 2D Section HEM320", + "kind": "type", + "contents": "section EU2D HEM320 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"NZStrongMotion" + "trigger": "HEM320", + "details": "EU 3D Section HEM320", + "kind": "type", + "contents": "section EU3D HEM320 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"integrator Newmark ${1:(1)} ${2:[2]} ${3:[3]}\n# (1) int, unique tag\n# [2] double, alpha, default: 0.25\n# [3] double, beta, default: 0.5", - "details":"", - "kind":"type", - "trigger":"Newmark" + "trigger": "HEM340", + "details": "EU 2D Section HEM340", + "kind": "type", + "contents": "section EU2D HEM340 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"integrator NonviscousNewmark ${1:(1)} ${2:(2)} ${3:(3)} (${4:(4)} ${5:(5)})...\n# (1) int, unique tag\n# (2) double, alpha, typical: 0.25\n# (3) double, beta, typical: 0.5\n# (4) double, m\n# (5) double, s", - "details":"Newmark Method With Nonviscous Damping", - "kind":"type", - "trigger":"NonviscousNewmark" + "trigger": "HEM340", + "details": "EU 3D Section HEM340", + "kind": "type", + "contents": "section EU3D HEM340 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Node" + "trigger": "HEM360", + "details": "EU 2D Section HEM360", + "kind": "type", + "contents": "section EU2D HEM360 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"NodeFacet" + "trigger": "HEM360", + "details": "EU 3D Section HEM360", + "kind": "type", + "contents": "section EU3D HEM360 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"NodeLine" + "trigger": "HEM400", + "details": "EU 2D Section HEM400", + "kind": "type", + "contents": "section EU2D HEM400 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"integrator OALTS ${1:(1)} ${2:[2]}\n# (1) int, unique integrator tag\n# [2] double, spectral radius, default: 0.5", - "details":"OALTS doi:10.1002/nme.6188", - "kind":"type", - "trigger":"OALTS" + "trigger": "HEM400", + "details": "EU 3D Section HEM400", + "kind": "type", + "contents": "section EU3D HEM400 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Optimisation" + "trigger": "HEM450", + "details": "EU 2D Section HEM450", + "kind": "type", + "contents": "section EU2D HEM450 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"orientation ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)}\n# (1) int, unique orientation tag\n# (2) string, orientation type\n# (3) double, x component of local z axis\n# (4) double, y component of local z axis\n# (5) double, z component of local z axis", - "details":"Section Orientation For 3D Beams", - "kind":"type", - "trigger":"Orientation" + "trigger": "HEM450", + "details": "EU 3D Section HEM450", + "kind": "type", + "contents": "section EU3D HEM450 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"OrthotropicElastic3D" + "trigger": "HEM500", + "details": "EU 2D Section HEM500", + "kind": "type", + "contents": "section EU2D HEM500 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"set system_solver PARDISO", - "details":"Use PARDISO Solver", - "kind":"type", - "trigger":"PARDISO" + "trigger": "HEM500", + "details": "EU 3D Section HEM500", + "kind": "type", + "contents": "section EU3D HEM500 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"PCPE4DC" + "trigger": "HEM550", + "details": "EU 2D Section HEM550", + "kind": "type", + "contents": "section EU2D HEM550 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"element PCPE4DC ${1:(1)} ${2:(2...5)} ${6:(6)} ${7:(7)} ${8:(8)} ${9:(9)} ${10:(10)}\n# (1) int, unique element tag\n# (2...5) int, node i, j, k, l\n# (6) int, solid material tag\n# (7) int, fluid material tag\n# (8) double, alpha\n# (9) double, porosity n\n# (10) double, permeability k", - "details":"Bilinear Quadrilateral With Pore Pressure", - "kind":"type", - "trigger":"PCPE4DC" + "trigger": "HEM550", + "details": "EU 3D Section HEM550", + "kind": "type", + "contents": "section EU3D HEM550 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"PCPE4DI" + "trigger": "HEM600", + "details": "EU 2D Section HEM600", + "kind": "type", + "contents": "section EU2D HEM600 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"PCPE4UC" + "trigger": "HEM600", + "details": "EU 3D Section HEM600", + "kind": "type", + "contents": "section EU3D HEM600 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"PCPE8DC" + "trigger": "HEM650", + "details": "EU 2D Section HEM650", + "kind": "type", + "contents": "section EU2D HEM650 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"PCPE8UC" + "trigger": "HEM650", + "details": "EU 3D Section HEM650", + "kind": "type", + "contents": "section EU3D HEM650 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"element PS ${1:(1)} ${2:(2...5)} ${6:(6)} ${7:[7]}\n# (1) int, unique element tag\n# (2...5) int, node i, j, k, l\n# (6) int, material tag\n# [7] double, element thickness, default: 1.0", - "details":"Pian-Sumihara Quadrilateral Element", - "kind":"type", - "trigger":"PS" + "trigger": "HEM700", + "details": "EU 2D Section HEM700", + "kind": "type", + "contents": "section EU2D HEM700 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"ParabolicCC" + "trigger": "HEM700", + "details": "EU 3D Section HEM700", + "kind": "type", + "contents": "section EU3D HEM700 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Parallel" + "trigger": "HEM800", + "details": "EU 2D Section HEM800", + "kind": "type", + "contents": "section EU2D HEM800 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"ParticleCollision2D" + "trigger": "HEM800", + "details": "EU 3D Section HEM800", + "kind": "type", + "contents": "section EU3D HEM800 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"ParticleCollision3D" + "trigger": "HEM900", + "details": "EU 2D Section HEM900", + "kind": "type", + "contents": "section EU2D HEM900 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"element PatchCube ${1:(1)} -node ${2:(2...)} -knotx ${3:(3...)} -knoty ${4:(4...)} -knotz ${5:(5...)} -material ${6:(6)} ${-thickness (7:[-thickness (7)}]\n# (1) int, unique element ${patch:(patch)} tag\n# (2...) int, node tags of control node polygon\n# (3...) double, knot vector along x axis\n# (4...) double, knot vector along y axis\n# (5...) double, knot vector along z axis\n# (6) int, material tag\n# (7) double, thickness", - "details":"Patch of Hexahedron Elements", - "kind":"type", - "trigger":"PatchCube" + "trigger": "HEM900", + "details": "EU 3D Section HEM900", + "kind": "type", + "contents": "section EU3D HEM900 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"element PatchQuad ${1:(1)} -node ${2:(2...)} -knotx ${3:(3...)} -knoty ${4:(4...)} -material ${5:(5)} ${-thickness (6:[-thickness (6)}]\n# (1) int, unique element ${patch:(patch)} tag\n# (2...) int, node tags of control node polygon\n# (3...) double, knot vector along x axis\n# (4...) double, knot vector along y axis\n# (5) int, material tag\n# (6) double, thickness", - "details":"Patch of Quadrilateral Elements", - "kind":"type", - "trigger":"PatchQuad" + "trigger": "HP10X42", + "details": "US 2D Section HP10X42", + "kind": "type", + "contents": "section US2D HP10X42 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"PenaltyBC" + "trigger": "HP10X42", + "details": "US 3D Section HP10X42", + "kind": "type", + "contents": "section US3D HP10X42 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"PlaneStrain" + "trigger": "HP10X57", + "details": "US 2D Section HP10X57", + "kind": "type", + "contents": "section US2D HP10X57 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"PlaneStress" + "trigger": "HP10X57", + "details": "US 3D Section HP10X57", + "kind": "type", + "contents": "section US3D HP10X57 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"PlaneSymmetric13" + "trigger": "HP12X53", + "details": "US 2D Section HP12X53", + "kind": "type", + "contents": "section US2D HP12X53 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"PlaneSymmetric23" + "trigger": "HP12X53", + "details": "US 3D Section HP12X53", + "kind": "type", + "contents": "section US3D HP12X53 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"material PolyElastic1D ${1:(1)} [${2:(2)}...]\n# (1) int, unique material tag\n# (2) double, polynomial parameters, a_n", - "details":"Polynomial Based Uniaxial Nonlinear Elastic", - "kind":"type", - "trigger":"PolyElastic1D" + "trigger": "HP12X63", + "details": "US 2D Section HP12X63", + "kind": "type", + "contents": "section US2D HP12X63 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"PolyJ2" + "trigger": "HP12X63", + "details": "US 3D Section HP12X63", + "kind": "type", + "contents": "section US3D HP12X63 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"element QE2 ${1:(1)} ${2:(2...5)} ${6:(6)} ${7:[7]}\n# (1) int, unique element tag\n# (2...5) int, node i, j, k, l\n# (6) int, material tag\n# [7] double, element thickness, default: 1.0", - "details":"Mixed Four-Node Quadrilateral Element", - "kind":"type", - "trigger":"QE2" + "trigger": "HP12X74", + "details": "US 2D Section HP12X74", + "kind": "type", + "contents": "section US2D HP12X74 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"R2D2" + "trigger": "HP12X74", + "details": "US 3D Section HP12X74", + "kind": "type", + "contents": "section US3D HP12X74 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"R3D2" + "trigger": "HP12X84", + "details": "US 2D Section HP12X84", + "kind": "type", + "contents": "section US2D HP12X84 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"material RambergOsgood ${1:(1)} ${2:(2)} ${3:(3)} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# (3) double, initial yield stress\n# [4] double, offset alpha, default: 1.0\n# [5] double, n, default: 4.0\n# [6] double, density, default: 0.0", - "details":"Ramberg-Osgood Steel Model", - "kind":"type", - "trigger":"RambergOsgood" + "trigger": "HP12X84", + "details": "US 3D Section HP12X84", + "kind": "type", + "contents": "section US3D HP12X84 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Ramm" + "trigger": "HP12X89", + "details": "US 2D Section HP12X89", + "kind": "type", + "contents": "section US2D HP12X89 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Ramp" + "trigger": "HP12X89", + "details": "US 3D Section HP12X89", + "kind": "type", + "contents": "section US3D HP12X89 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Rayleigh" + "trigger": "HP14X102", + "details": "US 2D Section HP14X102", + "kind": "type", + "contents": "section US2D HP14X102 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"integrator RayleighNewmark ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:(7)}\n# (1) int, unique tag\n# (2) double, alpha (beta in some references) in Newmark method, normally 0.25\n# (3) double, beta (gamma in some references) in Newmark method, normally 0.5\n# (4) double, alpha\n# (5) double, beta\n# (6) double, theta\n# (7) double, eta", - "details":"", - "kind":"type", - "trigger":"RayleighNewmark" + "trigger": "HP14X102", + "details": "US 3D Section HP14X102", + "kind": "type", + "contents": "section US3D HP14X102 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Rebar2D" + "trigger": "HP14X117", + "details": "US 2D Section HP14X117", + "kind": "type", + "contents": "section US2D HP14X117 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Rebar3D" + "trigger": "HP14X117", + "details": "US 3D Section HP14X117", + "kind": "type", + "contents": "section US3D HP14X117 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Recorder" + "trigger": "HP14X73", + "details": "US 2D Section HP14X73", + "kind": "type", + "contents": "section US2D HP14X73 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section Rectangle1D ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)}\n# (1) int, unique section tag\n# (2) double, section width\n# (3) double, section height\n# (4) int, material tag", - "details":"1D Rectangle Section", - "kind":"type", - "trigger":"Rectangle1D" + "trigger": "HP14X73", + "details": "US 3D Section HP14X73", + "kind": "type", + "contents": "section US3D HP14X73 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section Rectangle2D ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) double, section width\n# (3) double, section height\n# (4) int, material tag\n# [5] int, number of integration points, default: 6\n# [6] double, eccentricity measured from the centre, default: 0.0", - "details":"2D Rectangle Section", - "kind":"type", - "trigger":"Rectangle2D" + "trigger": "HP14X89", + "details": "US 2D Section HP14X89", + "kind": "type", + "contents": "section US2D HP14X89 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section Rectangle3D ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5]} ${6:[6]} ${7:[7]}\n# (1) int, unique section tag\n# (2) double, section width\n# (3) double, section height\n# (4) int, material tag\n# [5] int, number of integration points, default: 3\n# [6] double, eccentricity along y axis, default: 0.0\n# [7] double, eccentricity along z axis, default: 0.0", - "details":"3D Rectangle Section", - "kind":"type", - "trigger":"Rectangle3D" + "trigger": "HP14X89", + "details": "US 3D Section HP14X89", + "kind": "type", + "contents": "section US3D HP14X89 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"converger RelDisp ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]}\n# (2) int, unique tag\n# (3) double, tolerance\n# (4) int, maximum iteration\n# [5] bool string, print switch, default: false\n", - "details":"Converger RelDisp", - "kind":"type", - "trigger":"RelDisp" + "trigger": "HP16X101", + "details": "US 2D Section HP16X101", + "kind": "type", + "contents": "section US2D HP16X101 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"converger RelError ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]}\n# (2) int, unique tag\n# (3) double, tolerance\n# (4) int, maximum iteration\n# [5] bool string, print switch, default: false\n", - "details":"Converger RelError", - "kind":"type", - "trigger":"RelError" + "trigger": "HP16X101", + "details": "US 3D Section HP16X101", + "kind": "type", + "contents": "section US3D HP16X101 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"converger RelIncreAcc ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]}\n# (2) int, unique tag\n# (3) double, tolerance\n# (4) int, maximum iteration\n# [5] bool string, print switch, default: false\n", - "details":"Converger RelIncreAcc", - "kind":"type", - "trigger":"RelIncreAcc" + "trigger": "HP16X121", + "details": "US 2D Section HP16X121", + "kind": "type", + "contents": "section US2D HP16X121 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"converger RelIncreDisp ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]}\n# (2) int, unique tag\n# (3) double, tolerance\n# (4) int, maximum iteration\n# [5] bool string, print switch, default: false\n", - "details":"Converger RelIncreDisp", - "kind":"type", - "trigger":"RelIncreDisp" + "trigger": "HP16X121", + "details": "US 3D Section HP16X121", + "kind": "type", + "contents": "section US3D HP16X121 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"converger RelIncreEnergy ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]}\n# (2) int, unique tag\n# (3) double, tolerance\n# (4) int, maximum iteration\n# [5] bool string, print switch, default: false\n", - "details":"Converger RelIncreEnergy", - "kind":"type", - "trigger":"RelIncreEnergy" + "trigger": "HP16X141", + "details": "US 2D Section HP16X141", + "kind": "type", + "contents": "section US2D HP16X141 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"converger RelResidual ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]}\n# (2) int, unique tag\n# (3) double, tolerance\n# (4) int, maximum iteration\n# [5] bool string, print switch, default: false\n", - "details":"Converger RelResidual", - "kind":"type", - "trigger":"RelResidual" + "trigger": "HP16X141", + "details": "US 3D Section HP16X141", + "kind": "type", + "contents": "section US3D HP16X141 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Rotation2D" + "trigger": "HP16X162", + "details": "US 2D Section HP16X162", + "kind": "type", + "contents": "section US2D HP16X162 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Rotation3D" + "trigger": "HP16X162", + "details": "US 3D Section HP16X162", + "kind": "type", + "contents": "section US3D HP16X162 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D S10X25.4 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section S10X25.4", - "kind":"keyword", - "trigger":"S10X25.4" + "trigger": "HP16X183", + "details": "US 2D Section HP16X183", + "kind": "type", + "contents": "section US2D HP16X183 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D S10X25.4 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section S10X25.4", - "kind":"keyword", - "trigger":"S10X25.4" + "trigger": "HP16X183", + "details": "US 3D Section HP16X183", + "kind": "type", + "contents": "section US3D HP16X183 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D S10X35 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section S10X35", - "kind":"keyword", - "trigger":"S10X35" + "trigger": "HP16X88", + "details": "US 2D Section HP16X88", + "kind": "type", + "contents": "section US2D HP16X88 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D S10X35 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section S10X35", - "kind":"keyword", - "trigger":"S10X35" + "trigger": "HP16X88", + "details": "US 3D Section HP16X88", + "kind": "type", + "contents": "section US3D HP16X88 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D S12X31.8 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section S12X31.8", - "kind":"keyword", - "trigger":"S12X31.8" + "trigger": "HP18X135", + "details": "US 2D Section HP18X135", + "kind": "type", + "contents": "section US2D HP18X135 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D S12X31.8 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section S12X31.8", - "kind":"keyword", - "trigger":"S12X31.8" + "trigger": "HP18X135", + "details": "US 3D Section HP18X135", + "kind": "type", + "contents": "section US3D HP18X135 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D S12X35 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section S12X35", - "kind":"keyword", - "trigger":"S12X35" + "trigger": "HP18X157", + "details": "US 2D Section HP18X157", + "kind": "type", + "contents": "section US2D HP18X157 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D S12X35 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section S12X35", - "kind":"keyword", - "trigger":"S12X35" + "trigger": "HP18X157", + "details": "US 3D Section HP18X157", + "kind": "type", + "contents": "section US3D HP18X157 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D S12X40.8 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section S12X40.8", - "kind":"keyword", - "trigger":"S12X40.8" + "trigger": "HP18X181", + "details": "US 2D Section HP18X181", + "kind": "type", + "contents": "section US2D HP18X181 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D S12X40.8 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section S12X40.8", - "kind":"keyword", - "trigger":"S12X40.8" + "trigger": "HP18X181", + "details": "US 3D Section HP18X181", + "kind": "type", + "contents": "section US3D HP18X181 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D S12X50 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section S12X50", - "kind":"keyword", - "trigger":"S12X50" + "trigger": "HP18X204", + "details": "US 2D Section HP18X204", + "kind": "type", + "contents": "section US2D HP18X204 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D S12X50 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section S12X50", - "kind":"keyword", - "trigger":"S12X50" + "trigger": "HP18X204", + "details": "US 3D Section HP18X204", + "kind": "type", + "contents": "section US3D HP18X204 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D S15X42.9 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section S15X42.9", - "kind":"keyword", - "trigger":"S15X42.9" + "trigger": "HP8X36", + "details": "US 2D Section HP8X36", + "kind": "type", + "contents": "section US2D HP8X36 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D S15X42.9 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section S15X42.9", - "kind":"keyword", - "trigger":"S15X42.9" + "trigger": "HP8X36", + "details": "US 3D Section HP8X36", + "kind": "type", + "contents": "section US3D HP8X36 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D S15X50 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section S15X50", - "kind":"keyword", - "trigger":"S15X50" + "trigger": "IPE100", + "details": "EU 2D Section IPE100", + "kind": "type", + "contents": "section EU2D IPE100 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D S15X50 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section S15X50", - "kind":"keyword", - "trigger":"S15X50" + "trigger": "IPE100", + "details": "EU 3D Section IPE100", + "kind": "type", + "contents": "section EU3D IPE100 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D S18X54.7 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section S18X54.7", - "kind":"keyword", - "trigger":"S18X54.7" + "trigger": "IPE120", + "details": "EU 2D Section IPE120", + "kind": "type", + "contents": "section EU2D IPE120 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D S18X54.7 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section S18X54.7", - "kind":"keyword", - "trigger":"S18X54.7" + "trigger": "IPE120", + "details": "EU 3D Section IPE120", + "kind": "type", + "contents": "section EU3D IPE120 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D S18X70 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section S18X70", - "kind":"keyword", - "trigger":"S18X70" + "trigger": "IPE140", + "details": "EU 2D Section IPE140", + "kind": "type", + "contents": "section EU2D IPE140 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D S18X70 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section S18X70", - "kind":"keyword", - "trigger":"S18X70" + "trigger": "IPE140", + "details": "EU 3D Section IPE140", + "kind": "type", + "contents": "section EU3D IPE140 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D S20X66 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section S20X66", - "kind":"keyword", - "trigger":"S20X66" + "trigger": "IPE160", + "details": "EU 2D Section IPE160", + "kind": "type", + "contents": "section EU2D IPE160 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D S20X66 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section S20X66", - "kind":"keyword", - "trigger":"S20X66" + "trigger": "IPE160", + "details": "EU 3D Section IPE160", + "kind": "type", + "contents": "section EU3D IPE160 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D S20X75 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section S20X75", - "kind":"keyword", - "trigger":"S20X75" + "trigger": "IPE180", + "details": "EU 2D Section IPE180", + "kind": "type", + "contents": "section EU2D IPE180 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D S20X75 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section S20X75", - "kind":"keyword", - "trigger":"S20X75" + "trigger": "IPE180", + "details": "EU 3D Section IPE180", + "kind": "type", + "contents": "section EU3D IPE180 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D S20X86 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section S20X86", - "kind":"keyword", - "trigger":"S20X86" + "trigger": "IPE200", + "details": "EU 2D Section IPE200", + "kind": "type", + "contents": "section EU2D IPE200 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D S20X86 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section S20X86", - "kind":"keyword", - "trigger":"S20X86" + "trigger": "IPE200", + "details": "EU 3D Section IPE200", + "kind": "type", + "contents": "section EU3D IPE200 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D S20X96 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section S20X96", - "kind":"keyword", - "trigger":"S20X96" + "trigger": "IPE220", + "details": "EU 2D Section IPE220", + "kind": "type", + "contents": "section EU2D IPE220 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D S20X96 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section S20X96", - "kind":"keyword", - "trigger":"S20X96" + "trigger": "IPE220", + "details": "EU 3D Section IPE220", + "kind": "type", + "contents": "section EU3D IPE220 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D S24X100 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section S24X100", - "kind":"keyword", - "trigger":"S24X100" + "trigger": "IPE240", + "details": "EU 2D Section IPE240", + "kind": "type", + "contents": "section EU2D IPE240 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D S24X100 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section S24X100", - "kind":"keyword", - "trigger":"S24X100" + "trigger": "IPE240", + "details": "EU 3D Section IPE240", + "kind": "type", + "contents": "section EU3D IPE240 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D S24X106 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section S24X106", - "kind":"keyword", - "trigger":"S24X106" + "trigger": "IPE270", + "details": "EU 2D Section IPE270", + "kind": "type", + "contents": "section EU2D IPE270 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D S24X106 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section S24X106", - "kind":"keyword", - "trigger":"S24X106" + "trigger": "IPE270", + "details": "EU 3D Section IPE270", + "kind": "type", + "contents": "section EU3D IPE270 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D S24X121 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section S24X121", - "kind":"keyword", - "trigger":"S24X121" + "trigger": "IPE300", + "details": "EU 2D Section IPE300", + "kind": "type", + "contents": "section EU2D IPE300 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D S24X121 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section S24X121", - "kind":"keyword", - "trigger":"S24X121" + "trigger": "IPE300", + "details": "EU 3D Section IPE300", + "kind": "type", + "contents": "section EU3D IPE300 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D S24X80 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section S24X80", - "kind":"keyword", - "trigger":"S24X80" + "trigger": "IPE330", + "details": "EU 2D Section IPE330", + "kind": "type", + "contents": "section EU2D IPE330 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D S24X80 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section S24X80", - "kind":"keyword", - "trigger":"S24X80" + "trigger": "IPE330", + "details": "EU 3D Section IPE330", + "kind": "type", + "contents": "section EU3D IPE330 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D S24X90 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section S24X90", - "kind":"keyword", - "trigger":"S24X90" + "trigger": "IPE360", + "details": "EU 2D Section IPE360", + "kind": "type", + "contents": "section EU2D IPE360 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D S24X90 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section S24X90", - "kind":"keyword", - "trigger":"S24X90" + "trigger": "IPE360", + "details": "EU 3D Section IPE360", + "kind": "type", + "contents": "section EU3D IPE360 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D S3X5.7 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section S3X5.7", - "kind":"keyword", - "trigger":"S3X5.7" + "trigger": "IPE400", + "details": "EU 2D Section IPE400", + "kind": "type", + "contents": "section EU2D IPE400 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D S3X5.7 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section S3X5.7", - "kind":"keyword", - "trigger":"S3X5.7" + "trigger": "IPE400", + "details": "EU 3D Section IPE400", + "kind": "type", + "contents": "section EU3D IPE400 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D S3X7.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section S3X7.5", - "kind":"keyword", - "trigger":"S3X7.5" + "trigger": "IPE450", + "details": "EU 2D Section IPE450", + "kind": "type", + "contents": "section EU2D IPE450 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D S3X7.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section S3X7.5", - "kind":"keyword", - "trigger":"S3X7.5" + "trigger": "IPE450", + "details": "EU 3D Section IPE450", + "kind": "type", + "contents": "section EU3D IPE450 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"element S4 ${1:(1)} ${2:(2...5)} ${6:(6)} ${7:(7)} ${8:[8]}\n# (1) int, unique element tag\n# (2...5) int, node i, j, k, l\n# (6) int, material tag\n# (7) double, thickness\n# [8] bool, nonlinear geometry switch, default: false", - "details":"Four Node Shell Element", - "kind":"type", - "trigger":"S4" + "trigger": "IPE500", + "details": "EU 2D Section IPE500", + "kind": "type", + "contents": "section EU2D IPE500 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US2D S4X7.7 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section S4X7.7", - "kind":"keyword", - "trigger":"S4X7.7" + "trigger": "IPE500", + "details": "EU 3D Section IPE500", + "kind": "type", + "contents": "section EU3D IPE500 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US3D S4X7.7 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section S4X7.7", - "kind":"keyword", - "trigger":"S4X7.7" + "trigger": "IPE550", + "details": "EU 2D Section IPE550", + "kind": "type", + "contents": "section EU2D IPE550 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US2D S4X9.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section S4X9.5", - "kind":"keyword", - "trigger":"S4X9.5" + "trigger": "IPE550", + "details": "EU 3D Section IPE550", + "kind": "type", + "contents": "section EU3D IPE550 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US3D S4X9.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section S4X9.5", - "kind":"keyword", - "trigger":"S4X9.5" + "trigger": "IPE600", + "details": "EU 2D Section IPE600", + "kind": "type", + "contents": "section EU2D IPE600 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US2D S5X10 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section S5X10", - "kind":"keyword", - "trigger":"S5X10" + "trigger": "IPE600", + "details": "EU 3D Section IPE600", + "kind": "type", + "contents": "section EU3D IPE600 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US3D S5X10 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section S5X10", - "kind":"keyword", - "trigger":"S5X10" + "trigger": "IPE80", + "details": "EU 2D Section IPE80", + "kind": "type", + "contents": "section EU2D IPE80 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US2D S6X12.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section S6X12.5", - "kind":"keyword", - "trigger":"S6X12.5" + "trigger": "IPE80", + "details": "EU 3D Section IPE80", + "kind": "type", + "contents": "section EU3D IPE80 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US3D S6X12.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section S6X12.5", - "kind":"keyword", - "trigger":"S6X12.5" + "trigger": "M10X7.5", + "details": "US 2D Section M10X7.5", + "kind": "type", + "contents": "section US2D M10X7.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US2D S6X17.25 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section S6X17.25", - "kind":"keyword", - "trigger":"S6X17.25" + "trigger": "M10X7.5", + "details": "US 3D Section M10X7.5", + "kind": "type", + "contents": "section US3D M10X7.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US3D S6X17.25 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section S6X17.25", - "kind":"keyword", - "trigger":"S6X17.25" + "trigger": "M10X8", + "details": "US 2D Section M10X8", + "kind": "type", + "contents": "section US2D M10X8 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US2D S8X18.4 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section S8X18.4", - "kind":"keyword", - "trigger":"S8X18.4" + "trigger": "M10X8", + "details": "US 3D Section M10X8", + "kind": "type", + "contents": "section US3D M10X8 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US3D S8X18.4 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section S8X18.4", - "kind":"keyword", - "trigger":"S8X18.4" + "trigger": "M10X9", + "details": "US 2D Section M10X9", + "kind": "type", + "contents": "section US2D M10X9 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US2D S8X23 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section S8X23", - "kind":"keyword", - "trigger":"S8X23" + "trigger": "M10X9", + "details": "US 3D Section M10X9", + "kind": "type", + "contents": "section US3D M10X9 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US3D S8X23 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section S8X23", - "kind":"keyword", - "trigger":"S8X23" + "trigger": "M12.5X11.6", + "details": "US 2D Section M12.5X11.6", + "kind": "type", + "contents": "section US2D M12.5X11.6 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"element SGCMQI ${1:(1)} ${2:(2...5)} ${6:(6)} ${7:[7]} ${8:[8]}\nelement SGCMQL ${1:(1)} ${2:(2...5)} ${6:(6)} ${7:[7]} ${8:[8]}\nelement SGCMQG ${1:(1)} ${2:(2...5)} ${6:(6)} ${7:[7]} ${8:[8]}\n# (1) int, unique element tag\n# (2...5) int, node i, j, k, l\n# (6) int, material tag\n# [7] double, element thickness, default: 1.0", - "details":"Generalized Conforming Mixed Quadrilateral With Drilling DoFs", - "kind":"type", - "trigger":"SGCMQ" + "trigger": "M12.5X11.6", + "details": "US 3D Section M12.5X11.6", + "kind": "type", + "contents": "section US3D M12.5X11.6 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"SGCMQG" + "trigger": "M12.5X12.4", + "details": "US 2D Section M12.5X12.4", + "kind": "type", + "contents": "section US2D M12.5X12.4 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"SGCMQI" + "trigger": "M12.5X12.4", + "details": "US 3D Section M12.5X12.4", + "kind": "type", + "contents": "section US3D M12.5X12.4 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"SGCMQL" + "trigger": "M12X10", + "details": "US 2D Section M12X10", + "kind": "type", + "contents": "section US2D M12X10 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"element SGCMS ${1:(1)} ${2:(2...5)} ${6:(6)} ${7:(7)} ${8:[8]}\n# (1) int, unique element tag\n# (2...5) int, node i, j, k, l\n# (6) int, material tag\n# (7) double, thickness\n# [8] bool, nonlinear geometry switch, default: false", - "details":"Simplified Generalized Conforming Mixed Shell Element", - "kind":"type", - "trigger":"SGCMS" + "trigger": "M12X10", + "details": "US 3D Section M12X10", + "kind": "type", + "contents": "section US3D M12X10 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D ST1.5X2.85 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section ST1.5X2.85", - "kind":"keyword", - "trigger":"ST1.5X2.85" + "trigger": "M12X10.8", + "details": "US 2D Section M12X10.8", + "kind": "type", + "contents": "section US2D M12X10.8 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D ST1.5X2.85 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section ST1.5X2.85", - "kind":"keyword", - "trigger":"ST1.5X2.85" + "trigger": "M12X10.8", + "details": "US 3D Section M12X10.8", + "kind": "type", + "contents": "section US3D M12X10.8 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D ST1.5X3.75 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section ST1.5X3.75", - "kind":"keyword", - "trigger":"ST1.5X3.75" + "trigger": "M12X11.8", + "details": "US 2D Section M12X11.8", + "kind": "type", + "contents": "section US2D M12X11.8 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D ST1.5X3.75 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section ST1.5X3.75", - "kind":"keyword", - "trigger":"ST1.5X3.75" + "trigger": "M12X11.8", + "details": "US 3D Section M12X11.8", + "kind": "type", + "contents": "section US3D M12X11.8 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D ST10X33 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section ST10X33", - "kind":"keyword", - "trigger":"ST10X33" + "trigger": "M3X2.9", + "details": "US 2D Section M3X2.9", + "kind": "type", + "contents": "section US2D M3X2.9 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D ST10X33 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section ST10X33", - "kind":"keyword", - "trigger":"ST10X33" + "trigger": "M3X2.9", + "details": "US 3D Section M3X2.9", + "kind": "type", + "contents": "section US3D M3X2.9 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D ST10X37.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section ST10X37.5", - "kind":"keyword", - "trigger":"ST10X37.5" + "trigger": "M4X3.2", + "details": "US 2D Section M4X3.2", + "kind": "type", + "contents": "section US2D M4X3.2 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D ST10X37.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section ST10X37.5", - "kind":"keyword", - "trigger":"ST10X37.5" + "trigger": "M4X3.2", + "details": "US 3D Section M4X3.2", + "kind": "type", + "contents": "section US3D M4X3.2 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D ST10X43 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section ST10X43", - "kind":"keyword", - "trigger":"ST10X43" + "trigger": "M4X3.45", + "details": "US 2D Section M4X3.45", + "kind": "type", + "contents": "section US2D M4X3.45 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D ST10X43 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section ST10X43", - "kind":"keyword", - "trigger":"ST10X43" + "trigger": "M4X3.45", + "details": "US 3D Section M4X3.45", + "kind": "type", + "contents": "section US3D M4X3.45 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D ST10X48 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section ST10X48", - "kind":"keyword", - "trigger":"ST10X48" + "trigger": "M4X4.08", + "details": "US 2D Section M4X4.08", + "kind": "type", + "contents": "section US2D M4X4.08 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D ST10X48 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section ST10X48", - "kind":"keyword", - "trigger":"ST10X48" + "trigger": "M4X4.08", + "details": "US 3D Section M4X4.08", + "kind": "type", + "contents": "section US3D M4X4.08 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D ST12X40 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section ST12X40", - "kind":"keyword", - "trigger":"ST12X40" + "trigger": "M4X6", + "details": "US 2D Section M4X6", + "kind": "type", + "contents": "section US2D M4X6 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D ST12X40 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section ST12X40", - "kind":"keyword", - "trigger":"ST12X40" + "trigger": "M4X6", + "details": "US 3D Section M4X6", + "kind": "type", + "contents": "section US3D M4X6 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D ST12X45 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section ST12X45", - "kind":"keyword", - "trigger":"ST12X45" + "trigger": "M5X18.9", + "details": "US 2D Section M5X18.9", + "kind": "type", + "contents": "section US2D M5X18.9 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D ST12X45 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section ST12X45", - "kind":"keyword", - "trigger":"ST12X45" + "trigger": "M5X18.9", + "details": "US 3D Section M5X18.9", + "kind": "type", + "contents": "section US3D M5X18.9 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D ST12X50 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section ST12X50", - "kind":"keyword", - "trigger":"ST12X50" + "trigger": "M6X3.7", + "details": "US 2D Section M6X3.7", + "kind": "type", + "contents": "section US2D M6X3.7 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D ST12X50 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section ST12X50", - "kind":"keyword", - "trigger":"ST12X50" + "trigger": "M6X3.7", + "details": "US 3D Section M6X3.7", + "kind": "type", + "contents": "section US3D M6X3.7 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D ST12X53 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section ST12X53", - "kind":"keyword", - "trigger":"ST12X53" + "trigger": "M6X4.4", + "details": "US 2D Section M6X4.4", + "kind": "type", + "contents": "section US2D M6X4.4 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D ST12X53 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section ST12X53", - "kind":"keyword", - "trigger":"ST12X53" + "trigger": "M6X4.4", + "details": "US 3D Section M6X4.4", + "kind": "type", + "contents": "section US3D M6X4.4 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D ST12X60.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section ST12X60.5", - "kind":"keyword", - "trigger":"ST12X60.5" + "trigger": "M8X6.2", + "details": "US 2D Section M8X6.2", + "kind": "type", + "contents": "section US2D M8X6.2 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D ST12X60.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section ST12X60.5", - "kind":"keyword", - "trigger":"ST12X60.5" + "trigger": "M8X6.2", + "details": "US 3D Section M8X6.2", + "kind": "type", + "contents": "section US3D M8X6.2 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D ST2.5X5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section ST2.5X5", - "kind":"keyword", - "trigger":"ST2.5X5" + "trigger": "M8X6.5", + "details": "US 2D Section M8X6.5", + "kind": "type", + "contents": "section US2D M8X6.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D ST2.5X5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section ST2.5X5", - "kind":"keyword", - "trigger":"ST2.5X5" + "trigger": "M8X6.5", + "details": "US 3D Section M8X6.5", + "kind": "type", + "contents": "section US3D M8X6.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D ST2X3.85 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section ST2X3.85", - "kind":"keyword", - "trigger":"ST2X3.85" + "trigger": "MT2.5X9.45", + "details": "US 2D Section MT2.5X9.45", + "kind": "type", + "contents": "section US2D MT2.5X9.45 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D ST2X3.85 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section ST2X3.85", - "kind":"keyword", - "trigger":"ST2X3.85" + "trigger": "MT2.5X9.45", + "details": "US 3D Section MT2.5X9.45", + "kind": "type", + "contents": "section US3D MT2.5X9.45 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D ST2X4.75 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section ST2X4.75", - "kind":"keyword", - "trigger":"ST2X4.75" + "trigger": "MT2X3", + "details": "US 2D Section MT2X3", + "kind": "type", + "contents": "section US2D MT2X3 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D ST2X4.75 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section ST2X4.75", - "kind":"keyword", - "trigger":"ST2X4.75" + "trigger": "MT2X3", + "details": "US 3D Section MT2X3", + "kind": "type", + "contents": "section US3D MT2X3 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D ST3X6.25 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section ST3X6.25", - "kind":"keyword", - "trigger":"ST3X6.25" + "trigger": "MT3X1.85", + "details": "US 2D Section MT3X1.85", + "kind": "type", + "contents": "section US2D MT3X1.85 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D ST3X6.25 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section ST3X6.25", - "kind":"keyword", - "trigger":"ST3X6.25" + "trigger": "MT3X1.85", + "details": "US 3D Section MT3X1.85", + "kind": "type", + "contents": "section US3D MT3X1.85 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D ST3X8.6 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section ST3X8.6", - "kind":"keyword", - "trigger":"ST3X8.6" + "trigger": "MT3X2.2", + "details": "US 2D Section MT3X2.2", + "kind": "type", + "contents": "section US2D MT3X2.2 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D ST3X8.6 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section ST3X8.6", - "kind":"keyword", - "trigger":"ST3X8.6" + "trigger": "MT3X2.2", + "details": "US 3D Section MT3X2.2", + "kind": "type", + "contents": "section US3D MT3X2.2 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D ST4X11.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section ST4X11.5", - "kind":"keyword", - "trigger":"ST4X11.5" + "trigger": "MT4X3.1", + "details": "US 2D Section MT4X3.1", + "kind": "type", + "contents": "section US2D MT4X3.1 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D ST4X11.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section ST4X11.5", - "kind":"keyword", - "trigger":"ST4X11.5" + "trigger": "MT4X3.1", + "details": "US 3D Section MT4X3.1", + "kind": "type", + "contents": "section US3D MT4X3.1 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D ST4X9.2 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section ST4X9.2", - "kind":"keyword", - "trigger":"ST4X9.2" + "trigger": "MT4X3.25", + "details": "US 2D Section MT4X3.25", + "kind": "type", + "contents": "section US2D MT4X3.25 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D ST4X9.2 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section ST4X9.2", - "kind":"keyword", - "trigger":"ST4X9.2" + "trigger": "MT4X3.25", + "details": "US 3D Section MT4X3.25", + "kind": "type", + "contents": "section US3D MT4X3.25 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D ST5X12.7 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section ST5X12.7", - "kind":"keyword", - "trigger":"ST5X12.7" + "trigger": "MT5X3.75", + "details": "US 2D Section MT5X3.75", + "kind": "type", + "contents": "section US2D MT5X3.75 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D ST5X12.7 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section ST5X12.7", - "kind":"keyword", - "trigger":"ST5X12.7" + "trigger": "MT5X3.75", + "details": "US 3D Section MT5X3.75", + "kind": "type", + "contents": "section US3D MT5X3.75 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D ST5X17.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section ST5X17.5", - "kind":"keyword", - "trigger":"ST5X17.5" + "trigger": "MT5X4", + "details": "US 2D Section MT5X4", + "kind": "type", + "contents": "section US2D MT5X4 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D ST5X17.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section ST5X17.5", - "kind":"keyword", - "trigger":"ST5X17.5" + "trigger": "MT5X4", + "details": "US 3D Section MT5X4", + "kind": "type", + "contents": "section US3D MT5X4 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D ST6X15.9 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section ST6X15.9", - "kind":"keyword", - "trigger":"ST6X15.9" + "trigger": "MT5X4.5", + "details": "US 2D Section MT5X4.5", + "kind": "type", + "contents": "section US2D MT5X4.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D ST6X15.9 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section ST6X15.9", - "kind":"keyword", - "trigger":"ST6X15.9" + "trigger": "MT5X4.5", + "details": "US 3D Section MT5X4.5", + "kind": "type", + "contents": "section US3D MT5X4.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D ST6X17.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section ST6X17.5", - "kind":"keyword", - "trigger":"ST6X17.5" + "trigger": "MT6.25X5.8", + "details": "US 2D Section MT6.25X5.8", + "kind": "type", + "contents": "section US2D MT6.25X5.8 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D ST6X17.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section ST6X17.5", - "kind":"keyword", - "trigger":"ST6X17.5" + "trigger": "MT6.25X5.8", + "details": "US 3D Section MT6.25X5.8", + "kind": "type", + "contents": "section US3D MT6.25X5.8 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D ST6X20.4 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section ST6X20.4", - "kind":"keyword", - "trigger":"ST6X20.4" + "trigger": "MT6.25X6.2", + "details": "US 2D Section MT6.25X6.2", + "kind": "type", + "contents": "section US2D MT6.25X6.2 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D ST6X20.4 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section ST6X20.4", - "kind":"keyword", - "trigger":"ST6X20.4" + "trigger": "MT6.25X6.2", + "details": "US 3D Section MT6.25X6.2", + "kind": "type", + "contents": "section US3D MT6.25X6.2 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D ST6X25 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section ST6X25", - "kind":"keyword", - "trigger":"ST6X25" + "trigger": "MT6X5", + "details": "US 2D Section MT6X5", + "kind": "type", + "contents": "section US2D MT6X5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D ST6X25 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section ST6X25", - "kind":"keyword", - "trigger":"ST6X25" + "trigger": "MT6X5", + "details": "US 3D Section MT6X5", + "kind": "type", + "contents": "section US3D MT6X5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D ST7.5X21.45 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section ST7.5X21.45", - "kind":"keyword", - "trigger":"ST7.5X21.45" + "trigger": "MT6X5.4", + "details": "US 2D Section MT6X5.4", + "kind": "type", + "contents": "section US2D MT6X5.4 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D ST7.5X21.45 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section ST7.5X21.45", - "kind":"keyword", - "trigger":"ST7.5X21.45" + "trigger": "MT6X5.4", + "details": "US 3D Section MT6X5.4", + "kind": "type", + "contents": "section US3D MT6X5.4 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D ST7.5X25 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section ST7.5X25", - "kind":"keyword", - "trigger":"ST7.5X25" + "trigger": "MT6X5.9", + "details": "US 2D Section MT6X5.9", + "kind": "type", + "contents": "section US2D MT6X5.9 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D ST7.5X25 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section ST7.5X25", - "kind":"keyword", - "trigger":"ST7.5X25" + "trigger": "MT6X5.9", + "details": "US 3D Section MT6X5.9", + "kind": "type", + "contents": "section US3D MT6X5.9 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D ST9X27.35 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section ST9X27.35", - "kind":"keyword", - "trigger":"ST9X27.35" + "trigger": "S10X25.4", + "details": "US 2D Section S10X25.4", + "kind": "type", + "contents": "section US2D S10X25.4 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D ST9X27.35 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section ST9X27.35", - "kind":"keyword", - "trigger":"ST9X27.35" + "trigger": "S10X25.4", + "details": "US 3D Section S10X25.4", + "kind": "type", + "contents": "section US3D S10X25.4 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D ST9X35 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section ST9X35", - "kind":"keyword", - "trigger":"ST9X35" + "trigger": "S10X35", + "details": "US 2D Section S10X35", + "kind": "type", + "contents": "section US2D S10X35 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D ST9X35 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section ST9X35", - "kind":"keyword", - "trigger":"ST9X35" + "trigger": "S10X35", + "details": "US 3D Section S10X35", + "kind": "type", + "contents": "section US3D S10X35 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Scale" + "trigger": "S12X31.8", + "details": "US 2D Section S12X31.8", + "kind": "type", + "contents": "section US2D S12X31.8 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Sequential" + "trigger": "S12X31.8", + "details": "US 3D Section S12X31.8", + "kind": "type", + "contents": "section US3D S12X31.8 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"SimpleSand" + "trigger": "S12X35", + "details": "US 2D Section S12X35", + "kind": "type", + "contents": "section US2D S12X35 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Sine" + "trigger": "S12X35", + "details": "US 3D Section S12X35", + "kind": "type", + "contents": "section US3D S12X35 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"element SingleSection2D ${1:(1)} ${2:(2)} ${3:(3)}\n# (1) int, unique tag\n# (2) int, node tag\n# (3) int, section tag", - "details":"2D Single Section", - "kind":"type", - "trigger":"SingleSection2D" + "trigger": "S12X40.8", + "details": "US 2D Section S12X40.8", + "kind": "type", + "contents": "section US2D S12X40.8 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"element SingleSection3D ${1:(1)} ${2:(2)} ${3:(3)}\n# (1) int, unique tag\n# (2) int, node tag\n# (3) int, section tag", - "details":"3D Single Section", - "kind":"type", - "trigger":"SingleSection3D" + "trigger": "S12X40.8", + "details": "US 3D Section S12X40.8", + "kind": "type", + "contents": "section US3D S12X40.8 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"material Sinh1D ${1:(1)} ${2:(2)} ${3:[3]}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# [3] double, density, default: 0.0", - "details":"Uniaxial Nonlinear Elastic Material Using Sinh", - "kind":"type", - "trigger":"Sinh1D" + "trigger": "S12X50", + "details": "US 2D Section S12X50", + "kind": "type", + "contents": "section US2D S12X50 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Sleeve2D" + "trigger": "S12X50", + "details": "US 3D Section S12X50", + "kind": "type", + "contents": "section US3D S12X50 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Sleeve3D" + "trigger": "S15X42.9", + "details": "US 2D Section S15X42.9", + "kind": "type", + "contents": "section US2D S15X42.9 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"material SlipLock ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5]} ${6:[6]}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# (3) double, initial yield strain\n# (4) double, hardening ratio\n# [5] double, radius, default: 20.0\n# [6] double, density, default: 0.0", - "details":"Slip-Lock Material", - "kind":"type", - "trigger":"SlipLock" + "trigger": "S15X42.9", + "details": "US 3D Section S15X42.9", + "kind": "type", + "contents": "section US3D S15X42.9 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"set system_solver Spike", - "details":"Use Spike Solver", - "kind":"type", - "trigger":"Spike" + "trigger": "S15X50", + "details": "US 2D Section S15X50", + "kind": "type", + "contents": "section US2D S15X50 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"element Spring01 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)}\n# (1) int, unique tag\n# (2) int, node i\n# (3) int, node j\n# (4) int, tag of associated material", - "details":"", - "kind":"type", - "trigger":"Spring01" + "trigger": "S15X50", + "details": "US 3D Section S15X50", + "kind": "type", + "contents": "section US3D S15X50 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"element Spring02 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)}\n# (1) int, unique tag\n# (2) int, node i\n# (3) int, node j\n# (4) int, tag of associated material", - "details":"", - "kind":"type", - "trigger":"Spring02" + "trigger": "S18X54.7", + "details": "US 2D Section S18X54.7", + "kind": "type", + "contents": "section US2D S18X54.7 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Stacked" + "trigger": "S18X54.7", + "details": "US 3D Section S18X54.7", + "kind": "type", + "contents": "section US3D S18X54.7 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Static" + "trigger": "S18X70", + "details": "US 2D Section S18X70", + "kind": "type", + "contents": "section US2D S18X70 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"material SteelBRB ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:(7)} ${8:(8)} ${9:(9)} ${10:(10)} ${11:[11]}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# (3) double, yield stress\n# (4) double, plastic modulus\n# (5) double, tension saturated stress\n# (6) double, tension delta_r\n# (7) double, tension alpha\n# (8) double, compression saturated stress\n# (9) double, compression delta_r\n# (10) double, compression alpha\n# [11] double, density, default: 0.0", - "details":"Steel Model For Modelling BRB", - "kind":"type", - "trigger":"SteelBRB" + "trigger": "S18X70", + "details": "US 3D Section S18X70", + "kind": "type", + "contents": "section US3D S18X70 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Stiffness" + "trigger": "S20X66", + "details": "US 2D Section S20X66", + "kind": "type", + "contents": "section US2D S20X66 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"StrainEnergyEvolution" + "trigger": "S20X66", + "details": "US 3D Section S20X66", + "kind": "type", + "contents": "section US3D S20X66 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Substepping" + "trigger": "S20X75", + "details": "US 2D Section S20X75", + "kind": "type", + "contents": "section US2D S20X75 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Sum" + "trigger": "S20X75", + "details": "US 3D Section S20X75", + "kind": "type", + "contents": "section US3D S20X75 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"set system_solver SuperLU", - "details":"Use SuperLU Solver", - "kind":"type", - "trigger":"SuperLU" + "trigger": "S20X86", + "details": "US 2D Section S20X86", + "kind": "type", + "contents": "section US2D S20X86 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"element T2D2 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:[6]} ${7:[7]} ${8:[8]} ${9:[9]}\n# (1) int, unique element tag\n# (2) int, node i\n# (3) int, node j\n# (4) int, material tag\n# (5) double, cross sectional area\n# [6] bool string, nonlinear geometry switch, default: false\n# [7] bool string, if to update sectional area, default: false\n# [8] bool string, if to use log strain, default: false\n# [9] double, flexural rigidity, -1.0", - "details":"2D Linear Truss", - "kind":"type", - "trigger":"T2D2" + "trigger": "S20X86", + "details": "US 3D Section S20X86", + "kind": "type", + "contents": "section US3D S20X86 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"element T2D2S ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${6:[6]} ${7:[7]} ${8:[8]}\n# (1) int, unique element tag\n# (2) int, node i\n# (3) int, node j\n# (4) int, section tag\n# [5] bool string, nonlinear geometry switch, default: false\n# [6] bool string, if to use log strain, default: false", - "details":"2D Linear Truss Using Section", - "kind":"type", - "trigger":"T2D2S" + "trigger": "S20X96", + "details": "US 2D Section S20X96", + "kind": "type", + "contents": "section US2D S20X96 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"element T3D2 ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:[6]} ${7:[7]} ${8:[8]}\n# (1) int, unique element tag\n# (2) int, node i\n# (3) int, node j\n# (4) int, material tag\n# (5) double, cross sectional area\n# [6] bool string, nonlinear geometry switch, default: false\n# [7] bool string, if to update sectional area, default: false\n# [8] bool string, if to use log strain, default: false", - "details":"3D Linear Truss", - "kind":"type", - "trigger":"T3D2" + "trigger": "S20X96", + "details": "US 3D Section S20X96", + "kind": "type", + "contents": "section US3D S20X96 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"element T3D2S ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${6:[6]} ${7:[7]} ${8:[8]}\n# (1) int, unique element tag\n# (2) int, node i\n# (3) int, node j\n# (4) int, section tag\n# [5] bool string, nonlinear geometry switch, default: false\n# [6] bool string, if to use log strain, default: false", - "details":"3D Linear Truss Using Section", - "kind":"type", - "trigger":"T3D2S" + "trigger": "S24X100", + "details": "US 2D Section S24X100", + "kind": "type", + "contents": "section US2D S24X100 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section TSection2D ${1:(1)} ${2:(2...5)} ${6:(6)} ${7:[7]} ${8:[8]}\n# (1) int, unique tag\n# (2...5) double, section dimensions\n# (6) int, material tag\n# [7] int, number of integration points, default: 6\n# [8] double, eccentricity measured from the centre, default: 0.0", - "details":"2D T-Section", - "kind":"type", - "trigger":"TSection2D" + "trigger": "S24X100", + "details": "US 3D Section S24X100", + "kind": "type", + "contents": "section US3D S24X100 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section TSection3D ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:[7]} ${8:[8]} ${9:[9]}\n# (1) int, unique section tag\n# (2) double, top flange width\n# (3) double, top flange thickness\n# (4) double, web height\n# (5) double, web thickness\n# (6) int, material tag\n# [7] int, number of integration points, default: 3\n# [8] double, eccentricity along y axis, default: 0.0\n# [9] double, eccentricity along z axis, default: 0.0", - "details":"3D T-Section", - "kind":"type", - "trigger":"TSection3D" + "trigger": "S24X106", + "details": "US 2D Section S24X106", + "kind": "type", + "contents": "section US2D S24X106 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"material TableCDP ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:(5)} ${6:(6)} ${7:(7)} ${8:[8]} ${9:[9]} ${10:[10]} ${11:[11]}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# (3) double, poisson's ratio\n# (4) string, file name of tension backbone table\n# (5) string, file name of compression backbone table\n# (6) string, file name of tension damage table\n# (7) string, file name of compression damage table\n# [8] double, dilatancy parameter, default: 0.2\n# [9] double, biaxial compression strength ratio, default: 1.16\n# [10] double, stiffness recovery ratio, default: 0.5\n# [11] double, density, default: 0", - "details":"CDP Model With Tabular Data Support", - "kind":"type", - "trigger":"TableCDP" + "trigger": "S24X106", + "details": "US 3D Section S24X106", + "kind": "type", + "contents": "section US3D S24X106 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"TableGurson" + "trigger": "S24X121", + "details": "US 2D Section S24X121", + "kind": "type", + "contents": "section US2D S24X121 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"amplitude Tabular ${1:(1)} ${2:(2)}\n# (1) int, unique amplitude tag\n# (2) string, file name of tabular data", - "details":"Amplitude Using Tabular Data", - "kind":"type", - "trigger":"Tabular" + "trigger": "S24X121", + "details": "US 3D Section S24X121", + "kind": "type", + "contents": "section US3D S24X121 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"amplitude Custom ${1:(1)} ${2:(2)}\n# (1) int, unique amplitude tag\n# (2) int, expression tag", - "details":"Amplitude Using Custom Function", - "kind":"type", - "trigger":"Custom" + "trigger": "S24X80", + "details": "US 2D Section S24X80", + "kind": "type", + "contents": "section US2D S24X80 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"material Tanh1D ${1:(1)} ${2:(2)} ${3:[3]}\n# (1) int, unique material tag\n# (2) double, elastic modulus\n# [3] double, density, default: 0.0", - "details":"Uniaxial Nonlinear Elastic Material Using Tanh", - "kind":"type", - "trigger":"Tanh1D" + "trigger": "S24X80", + "details": "US 3D Section S24X80", + "kind": "type", + "contents": "section US3D S24X80 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"integrator Tchamwa ${1:(1)} ${2:(2)}\n# (1) int, unique integrator tag\n# [2] double, spectral radius, default: 0.5", - "details":"", - "kind":"type", - "trigger":"Tchamwa" + "trigger": "S24X90", + "details": "US 2D Section S24X90", + "kind": "type", + "contents": "section US2D S24X90 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"element Tie ${1:(1)} ${2:(2)} ${3:(3)} [${4:(4)} ${5:(5)} ${6:(6)}...]\n# (1) int, unique element tag\n# (2) double, right hand side of the constraint equation, the constraint is homogeneous if this parameter is zero\n# (3) double, penalty number, a relatively large number\n# (4) int, node tag\n# (5) int, dof tag\n# (6) double, weight", - "details":"", - "kind":"type", - "trigger":"Tie" + "trigger": "S24X90", + "details": "US 3D Section S24X90", + "kind": "type", + "contents": "section US3D S24X90 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"TrilinearDegradation" + "trigger": "S3X5.7", + "details": "US 2D Section S3X5.7", + "kind": "type", + "contents": "section US2D S3X5.7 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"material CustomDegradation ${1:(1)} ${2:(2)} ${3:(3)}\n# (1) int, unique material tag\n# (2) int, host material tag\n# (3) int, degradation expression tag\n", - "details":"Uniaxial degradation with custom rules", - "kind":"type", - "trigger":"CustomDegradation" + "trigger": "S3X5.7", + "details": "US 3D Section S3X5.7", + "kind": "type", + "contents": "section US3D S3X5.7 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Trivial" + "trigger": "S3X7.5", + "details": "US 2D Section S3X7.5", + "kind": "type", + "contents": "section US2D S3X7.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section TrussSection ${1:(1)} ${2:(2)} ${3:(3)}\n# (1) int, unique section tag\n# (2) double, section area\n# (3) int, material tag", - "details":"1D Truss Section", - "kind":"type", - "trigger":"TrussSection" + "trigger": "S3X7.5", + "details": "US 3D Section S3X7.5", + "kind": "type", + "contents": "section US3D S3X7.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"US2D" + "trigger": "S4X7.7", + "details": "US 2D Section S4X7.7", + "kind": "type", + "contents": "section US2D S4X7.7 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"US3D" + "trigger": "S4X7.7", + "details": "US 3D Section S4X7.7", + "kind": "type", + "contents": "section US3D S4X7.7 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Uniaxial" + "trigger": "S4X9.5", + "details": "US 2D Section S4X9.5", + "kind": "type", + "contents": "section US2D S4X9.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"VAFCRP" + "trigger": "S4X9.5", + "details": "US 3D Section S4X9.5", + "kind": "type", + "contents": "section US3D S4X9.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"VAFCRP1D" + "trigger": "S5X10", + "details": "US 2D Section S5X10", + "kind": "type", + "contents": "section US2D S5X10 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Viscosity01" + "trigger": "S5X10", + "details": "US 3D Section S5X10", + "kind": "type", + "contents": "section US3D S5X10 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Viscosity02" + "trigger": "S6X12.5", + "details": "US 2D Section S6X12.5", + "kind": "type", + "contents": "section US2D S6X12.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Visualisation" + "trigger": "S6X12.5", + "details": "US 3D Section S6X12.5", + "kind": "type", + "contents": "section US3D S6X12.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W10X100 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W10X100", - "kind":"keyword", - "trigger":"W10X100" + "trigger": "S6X17.25", + "details": "US 2D Section S6X17.25", + "kind": "type", + "contents": "section US2D S6X17.25 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W10X100 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W10X100", - "kind":"keyword", - "trigger":"W10X100" + "trigger": "S6X17.25", + "details": "US 3D Section S6X17.25", + "kind": "type", + "contents": "section US3D S6X17.25 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W10X112 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W10X112", - "kind":"keyword", - "trigger":"W10X112" + "trigger": "S8X18.4", + "details": "US 2D Section S8X18.4", + "kind": "type", + "contents": "section US2D S8X18.4 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W10X112 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W10X112", - "kind":"keyword", - "trigger":"W10X112" + "trigger": "S8X18.4", + "details": "US 3D Section S8X18.4", + "kind": "type", + "contents": "section US3D S8X18.4 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W10X12 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W10X12", - "kind":"keyword", - "trigger":"W10X12" + "trigger": "S8X23", + "details": "US 2D Section S8X23", + "kind": "type", + "contents": "section US2D S8X23 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W10X12 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W10X12", - "kind":"keyword", - "trigger":"W10X12" + "trigger": "S8X23", + "details": "US 3D Section S8X23", + "kind": "type", + "contents": "section US3D S8X23 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W10X15 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W10X15", - "kind":"keyword", - "trigger":"W10X15" + "trigger": "ST1.5X2.85", + "details": "US 2D Section ST1.5X2.85", + "kind": "type", + "contents": "section US2D ST1.5X2.85 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W10X15 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W10X15", - "kind":"keyword", - "trigger":"W10X15" + "trigger": "ST1.5X2.85", + "details": "US 3D Section ST1.5X2.85", + "kind": "type", + "contents": "section US3D ST1.5X2.85 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W10X17 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W10X17", - "kind":"keyword", - "trigger":"W10X17" + "trigger": "ST1.5X3.75", + "details": "US 2D Section ST1.5X3.75", + "kind": "type", + "contents": "section US2D ST1.5X3.75 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W10X17 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W10X17", - "kind":"keyword", - "trigger":"W10X17" + "trigger": "ST1.5X3.75", + "details": "US 3D Section ST1.5X3.75", + "kind": "type", + "contents": "section US3D ST1.5X3.75 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W10X19 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W10X19", - "kind":"keyword", - "trigger":"W10X19" + "trigger": "ST10X33", + "details": "US 2D Section ST10X33", + "kind": "type", + "contents": "section US2D ST10X33 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W10X19 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W10X19", - "kind":"keyword", - "trigger":"W10X19" + "trigger": "ST10X33", + "details": "US 3D Section ST10X33", + "kind": "type", + "contents": "section US3D ST10X33 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W10X22 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W10X22", - "kind":"keyword", - "trigger":"W10X22" + "trigger": "ST10X37.5", + "details": "US 2D Section ST10X37.5", + "kind": "type", + "contents": "section US2D ST10X37.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W10X22 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W10X22", - "kind":"keyword", - "trigger":"W10X22" + "trigger": "ST10X37.5", + "details": "US 3D Section ST10X37.5", + "kind": "type", + "contents": "section US3D ST10X37.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W10X26 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W10X26", - "kind":"keyword", - "trigger":"W10X26" + "trigger": "ST10X43", + "details": "US 2D Section ST10X43", + "kind": "type", + "contents": "section US2D ST10X43 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W10X26 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W10X26", - "kind":"keyword", - "trigger":"W10X26" + "trigger": "ST10X43", + "details": "US 3D Section ST10X43", + "kind": "type", + "contents": "section US3D ST10X43 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W10X30 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W10X30", - "kind":"keyword", - "trigger":"W10X30" + "trigger": "ST10X48", + "details": "US 2D Section ST10X48", + "kind": "type", + "contents": "section US2D ST10X48 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W10X30 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W10X30", - "kind":"keyword", - "trigger":"W10X30" + "trigger": "ST10X48", + "details": "US 3D Section ST10X48", + "kind": "type", + "contents": "section US3D ST10X48 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W10X33 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W10X33", - "kind":"keyword", - "trigger":"W10X33" + "trigger": "ST12X40", + "details": "US 2D Section ST12X40", + "kind": "type", + "contents": "section US2D ST12X40 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W10X33 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W10X33", - "kind":"keyword", - "trigger":"W10X33" + "trigger": "ST12X40", + "details": "US 3D Section ST12X40", + "kind": "type", + "contents": "section US3D ST12X40 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W10X39 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W10X39", - "kind":"keyword", - "trigger":"W10X39" + "trigger": "ST12X45", + "details": "US 2D Section ST12X45", + "kind": "type", + "contents": "section US2D ST12X45 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W10X39 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W10X39", - "kind":"keyword", - "trigger":"W10X39" + "trigger": "ST12X45", + "details": "US 3D Section ST12X45", + "kind": "type", + "contents": "section US3D ST12X45 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W10X45 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W10X45", - "kind":"keyword", - "trigger":"W10X45" + "trigger": "ST12X50", + "details": "US 2D Section ST12X50", + "kind": "type", + "contents": "section US2D ST12X50 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W10X45 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W10X45", - "kind":"keyword", - "trigger":"W10X45" + "trigger": "ST12X50", + "details": "US 3D Section ST12X50", + "kind": "type", + "contents": "section US3D ST12X50 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W10X49 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W10X49", - "kind":"keyword", - "trigger":"W10X49" + "trigger": "ST12X53", + "details": "US 2D Section ST12X53", + "kind": "type", + "contents": "section US2D ST12X53 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W10X49 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W10X49", - "kind":"keyword", - "trigger":"W10X49" + "trigger": "ST12X53", + "details": "US 3D Section ST12X53", + "kind": "type", + "contents": "section US3D ST12X53 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W10X54 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W10X54", - "kind":"keyword", - "trigger":"W10X54" + "trigger": "ST12X60.5", + "details": "US 2D Section ST12X60.5", + "kind": "type", + "contents": "section US2D ST12X60.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W10X54 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W10X54", - "kind":"keyword", - "trigger":"W10X54" + "trigger": "ST12X60.5", + "details": "US 3D Section ST12X60.5", + "kind": "type", + "contents": "section US3D ST12X60.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W10X60 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W10X60", - "kind":"keyword", - "trigger":"W10X60" + "trigger": "ST2.5X5", + "details": "US 2D Section ST2.5X5", + "kind": "type", + "contents": "section US2D ST2.5X5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W10X60 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W10X60", - "kind":"keyword", - "trigger":"W10X60" + "trigger": "ST2.5X5", + "details": "US 3D Section ST2.5X5", + "kind": "type", + "contents": "section US3D ST2.5X5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W10X68 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W10X68", - "kind":"keyword", - "trigger":"W10X68" + "trigger": "ST2X3.85", + "details": "US 2D Section ST2X3.85", + "kind": "type", + "contents": "section US2D ST2X3.85 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W10X68 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W10X68", - "kind":"keyword", - "trigger":"W10X68" + "trigger": "ST2X3.85", + "details": "US 3D Section ST2X3.85", + "kind": "type", + "contents": "section US3D ST2X3.85 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W10X77 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W10X77", - "kind":"keyword", - "trigger":"W10X77" + "trigger": "ST2X4.75", + "details": "US 2D Section ST2X4.75", + "kind": "type", + "contents": "section US2D ST2X4.75 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W10X77 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W10X77", - "kind":"keyword", - "trigger":"W10X77" + "trigger": "ST2X4.75", + "details": "US 3D Section ST2X4.75", + "kind": "type", + "contents": "section US3D ST2X4.75 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W10X88 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W10X88", - "kind":"keyword", - "trigger":"W10X88" + "trigger": "ST3X6.25", + "details": "US 2D Section ST3X6.25", + "kind": "type", + "contents": "section US2D ST3X6.25 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W10X88 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W10X88", - "kind":"keyword", - "trigger":"W10X88" + "trigger": "ST3X6.25", + "details": "US 3D Section ST3X6.25", + "kind": "type", + "contents": "section US3D ST3X6.25 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W12X106 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W12X106", - "kind":"keyword", - "trigger":"W12X106" + "trigger": "ST3X8.6", + "details": "US 2D Section ST3X8.6", + "kind": "type", + "contents": "section US2D ST3X8.6 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W12X106 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W12X106", - "kind":"keyword", - "trigger":"W12X106" + "trigger": "ST3X8.6", + "details": "US 3D Section ST3X8.6", + "kind": "type", + "contents": "section US3D ST3X8.6 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W12X120 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W12X120", - "kind":"keyword", - "trigger":"W12X120" + "trigger": "ST4X11.5", + "details": "US 2D Section ST4X11.5", + "kind": "type", + "contents": "section US2D ST4X11.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W12X120 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W12X120", - "kind":"keyword", - "trigger":"W12X120" + "trigger": "ST4X11.5", + "details": "US 3D Section ST4X11.5", + "kind": "type", + "contents": "section US3D ST4X11.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W12X136 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W12X136", - "kind":"keyword", - "trigger":"W12X136" + "trigger": "ST4X9.2", + "details": "US 2D Section ST4X9.2", + "kind": "type", + "contents": "section US2D ST4X9.2 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W12X136 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W12X136", - "kind":"keyword", - "trigger":"W12X136" + "trigger": "ST4X9.2", + "details": "US 3D Section ST4X9.2", + "kind": "type", + "contents": "section US3D ST4X9.2 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W12X14 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W12X14", - "kind":"keyword", - "trigger":"W12X14" + "trigger": "ST5X12.7", + "details": "US 2D Section ST5X12.7", + "kind": "type", + "contents": "section US2D ST5X12.7 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W12X14 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W12X14", - "kind":"keyword", - "trigger":"W12X14" + "trigger": "ST5X12.7", + "details": "US 3D Section ST5X12.7", + "kind": "type", + "contents": "section US3D ST5X12.7 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W12X152 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W12X152", - "kind":"keyword", - "trigger":"W12X152" + "trigger": "ST5X17.5", + "details": "US 2D Section ST5X17.5", + "kind": "type", + "contents": "section US2D ST5X17.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W12X152 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W12X152", - "kind":"keyword", - "trigger":"W12X152" + "trigger": "ST5X17.5", + "details": "US 3D Section ST5X17.5", + "kind": "type", + "contents": "section US3D ST5X17.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W12X16 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W12X16", - "kind":"keyword", - "trigger":"W12X16" + "trigger": "ST6X15.9", + "details": "US 2D Section ST6X15.9", + "kind": "type", + "contents": "section US2D ST6X15.9 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W12X16 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W12X16", - "kind":"keyword", - "trigger":"W12X16" + "trigger": "ST6X15.9", + "details": "US 3D Section ST6X15.9", + "kind": "type", + "contents": "section US3D ST6X15.9 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W12X170 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W12X170", - "kind":"keyword", - "trigger":"W12X170" + "trigger": "ST6X17.5", + "details": "US 2D Section ST6X17.5", + "kind": "type", + "contents": "section US2D ST6X17.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W12X170 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W12X170", - "kind":"keyword", - "trigger":"W12X170" + "trigger": "ST6X17.5", + "details": "US 3D Section ST6X17.5", + "kind": "type", + "contents": "section US3D ST6X17.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W12X19 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W12X19", - "kind":"keyword", - "trigger":"W12X19" + "trigger": "ST6X20.4", + "details": "US 2D Section ST6X20.4", + "kind": "type", + "contents": "section US2D ST6X20.4 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W12X19 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W12X19", - "kind":"keyword", - "trigger":"W12X19" + "trigger": "ST6X20.4", + "details": "US 3D Section ST6X20.4", + "kind": "type", + "contents": "section US3D ST6X20.4 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W12X190 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W12X190", - "kind":"keyword", - "trigger":"W12X190" + "trigger": "ST6X25", + "details": "US 2D Section ST6X25", + "kind": "type", + "contents": "section US2D ST6X25 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W12X190 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W12X190", - "kind":"keyword", - "trigger":"W12X190" + "trigger": "ST6X25", + "details": "US 3D Section ST6X25", + "kind": "type", + "contents": "section US3D ST6X25 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W12X210 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W12X210", - "kind":"keyword", - "trigger":"W12X210" + "trigger": "ST7.5X21.45", + "details": "US 2D Section ST7.5X21.45", + "kind": "type", + "contents": "section US2D ST7.5X21.45 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W12X210 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W12X210", - "kind":"keyword", - "trigger":"W12X210" + "trigger": "ST7.5X21.45", + "details": "US 3D Section ST7.5X21.45", + "kind": "type", + "contents": "section US3D ST7.5X21.45 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W12X22 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W12X22", - "kind":"keyword", - "trigger":"W12X22" + "trigger": "ST7.5X25", + "details": "US 2D Section ST7.5X25", + "kind": "type", + "contents": "section US2D ST7.5X25 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W12X22 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W12X22", - "kind":"keyword", - "trigger":"W12X22" + "trigger": "ST7.5X25", + "details": "US 3D Section ST7.5X25", + "kind": "type", + "contents": "section US3D ST7.5X25 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W12X230 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W12X230", - "kind":"keyword", - "trigger":"W12X230" + "trigger": "ST9X27.35", + "details": "US 2D Section ST9X27.35", + "kind": "type", + "contents": "section US2D ST9X27.35 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W12X230 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W12X230", - "kind":"keyword", - "trigger":"W12X230" + "trigger": "ST9X27.35", + "details": "US 3D Section ST9X27.35", + "kind": "type", + "contents": "section US3D ST9X27.35 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W12X252 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W12X252", - "kind":"keyword", - "trigger":"W12X252" + "trigger": "ST9X35", + "details": "US 2D Section ST9X35", + "kind": "type", + "contents": "section US2D ST9X35 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W12X252 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W12X252", - "kind":"keyword", - "trigger":"W12X252" + "trigger": "ST9X35", + "details": "US 3D Section ST9X35", + "kind": "type", + "contents": "section US3D ST9X35 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W12X26 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W12X26", - "kind":"keyword", - "trigger":"W12X26" + "trigger": "W10X100", + "details": "US 2D Section W10X100", + "kind": "type", + "contents": "section US2D W10X100 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W12X26 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W12X26", - "kind":"keyword", - "trigger":"W12X26" + "trigger": "W10X100", + "details": "US 3D Section W10X100", + "kind": "type", + "contents": "section US3D W10X100 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W12X279 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W12X279", - "kind":"keyword", - "trigger":"W12X279" + "trigger": "W10X112", + "details": "US 2D Section W10X112", + "kind": "type", + "contents": "section US2D W10X112 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W12X279 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W12X279", - "kind":"keyword", - "trigger":"W12X279" + "trigger": "W10X112", + "details": "US 3D Section W10X112", + "kind": "type", + "contents": "section US3D W10X112 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W12X30 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W12X30", - "kind":"keyword", - "trigger":"W12X30" + "trigger": "W10X12", + "details": "US 2D Section W10X12", + "kind": "type", + "contents": "section US2D W10X12 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W12X30 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W12X30", - "kind":"keyword", - "trigger":"W12X30" + "trigger": "W10X12", + "details": "US 3D Section W10X12", + "kind": "type", + "contents": "section US3D W10X12 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W12X305 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W12X305", - "kind":"keyword", - "trigger":"W12X305" + "trigger": "W10X15", + "details": "US 2D Section W10X15", + "kind": "type", + "contents": "section US2D W10X15 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W12X305 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W12X305", - "kind":"keyword", - "trigger":"W12X305" + "trigger": "W10X15", + "details": "US 3D Section W10X15", + "kind": "type", + "contents": "section US3D W10X15 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W12X336 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W12X336", - "kind":"keyword", - "trigger":"W12X336" + "trigger": "W10X17", + "details": "US 2D Section W10X17", + "kind": "type", + "contents": "section US2D W10X17 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W12X336 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W12X336", - "kind":"keyword", - "trigger":"W12X336" + "trigger": "W10X17", + "details": "US 3D Section W10X17", + "kind": "type", + "contents": "section US3D W10X17 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W12X35 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W12X35", - "kind":"keyword", - "trigger":"W12X35" + "trigger": "W10X19", + "details": "US 2D Section W10X19", + "kind": "type", + "contents": "section US2D W10X19 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W12X35 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W12X35", - "kind":"keyword", - "trigger":"W12X35" + "trigger": "W10X19", + "details": "US 3D Section W10X19", + "kind": "type", + "contents": "section US3D W10X19 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W12X40 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W12X40", - "kind":"keyword", - "trigger":"W12X40" + "trigger": "W10X22", + "details": "US 2D Section W10X22", + "kind": "type", + "contents": "section US2D W10X22 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W12X40 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W12X40", - "kind":"keyword", - "trigger":"W12X40" + "trigger": "W10X22", + "details": "US 3D Section W10X22", + "kind": "type", + "contents": "section US3D W10X22 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W12X45 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W12X45", - "kind":"keyword", - "trigger":"W12X45" + "trigger": "W10X26", + "details": "US 2D Section W10X26", + "kind": "type", + "contents": "section US2D W10X26 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W12X45 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W12X45", - "kind":"keyword", - "trigger":"W12X45" + "trigger": "W10X26", + "details": "US 3D Section W10X26", + "kind": "type", + "contents": "section US3D W10X26 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W12X50 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W12X50", - "kind":"keyword", - "trigger":"W12X50" + "trigger": "W10X30", + "details": "US 2D Section W10X30", + "kind": "type", + "contents": "section US2D W10X30 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W12X50 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W12X50", - "kind":"keyword", - "trigger":"W12X50" + "trigger": "W10X30", + "details": "US 3D Section W10X30", + "kind": "type", + "contents": "section US3D W10X30 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W12X53 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W12X53", - "kind":"keyword", - "trigger":"W12X53" + "trigger": "W10X33", + "details": "US 2D Section W10X33", + "kind": "type", + "contents": "section US2D W10X33 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W12X53 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W12X53", - "kind":"keyword", - "trigger":"W12X53" + "trigger": "W10X33", + "details": "US 3D Section W10X33", + "kind": "type", + "contents": "section US3D W10X33 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W12X58 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W12X58", - "kind":"keyword", - "trigger":"W12X58" + "trigger": "W10X39", + "details": "US 2D Section W10X39", + "kind": "type", + "contents": "section US2D W10X39 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W12X58 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W12X58", - "kind":"keyword", - "trigger":"W12X58" + "trigger": "W10X39", + "details": "US 3D Section W10X39", + "kind": "type", + "contents": "section US3D W10X39 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W12X65 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W12X65", - "kind":"keyword", - "trigger":"W12X65" + "trigger": "W10X45", + "details": "US 2D Section W10X45", + "kind": "type", + "contents": "section US2D W10X45 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W12X65 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W12X65", - "kind":"keyword", - "trigger":"W12X65" + "trigger": "W10X45", + "details": "US 3D Section W10X45", + "kind": "type", + "contents": "section US3D W10X45 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W12X72 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W12X72", - "kind":"keyword", - "trigger":"W12X72" + "trigger": "W10X49", + "details": "US 2D Section W10X49", + "kind": "type", + "contents": "section US2D W10X49 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W12X72 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W12X72", - "kind":"keyword", - "trigger":"W12X72" + "trigger": "W10X49", + "details": "US 3D Section W10X49", + "kind": "type", + "contents": "section US3D W10X49 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W12X79 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W12X79", - "kind":"keyword", - "trigger":"W12X79" + "trigger": "W10X54", + "details": "US 2D Section W10X54", + "kind": "type", + "contents": "section US2D W10X54 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W12X79 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W12X79", - "kind":"keyword", - "trigger":"W12X79" + "trigger": "W10X54", + "details": "US 3D Section W10X54", + "kind": "type", + "contents": "section US3D W10X54 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W12X87 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W12X87", - "kind":"keyword", - "trigger":"W12X87" + "trigger": "W10X60", + "details": "US 2D Section W10X60", + "kind": "type", + "contents": "section US2D W10X60 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W12X87 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W12X87", - "kind":"keyword", - "trigger":"W12X87" + "trigger": "W10X60", + "details": "US 3D Section W10X60", + "kind": "type", + "contents": "section US3D W10X60 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W12X96 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W12X96", - "kind":"keyword", - "trigger":"W12X96" + "trigger": "W10X68", + "details": "US 2D Section W10X68", + "kind": "type", + "contents": "section US2D W10X68 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W12X96 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W12X96", - "kind":"keyword", - "trigger":"W12X96" + "trigger": "W10X68", + "details": "US 3D Section W10X68", + "kind": "type", + "contents": "section US3D W10X68 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W14X109 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W14X109", - "kind":"keyword", - "trigger":"W14X109" + "trigger": "W10X77", + "details": "US 2D Section W10X77", + "kind": "type", + "contents": "section US2D W10X77 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W14X109 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W14X109", - "kind":"keyword", - "trigger":"W14X109" + "trigger": "W10X77", + "details": "US 3D Section W10X77", + "kind": "type", + "contents": "section US3D W10X77 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W14X120 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W14X120", - "kind":"keyword", - "trigger":"W14X120" + "trigger": "W10X88", + "details": "US 2D Section W10X88", + "kind": "type", + "contents": "section US2D W10X88 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W14X120 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W14X120", - "kind":"keyword", - "trigger":"W14X120" + "trigger": "W10X88", + "details": "US 3D Section W10X88", + "kind": "type", + "contents": "section US3D W10X88 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W14X132 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W14X132", - "kind":"keyword", - "trigger":"W14X132" + "trigger": "W12X106", + "details": "US 2D Section W12X106", + "kind": "type", + "contents": "section US2D W12X106 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W14X132 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W14X132", - "kind":"keyword", - "trigger":"W14X132" + "trigger": "W12X106", + "details": "US 3D Section W12X106", + "kind": "type", + "contents": "section US3D W12X106 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W14X145 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W14X145", - "kind":"keyword", - "trigger":"W14X145" + "trigger": "W12X120", + "details": "US 2D Section W12X120", + "kind": "type", + "contents": "section US2D W12X120 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W14X145 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W14X145", - "kind":"keyword", - "trigger":"W14X145" + "trigger": "W12X120", + "details": "US 3D Section W12X120", + "kind": "type", + "contents": "section US3D W12X120 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W14X159 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W14X159", - "kind":"keyword", - "trigger":"W14X159" + "trigger": "W12X136", + "details": "US 2D Section W12X136", + "kind": "type", + "contents": "section US2D W12X136 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W14X159 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W14X159", - "kind":"keyword", - "trigger":"W14X159" + "trigger": "W12X136", + "details": "US 3D Section W12X136", + "kind": "type", + "contents": "section US3D W12X136 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W14X176 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W14X176", - "kind":"keyword", - "trigger":"W14X176" + "trigger": "W12X14", + "details": "US 2D Section W12X14", + "kind": "type", + "contents": "section US2D W12X14 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W14X176 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W14X176", - "kind":"keyword", - "trigger":"W14X176" + "trigger": "W12X14", + "details": "US 3D Section W12X14", + "kind": "type", + "contents": "section US3D W12X14 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W14X193 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W14X193", - "kind":"keyword", - "trigger":"W14X193" + "trigger": "W12X152", + "details": "US 2D Section W12X152", + "kind": "type", + "contents": "section US2D W12X152 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W14X193 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W14X193", - "kind":"keyword", - "trigger":"W14X193" + "trigger": "W12X152", + "details": "US 3D Section W12X152", + "kind": "type", + "contents": "section US3D W12X152 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W14X211 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W14X211", - "kind":"keyword", - "trigger":"W14X211" + "trigger": "W12X16", + "details": "US 2D Section W12X16", + "kind": "type", + "contents": "section US2D W12X16 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W14X211 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W14X211", - "kind":"keyword", - "trigger":"W14X211" + "trigger": "W12X16", + "details": "US 3D Section W12X16", + "kind": "type", + "contents": "section US3D W12X16 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W14X22 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W14X22", - "kind":"keyword", - "trigger":"W14X22" + "trigger": "W12X170", + "details": "US 2D Section W12X170", + "kind": "type", + "contents": "section US2D W12X170 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W14X22 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W14X22", - "kind":"keyword", - "trigger":"W14X22" + "trigger": "W12X170", + "details": "US 3D Section W12X170", + "kind": "type", + "contents": "section US3D W12X170 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W14X233 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W14X233", - "kind":"keyword", - "trigger":"W14X233" + "trigger": "W12X19", + "details": "US 2D Section W12X19", + "kind": "type", + "contents": "section US2D W12X19 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W14X233 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W14X233", - "kind":"keyword", - "trigger":"W14X233" + "trigger": "W12X19", + "details": "US 3D Section W12X19", + "kind": "type", + "contents": "section US3D W12X19 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W14X257 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W14X257", - "kind":"keyword", - "trigger":"W14X257" + "trigger": "W12X190", + "details": "US 2D Section W12X190", + "kind": "type", + "contents": "section US2D W12X190 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W14X257 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W14X257", - "kind":"keyword", - "trigger":"W14X257" + "trigger": "W12X190", + "details": "US 3D Section W12X190", + "kind": "type", + "contents": "section US3D W12X190 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W14X26 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W14X26", - "kind":"keyword", - "trigger":"W14X26" + "trigger": "W12X210", + "details": "US 2D Section W12X210", + "kind": "type", + "contents": "section US2D W12X210 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W14X26 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W14X26", - "kind":"keyword", - "trigger":"W14X26" + "trigger": "W12X210", + "details": "US 3D Section W12X210", + "kind": "type", + "contents": "section US3D W12X210 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W14X283 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W14X283", - "kind":"keyword", - "trigger":"W14X283" + "trigger": "W12X22", + "details": "US 2D Section W12X22", + "kind": "type", + "contents": "section US2D W12X22 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W14X283 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W14X283", - "kind":"keyword", - "trigger":"W14X283" + "trigger": "W12X22", + "details": "US 3D Section W12X22", + "kind": "type", + "contents": "section US3D W12X22 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W14X30 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W14X30", - "kind":"keyword", - "trigger":"W14X30" + "trigger": "W12X230", + "details": "US 2D Section W12X230", + "kind": "type", + "contents": "section US2D W12X230 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W14X30 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W14X30", - "kind":"keyword", - "trigger":"W14X30" + "trigger": "W12X230", + "details": "US 3D Section W12X230", + "kind": "type", + "contents": "section US3D W12X230 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W14X311 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W14X311", - "kind":"keyword", - "trigger":"W14X311" + "trigger": "W12X252", + "details": "US 2D Section W12X252", + "kind": "type", + "contents": "section US2D W12X252 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W14X311 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W14X311", - "kind":"keyword", - "trigger":"W14X311" + "trigger": "W12X252", + "details": "US 3D Section W12X252", + "kind": "type", + "contents": "section US3D W12X252 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W14X34 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W14X34", - "kind":"keyword", - "trigger":"W14X34" + "trigger": "W12X26", + "details": "US 2D Section W12X26", + "kind": "type", + "contents": "section US2D W12X26 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W14X34 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W14X34", - "kind":"keyword", - "trigger":"W14X34" + "trigger": "W12X26", + "details": "US 3D Section W12X26", + "kind": "type", + "contents": "section US3D W12X26 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W14X342 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W14X342", - "kind":"keyword", - "trigger":"W14X342" + "trigger": "W12X279", + "details": "US 2D Section W12X279", + "kind": "type", + "contents": "section US2D W12X279 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W14X342 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W14X342", - "kind":"keyword", - "trigger":"W14X342" + "trigger": "W12X279", + "details": "US 3D Section W12X279", + "kind": "type", + "contents": "section US3D W12X279 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W14X370 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W14X370", - "kind":"keyword", - "trigger":"W14X370" + "trigger": "W12X30", + "details": "US 2D Section W12X30", + "kind": "type", + "contents": "section US2D W12X30 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W14X370 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W14X370", - "kind":"keyword", - "trigger":"W14X370" + "trigger": "W12X30", + "details": "US 3D Section W12X30", + "kind": "type", + "contents": "section US3D W12X30 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W14X38 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W14X38", - "kind":"keyword", - "trigger":"W14X38" + "trigger": "W12X305", + "details": "US 2D Section W12X305", + "kind": "type", + "contents": "section US2D W12X305 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W14X38 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W14X38", - "kind":"keyword", - "trigger":"W14X38" + "trigger": "W12X305", + "details": "US 3D Section W12X305", + "kind": "type", + "contents": "section US3D W12X305 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W14X398 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W14X398", - "kind":"keyword", - "trigger":"W14X398" + "trigger": "W12X336", + "details": "US 2D Section W12X336", + "kind": "type", + "contents": "section US2D W12X336 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W14X398 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W14X398", - "kind":"keyword", - "trigger":"W14X398" + "trigger": "W12X336", + "details": "US 3D Section W12X336", + "kind": "type", + "contents": "section US3D W12X336 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W14X426 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W14X426", - "kind":"keyword", - "trigger":"W14X426" + "trigger": "W12X35", + "details": "US 2D Section W12X35", + "kind": "type", + "contents": "section US2D W12X35 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W14X426 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W14X426", - "kind":"keyword", - "trigger":"W14X426" + "trigger": "W12X35", + "details": "US 3D Section W12X35", + "kind": "type", + "contents": "section US3D W12X35 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W14X43 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W14X43", - "kind":"keyword", - "trigger":"W14X43" + "trigger": "W12X40", + "details": "US 2D Section W12X40", + "kind": "type", + "contents": "section US2D W12X40 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W14X43 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W14X43", - "kind":"keyword", - "trigger":"W14X43" + "trigger": "W12X40", + "details": "US 3D Section W12X40", + "kind": "type", + "contents": "section US3D W12X40 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W14X455 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W14X455", - "kind":"keyword", - "trigger":"W14X455" + "trigger": "W12X45", + "details": "US 2D Section W12X45", + "kind": "type", + "contents": "section US2D W12X45 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W14X455 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W14X455", - "kind":"keyword", - "trigger":"W14X455" + "trigger": "W12X45", + "details": "US 3D Section W12X45", + "kind": "type", + "contents": "section US3D W12X45 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W14X48 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W14X48", - "kind":"keyword", - "trigger":"W14X48" + "trigger": "W12X50", + "details": "US 2D Section W12X50", + "kind": "type", + "contents": "section US2D W12X50 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W14X48 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W14X48", - "kind":"keyword", - "trigger":"W14X48" + "trigger": "W12X50", + "details": "US 3D Section W12X50", + "kind": "type", + "contents": "section US3D W12X50 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W14X500 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W14X500", - "kind":"keyword", - "trigger":"W14X500" + "trigger": "W12X53", + "details": "US 2D Section W12X53", + "kind": "type", + "contents": "section US2D W12X53 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W14X500 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W14X500", - "kind":"keyword", - "trigger":"W14X500" + "trigger": "W12X53", + "details": "US 3D Section W12X53", + "kind": "type", + "contents": "section US3D W12X53 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W14X53 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W14X53", - "kind":"keyword", - "trigger":"W14X53" + "trigger": "W12X58", + "details": "US 2D Section W12X58", + "kind": "type", + "contents": "section US2D W12X58 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W14X53 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W14X53", - "kind":"keyword", - "trigger":"W14X53" + "trigger": "W12X58", + "details": "US 3D Section W12X58", + "kind": "type", + "contents": "section US3D W12X58 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W14X550 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W14X550", - "kind":"keyword", - "trigger":"W14X550" + "trigger": "W12X65", + "details": "US 2D Section W12X65", + "kind": "type", + "contents": "section US2D W12X65 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W14X550 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W14X550", - "kind":"keyword", - "trigger":"W14X550" + "trigger": "W12X65", + "details": "US 3D Section W12X65", + "kind": "type", + "contents": "section US3D W12X65 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W14X605 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W14X605", - "kind":"keyword", - "trigger":"W14X605" + "trigger": "W12X72", + "details": "US 2D Section W12X72", + "kind": "type", + "contents": "section US2D W12X72 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W14X605 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W14X605", - "kind":"keyword", - "trigger":"W14X605" + "trigger": "W12X72", + "details": "US 3D Section W12X72", + "kind": "type", + "contents": "section US3D W12X72 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W14X61 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W14X61", - "kind":"keyword", - "trigger":"W14X61" + "trigger": "W12X79", + "details": "US 2D Section W12X79", + "kind": "type", + "contents": "section US2D W12X79 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W14X61 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W14X61", - "kind":"keyword", - "trigger":"W14X61" + "trigger": "W12X79", + "details": "US 3D Section W12X79", + "kind": "type", + "contents": "section US3D W12X79 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W14X665 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W14X665", - "kind":"keyword", - "trigger":"W14X665" + "trigger": "W12X87", + "details": "US 2D Section W12X87", + "kind": "type", + "contents": "section US2D W12X87 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W14X665 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W14X665", - "kind":"keyword", - "trigger":"W14X665" + "trigger": "W12X87", + "details": "US 3D Section W12X87", + "kind": "type", + "contents": "section US3D W12X87 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W14X68 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W14X68", - "kind":"keyword", - "trigger":"W14X68" + "trigger": "W12X96", + "details": "US 2D Section W12X96", + "kind": "type", + "contents": "section US2D W12X96 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W14X68 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W14X68", - "kind":"keyword", - "trigger":"W14X68" + "trigger": "W12X96", + "details": "US 3D Section W12X96", + "kind": "type", + "contents": "section US3D W12X96 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W14X730 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W14X730", - "kind":"keyword", - "trigger":"W14X730" + "trigger": "W14X109", + "details": "US 2D Section W14X109", + "kind": "type", + "contents": "section US2D W14X109 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W14X730 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W14X730", - "kind":"keyword", - "trigger":"W14X730" + "trigger": "W14X109", + "details": "US 3D Section W14X109", + "kind": "type", + "contents": "section US3D W14X109 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W14X74 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W14X74", - "kind":"keyword", - "trigger":"W14X74" + "trigger": "W14X120", + "details": "US 2D Section W14X120", + "kind": "type", + "contents": "section US2D W14X120 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W14X74 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W14X74", - "kind":"keyword", - "trigger":"W14X74" + "trigger": "W14X120", + "details": "US 3D Section W14X120", + "kind": "type", + "contents": "section US3D W14X120 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W14X808 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W14X808", - "kind":"keyword", - "trigger":"W14X808" + "trigger": "W14X132", + "details": "US 2D Section W14X132", + "kind": "type", + "contents": "section US2D W14X132 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W14X808 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W14X808", - "kind":"keyword", - "trigger":"W14X808" + "trigger": "W14X132", + "details": "US 3D Section W14X132", + "kind": "type", + "contents": "section US3D W14X132 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W14X82 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W14X82", - "kind":"keyword", - "trigger":"W14X82" + "trigger": "W14X145", + "details": "US 2D Section W14X145", + "kind": "type", + "contents": "section US2D W14X145 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W14X82 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W14X82", - "kind":"keyword", - "trigger":"W14X82" + "trigger": "W14X145", + "details": "US 3D Section W14X145", + "kind": "type", + "contents": "section US3D W14X145 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W14X873 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W14X873", - "kind":"keyword", - "trigger":"W14X873" + "trigger": "W14X159", + "details": "US 2D Section W14X159", + "kind": "type", + "contents": "section US2D W14X159 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W14X873 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W14X873", - "kind":"keyword", - "trigger":"W14X873" + "trigger": "W14X159", + "details": "US 3D Section W14X159", + "kind": "type", + "contents": "section US3D W14X159 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W14X90 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W14X90", - "kind":"keyword", - "trigger":"W14X90" + "trigger": "W14X176", + "details": "US 2D Section W14X176", + "kind": "type", + "contents": "section US2D W14X176 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W14X90 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W14X90", - "kind":"keyword", - "trigger":"W14X90" + "trigger": "W14X176", + "details": "US 3D Section W14X176", + "kind": "type", + "contents": "section US3D W14X176 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W14X99 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W14X99", - "kind":"keyword", - "trigger":"W14X99" + "trigger": "W14X193", + "details": "US 2D Section W14X193", + "kind": "type", + "contents": "section US2D W14X193 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W14X99 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W14X99", - "kind":"keyword", - "trigger":"W14X99" + "trigger": "W14X193", + "details": "US 3D Section W14X193", + "kind": "type", + "contents": "section US3D W14X193 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W16X100 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W16X100", - "kind":"keyword", - "trigger":"W16X100" + "trigger": "W14X211", + "details": "US 2D Section W14X211", + "kind": "type", + "contents": "section US2D W14X211 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W16X100 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W16X100", - "kind":"keyword", - "trigger":"W16X100" + "trigger": "W14X211", + "details": "US 3D Section W14X211", + "kind": "type", + "contents": "section US3D W14X211 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W16X26 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W16X26", - "kind":"keyword", - "trigger":"W16X26" + "trigger": "W14X22", + "details": "US 2D Section W14X22", + "kind": "type", + "contents": "section US2D W14X22 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W16X26 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W16X26", - "kind":"keyword", - "trigger":"W16X26" + "trigger": "W14X22", + "details": "US 3D Section W14X22", + "kind": "type", + "contents": "section US3D W14X22 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W16X31 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W16X31", - "kind":"keyword", - "trigger":"W16X31" + "trigger": "W14X233", + "details": "US 2D Section W14X233", + "kind": "type", + "contents": "section US2D W14X233 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W16X31 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W16X31", - "kind":"keyword", - "trigger":"W16X31" + "trigger": "W14X233", + "details": "US 3D Section W14X233", + "kind": "type", + "contents": "section US3D W14X233 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W16X36 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W16X36", - "kind":"keyword", - "trigger":"W16X36" + "trigger": "W14X257", + "details": "US 2D Section W14X257", + "kind": "type", + "contents": "section US2D W14X257 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W16X36 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W16X36", - "kind":"keyword", - "trigger":"W16X36" + "trigger": "W14X257", + "details": "US 3D Section W14X257", + "kind": "type", + "contents": "section US3D W14X257 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W16X40 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W16X40", - "kind":"keyword", - "trigger":"W16X40" + "trigger": "W14X26", + "details": "US 2D Section W14X26", + "kind": "type", + "contents": "section US2D W14X26 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W16X40 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W16X40", - "kind":"keyword", - "trigger":"W16X40" + "trigger": "W14X26", + "details": "US 3D Section W14X26", + "kind": "type", + "contents": "section US3D W14X26 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W16X45 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W16X45", - "kind":"keyword", - "trigger":"W16X45" + "trigger": "W14X283", + "details": "US 2D Section W14X283", + "kind": "type", + "contents": "section US2D W14X283 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W16X45 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W16X45", - "kind":"keyword", - "trigger":"W16X45" + "trigger": "W14X283", + "details": "US 3D Section W14X283", + "kind": "type", + "contents": "section US3D W14X283 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W16X50 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W16X50", - "kind":"keyword", - "trigger":"W16X50" + "trigger": "W14X30", + "details": "US 2D Section W14X30", + "kind": "type", + "contents": "section US2D W14X30 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W16X50 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W16X50", - "kind":"keyword", - "trigger":"W16X50" + "trigger": "W14X30", + "details": "US 3D Section W14X30", + "kind": "type", + "contents": "section US3D W14X30 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W16X57 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W16X57", - "kind":"keyword", - "trigger":"W16X57" + "trigger": "W14X311", + "details": "US 2D Section W14X311", + "kind": "type", + "contents": "section US2D W14X311 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W16X57 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W16X57", - "kind":"keyword", - "trigger":"W16X57" + "trigger": "W14X311", + "details": "US 3D Section W14X311", + "kind": "type", + "contents": "section US3D W14X311 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W16X67 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W16X67", - "kind":"keyword", - "trigger":"W16X67" + "trigger": "W14X34", + "details": "US 2D Section W14X34", + "kind": "type", + "contents": "section US2D W14X34 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W16X67 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W16X67", - "kind":"keyword", - "trigger":"W16X67" + "trigger": "W14X34", + "details": "US 3D Section W14X34", + "kind": "type", + "contents": "section US3D W14X34 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W16X77 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W16X77", - "kind":"keyword", - "trigger":"W16X77" + "trigger": "W14X342", + "details": "US 2D Section W14X342", + "kind": "type", + "contents": "section US2D W14X342 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W16X77 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W16X77", - "kind":"keyword", - "trigger":"W16X77" + "trigger": "W14X342", + "details": "US 3D Section W14X342", + "kind": "type", + "contents": "section US3D W14X342 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W16X89 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W16X89", - "kind":"keyword", - "trigger":"W16X89" + "trigger": "W14X370", + "details": "US 2D Section W14X370", + "kind": "type", + "contents": "section US2D W14X370 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W16X89 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W16X89", - "kind":"keyword", - "trigger":"W16X89" + "trigger": "W14X370", + "details": "US 3D Section W14X370", + "kind": "type", + "contents": "section US3D W14X370 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W18X106 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W18X106", - "kind":"keyword", - "trigger":"W18X106" + "trigger": "W14X38", + "details": "US 2D Section W14X38", + "kind": "type", + "contents": "section US2D W14X38 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W18X106 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W18X106", - "kind":"keyword", - "trigger":"W18X106" + "trigger": "W14X38", + "details": "US 3D Section W14X38", + "kind": "type", + "contents": "section US3D W14X38 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W18X119 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W18X119", - "kind":"keyword", - "trigger":"W18X119" + "trigger": "W14X398", + "details": "US 2D Section W14X398", + "kind": "type", + "contents": "section US2D W14X398 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W18X119 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W18X119", - "kind":"keyword", - "trigger":"W18X119" + "trigger": "W14X398", + "details": "US 3D Section W14X398", + "kind": "type", + "contents": "section US3D W14X398 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W18X130 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W18X130", - "kind":"keyword", - "trigger":"W18X130" + "trigger": "W14X426", + "details": "US 2D Section W14X426", + "kind": "type", + "contents": "section US2D W14X426 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W18X130 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W18X130", - "kind":"keyword", - "trigger":"W18X130" + "trigger": "W14X426", + "details": "US 3D Section W14X426", + "kind": "type", + "contents": "section US3D W14X426 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W18X143 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W18X143", - "kind":"keyword", - "trigger":"W18X143" + "trigger": "W14X43", + "details": "US 2D Section W14X43", + "kind": "type", + "contents": "section US2D W14X43 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W18X143 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W18X143", - "kind":"keyword", - "trigger":"W18X143" + "trigger": "W14X43", + "details": "US 3D Section W14X43", + "kind": "type", + "contents": "section US3D W14X43 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W18X158 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W18X158", - "kind":"keyword", - "trigger":"W18X158" + "trigger": "W14X455", + "details": "US 2D Section W14X455", + "kind": "type", + "contents": "section US2D W14X455 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W18X158 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W18X158", - "kind":"keyword", - "trigger":"W18X158" + "trigger": "W14X455", + "details": "US 3D Section W14X455", + "kind": "type", + "contents": "section US3D W14X455 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W18X175 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W18X175", - "kind":"keyword", - "trigger":"W18X175" + "trigger": "W14X48", + "details": "US 2D Section W14X48", + "kind": "type", + "contents": "section US2D W14X48 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W18X175 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W18X175", - "kind":"keyword", - "trigger":"W18X175" + "trigger": "W14X48", + "details": "US 3D Section W14X48", + "kind": "type", + "contents": "section US3D W14X48 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W18X192 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W18X192", - "kind":"keyword", - "trigger":"W18X192" + "trigger": "W14X500", + "details": "US 2D Section W14X500", + "kind": "type", + "contents": "section US2D W14X500 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W18X192 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W18X192", - "kind":"keyword", - "trigger":"W18X192" + "trigger": "W14X500", + "details": "US 3D Section W14X500", + "kind": "type", + "contents": "section US3D W14X500 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W18X211 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W18X211", - "kind":"keyword", - "trigger":"W18X211" + "trigger": "W14X53", + "details": "US 2D Section W14X53", + "kind": "type", + "contents": "section US2D W14X53 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W18X211 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W18X211", - "kind":"keyword", - "trigger":"W18X211" + "trigger": "W14X53", + "details": "US 3D Section W14X53", + "kind": "type", + "contents": "section US3D W14X53 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W18X234 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W18X234", - "kind":"keyword", - "trigger":"W18X234" + "trigger": "W14X550", + "details": "US 2D Section W14X550", + "kind": "type", + "contents": "section US2D W14X550 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W18X234 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W18X234", - "kind":"keyword", - "trigger":"W18X234" + "trigger": "W14X550", + "details": "US 3D Section W14X550", + "kind": "type", + "contents": "section US3D W14X550 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W18X258 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W18X258", - "kind":"keyword", - "trigger":"W18X258" + "trigger": "W14X605", + "details": "US 2D Section W14X605", + "kind": "type", + "contents": "section US2D W14X605 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W18X258 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W18X258", - "kind":"keyword", - "trigger":"W18X258" + "trigger": "W14X605", + "details": "US 3D Section W14X605", + "kind": "type", + "contents": "section US3D W14X605 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W18X283 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W18X283", - "kind":"keyword", - "trigger":"W18X283" + "trigger": "W14X61", + "details": "US 2D Section W14X61", + "kind": "type", + "contents": "section US2D W14X61 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W18X283 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W18X283", - "kind":"keyword", - "trigger":"W18X283" + "trigger": "W14X61", + "details": "US 3D Section W14X61", + "kind": "type", + "contents": "section US3D W14X61 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W18X311 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W18X311", - "kind":"keyword", - "trigger":"W18X311" + "trigger": "W14X665", + "details": "US 2D Section W14X665", + "kind": "type", + "contents": "section US2D W14X665 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W18X311 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W18X311", - "kind":"keyword", - "trigger":"W18X311" + "trigger": "W14X665", + "details": "US 3D Section W14X665", + "kind": "type", + "contents": "section US3D W14X665 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W18X35 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W18X35", - "kind":"keyword", - "trigger":"W18X35" + "trigger": "W14X68", + "details": "US 2D Section W14X68", + "kind": "type", + "contents": "section US2D W14X68 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W18X35 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W18X35", - "kind":"keyword", - "trigger":"W18X35" + "trigger": "W14X68", + "details": "US 3D Section W14X68", + "kind": "type", + "contents": "section US3D W14X68 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W18X40 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W18X40", - "kind":"keyword", - "trigger":"W18X40" + "trigger": "W14X730", + "details": "US 2D Section W14X730", + "kind": "type", + "contents": "section US2D W14X730 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W18X40 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W18X40", - "kind":"keyword", - "trigger":"W18X40" + "trigger": "W14X730", + "details": "US 3D Section W14X730", + "kind": "type", + "contents": "section US3D W14X730 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W18X46 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W18X46", - "kind":"keyword", - "trigger":"W18X46" + "trigger": "W14X74", + "details": "US 2D Section W14X74", + "kind": "type", + "contents": "section US2D W14X74 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W18X46 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W18X46", - "kind":"keyword", - "trigger":"W18X46" + "trigger": "W14X74", + "details": "US 3D Section W14X74", + "kind": "type", + "contents": "section US3D W14X74 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W18X50 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W18X50", - "kind":"keyword", - "trigger":"W18X50" + "trigger": "W14X808", + "details": "US 2D Section W14X808", + "kind": "type", + "contents": "section US2D W14X808 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W18X50 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W18X50", - "kind":"keyword", - "trigger":"W18X50" + "trigger": "W14X808", + "details": "US 3D Section W14X808", + "kind": "type", + "contents": "section US3D W14X808 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W18X55 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W18X55", - "kind":"keyword", - "trigger":"W18X55" + "trigger": "W14X82", + "details": "US 2D Section W14X82", + "kind": "type", + "contents": "section US2D W14X82 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W18X55 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W18X55", - "kind":"keyword", - "trigger":"W18X55" + "trigger": "W14X82", + "details": "US 3D Section W14X82", + "kind": "type", + "contents": "section US3D W14X82 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W18X60 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W18X60", - "kind":"keyword", - "trigger":"W18X60" + "trigger": "W14X873", + "details": "US 2D Section W14X873", + "kind": "type", + "contents": "section US2D W14X873 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W18X60 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W18X60", - "kind":"keyword", - "trigger":"W18X60" + "trigger": "W14X873", + "details": "US 3D Section W14X873", + "kind": "type", + "contents": "section US3D W14X873 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W18X65 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W18X65", - "kind":"keyword", - "trigger":"W18X65" + "trigger": "W14X90", + "details": "US 2D Section W14X90", + "kind": "type", + "contents": "section US2D W14X90 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W18X65 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W18X65", - "kind":"keyword", - "trigger":"W18X65" + "trigger": "W14X90", + "details": "US 3D Section W14X90", + "kind": "type", + "contents": "section US3D W14X90 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W18X71 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W18X71", - "kind":"keyword", - "trigger":"W18X71" + "trigger": "W14X99", + "details": "US 2D Section W14X99", + "kind": "type", + "contents": "section US2D W14X99 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W18X71 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W18X71", - "kind":"keyword", - "trigger":"W18X71" + "trigger": "W14X99", + "details": "US 3D Section W14X99", + "kind": "type", + "contents": "section US3D W14X99 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W18X76 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W18X76", - "kind":"keyword", - "trigger":"W18X76" + "trigger": "W16X100", + "details": "US 2D Section W16X100", + "kind": "type", + "contents": "section US2D W16X100 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W18X76 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W18X76", - "kind":"keyword", - "trigger":"W18X76" + "trigger": "W16X100", + "details": "US 3D Section W16X100", + "kind": "type", + "contents": "section US3D W16X100 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W18X86 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W18X86", - "kind":"keyword", - "trigger":"W18X86" + "trigger": "W16X26", + "details": "US 2D Section W16X26", + "kind": "type", + "contents": "section US2D W16X26 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W18X86 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W18X86", - "kind":"keyword", - "trigger":"W18X86" + "trigger": "W16X26", + "details": "US 3D Section W16X26", + "kind": "type", + "contents": "section US3D W16X26 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W18X97 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W18X97", - "kind":"keyword", - "trigger":"W18X97" + "trigger": "W16X31", + "details": "US 2D Section W16X31", + "kind": "type", + "contents": "section US2D W16X31 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W18X97 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W18X97", - "kind":"keyword", - "trigger":"W18X97" + "trigger": "W16X31", + "details": "US 3D Section W16X31", + "kind": "type", + "contents": "section US3D W16X31 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W21X101 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W21X101", - "kind":"keyword", - "trigger":"W21X101" + "trigger": "W16X36", + "details": "US 2D Section W16X36", + "kind": "type", + "contents": "section US2D W16X36 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W21X101 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W21X101", - "kind":"keyword", - "trigger":"W21X101" + "trigger": "W16X36", + "details": "US 3D Section W16X36", + "kind": "type", + "contents": "section US3D W16X36 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W21X111 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W21X111", - "kind":"keyword", - "trigger":"W21X111" + "trigger": "W16X40", + "details": "US 2D Section W16X40", + "kind": "type", + "contents": "section US2D W16X40 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W21X111 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W21X111", - "kind":"keyword", - "trigger":"W21X111" + "trigger": "W16X40", + "details": "US 3D Section W16X40", + "kind": "type", + "contents": "section US3D W16X40 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W21X122 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W21X122", - "kind":"keyword", - "trigger":"W21X122" + "trigger": "W16X45", + "details": "US 2D Section W16X45", + "kind": "type", + "contents": "section US2D W16X45 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W21X122 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W21X122", - "kind":"keyword", - "trigger":"W21X122" + "trigger": "W16X45", + "details": "US 3D Section W16X45", + "kind": "type", + "contents": "section US3D W16X45 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W21X132 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W21X132", - "kind":"keyword", - "trigger":"W21X132" + "trigger": "W16X50", + "details": "US 2D Section W16X50", + "kind": "type", + "contents": "section US2D W16X50 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W21X132 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W21X132", - "kind":"keyword", - "trigger":"W21X132" + "trigger": "W16X50", + "details": "US 3D Section W16X50", + "kind": "type", + "contents": "section US3D W16X50 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W21X147 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W21X147", - "kind":"keyword", - "trigger":"W21X147" + "trigger": "W16X57", + "details": "US 2D Section W16X57", + "kind": "type", + "contents": "section US2D W16X57 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W21X147 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W21X147", - "kind":"keyword", - "trigger":"W21X147" + "trigger": "W16X57", + "details": "US 3D Section W16X57", + "kind": "type", + "contents": "section US3D W16X57 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W21X166 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W21X166", - "kind":"keyword", - "trigger":"W21X166" + "trigger": "W16X67", + "details": "US 2D Section W16X67", + "kind": "type", + "contents": "section US2D W16X67 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W21X166 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W21X166", - "kind":"keyword", - "trigger":"W21X166" + "trigger": "W16X67", + "details": "US 3D Section W16X67", + "kind": "type", + "contents": "section US3D W16X67 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W21X182 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W21X182", - "kind":"keyword", - "trigger":"W21X182" + "trigger": "W16X77", + "details": "US 2D Section W16X77", + "kind": "type", + "contents": "section US2D W16X77 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W21X182 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W21X182", - "kind":"keyword", - "trigger":"W21X182" + "trigger": "W16X77", + "details": "US 3D Section W16X77", + "kind": "type", + "contents": "section US3D W16X77 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W21X201 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W21X201", - "kind":"keyword", - "trigger":"W21X201" + "trigger": "W16X89", + "details": "US 2D Section W16X89", + "kind": "type", + "contents": "section US2D W16X89 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W21X201 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W21X201", - "kind":"keyword", - "trigger":"W21X201" + "trigger": "W16X89", + "details": "US 3D Section W16X89", + "kind": "type", + "contents": "section US3D W16X89 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W21X223 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W21X223", - "kind":"keyword", - "trigger":"W21X223" + "trigger": "W18X106", + "details": "US 2D Section W18X106", + "kind": "type", + "contents": "section US2D W18X106 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W21X223 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W21X223", - "kind":"keyword", - "trigger":"W21X223" + "trigger": "W18X106", + "details": "US 3D Section W18X106", + "kind": "type", + "contents": "section US3D W18X106 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W21X248 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W21X248", - "kind":"keyword", - "trigger":"W21X248" + "trigger": "W18X119", + "details": "US 2D Section W18X119", + "kind": "type", + "contents": "section US2D W18X119 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W21X248 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W21X248", - "kind":"keyword", - "trigger":"W21X248" + "trigger": "W18X119", + "details": "US 3D Section W18X119", + "kind": "type", + "contents": "section US3D W18X119 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W21X275 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W21X275", - "kind":"keyword", - "trigger":"W21X275" + "trigger": "W18X130", + "details": "US 2D Section W18X130", + "kind": "type", + "contents": "section US2D W18X130 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W21X275 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W21X275", - "kind":"keyword", - "trigger":"W21X275" + "trigger": "W18X130", + "details": "US 3D Section W18X130", + "kind": "type", + "contents": "section US3D W18X130 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W21X44 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W21X44", - "kind":"keyword", - "trigger":"W21X44" + "trigger": "W18X143", + "details": "US 2D Section W18X143", + "kind": "type", + "contents": "section US2D W18X143 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W21X44 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W21X44", - "kind":"keyword", - "trigger":"W21X44" + "trigger": "W18X143", + "details": "US 3D Section W18X143", + "kind": "type", + "contents": "section US3D W18X143 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W21X48 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W21X48", - "kind":"keyword", - "trigger":"W21X48" + "trigger": "W18X158", + "details": "US 2D Section W18X158", + "kind": "type", + "contents": "section US2D W18X158 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W21X48 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W21X48", - "kind":"keyword", - "trigger":"W21X48" + "trigger": "W18X158", + "details": "US 3D Section W18X158", + "kind": "type", + "contents": "section US3D W18X158 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W21X50 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W21X50", - "kind":"keyword", - "trigger":"W21X50" + "trigger": "W18X175", + "details": "US 2D Section W18X175", + "kind": "type", + "contents": "section US2D W18X175 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W21X50 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W21X50", - "kind":"keyword", - "trigger":"W21X50" + "trigger": "W18X175", + "details": "US 3D Section W18X175", + "kind": "type", + "contents": "section US3D W18X175 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W21X55 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W21X55", - "kind":"keyword", - "trigger":"W21X55" + "trigger": "W18X192", + "details": "US 2D Section W18X192", + "kind": "type", + "contents": "section US2D W18X192 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W21X55 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W21X55", - "kind":"keyword", - "trigger":"W21X55" + "trigger": "W18X192", + "details": "US 3D Section W18X192", + "kind": "type", + "contents": "section US3D W18X192 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W21X57 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W21X57", - "kind":"keyword", - "trigger":"W21X57" + "trigger": "W18X211", + "details": "US 2D Section W18X211", + "kind": "type", + "contents": "section US2D W18X211 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W21X57 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W21X57", - "kind":"keyword", - "trigger":"W21X57" + "trigger": "W18X211", + "details": "US 3D Section W18X211", + "kind": "type", + "contents": "section US3D W18X211 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W21X62 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W21X62", - "kind":"keyword", - "trigger":"W21X62" + "trigger": "W18X234", + "details": "US 2D Section W18X234", + "kind": "type", + "contents": "section US2D W18X234 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W21X62 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W21X62", - "kind":"keyword", - "trigger":"W21X62" + "trigger": "W18X234", + "details": "US 3D Section W18X234", + "kind": "type", + "contents": "section US3D W18X234 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W21X68 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W21X68", - "kind":"keyword", - "trigger":"W21X68" + "trigger": "W18X258", + "details": "US 2D Section W18X258", + "kind": "type", + "contents": "section US2D W18X258 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W21X68 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W21X68", - "kind":"keyword", - "trigger":"W21X68" + "trigger": "W18X258", + "details": "US 3D Section W18X258", + "kind": "type", + "contents": "section US3D W18X258 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W21X73 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W21X73", - "kind":"keyword", - "trigger":"W21X73" + "trigger": "W18X283", + "details": "US 2D Section W18X283", + "kind": "type", + "contents": "section US2D W18X283 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W21X73 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W21X73", - "kind":"keyword", - "trigger":"W21X73" + "trigger": "W18X283", + "details": "US 3D Section W18X283", + "kind": "type", + "contents": "section US3D W18X283 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W21X83 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W21X83", - "kind":"keyword", - "trigger":"W21X83" + "trigger": "W18X311", + "details": "US 2D Section W18X311", + "kind": "type", + "contents": "section US2D W18X311 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W21X83 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W21X83", - "kind":"keyword", - "trigger":"W21X83" + "trigger": "W18X311", + "details": "US 3D Section W18X311", + "kind": "type", + "contents": "section US3D W18X311 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W21X93 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W21X93", - "kind":"keyword", - "trigger":"W21X93" + "trigger": "W18X35", + "details": "US 2D Section W18X35", + "kind": "type", + "contents": "section US2D W18X35 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W21X93 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W21X93", - "kind":"keyword", - "trigger":"W21X93" + "trigger": "W18X35", + "details": "US 3D Section W18X35", + "kind": "type", + "contents": "section US3D W18X35 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W24X103 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W24X103", - "kind":"keyword", - "trigger":"W24X103" + "trigger": "W18X40", + "details": "US 2D Section W18X40", + "kind": "type", + "contents": "section US2D W18X40 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W24X103 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W24X103", - "kind":"keyword", - "trigger":"W24X103" + "trigger": "W18X40", + "details": "US 3D Section W18X40", + "kind": "type", + "contents": "section US3D W18X40 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W24X104 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W24X104", - "kind":"keyword", - "trigger":"W24X104" + "trigger": "W18X46", + "details": "US 2D Section W18X46", + "kind": "type", + "contents": "section US2D W18X46 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W24X104 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W24X104", - "kind":"keyword", - "trigger":"W24X104" + "trigger": "W18X46", + "details": "US 3D Section W18X46", + "kind": "type", + "contents": "section US3D W18X46 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W24X117 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W24X117", - "kind":"keyword", - "trigger":"W24X117" + "trigger": "W18X50", + "details": "US 2D Section W18X50", + "kind": "type", + "contents": "section US2D W18X50 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W24X117 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W24X117", - "kind":"keyword", - "trigger":"W24X117" + "trigger": "W18X50", + "details": "US 3D Section W18X50", + "kind": "type", + "contents": "section US3D W18X50 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W24X131 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W24X131", - "kind":"keyword", - "trigger":"W24X131" + "trigger": "W18X55", + "details": "US 2D Section W18X55", + "kind": "type", + "contents": "section US2D W18X55 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W24X131 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W24X131", - "kind":"keyword", - "trigger":"W24X131" + "trigger": "W18X55", + "details": "US 3D Section W18X55", + "kind": "type", + "contents": "section US3D W18X55 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W24X146 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W24X146", - "kind":"keyword", - "trigger":"W24X146" + "trigger": "W18X60", + "details": "US 2D Section W18X60", + "kind": "type", + "contents": "section US2D W18X60 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W24X146 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W24X146", - "kind":"keyword", - "trigger":"W24X146" + "trigger": "W18X60", + "details": "US 3D Section W18X60", + "kind": "type", + "contents": "section US3D W18X60 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W24X162 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W24X162", - "kind":"keyword", - "trigger":"W24X162" + "trigger": "W18X65", + "details": "US 2D Section W18X65", + "kind": "type", + "contents": "section US2D W18X65 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W24X162 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W24X162", - "kind":"keyword", - "trigger":"W24X162" + "trigger": "W18X65", + "details": "US 3D Section W18X65", + "kind": "type", + "contents": "section US3D W18X65 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W24X176 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W24X176", - "kind":"keyword", - "trigger":"W24X176" + "trigger": "W18X71", + "details": "US 2D Section W18X71", + "kind": "type", + "contents": "section US2D W18X71 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W24X176 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W24X176", - "kind":"keyword", - "trigger":"W24X176" + "trigger": "W18X71", + "details": "US 3D Section W18X71", + "kind": "type", + "contents": "section US3D W18X71 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W24X192 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W24X192", - "kind":"keyword", - "trigger":"W24X192" + "trigger": "W18X76", + "details": "US 2D Section W18X76", + "kind": "type", + "contents": "section US2D W18X76 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W24X192 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W24X192", - "kind":"keyword", - "trigger":"W24X192" + "trigger": "W18X76", + "details": "US 3D Section W18X76", + "kind": "type", + "contents": "section US3D W18X76 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W24X207 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W24X207", - "kind":"keyword", - "trigger":"W24X207" + "trigger": "W18X86", + "details": "US 2D Section W18X86", + "kind": "type", + "contents": "section US2D W18X86 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W24X207 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W24X207", - "kind":"keyword", - "trigger":"W24X207" + "trigger": "W18X86", + "details": "US 3D Section W18X86", + "kind": "type", + "contents": "section US3D W18X86 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W24X229 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W24X229", - "kind":"keyword", - "trigger":"W24X229" + "trigger": "W18X97", + "details": "US 2D Section W18X97", + "kind": "type", + "contents": "section US2D W18X97 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W24X229 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W24X229", - "kind":"keyword", - "trigger":"W24X229" + "trigger": "W18X97", + "details": "US 3D Section W18X97", + "kind": "type", + "contents": "section US3D W18X97 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W24X250 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W24X250", - "kind":"keyword", - "trigger":"W24X250" + "trigger": "W21X101", + "details": "US 2D Section W21X101", + "kind": "type", + "contents": "section US2D W21X101 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W24X250 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W24X250", - "kind":"keyword", - "trigger":"W24X250" + "trigger": "W21X101", + "details": "US 3D Section W21X101", + "kind": "type", + "contents": "section US3D W21X101 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W24X279 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W24X279", - "kind":"keyword", - "trigger":"W24X279" + "trigger": "W21X111", + "details": "US 2D Section W21X111", + "kind": "type", + "contents": "section US2D W21X111 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W24X279 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W24X279", - "kind":"keyword", - "trigger":"W24X279" + "trigger": "W21X111", + "details": "US 3D Section W21X111", + "kind": "type", + "contents": "section US3D W21X111 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W24X306 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W24X306", - "kind":"keyword", - "trigger":"W24X306" + "trigger": "W21X122", + "details": "US 2D Section W21X122", + "kind": "type", + "contents": "section US2D W21X122 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W24X306 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W24X306", - "kind":"keyword", - "trigger":"W24X306" + "trigger": "W21X122", + "details": "US 3D Section W21X122", + "kind": "type", + "contents": "section US3D W21X122 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W24X335 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W24X335", - "kind":"keyword", - "trigger":"W24X335" + "trigger": "W21X132", + "details": "US 2D Section W21X132", + "kind": "type", + "contents": "section US2D W21X132 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W24X335 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W24X335", - "kind":"keyword", - "trigger":"W24X335" + "trigger": "W21X132", + "details": "US 3D Section W21X132", + "kind": "type", + "contents": "section US3D W21X132 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W24X370 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W24X370", - "kind":"keyword", - "trigger":"W24X370" + "trigger": "W21X147", + "details": "US 2D Section W21X147", + "kind": "type", + "contents": "section US2D W21X147 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W24X370 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W24X370", - "kind":"keyword", - "trigger":"W24X370" + "trigger": "W21X147", + "details": "US 3D Section W21X147", + "kind": "type", + "contents": "section US3D W21X147 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W24X55 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W24X55", - "kind":"keyword", - "trigger":"W24X55" + "trigger": "W21X166", + "details": "US 2D Section W21X166", + "kind": "type", + "contents": "section US2D W21X166 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W24X55 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W24X55", - "kind":"keyword", - "trigger":"W24X55" + "trigger": "W21X166", + "details": "US 3D Section W21X166", + "kind": "type", + "contents": "section US3D W21X166 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W24X62 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W24X62", - "kind":"keyword", - "trigger":"W24X62" + "trigger": "W21X182", + "details": "US 2D Section W21X182", + "kind": "type", + "contents": "section US2D W21X182 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W24X62 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W24X62", - "kind":"keyword", - "trigger":"W24X62" + "trigger": "W21X182", + "details": "US 3D Section W21X182", + "kind": "type", + "contents": "section US3D W21X182 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W24X68 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W24X68", - "kind":"keyword", - "trigger":"W24X68" + "trigger": "W21X201", + "details": "US 2D Section W21X201", + "kind": "type", + "contents": "section US2D W21X201 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W24X68 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W24X68", - "kind":"keyword", - "trigger":"W24X68" + "trigger": "W21X201", + "details": "US 3D Section W21X201", + "kind": "type", + "contents": "section US3D W21X201 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W24X76 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W24X76", - "kind":"keyword", - "trigger":"W24X76" + "trigger": "W21X223", + "details": "US 2D Section W21X223", + "kind": "type", + "contents": "section US2D W21X223 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W24X76 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W24X76", - "kind":"keyword", - "trigger":"W24X76" + "trigger": "W21X223", + "details": "US 3D Section W21X223", + "kind": "type", + "contents": "section US3D W21X223 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W24X84 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W24X84", - "kind":"keyword", - "trigger":"W24X84" + "trigger": "W21X248", + "details": "US 2D Section W21X248", + "kind": "type", + "contents": "section US2D W21X248 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W24X84 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W24X84", - "kind":"keyword", - "trigger":"W24X84" + "trigger": "W21X248", + "details": "US 3D Section W21X248", + "kind": "type", + "contents": "section US3D W21X248 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W24X94 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W24X94", - "kind":"keyword", - "trigger":"W24X94" + "trigger": "W21X275", + "details": "US 2D Section W21X275", + "kind": "type", + "contents": "section US2D W21X275 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W24X94 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W24X94", - "kind":"keyword", - "trigger":"W24X94" + "trigger": "W21X275", + "details": "US 3D Section W21X275", + "kind": "type", + "contents": "section US3D W21X275 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W27X102 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W27X102", - "kind":"keyword", - "trigger":"W27X102" + "trigger": "W21X44", + "details": "US 2D Section W21X44", + "kind": "type", + "contents": "section US2D W21X44 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W27X102 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W27X102", - "kind":"keyword", - "trigger":"W27X102" + "trigger": "W21X44", + "details": "US 3D Section W21X44", + "kind": "type", + "contents": "section US3D W21X44 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W27X114 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W27X114", - "kind":"keyword", - "trigger":"W27X114" + "trigger": "W21X48", + "details": "US 2D Section W21X48", + "kind": "type", + "contents": "section US2D W21X48 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W27X114 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W27X114", - "kind":"keyword", - "trigger":"W27X114" + "trigger": "W21X48", + "details": "US 3D Section W21X48", + "kind": "type", + "contents": "section US3D W21X48 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W27X129 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W27X129", - "kind":"keyword", - "trigger":"W27X129" + "trigger": "W21X50", + "details": "US 2D Section W21X50", + "kind": "type", + "contents": "section US2D W21X50 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W27X129 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W27X129", - "kind":"keyword", - "trigger":"W27X129" + "trigger": "W21X50", + "details": "US 3D Section W21X50", + "kind": "type", + "contents": "section US3D W21X50 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W27X146 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W27X146", - "kind":"keyword", - "trigger":"W27X146" + "trigger": "W21X55", + "details": "US 2D Section W21X55", + "kind": "type", + "contents": "section US2D W21X55 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W27X146 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W27X146", - "kind":"keyword", - "trigger":"W27X146" + "trigger": "W21X55", + "details": "US 3D Section W21X55", + "kind": "type", + "contents": "section US3D W21X55 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W27X161 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W27X161", - "kind":"keyword", - "trigger":"W27X161" + "trigger": "W21X57", + "details": "US 2D Section W21X57", + "kind": "type", + "contents": "section US2D W21X57 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W27X161 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W27X161", - "kind":"keyword", - "trigger":"W27X161" + "trigger": "W21X57", + "details": "US 3D Section W21X57", + "kind": "type", + "contents": "section US3D W21X57 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W27X178 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W27X178", - "kind":"keyword", - "trigger":"W27X178" + "trigger": "W21X62", + "details": "US 2D Section W21X62", + "kind": "type", + "contents": "section US2D W21X62 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W27X178 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W27X178", - "kind":"keyword", - "trigger":"W27X178" + "trigger": "W21X62", + "details": "US 3D Section W21X62", + "kind": "type", + "contents": "section US3D W21X62 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W27X194 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W27X194", - "kind":"keyword", - "trigger":"W27X194" + "trigger": "W21X68", + "details": "US 2D Section W21X68", + "kind": "type", + "contents": "section US2D W21X68 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W27X194 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W27X194", - "kind":"keyword", - "trigger":"W27X194" + "trigger": "W21X68", + "details": "US 3D Section W21X68", + "kind": "type", + "contents": "section US3D W21X68 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W27X217 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W27X217", - "kind":"keyword", - "trigger":"W27X217" + "trigger": "W21X73", + "details": "US 2D Section W21X73", + "kind": "type", + "contents": "section US2D W21X73 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W27X217 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W27X217", - "kind":"keyword", - "trigger":"W27X217" + "trigger": "W21X73", + "details": "US 3D Section W21X73", + "kind": "type", + "contents": "section US3D W21X73 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W27X235 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W27X235", - "kind":"keyword", - "trigger":"W27X235" + "trigger": "W21X83", + "details": "US 2D Section W21X83", + "kind": "type", + "contents": "section US2D W21X83 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W27X235 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W27X235", - "kind":"keyword", - "trigger":"W27X235" + "trigger": "W21X83", + "details": "US 3D Section W21X83", + "kind": "type", + "contents": "section US3D W21X83 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W27X258 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W27X258", - "kind":"keyword", - "trigger":"W27X258" + "trigger": "W21X93", + "details": "US 2D Section W21X93", + "kind": "type", + "contents": "section US2D W21X93 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W27X258 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W27X258", - "kind":"keyword", - "trigger":"W27X258" + "trigger": "W21X93", + "details": "US 3D Section W21X93", + "kind": "type", + "contents": "section US3D W21X93 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W27X281 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W27X281", - "kind":"keyword", - "trigger":"W27X281" + "trigger": "W24X103", + "details": "US 2D Section W24X103", + "kind": "type", + "contents": "section US2D W24X103 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W27X281 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W27X281", - "kind":"keyword", - "trigger":"W27X281" + "trigger": "W24X103", + "details": "US 3D Section W24X103", + "kind": "type", + "contents": "section US3D W24X103 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W27X307 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W27X307", - "kind":"keyword", - "trigger":"W27X307" + "trigger": "W24X104", + "details": "US 2D Section W24X104", + "kind": "type", + "contents": "section US2D W24X104 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W27X307 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W27X307", - "kind":"keyword", - "trigger":"W27X307" + "trigger": "W24X104", + "details": "US 3D Section W24X104", + "kind": "type", + "contents": "section US3D W24X104 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W27X336 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W27X336", - "kind":"keyword", - "trigger":"W27X336" + "trigger": "W24X117", + "details": "US 2D Section W24X117", + "kind": "type", + "contents": "section US2D W24X117 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W27X336 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W27X336", - "kind":"keyword", - "trigger":"W27X336" + "trigger": "W24X117", + "details": "US 3D Section W24X117", + "kind": "type", + "contents": "section US3D W24X117 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W27X368 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W27X368", - "kind":"keyword", - "trigger":"W27X368" + "trigger": "W24X131", + "details": "US 2D Section W24X131", + "kind": "type", + "contents": "section US2D W24X131 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W27X368 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W27X368", - "kind":"keyword", - "trigger":"W27X368" + "trigger": "W24X131", + "details": "US 3D Section W24X131", + "kind": "type", + "contents": "section US3D W24X131 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W27X539 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W27X539", - "kind":"keyword", - "trigger":"W27X539" + "trigger": "W24X146", + "details": "US 2D Section W24X146", + "kind": "type", + "contents": "section US2D W24X146 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W27X539 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W27X539", - "kind":"keyword", - "trigger":"W27X539" + "trigger": "W24X146", + "details": "US 3D Section W24X146", + "kind": "type", + "contents": "section US3D W24X146 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W27X84 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W27X84", - "kind":"keyword", - "trigger":"W27X84" + "trigger": "W24X162", + "details": "US 2D Section W24X162", + "kind": "type", + "contents": "section US2D W24X162 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W27X84 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W27X84", - "kind":"keyword", - "trigger":"W27X84" + "trigger": "W24X162", + "details": "US 3D Section W24X162", + "kind": "type", + "contents": "section US3D W24X162 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W27X94 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W27X94", - "kind":"keyword", - "trigger":"W27X94" + "trigger": "W24X176", + "details": "US 2D Section W24X176", + "kind": "type", + "contents": "section US2D W24X176 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W27X94 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W27X94", - "kind":"keyword", - "trigger":"W27X94" + "trigger": "W24X176", + "details": "US 3D Section W24X176", + "kind": "type", + "contents": "section US3D W24X176 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W30X108 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W30X108", - "kind":"keyword", - "trigger":"W30X108" + "trigger": "W24X192", + "details": "US 2D Section W24X192", + "kind": "type", + "contents": "section US2D W24X192 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W30X108 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W30X108", - "kind":"keyword", - "trigger":"W30X108" + "trigger": "W24X192", + "details": "US 3D Section W24X192", + "kind": "type", + "contents": "section US3D W24X192 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W30X116 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W30X116", - "kind":"keyword", - "trigger":"W30X116" + "trigger": "W24X207", + "details": "US 2D Section W24X207", + "kind": "type", + "contents": "section US2D W24X207 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W30X116 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W30X116", - "kind":"keyword", - "trigger":"W30X116" + "trigger": "W24X207", + "details": "US 3D Section W24X207", + "kind": "type", + "contents": "section US3D W24X207 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W30X124 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W30X124", - "kind":"keyword", - "trigger":"W30X124" + "trigger": "W24X229", + "details": "US 2D Section W24X229", + "kind": "type", + "contents": "section US2D W24X229 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W30X124 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W30X124", - "kind":"keyword", - "trigger":"W30X124" + "trigger": "W24X229", + "details": "US 3D Section W24X229", + "kind": "type", + "contents": "section US3D W24X229 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W30X132 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W30X132", - "kind":"keyword", - "trigger":"W30X132" + "trigger": "W24X250", + "details": "US 2D Section W24X250", + "kind": "type", + "contents": "section US2D W24X250 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W30X132 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W30X132", - "kind":"keyword", - "trigger":"W30X132" + "trigger": "W24X250", + "details": "US 3D Section W24X250", + "kind": "type", + "contents": "section US3D W24X250 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W30X148 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W30X148", - "kind":"keyword", - "trigger":"W30X148" + "trigger": "W24X279", + "details": "US 2D Section W24X279", + "kind": "type", + "contents": "section US2D W24X279 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W30X148 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W30X148", - "kind":"keyword", - "trigger":"W30X148" + "trigger": "W24X279", + "details": "US 3D Section W24X279", + "kind": "type", + "contents": "section US3D W24X279 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W30X173 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W30X173", - "kind":"keyword", - "trigger":"W30X173" + "trigger": "W24X306", + "details": "US 2D Section W24X306", + "kind": "type", + "contents": "section US2D W24X306 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W30X173 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W30X173", - "kind":"keyword", - "trigger":"W30X173" + "trigger": "W24X306", + "details": "US 3D Section W24X306", + "kind": "type", + "contents": "section US3D W24X306 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W30X191 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W30X191", - "kind":"keyword", - "trigger":"W30X191" + "trigger": "W24X335", + "details": "US 2D Section W24X335", + "kind": "type", + "contents": "section US2D W24X335 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W30X191 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W30X191", - "kind":"keyword", - "trigger":"W30X191" + "trigger": "W24X335", + "details": "US 3D Section W24X335", + "kind": "type", + "contents": "section US3D W24X335 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W30X211 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W30X211", - "kind":"keyword", - "trigger":"W30X211" + "trigger": "W24X370", + "details": "US 2D Section W24X370", + "kind": "type", + "contents": "section US2D W24X370 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W30X211 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W30X211", - "kind":"keyword", - "trigger":"W30X211" + "trigger": "W24X370", + "details": "US 3D Section W24X370", + "kind": "type", + "contents": "section US3D W24X370 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W30X235 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W30X235", - "kind":"keyword", - "trigger":"W30X235" + "trigger": "W24X55", + "details": "US 2D Section W24X55", + "kind": "type", + "contents": "section US2D W24X55 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W30X235 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W30X235", - "kind":"keyword", - "trigger":"W30X235" + "trigger": "W24X55", + "details": "US 3D Section W24X55", + "kind": "type", + "contents": "section US3D W24X55 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W30X261 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W30X261", - "kind":"keyword", - "trigger":"W30X261" + "trigger": "W24X62", + "details": "US 2D Section W24X62", + "kind": "type", + "contents": "section US2D W24X62 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W30X261 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W30X261", - "kind":"keyword", - "trigger":"W30X261" + "trigger": "W24X62", + "details": "US 3D Section W24X62", + "kind": "type", + "contents": "section US3D W24X62 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W30X292 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W30X292", - "kind":"keyword", - "trigger":"W30X292" + "trigger": "W24X68", + "details": "US 2D Section W24X68", + "kind": "type", + "contents": "section US2D W24X68 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W30X292 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W30X292", - "kind":"keyword", - "trigger":"W30X292" + "trigger": "W24X68", + "details": "US 3D Section W24X68", + "kind": "type", + "contents": "section US3D W24X68 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W30X326 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W30X326", - "kind":"keyword", - "trigger":"W30X326" + "trigger": "W24X76", + "details": "US 2D Section W24X76", + "kind": "type", + "contents": "section US2D W24X76 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W30X326 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W30X326", - "kind":"keyword", - "trigger":"W30X326" + "trigger": "W24X76", + "details": "US 3D Section W24X76", + "kind": "type", + "contents": "section US3D W24X76 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W30X357 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W30X357", - "kind":"keyword", - "trigger":"W30X357" + "trigger": "W24X84", + "details": "US 2D Section W24X84", + "kind": "type", + "contents": "section US2D W24X84 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W30X357 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W30X357", - "kind":"keyword", - "trigger":"W30X357" + "trigger": "W24X84", + "details": "US 3D Section W24X84", + "kind": "type", + "contents": "section US3D W24X84 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W30X391 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W30X391", - "kind":"keyword", - "trigger":"W30X391" + "trigger": "W24X94", + "details": "US 2D Section W24X94", + "kind": "type", + "contents": "section US2D W24X94 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W30X391 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W30X391", - "kind":"keyword", - "trigger":"W30X391" + "trigger": "W24X94", + "details": "US 3D Section W24X94", + "kind": "type", + "contents": "section US3D W24X94 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W30X90 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W30X90", - "kind":"keyword", - "trigger":"W30X90" + "trigger": "W27X102", + "details": "US 2D Section W27X102", + "kind": "type", + "contents": "section US2D W27X102 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W30X90 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W30X90", - "kind":"keyword", - "trigger":"W30X90" + "trigger": "W27X102", + "details": "US 3D Section W27X102", + "kind": "type", + "contents": "section US3D W27X102 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W30X99 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W30X99", - "kind":"keyword", - "trigger":"W30X99" + "trigger": "W27X114", + "details": "US 2D Section W27X114", + "kind": "type", + "contents": "section US2D W27X114 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W30X99 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W30X99", - "kind":"keyword", - "trigger":"W30X99" + "trigger": "W27X114", + "details": "US 3D Section W27X114", + "kind": "type", + "contents": "section US3D W27X114 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W33X118 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W33X118", - "kind":"keyword", - "trigger":"W33X118" + "trigger": "W27X129", + "details": "US 2D Section W27X129", + "kind": "type", + "contents": "section US2D W27X129 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W33X118 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W33X118", - "kind":"keyword", - "trigger":"W33X118" + "trigger": "W27X129", + "details": "US 3D Section W27X129", + "kind": "type", + "contents": "section US3D W27X129 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W33X130 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W33X130", - "kind":"keyword", - "trigger":"W33X130" + "trigger": "W27X146", + "details": "US 2D Section W27X146", + "kind": "type", + "contents": "section US2D W27X146 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W33X130 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W33X130", - "kind":"keyword", - "trigger":"W33X130" + "trigger": "W27X146", + "details": "US 3D Section W27X146", + "kind": "type", + "contents": "section US3D W27X146 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W33X141 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W33X141", - "kind":"keyword", - "trigger":"W33X141" + "trigger": "W27X161", + "details": "US 2D Section W27X161", + "kind": "type", + "contents": "section US2D W27X161 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W33X141 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W33X141", - "kind":"keyword", - "trigger":"W33X141" + "trigger": "W27X161", + "details": "US 3D Section W27X161", + "kind": "type", + "contents": "section US3D W27X161 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W33X152 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W33X152", - "kind":"keyword", - "trigger":"W33X152" + "trigger": "W27X178", + "details": "US 2D Section W27X178", + "kind": "type", + "contents": "section US2D W27X178 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W33X152 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W33X152", - "kind":"keyword", - "trigger":"W33X152" + "trigger": "W27X178", + "details": "US 3D Section W27X178", + "kind": "type", + "contents": "section US3D W27X178 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W33X169 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W33X169", - "kind":"keyword", - "trigger":"W33X169" + "trigger": "W27X194", + "details": "US 2D Section W27X194", + "kind": "type", + "contents": "section US2D W27X194 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W33X169 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W33X169", - "kind":"keyword", - "trigger":"W33X169" + "trigger": "W27X194", + "details": "US 3D Section W27X194", + "kind": "type", + "contents": "section US3D W27X194 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W33X201 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W33X201", - "kind":"keyword", - "trigger":"W33X201" + "trigger": "W27X217", + "details": "US 2D Section W27X217", + "kind": "type", + "contents": "section US2D W27X217 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W33X201 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W33X201", - "kind":"keyword", - "trigger":"W33X201" + "trigger": "W27X217", + "details": "US 3D Section W27X217", + "kind": "type", + "contents": "section US3D W27X217 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W33X221 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W33X221", - "kind":"keyword", - "trigger":"W33X221" + "trigger": "W27X235", + "details": "US 2D Section W27X235", + "kind": "type", + "contents": "section US2D W27X235 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W33X221 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W33X221", - "kind":"keyword", - "trigger":"W33X221" + "trigger": "W27X235", + "details": "US 3D Section W27X235", + "kind": "type", + "contents": "section US3D W27X235 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W33X241 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W33X241", - "kind":"keyword", - "trigger":"W33X241" + "trigger": "W27X258", + "details": "US 2D Section W27X258", + "kind": "type", + "contents": "section US2D W27X258 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W33X241 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W33X241", - "kind":"keyword", - "trigger":"W33X241" + "trigger": "W27X258", + "details": "US 3D Section W27X258", + "kind": "type", + "contents": "section US3D W27X258 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W33X263 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W33X263", - "kind":"keyword", - "trigger":"W33X263" + "trigger": "W27X281", + "details": "US 2D Section W27X281", + "kind": "type", + "contents": "section US2D W27X281 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W33X263 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W33X263", - "kind":"keyword", - "trigger":"W33X263" + "trigger": "W27X281", + "details": "US 3D Section W27X281", + "kind": "type", + "contents": "section US3D W27X281 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W33X291 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W33X291", - "kind":"keyword", - "trigger":"W33X291" + "trigger": "W27X307", + "details": "US 2D Section W27X307", + "kind": "type", + "contents": "section US2D W27X307 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W33X291 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W33X291", - "kind":"keyword", - "trigger":"W33X291" + "trigger": "W27X307", + "details": "US 3D Section W27X307", + "kind": "type", + "contents": "section US3D W27X307 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W33X318 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W33X318", - "kind":"keyword", - "trigger":"W33X318" + "trigger": "W27X336", + "details": "US 2D Section W27X336", + "kind": "type", + "contents": "section US2D W27X336 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W33X318 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W33X318", - "kind":"keyword", - "trigger":"W33X318" + "trigger": "W27X336", + "details": "US 3D Section W27X336", + "kind": "type", + "contents": "section US3D W27X336 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W33X354 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W33X354", - "kind":"keyword", - "trigger":"W33X354" + "trigger": "W27X368", + "details": "US 2D Section W27X368", + "kind": "type", + "contents": "section US2D W27X368 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W33X354 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W33X354", - "kind":"keyword", - "trigger":"W33X354" + "trigger": "W27X368", + "details": "US 3D Section W27X368", + "kind": "type", + "contents": "section US3D W27X368 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W33X387 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W33X387", - "kind":"keyword", - "trigger":"W33X387" + "trigger": "W27X539", + "details": "US 2D Section W27X539", + "kind": "type", + "contents": "section US2D W27X539 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W33X387 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W33X387", - "kind":"keyword", - "trigger":"W33X387" + "trigger": "W27X539", + "details": "US 3D Section W27X539", + "kind": "type", + "contents": "section US3D W27X539 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W36X135 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W36X135", - "kind":"keyword", - "trigger":"W36X135" + "trigger": "W27X84", + "details": "US 2D Section W27X84", + "kind": "type", + "contents": "section US2D W27X84 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W36X135 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W36X135", - "kind":"keyword", - "trigger":"W36X135" + "trigger": "W27X84", + "details": "US 3D Section W27X84", + "kind": "type", + "contents": "section US3D W27X84 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W36X150 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W36X150", - "kind":"keyword", - "trigger":"W36X150" + "trigger": "W27X94", + "details": "US 2D Section W27X94", + "kind": "type", + "contents": "section US2D W27X94 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W36X150 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W36X150", - "kind":"keyword", - "trigger":"W36X150" + "trigger": "W27X94", + "details": "US 3D Section W27X94", + "kind": "type", + "contents": "section US3D W27X94 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W36X160 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W36X160", - "kind":"keyword", - "trigger":"W36X160" + "trigger": "W30X108", + "details": "US 2D Section W30X108", + "kind": "type", + "contents": "section US2D W30X108 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W36X160 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W36X160", - "kind":"keyword", - "trigger":"W36X160" + "trigger": "W30X108", + "details": "US 3D Section W30X108", + "kind": "type", + "contents": "section US3D W30X108 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W36X170 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W36X170", - "kind":"keyword", - "trigger":"W36X170" + "trigger": "W30X116", + "details": "US 2D Section W30X116", + "kind": "type", + "contents": "section US2D W30X116 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W36X170 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W36X170", - "kind":"keyword", - "trigger":"W36X170" + "trigger": "W30X116", + "details": "US 3D Section W30X116", + "kind": "type", + "contents": "section US3D W30X116 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W36X182 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W36X182", - "kind":"keyword", - "trigger":"W36X182" + "trigger": "W30X124", + "details": "US 2D Section W30X124", + "kind": "type", + "contents": "section US2D W30X124 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W36X182 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W36X182", - "kind":"keyword", - "trigger":"W36X182" + "trigger": "W30X124", + "details": "US 3D Section W30X124", + "kind": "type", + "contents": "section US3D W30X124 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W36X194 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W36X194", - "kind":"keyword", - "trigger":"W36X194" + "trigger": "W30X132", + "details": "US 2D Section W30X132", + "kind": "type", + "contents": "section US2D W30X132 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W36X194 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W36X194", - "kind":"keyword", - "trigger":"W36X194" + "trigger": "W30X132", + "details": "US 3D Section W30X132", + "kind": "type", + "contents": "section US3D W30X132 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W36X210 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W36X210", - "kind":"keyword", - "trigger":"W36X210" + "trigger": "W30X148", + "details": "US 2D Section W30X148", + "kind": "type", + "contents": "section US2D W30X148 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W36X210 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W36X210", - "kind":"keyword", - "trigger":"W36X210" + "trigger": "W30X148", + "details": "US 3D Section W30X148", + "kind": "type", + "contents": "section US3D W30X148 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W36X231 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W36X231", - "kind":"keyword", - "trigger":"W36X231" + "trigger": "W30X173", + "details": "US 2D Section W30X173", + "kind": "type", + "contents": "section US2D W30X173 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W36X231 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W36X231", - "kind":"keyword", - "trigger":"W36X231" + "trigger": "W30X173", + "details": "US 3D Section W30X173", + "kind": "type", + "contents": "section US3D W30X173 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W36X232 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W36X232", - "kind":"keyword", - "trigger":"W36X232" + "trigger": "W30X191", + "details": "US 2D Section W30X191", + "kind": "type", + "contents": "section US2D W30X191 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W36X232 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W36X232", - "kind":"keyword", - "trigger":"W36X232" + "trigger": "W30X191", + "details": "US 3D Section W30X191", + "kind": "type", + "contents": "section US3D W30X191 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W36X247 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W36X247", - "kind":"keyword", - "trigger":"W36X247" + "trigger": "W30X211", + "details": "US 2D Section W30X211", + "kind": "type", + "contents": "section US2D W30X211 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W36X247 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W36X247", - "kind":"keyword", - "trigger":"W36X247" + "trigger": "W30X211", + "details": "US 3D Section W30X211", + "kind": "type", + "contents": "section US3D W30X211 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W36X256 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W36X256", - "kind":"keyword", - "trigger":"W36X256" + "trigger": "W30X235", + "details": "US 2D Section W30X235", + "kind": "type", + "contents": "section US2D W30X235 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W36X256 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W36X256", - "kind":"keyword", - "trigger":"W36X256" + "trigger": "W30X235", + "details": "US 3D Section W30X235", + "kind": "type", + "contents": "section US3D W30X235 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W36X262 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W36X262", - "kind":"keyword", - "trigger":"W36X262" + "trigger": "W30X261", + "details": "US 2D Section W30X261", + "kind": "type", + "contents": "section US2D W30X261 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W36X262 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W36X262", - "kind":"keyword", - "trigger":"W36X262" + "trigger": "W30X261", + "details": "US 3D Section W30X261", + "kind": "type", + "contents": "section US3D W30X261 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W36X282 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W36X282", - "kind":"keyword", - "trigger":"W36X282" + "trigger": "W30X292", + "details": "US 2D Section W30X292", + "kind": "type", + "contents": "section US2D W30X292 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W36X282 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W36X282", - "kind":"keyword", - "trigger":"W36X282" + "trigger": "W30X292", + "details": "US 3D Section W30X292", + "kind": "type", + "contents": "section US3D W30X292 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W36X302 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W36X302", - "kind":"keyword", - "trigger":"W36X302" + "trigger": "W30X326", + "details": "US 2D Section W30X326", + "kind": "type", + "contents": "section US2D W30X326 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W36X302 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W36X302", - "kind":"keyword", - "trigger":"W36X302" + "trigger": "W30X326", + "details": "US 3D Section W30X326", + "kind": "type", + "contents": "section US3D W30X326 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W36X330 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W36X330", - "kind":"keyword", - "trigger":"W36X330" + "trigger": "W30X357", + "details": "US 2D Section W30X357", + "kind": "type", + "contents": "section US2D W30X357 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W36X330 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W36X330", - "kind":"keyword", - "trigger":"W36X330" + "trigger": "W30X357", + "details": "US 3D Section W30X357", + "kind": "type", + "contents": "section US3D W30X357 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W36X361 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W36X361", - "kind":"keyword", - "trigger":"W36X361" + "trigger": "W30X391", + "details": "US 2D Section W30X391", + "kind": "type", + "contents": "section US2D W30X391 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W36X361 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W36X361", - "kind":"keyword", - "trigger":"W36X361" + "trigger": "W30X391", + "details": "US 3D Section W30X391", + "kind": "type", + "contents": "section US3D W30X391 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W36X395 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W36X395", - "kind":"keyword", - "trigger":"W36X395" + "trigger": "W30X90", + "details": "US 2D Section W30X90", + "kind": "type", + "contents": "section US2D W30X90 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W36X395 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W36X395", - "kind":"keyword", - "trigger":"W36X395" + "trigger": "W30X90", + "details": "US 3D Section W30X90", + "kind": "type", + "contents": "section US3D W30X90 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W36X441 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W36X441", - "kind":"keyword", - "trigger":"W36X441" + "trigger": "W30X99", + "details": "US 2D Section W30X99", + "kind": "type", + "contents": "section US2D W30X99 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W36X441 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W36X441", - "kind":"keyword", - "trigger":"W36X441" + "trigger": "W30X99", + "details": "US 3D Section W30X99", + "kind": "type", + "contents": "section US3D W30X99 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W36X487 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W36X487", - "kind":"keyword", - "trigger":"W36X487" + "trigger": "W33X118", + "details": "US 2D Section W33X118", + "kind": "type", + "contents": "section US2D W33X118 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W36X487 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W36X487", - "kind":"keyword", - "trigger":"W36X487" + "trigger": "W33X118", + "details": "US 3D Section W33X118", + "kind": "type", + "contents": "section US3D W33X118 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W36X529 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W36X529", - "kind":"keyword", - "trigger":"W36X529" + "trigger": "W33X130", + "details": "US 2D Section W33X130", + "kind": "type", + "contents": "section US2D W33X130 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W36X529 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W36X529", - "kind":"keyword", - "trigger":"W36X529" + "trigger": "W33X130", + "details": "US 3D Section W33X130", + "kind": "type", + "contents": "section US3D W33X130 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W36X652 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W36X652", - "kind":"keyword", - "trigger":"W36X652" + "trigger": "W33X141", + "details": "US 2D Section W33X141", + "kind": "type", + "contents": "section US2D W33X141 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W36X652 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W36X652", - "kind":"keyword", - "trigger":"W36X652" + "trigger": "W33X141", + "details": "US 3D Section W33X141", + "kind": "type", + "contents": "section US3D W33X141 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W36X723 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W36X723", - "kind":"keyword", - "trigger":"W36X723" + "trigger": "W33X152", + "details": "US 2D Section W33X152", + "kind": "type", + "contents": "section US2D W33X152 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W36X723 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W36X723", - "kind":"keyword", - "trigger":"W36X723" + "trigger": "W33X152", + "details": "US 3D Section W33X152", + "kind": "type", + "contents": "section US3D W33X152 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W36X802 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W36X802", - "kind":"keyword", - "trigger":"W36X802" + "trigger": "W33X169", + "details": "US 2D Section W33X169", + "kind": "type", + "contents": "section US2D W33X169 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W36X802 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W36X802", - "kind":"keyword", - "trigger":"W36X802" + "trigger": "W33X169", + "details": "US 3D Section W33X169", + "kind": "type", + "contents": "section US3D W33X169 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W36X853 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W36X853", - "kind":"keyword", - "trigger":"W36X853" + "trigger": "W33X201", + "details": "US 2D Section W33X201", + "kind": "type", + "contents": "section US2D W33X201 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W36X853 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W36X853", - "kind":"keyword", - "trigger":"W36X853" + "trigger": "W33X201", + "details": "US 3D Section W33X201", + "kind": "type", + "contents": "section US3D W33X201 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W36X925 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W36X925", - "kind":"keyword", - "trigger":"W36X925" + "trigger": "W33X221", + "details": "US 2D Section W33X221", + "kind": "type", + "contents": "section US2D W33X221 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W36X925 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W36X925", - "kind":"keyword", - "trigger":"W36X925" + "trigger": "W33X221", + "details": "US 3D Section W33X221", + "kind": "type", + "contents": "section US3D W33X221 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W40X149 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W40X149", - "kind":"keyword", - "trigger":"W40X149" + "trigger": "W33X241", + "details": "US 2D Section W33X241", + "kind": "type", + "contents": "section US2D W33X241 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W40X149 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W40X149", - "kind":"keyword", - "trigger":"W40X149" + "trigger": "W33X241", + "details": "US 3D Section W33X241", + "kind": "type", + "contents": "section US3D W33X241 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W40X167 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W40X167", - "kind":"keyword", - "trigger":"W40X167" + "trigger": "W33X263", + "details": "US 2D Section W33X263", + "kind": "type", + "contents": "section US2D W33X263 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W40X167 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W40X167", - "kind":"keyword", - "trigger":"W40X167" + "trigger": "W33X263", + "details": "US 3D Section W33X263", + "kind": "type", + "contents": "section US3D W33X263 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W40X183 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W40X183", - "kind":"keyword", - "trigger":"W40X183" + "trigger": "W33X291", + "details": "US 2D Section W33X291", + "kind": "type", + "contents": "section US2D W33X291 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W40X183 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W40X183", - "kind":"keyword", - "trigger":"W40X183" + "trigger": "W33X291", + "details": "US 3D Section W33X291", + "kind": "type", + "contents": "section US3D W33X291 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W40X199 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W40X199", - "kind":"keyword", - "trigger":"W40X199" + "trigger": "W33X318", + "details": "US 2D Section W33X318", + "kind": "type", + "contents": "section US2D W33X318 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W40X199 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W40X199", - "kind":"keyword", - "trigger":"W40X199" + "trigger": "W33X318", + "details": "US 3D Section W33X318", + "kind": "type", + "contents": "section US3D W33X318 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W40X211 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W40X211", - "kind":"keyword", - "trigger":"W40X211" + "trigger": "W33X354", + "details": "US 2D Section W33X354", + "kind": "type", + "contents": "section US2D W33X354 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W40X211 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W40X211", - "kind":"keyword", - "trigger":"W40X211" + "trigger": "W33X354", + "details": "US 3D Section W33X354", + "kind": "type", + "contents": "section US3D W33X354 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W40X215 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W40X215", - "kind":"keyword", - "trigger":"W40X215" + "trigger": "W33X387", + "details": "US 2D Section W33X387", + "kind": "type", + "contents": "section US2D W33X387 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W40X215 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W40X215", - "kind":"keyword", - "trigger":"W40X215" + "trigger": "W33X387", + "details": "US 3D Section W33X387", + "kind": "type", + "contents": "section US3D W33X387 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W40X235 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W40X235", - "kind":"keyword", - "trigger":"W40X235" + "trigger": "W36X135", + "details": "US 2D Section W36X135", + "kind": "type", + "contents": "section US2D W36X135 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W40X235 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W40X235", - "kind":"keyword", - "trigger":"W40X235" + "trigger": "W36X135", + "details": "US 3D Section W36X135", + "kind": "type", + "contents": "section US3D W36X135 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W40X249 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W40X249", - "kind":"keyword", - "trigger":"W40X249" + "trigger": "W36X150", + "details": "US 2D Section W36X150", + "kind": "type", + "contents": "section US2D W36X150 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W40X249 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W40X249", - "kind":"keyword", - "trigger":"W40X249" + "trigger": "W36X150", + "details": "US 3D Section W36X150", + "kind": "type", + "contents": "section US3D W36X150 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W40X264 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W40X264", - "kind":"keyword", - "trigger":"W40X264" + "trigger": "W36X160", + "details": "US 2D Section W36X160", + "kind": "type", + "contents": "section US2D W36X160 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W40X264 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W40X264", - "kind":"keyword", - "trigger":"W40X264" + "trigger": "W36X160", + "details": "US 3D Section W36X160", + "kind": "type", + "contents": "section US3D W36X160 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W40X277 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W40X277", - "kind":"keyword", - "trigger":"W40X277" + "trigger": "W36X170", + "details": "US 2D Section W36X170", + "kind": "type", + "contents": "section US2D W36X170 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W40X277 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W40X277", - "kind":"keyword", - "trigger":"W40X277" + "trigger": "W36X170", + "details": "US 3D Section W36X170", + "kind": "type", + "contents": "section US3D W36X170 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W40X278 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W40X278", - "kind":"keyword", - "trigger":"W40X278" + "trigger": "W36X182", + "details": "US 2D Section W36X182", + "kind": "type", + "contents": "section US2D W36X182 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W40X278 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W40X278", - "kind":"keyword", - "trigger":"W40X278" + "trigger": "W36X182", + "details": "US 3D Section W36X182", + "kind": "type", + "contents": "section US3D W36X182 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W40X294 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W40X294", - "kind":"keyword", - "trigger":"W40X294" + "trigger": "W36X194", + "details": "US 2D Section W36X194", + "kind": "type", + "contents": "section US2D W36X194 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W40X294 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W40X294", - "kind":"keyword", - "trigger":"W40X294" + "trigger": "W36X194", + "details": "US 3D Section W36X194", + "kind": "type", + "contents": "section US3D W36X194 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W40X297 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W40X297", - "kind":"keyword", - "trigger":"W40X297" + "trigger": "W36X210", + "details": "US 2D Section W36X210", + "kind": "type", + "contents": "section US2D W36X210 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W40X297 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W40X297", - "kind":"keyword", - "trigger":"W40X297" + "trigger": "W36X210", + "details": "US 3D Section W36X210", + "kind": "type", + "contents": "section US3D W36X210 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W40X324 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W40X324", - "kind":"keyword", - "trigger":"W40X324" + "trigger": "W36X231", + "details": "US 2D Section W36X231", + "kind": "type", + "contents": "section US2D W36X231 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W40X324 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W40X324", - "kind":"keyword", - "trigger":"W40X324" + "trigger": "W36X231", + "details": "US 3D Section W36X231", + "kind": "type", + "contents": "section US3D W36X231 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W40X327 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W40X327", - "kind":"keyword", - "trigger":"W40X327" + "trigger": "W36X232", + "details": "US 2D Section W36X232", + "kind": "type", + "contents": "section US2D W36X232 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W40X327 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W40X327", - "kind":"keyword", - "trigger":"W40X327" + "trigger": "W36X232", + "details": "US 3D Section W36X232", + "kind": "type", + "contents": "section US3D W36X232 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W40X331 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W40X331", - "kind":"keyword", - "trigger":"W40X331" + "trigger": "W36X247", + "details": "US 2D Section W36X247", + "kind": "type", + "contents": "section US2D W36X247 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W40X331 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W40X331", - "kind":"keyword", - "trigger":"W40X331" + "trigger": "W36X247", + "details": "US 3D Section W36X247", + "kind": "type", + "contents": "section US3D W36X247 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W40X362 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W40X362", - "kind":"keyword", - "trigger":"W40X362" + "trigger": "W36X256", + "details": "US 2D Section W36X256", + "kind": "type", + "contents": "section US2D W36X256 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W40X362 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W40X362", - "kind":"keyword", - "trigger":"W40X362" + "trigger": "W36X256", + "details": "US 3D Section W36X256", + "kind": "type", + "contents": "section US3D W36X256 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W40X372 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W40X372", - "kind":"keyword", - "trigger":"W40X372" + "trigger": "W36X262", + "details": "US 2D Section W36X262", + "kind": "type", + "contents": "section US2D W36X262 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W40X372 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W40X372", - "kind":"keyword", - "trigger":"W40X372" + "trigger": "W36X262", + "details": "US 3D Section W36X262", + "kind": "type", + "contents": "section US3D W36X262 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W40X392 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W40X392", - "kind":"keyword", - "trigger":"W40X392" + "trigger": "W36X282", + "details": "US 2D Section W36X282", + "kind": "type", + "contents": "section US2D W36X282 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W40X392 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W40X392", - "kind":"keyword", - "trigger":"W40X392" + "trigger": "W36X282", + "details": "US 3D Section W36X282", + "kind": "type", + "contents": "section US3D W36X282 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W40X397 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W40X397", - "kind":"keyword", - "trigger":"W40X397" + "trigger": "W36X302", + "details": "US 2D Section W36X302", + "kind": "type", + "contents": "section US2D W36X302 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W40X397 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W40X397", - "kind":"keyword", - "trigger":"W40X397" + "trigger": "W36X302", + "details": "US 3D Section W36X302", + "kind": "type", + "contents": "section US3D W36X302 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W40X431 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W40X431", - "kind":"keyword", - "trigger":"W40X431" + "trigger": "W36X330", + "details": "US 2D Section W36X330", + "kind": "type", + "contents": "section US2D W36X330 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W40X431 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W40X431", - "kind":"keyword", - "trigger":"W40X431" + "trigger": "W36X330", + "details": "US 3D Section W36X330", + "kind": "type", + "contents": "section US3D W36X330 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W40X503 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W40X503", - "kind":"keyword", - "trigger":"W40X503" + "trigger": "W36X361", + "details": "US 2D Section W36X361", + "kind": "type", + "contents": "section US2D W36X361 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W40X503 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W40X503", - "kind":"keyword", - "trigger":"W40X503" + "trigger": "W36X361", + "details": "US 3D Section W36X361", + "kind": "type", + "contents": "section US3D W36X361 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W40X593 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W40X593", - "kind":"keyword", - "trigger":"W40X593" + "trigger": "W36X395", + "details": "US 2D Section W36X395", + "kind": "type", + "contents": "section US2D W36X395 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W40X593 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W40X593", - "kind":"keyword", - "trigger":"W40X593" + "trigger": "W36X395", + "details": "US 3D Section W36X395", + "kind": "type", + "contents": "section US3D W36X395 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W40X655 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W40X655", - "kind":"keyword", - "trigger":"W40X655" + "trigger": "W36X441", + "details": "US 2D Section W36X441", + "kind": "type", + "contents": "section US2D W36X441 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W40X655 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W40X655", - "kind":"keyword", - "trigger":"W40X655" + "trigger": "W36X441", + "details": "US 3D Section W36X441", + "kind": "type", + "contents": "section US3D W36X441 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W44X230 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W44X230", - "kind":"keyword", - "trigger":"W44X230" + "trigger": "W36X487", + "details": "US 2D Section W36X487", + "kind": "type", + "contents": "section US2D W36X487 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W44X230 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W44X230", - "kind":"keyword", - "trigger":"W44X230" + "trigger": "W36X487", + "details": "US 3D Section W36X487", + "kind": "type", + "contents": "section US3D W36X487 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W44X262 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W44X262", - "kind":"keyword", - "trigger":"W44X262" + "trigger": "W36X529", + "details": "US 2D Section W36X529", + "kind": "type", + "contents": "section US2D W36X529 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W44X262 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W44X262", - "kind":"keyword", - "trigger":"W44X262" + "trigger": "W36X529", + "details": "US 3D Section W36X529", + "kind": "type", + "contents": "section US3D W36X529 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W44X290 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W44X290", - "kind":"keyword", - "trigger":"W44X290" + "trigger": "W36X652", + "details": "US 2D Section W36X652", + "kind": "type", + "contents": "section US2D W36X652 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W44X290 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W44X290", - "kind":"keyword", - "trigger":"W44X290" + "trigger": "W36X652", + "details": "US 3D Section W36X652", + "kind": "type", + "contents": "section US3D W36X652 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W44X335 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W44X335", - "kind":"keyword", - "trigger":"W44X335" + "trigger": "W36X723", + "details": "US 2D Section W36X723", + "kind": "type", + "contents": "section US2D W36X723 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W44X335 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W44X335", - "kind":"keyword", - "trigger":"W44X335" + "trigger": "W36X723", + "details": "US 3D Section W36X723", + "kind": "type", + "contents": "section US3D W36X723 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W4X13 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W4X13", - "kind":"keyword", - "trigger":"W4X13" + "trigger": "W36X802", + "details": "US 2D Section W36X802", + "kind": "type", + "contents": "section US2D W36X802 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W4X13 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W4X13", - "kind":"keyword", - "trigger":"W4X13" + "trigger": "W36X802", + "details": "US 3D Section W36X802", + "kind": "type", + "contents": "section US3D W36X802 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W5X16 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W5X16", - "kind":"keyword", - "trigger":"W5X16" + "trigger": "W36X853", + "details": "US 2D Section W36X853", + "kind": "type", + "contents": "section US2D W36X853 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W5X16 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W5X16", - "kind":"keyword", - "trigger":"W5X16" + "trigger": "W36X853", + "details": "US 3D Section W36X853", + "kind": "type", + "contents": "section US3D W36X853 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W5X19 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W5X19", - "kind":"keyword", - "trigger":"W5X19" + "trigger": "W36X925", + "details": "US 2D Section W36X925", + "kind": "type", + "contents": "section US2D W36X925 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W5X19 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W5X19", - "kind":"keyword", - "trigger":"W5X19" + "trigger": "W36X925", + "details": "US 3D Section W36X925", + "kind": "type", + "contents": "section US3D W36X925 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W6X12 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W6X12", - "kind":"keyword", - "trigger":"W6X12" + "trigger": "W40X149", + "details": "US 2D Section W40X149", + "kind": "type", + "contents": "section US2D W40X149 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W6X12 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W6X12", - "kind":"keyword", - "trigger":"W6X12" + "trigger": "W40X149", + "details": "US 3D Section W40X149", + "kind": "type", + "contents": "section US3D W40X149 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W6X15 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W6X15", - "kind":"keyword", - "trigger":"W6X15" + "trigger": "W40X167", + "details": "US 2D Section W40X167", + "kind": "type", + "contents": "section US2D W40X167 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W6X15 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W6X15", - "kind":"keyword", - "trigger":"W6X15" + "trigger": "W40X167", + "details": "US 3D Section W40X167", + "kind": "type", + "contents": "section US3D W40X167 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W6X16 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W6X16", - "kind":"keyword", - "trigger":"W6X16" + "trigger": "W40X183", + "details": "US 2D Section W40X183", + "kind": "type", + "contents": "section US2D W40X183 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W6X16 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W6X16", - "kind":"keyword", - "trigger":"W6X16" + "trigger": "W40X183", + "details": "US 3D Section W40X183", + "kind": "type", + "contents": "section US3D W40X183 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W6X20 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W6X20", - "kind":"keyword", - "trigger":"W6X20" + "trigger": "W40X199", + "details": "US 2D Section W40X199", + "kind": "type", + "contents": "section US2D W40X199 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W6X20 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W6X20", - "kind":"keyword", - "trigger":"W6X20" + "trigger": "W40X199", + "details": "US 3D Section W40X199", + "kind": "type", + "contents": "section US3D W40X199 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W6X25 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W6X25", - "kind":"keyword", - "trigger":"W6X25" + "trigger": "W40X211", + "details": "US 2D Section W40X211", + "kind": "type", + "contents": "section US2D W40X211 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W6X25 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W6X25", - "kind":"keyword", - "trigger":"W6X25" + "trigger": "W40X211", + "details": "US 3D Section W40X211", + "kind": "type", + "contents": "section US3D W40X211 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W6X8.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W6X8.5", - "kind":"keyword", - "trigger":"W6X8.5" + "trigger": "W40X215", + "details": "US 2D Section W40X215", + "kind": "type", + "contents": "section US2D W40X215 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W6X8.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W6X8.5", - "kind":"keyword", - "trigger":"W6X8.5" + "trigger": "W40X215", + "details": "US 3D Section W40X215", + "kind": "type", + "contents": "section US3D W40X215 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W6X9 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W6X9", - "kind":"keyword", - "trigger":"W6X9" + "trigger": "W40X235", + "details": "US 2D Section W40X235", + "kind": "type", + "contents": "section US2D W40X235 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W6X9 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W6X9", - "kind":"keyword", - "trigger":"W6X9" + "trigger": "W40X235", + "details": "US 3D Section W40X235", + "kind": "type", + "contents": "section US3D W40X235 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W8X10 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W8X10", - "kind":"keyword", - "trigger":"W8X10" + "trigger": "W40X249", + "details": "US 2D Section W40X249", + "kind": "type", + "contents": "section US2D W40X249 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W8X10 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W8X10", - "kind":"keyword", - "trigger":"W8X10" + "trigger": "W40X249", + "details": "US 3D Section W40X249", + "kind": "type", + "contents": "section US3D W40X249 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W8X13 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W8X13", - "kind":"keyword", - "trigger":"W8X13" + "trigger": "W40X264", + "details": "US 2D Section W40X264", + "kind": "type", + "contents": "section US2D W40X264 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W8X13 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W8X13", - "kind":"keyword", - "trigger":"W8X13" + "trigger": "W40X264", + "details": "US 3D Section W40X264", + "kind": "type", + "contents": "section US3D W40X264 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W8X15 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W8X15", - "kind":"keyword", - "trigger":"W8X15" + "trigger": "W40X277", + "details": "US 2D Section W40X277", + "kind": "type", + "contents": "section US2D W40X277 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W8X15 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W8X15", - "kind":"keyword", - "trigger":"W8X15" + "trigger": "W40X277", + "details": "US 3D Section W40X277", + "kind": "type", + "contents": "section US3D W40X277 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W8X18 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W8X18", - "kind":"keyword", - "trigger":"W8X18" + "trigger": "W40X278", + "details": "US 2D Section W40X278", + "kind": "type", + "contents": "section US2D W40X278 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W8X18 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W8X18", - "kind":"keyword", - "trigger":"W8X18" + "trigger": "W40X278", + "details": "US 3D Section W40X278", + "kind": "type", + "contents": "section US3D W40X278 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W8X21 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W8X21", - "kind":"keyword", - "trigger":"W8X21" + "trigger": "W40X294", + "details": "US 2D Section W40X294", + "kind": "type", + "contents": "section US2D W40X294 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W8X21 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W8X21", - "kind":"keyword", - "trigger":"W8X21" + "trigger": "W40X294", + "details": "US 3D Section W40X294", + "kind": "type", + "contents": "section US3D W40X294 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W8X24 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W8X24", - "kind":"keyword", - "trigger":"W8X24" + "trigger": "W40X297", + "details": "US 2D Section W40X297", + "kind": "type", + "contents": "section US2D W40X297 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W8X24 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W8X24", - "kind":"keyword", - "trigger":"W8X24" + "trigger": "W40X297", + "details": "US 3D Section W40X297", + "kind": "type", + "contents": "section US3D W40X297 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W8X28 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W8X28", - "kind":"keyword", - "trigger":"W8X28" + "trigger": "W40X324", + "details": "US 2D Section W40X324", + "kind": "type", + "contents": "section US2D W40X324 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W8X28 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W8X28", - "kind":"keyword", - "trigger":"W8X28" + "trigger": "W40X324", + "details": "US 3D Section W40X324", + "kind": "type", + "contents": "section US3D W40X324 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W8X31 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W8X31", - "kind":"keyword", - "trigger":"W8X31" + "trigger": "W40X327", + "details": "US 2D Section W40X327", + "kind": "type", + "contents": "section US2D W40X327 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W8X31 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W8X31", - "kind":"keyword", - "trigger":"W8X31" + "trigger": "W40X327", + "details": "US 3D Section W40X327", + "kind": "type", + "contents": "section US3D W40X327 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W8X35 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W8X35", - "kind":"keyword", - "trigger":"W8X35" + "trigger": "W40X331", + "details": "US 2D Section W40X331", + "kind": "type", + "contents": "section US2D W40X331 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W8X35 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W8X35", - "kind":"keyword", - "trigger":"W8X35" + "trigger": "W40X331", + "details": "US 3D Section W40X331", + "kind": "type", + "contents": "section US3D W40X331 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W8X40 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W8X40", - "kind":"keyword", - "trigger":"W8X40" + "trigger": "W40X362", + "details": "US 2D Section W40X362", + "kind": "type", + "contents": "section US2D W40X362 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W8X40 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W8X40", - "kind":"keyword", - "trigger":"W8X40" + "trigger": "W40X362", + "details": "US 3D Section W40X362", + "kind": "type", + "contents": "section US3D W40X362 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W8X48 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W8X48", - "kind":"keyword", - "trigger":"W8X48" + "trigger": "W40X372", + "details": "US 2D Section W40X372", + "kind": "type", + "contents": "section US2D W40X372 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W8X48 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W8X48", - "kind":"keyword", - "trigger":"W8X48" + "trigger": "W40X372", + "details": "US 3D Section W40X372", + "kind": "type", + "contents": "section US3D W40X372 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W8X58 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W8X58", - "kind":"keyword", - "trigger":"W8X58" + "trigger": "W40X392", + "details": "US 2D Section W40X392", + "kind": "type", + "contents": "section US2D W40X392 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W8X58 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W8X58", - "kind":"keyword", - "trigger":"W8X58" + "trigger": "W40X392", + "details": "US 3D Section W40X392", + "kind": "type", + "contents": "section US3D W40X392 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D W8X67 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section W8X67", - "kind":"keyword", - "trigger":"W8X67" + "trigger": "W40X397", + "details": "US 2D Section W40X397", + "kind": "type", + "contents": "section US2D W40X397 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D W8X67 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section W8X67", - "kind":"keyword", - "trigger":"W8X67" + "trigger": "W40X397", + "details": "US 3D Section W40X397", + "kind": "type", + "contents": "section US3D W40X397 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT10.5X100.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT10.5X100.5", - "kind":"keyword", - "trigger":"WT10.5X100.5" + "trigger": "W40X431", + "details": "US 2D Section W40X431", + "kind": "type", + "contents": "section US2D W40X431 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT10.5X100.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT10.5X100.5", - "kind":"keyword", - "trigger":"WT10.5X100.5" + "trigger": "W40X431", + "details": "US 3D Section W40X431", + "kind": "type", + "contents": "section US3D W40X431 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT10.5X111.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT10.5X111.5", - "kind":"keyword", - "trigger":"WT10.5X111.5" + "trigger": "W40X503", + "details": "US 2D Section W40X503", + "kind": "type", + "contents": "section US2D W40X503 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT10.5X111.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT10.5X111.5", - "kind":"keyword", - "trigger":"WT10.5X111.5" + "trigger": "W40X503", + "details": "US 3D Section W40X503", + "kind": "type", + "contents": "section US3D W40X503 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT10.5X124 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT10.5X124", - "kind":"keyword", - "trigger":"WT10.5X124" + "trigger": "W40X593", + "details": "US 2D Section W40X593", + "kind": "type", + "contents": "section US2D W40X593 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT10.5X124 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT10.5X124", - "kind":"keyword", - "trigger":"WT10.5X124" + "trigger": "W40X593", + "details": "US 3D Section W40X593", + "kind": "type", + "contents": "section US3D W40X593 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT10.5X137.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT10.5X137.5", - "kind":"keyword", - "trigger":"WT10.5X137.5" + "trigger": "W40X655", + "details": "US 2D Section W40X655", + "kind": "type", + "contents": "section US2D W40X655 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT10.5X137.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT10.5X137.5", - "kind":"keyword", - "trigger":"WT10.5X137.5" + "trigger": "W40X655", + "details": "US 3D Section W40X655", + "kind": "type", + "contents": "section US3D W40X655 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT10.5X22 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT10.5X22", - "kind":"keyword", - "trigger":"WT10.5X22" + "trigger": "W44X230", + "details": "US 2D Section W44X230", + "kind": "type", + "contents": "section US2D W44X230 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT10.5X22 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT10.5X22", - "kind":"keyword", - "trigger":"WT10.5X22" + "trigger": "W44X230", + "details": "US 3D Section W44X230", + "kind": "type", + "contents": "section US3D W44X230 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT10.5X24 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT10.5X24", - "kind":"keyword", - "trigger":"WT10.5X24" + "trigger": "W44X262", + "details": "US 2D Section W44X262", + "kind": "type", + "contents": "section US2D W44X262 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT10.5X24 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT10.5X24", - "kind":"keyword", - "trigger":"WT10.5X24" + "trigger": "W44X262", + "details": "US 3D Section W44X262", + "kind": "type", + "contents": "section US3D W44X262 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT10.5X25 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT10.5X25", - "kind":"keyword", - "trigger":"WT10.5X25" + "trigger": "W44X290", + "details": "US 2D Section W44X290", + "kind": "type", + "contents": "section US2D W44X290 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT10.5X25 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT10.5X25", - "kind":"keyword", - "trigger":"WT10.5X25" + "trigger": "W44X290", + "details": "US 3D Section W44X290", + "kind": "type", + "contents": "section US3D W44X290 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT10.5X27.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT10.5X27.5", - "kind":"keyword", - "trigger":"WT10.5X27.5" + "trigger": "W44X335", + "details": "US 2D Section W44X335", + "kind": "type", + "contents": "section US2D W44X335 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT10.5X27.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT10.5X27.5", - "kind":"keyword", - "trigger":"WT10.5X27.5" + "trigger": "W44X335", + "details": "US 3D Section W44X335", + "kind": "type", + "contents": "section US3D W44X335 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT10.5X28.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT10.5X28.5", - "kind":"keyword", - "trigger":"WT10.5X28.5" + "trigger": "W4X13", + "details": "US 2D Section W4X13", + "kind": "type", + "contents": "section US2D W4X13 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT10.5X28.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT10.5X28.5", - "kind":"keyword", - "trigger":"WT10.5X28.5" + "trigger": "W4X13", + "details": "US 3D Section W4X13", + "kind": "type", + "contents": "section US3D W4X13 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT10.5X31 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT10.5X31", - "kind":"keyword", - "trigger":"WT10.5X31" + "trigger": "W5X16", + "details": "US 2D Section W5X16", + "kind": "type", + "contents": "section US2D W5X16 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT10.5X31 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT10.5X31", - "kind":"keyword", - "trigger":"WT10.5X31" + "trigger": "W5X16", + "details": "US 3D Section W5X16", + "kind": "type", + "contents": "section US3D W5X16 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT10.5X34 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT10.5X34", - "kind":"keyword", - "trigger":"WT10.5X34" + "trigger": "W5X19", + "details": "US 2D Section W5X19", + "kind": "type", + "contents": "section US2D W5X19 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT10.5X34 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT10.5X34", - "kind":"keyword", - "trigger":"WT10.5X34" + "trigger": "W5X19", + "details": "US 3D Section W5X19", + "kind": "type", + "contents": "section US3D W5X19 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT10.5X36.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT10.5X36.5", - "kind":"keyword", - "trigger":"WT10.5X36.5" + "trigger": "W6X12", + "details": "US 2D Section W6X12", + "kind": "type", + "contents": "section US2D W6X12 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT10.5X36.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT10.5X36.5", - "kind":"keyword", - "trigger":"WT10.5X36.5" + "trigger": "W6X12", + "details": "US 3D Section W6X12", + "kind": "type", + "contents": "section US3D W6X12 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT10.5X41.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT10.5X41.5", - "kind":"keyword", - "trigger":"WT10.5X41.5" + "trigger": "W6X15", + "details": "US 2D Section W6X15", + "kind": "type", + "contents": "section US2D W6X15 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT10.5X41.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT10.5X41.5", - "kind":"keyword", - "trigger":"WT10.5X41.5" + "trigger": "W6X15", + "details": "US 3D Section W6X15", + "kind": "type", + "contents": "section US3D W6X15 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT10.5X46.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT10.5X46.5", - "kind":"keyword", - "trigger":"WT10.5X46.5" + "trigger": "W6X16", + "details": "US 2D Section W6X16", + "kind": "type", + "contents": "section US2D W6X16 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT10.5X46.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT10.5X46.5", - "kind":"keyword", - "trigger":"WT10.5X46.5" + "trigger": "W6X16", + "details": "US 3D Section W6X16", + "kind": "type", + "contents": "section US3D W6X16 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT10.5X50.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT10.5X50.5", - "kind":"keyword", - "trigger":"WT10.5X50.5" + "trigger": "W6X20", + "details": "US 2D Section W6X20", + "kind": "type", + "contents": "section US2D W6X20 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT10.5X50.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT10.5X50.5", - "kind":"keyword", - "trigger":"WT10.5X50.5" + "trigger": "W6X20", + "details": "US 3D Section W6X20", + "kind": "type", + "contents": "section US3D W6X20 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT10.5X55.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT10.5X55.5", - "kind":"keyword", - "trigger":"WT10.5X55.5" + "trigger": "W6X25", + "details": "US 2D Section W6X25", + "kind": "type", + "contents": "section US2D W6X25 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT10.5X55.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT10.5X55.5", - "kind":"keyword", - "trigger":"WT10.5X55.5" + "trigger": "W6X25", + "details": "US 3D Section W6X25", + "kind": "type", + "contents": "section US3D W6X25 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT10.5X61 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT10.5X61", - "kind":"keyword", - "trigger":"WT10.5X61" + "trigger": "W6X8.5", + "details": "US 2D Section W6X8.5", + "kind": "type", + "contents": "section US2D W6X8.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT10.5X61 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT10.5X61", - "kind":"keyword", - "trigger":"WT10.5X61" + "trigger": "W6X8.5", + "details": "US 3D Section W6X8.5", + "kind": "type", + "contents": "section US3D W6X8.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT10.5X66 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT10.5X66", - "kind":"keyword", - "trigger":"WT10.5X66" + "trigger": "W6X9", + "details": "US 2D Section W6X9", + "kind": "type", + "contents": "section US2D W6X9 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT10.5X66 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT10.5X66", - "kind":"keyword", - "trigger":"WT10.5X66" + "trigger": "W6X9", + "details": "US 3D Section W6X9", + "kind": "type", + "contents": "section US3D W6X9 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT10.5X73.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT10.5X73.5", - "kind":"keyword", - "trigger":"WT10.5X73.5" + "trigger": "W8X10", + "details": "US 2D Section W8X10", + "kind": "type", + "contents": "section US2D W8X10 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT10.5X73.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT10.5X73.5", - "kind":"keyword", - "trigger":"WT10.5X73.5" + "trigger": "W8X10", + "details": "US 3D Section W8X10", + "kind": "type", + "contents": "section US3D W8X10 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT10.5X83 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT10.5X83", - "kind":"keyword", - "trigger":"WT10.5X83" + "trigger": "W8X13", + "details": "US 2D Section W8X13", + "kind": "type", + "contents": "section US2D W8X13 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT10.5X83 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT10.5X83", - "kind":"keyword", - "trigger":"WT10.5X83" + "trigger": "W8X13", + "details": "US 3D Section W8X13", + "kind": "type", + "contents": "section US3D W8X13 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT10.5X91 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT10.5X91", - "kind":"keyword", - "trigger":"WT10.5X91" + "trigger": "W8X15", + "details": "US 2D Section W8X15", + "kind": "type", + "contents": "section US2D W8X15 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT10.5X91 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT10.5X91", - "kind":"keyword", - "trigger":"WT10.5X91" + "trigger": "W8X15", + "details": "US 3D Section W8X15", + "kind": "type", + "contents": "section US3D W8X15 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT12X103.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT12X103.5", - "kind":"keyword", - "trigger":"WT12X103.5" + "trigger": "W8X18", + "details": "US 2D Section W8X18", + "kind": "type", + "contents": "section US2D W8X18 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT12X103.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT12X103.5", - "kind":"keyword", - "trigger":"WT12X103.5" + "trigger": "W8X18", + "details": "US 3D Section W8X18", + "kind": "type", + "contents": "section US3D W8X18 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT12X114.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT12X114.5", - "kind":"keyword", - "trigger":"WT12X114.5" + "trigger": "W8X21", + "details": "US 2D Section W8X21", + "kind": "type", + "contents": "section US2D W8X21 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT12X114.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT12X114.5", - "kind":"keyword", - "trigger":"WT12X114.5" + "trigger": "W8X21", + "details": "US 3D Section W8X21", + "kind": "type", + "contents": "section US3D W8X21 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT12X125 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT12X125", - "kind":"keyword", - "trigger":"WT12X125" + "trigger": "W8X24", + "details": "US 2D Section W8X24", + "kind": "type", + "contents": "section US2D W8X24 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT12X125 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT12X125", - "kind":"keyword", - "trigger":"WT12X125" + "trigger": "W8X24", + "details": "US 3D Section W8X24", + "kind": "type", + "contents": "section US3D W8X24 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT12X139.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT12X139.5", - "kind":"keyword", - "trigger":"WT12X139.5" + "trigger": "W8X28", + "details": "US 2D Section W8X28", + "kind": "type", + "contents": "section US2D W8X28 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT12X139.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT12X139.5", - "kind":"keyword", - "trigger":"WT12X139.5" + "trigger": "W8X28", + "details": "US 3D Section W8X28", + "kind": "type", + "contents": "section US3D W8X28 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT12X153 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT12X153", - "kind":"keyword", - "trigger":"WT12X153" + "trigger": "W8X31", + "details": "US 2D Section W8X31", + "kind": "type", + "contents": "section US2D W8X31 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT12X153 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT12X153", - "kind":"keyword", - "trigger":"WT12X153" + "trigger": "W8X31", + "details": "US 3D Section W8X31", + "kind": "type", + "contents": "section US3D W8X31 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT12X167.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT12X167.5", - "kind":"keyword", - "trigger":"WT12X167.5" + "trigger": "W8X35", + "details": "US 2D Section W8X35", + "kind": "type", + "contents": "section US2D W8X35 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT12X167.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT12X167.5", - "kind":"keyword", - "trigger":"WT12X167.5" + "trigger": "W8X35", + "details": "US 3D Section W8X35", + "kind": "type", + "contents": "section US3D W8X35 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT12X185 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT12X185", - "kind":"keyword", - "trigger":"WT12X185" + "trigger": "W8X40", + "details": "US 2D Section W8X40", + "kind": "type", + "contents": "section US2D W8X40 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT12X185 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT12X185", - "kind":"keyword", - "trigger":"WT12X185" + "trigger": "W8X40", + "details": "US 3D Section W8X40", + "kind": "type", + "contents": "section US3D W8X40 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT12X27.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT12X27.5", - "kind":"keyword", - "trigger":"WT12X27.5" + "trigger": "W8X48", + "details": "US 2D Section W8X48", + "kind": "type", + "contents": "section US2D W8X48 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT12X27.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT12X27.5", - "kind":"keyword", - "trigger":"WT12X27.5" + "trigger": "W8X48", + "details": "US 3D Section W8X48", + "kind": "type", + "contents": "section US3D W8X48 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT12X31 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT12X31", - "kind":"keyword", - "trigger":"WT12X31" + "trigger": "W8X58", + "details": "US 2D Section W8X58", + "kind": "type", + "contents": "section US2D W8X58 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT12X31 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT12X31", - "kind":"keyword", - "trigger":"WT12X31" + "trigger": "W8X58", + "details": "US 3D Section W8X58", + "kind": "type", + "contents": "section US3D W8X58 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT12X34 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT12X34", - "kind":"keyword", - "trigger":"WT12X34" + "trigger": "W8X67", + "details": "US 2D Section W8X67", + "kind": "type", + "contents": "section US2D W8X67 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT12X34 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT12X34", - "kind":"keyword", - "trigger":"WT12X34" + "trigger": "W8X67", + "details": "US 3D Section W8X67", + "kind": "type", + "contents": "section US3D W8X67 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT12X38 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT12X38", - "kind":"keyword", - "trigger":"WT12X38" + "trigger": "WT10.5X100.5", + "details": "US 2D Section WT10.5X100.5", + "kind": "type", + "contents": "section US2D WT10.5X100.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT12X38 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT12X38", - "kind":"keyword", - "trigger":"WT12X38" + "trigger": "WT10.5X100.5", + "details": "US 3D Section WT10.5X100.5", + "kind": "type", + "contents": "section US3D WT10.5X100.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT12X42 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT12X42", - "kind":"keyword", - "trigger":"WT12X42" + "trigger": "WT10.5X111.5", + "details": "US 2D Section WT10.5X111.5", + "kind": "type", + "contents": "section US2D WT10.5X111.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT12X42 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT12X42", - "kind":"keyword", - "trigger":"WT12X42" + "trigger": "WT10.5X111.5", + "details": "US 3D Section WT10.5X111.5", + "kind": "type", + "contents": "section US3D WT10.5X111.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT12X47 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT12X47", - "kind":"keyword", - "trigger":"WT12X47" + "trigger": "WT10.5X124", + "details": "US 2D Section WT10.5X124", + "kind": "type", + "contents": "section US2D WT10.5X124 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT12X47 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT12X47", - "kind":"keyword", - "trigger":"WT12X47" + "trigger": "WT10.5X124", + "details": "US 3D Section WT10.5X124", + "kind": "type", + "contents": "section US3D WT10.5X124 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT12X51.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT12X51.5", - "kind":"keyword", - "trigger":"WT12X51.5" + "trigger": "WT10.5X137.5", + "details": "US 2D Section WT10.5X137.5", + "kind": "type", + "contents": "section US2D WT10.5X137.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT12X51.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT12X51.5", - "kind":"keyword", - "trigger":"WT12X51.5" + "trigger": "WT10.5X137.5", + "details": "US 3D Section WT10.5X137.5", + "kind": "type", + "contents": "section US3D WT10.5X137.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT12X52 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT12X52", - "kind":"keyword", - "trigger":"WT12X52" + "trigger": "WT10.5X22", + "details": "US 2D Section WT10.5X22", + "kind": "type", + "contents": "section US2D WT10.5X22 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT12X52 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT12X52", - "kind":"keyword", - "trigger":"WT12X52" + "trigger": "WT10.5X22", + "details": "US 3D Section WT10.5X22", + "kind": "type", + "contents": "section US3D WT10.5X22 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT12X58.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT12X58.5", - "kind":"keyword", - "trigger":"WT12X58.5" + "trigger": "WT10.5X24", + "details": "US 2D Section WT10.5X24", + "kind": "type", + "contents": "section US2D WT10.5X24 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT12X58.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT12X58.5", - "kind":"keyword", - "trigger":"WT12X58.5" + "trigger": "WT10.5X24", + "details": "US 3D Section WT10.5X24", + "kind": "type", + "contents": "section US3D WT10.5X24 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT12X65.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT12X65.5", - "kind":"keyword", - "trigger":"WT12X65.5" + "trigger": "WT10.5X25", + "details": "US 2D Section WT10.5X25", + "kind": "type", + "contents": "section US2D WT10.5X25 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT12X65.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT12X65.5", - "kind":"keyword", - "trigger":"WT12X65.5" + "trigger": "WT10.5X25", + "details": "US 3D Section WT10.5X25", + "kind": "type", + "contents": "section US3D WT10.5X25 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT12X73 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT12X73", - "kind":"keyword", - "trigger":"WT12X73" + "trigger": "WT10.5X27.5", + "details": "US 2D Section WT10.5X27.5", + "kind": "type", + "contents": "section US2D WT10.5X27.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT12X73 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT12X73", - "kind":"keyword", - "trigger":"WT12X73" + "trigger": "WT10.5X27.5", + "details": "US 3D Section WT10.5X27.5", + "kind": "type", + "contents": "section US3D WT10.5X27.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT12X81 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT12X81", - "kind":"keyword", - "trigger":"WT12X81" + "trigger": "WT10.5X28.5", + "details": "US 2D Section WT10.5X28.5", + "kind": "type", + "contents": "section US2D WT10.5X28.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT12X81 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT12X81", - "kind":"keyword", - "trigger":"WT12X81" + "trigger": "WT10.5X28.5", + "details": "US 3D Section WT10.5X28.5", + "kind": "type", + "contents": "section US3D WT10.5X28.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT12X88 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT12X88", - "kind":"keyword", - "trigger":"WT12X88" + "trigger": "WT10.5X31", + "details": "US 2D Section WT10.5X31", + "kind": "type", + "contents": "section US2D WT10.5X31 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT12X88 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT12X88", - "kind":"keyword", - "trigger":"WT12X88" + "trigger": "WT10.5X31", + "details": "US 3D Section WT10.5X31", + "kind": "type", + "contents": "section US3D WT10.5X31 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT12X96 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT12X96", - "kind":"keyword", - "trigger":"WT12X96" + "trigger": "WT10.5X34", + "details": "US 2D Section WT10.5X34", + "kind": "type", + "contents": "section US2D WT10.5X34 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT12X96 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT12X96", - "kind":"keyword", - "trigger":"WT12X96" + "trigger": "WT10.5X34", + "details": "US 3D Section WT10.5X34", + "kind": "type", + "contents": "section US3D WT10.5X34 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT13.5X108.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT13.5X108.5", - "kind":"keyword", - "trigger":"WT13.5X108.5" + "trigger": "WT10.5X36.5", + "details": "US 2D Section WT10.5X36.5", + "kind": "type", + "contents": "section US2D WT10.5X36.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT13.5X108.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT13.5X108.5", - "kind":"keyword", - "trigger":"WT13.5X108.5" + "trigger": "WT10.5X36.5", + "details": "US 3D Section WT10.5X36.5", + "kind": "type", + "contents": "section US3D WT10.5X36.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT13.5X117.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT13.5X117.5", - "kind":"keyword", - "trigger":"WT13.5X117.5" + "trigger": "WT10.5X41.5", + "details": "US 2D Section WT10.5X41.5", + "kind": "type", + "contents": "section US2D WT10.5X41.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT13.5X117.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT13.5X117.5", - "kind":"keyword", - "trigger":"WT13.5X117.5" + "trigger": "WT10.5X41.5", + "details": "US 3D Section WT10.5X41.5", + "kind": "type", + "contents": "section US3D WT10.5X41.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT13.5X129 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT13.5X129", - "kind":"keyword", - "trigger":"WT13.5X129" + "trigger": "WT10.5X46.5", + "details": "US 2D Section WT10.5X46.5", + "kind": "type", + "contents": "section US2D WT10.5X46.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT13.5X129 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT13.5X129", - "kind":"keyword", - "trigger":"WT13.5X129" + "trigger": "WT10.5X46.5", + "details": "US 3D Section WT10.5X46.5", + "kind": "type", + "contents": "section US3D WT10.5X46.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT13.5X140.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT13.5X140.5", - "kind":"keyword", - "trigger":"WT13.5X140.5" + "trigger": "WT10.5X50.5", + "details": "US 2D Section WT10.5X50.5", + "kind": "type", + "contents": "section US2D WT10.5X50.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT13.5X140.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT13.5X140.5", - "kind":"keyword", - "trigger":"WT13.5X140.5" + "trigger": "WT10.5X50.5", + "details": "US 3D Section WT10.5X50.5", + "kind": "type", + "contents": "section US3D WT10.5X50.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT13.5X153.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT13.5X153.5", - "kind":"keyword", - "trigger":"WT13.5X153.5" + "trigger": "WT10.5X55.5", + "details": "US 2D Section WT10.5X55.5", + "kind": "type", + "contents": "section US2D WT10.5X55.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT13.5X153.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT13.5X153.5", - "kind":"keyword", - "trigger":"WT13.5X153.5" + "trigger": "WT10.5X55.5", + "details": "US 3D Section WT10.5X55.5", + "kind": "type", + "contents": "section US3D WT10.5X55.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT13.5X168 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT13.5X168", - "kind":"keyword", - "trigger":"WT13.5X168" + "trigger": "WT10.5X61", + "details": "US 2D Section WT10.5X61", + "kind": "type", + "contents": "section US2D WT10.5X61 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT13.5X168 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT13.5X168", - "kind":"keyword", - "trigger":"WT13.5X168" + "trigger": "WT10.5X61", + "details": "US 3D Section WT10.5X61", + "kind": "type", + "contents": "section US3D WT10.5X61 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT13.5X184 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT13.5X184", - "kind":"keyword", - "trigger":"WT13.5X184" + "trigger": "WT10.5X66", + "details": "US 2D Section WT10.5X66", + "kind": "type", + "contents": "section US2D WT10.5X66 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT13.5X184 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT13.5X184", - "kind":"keyword", - "trigger":"WT13.5X184" + "trigger": "WT10.5X66", + "details": "US 3D Section WT10.5X66", + "kind": "type", + "contents": "section US3D WT10.5X66 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT13.5X269.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT13.5X269.5", - "kind":"keyword", - "trigger":"WT13.5X269.5" + "trigger": "WT10.5X73.5", + "details": "US 2D Section WT10.5X73.5", + "kind": "type", + "contents": "section US2D WT10.5X73.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT13.5X269.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT13.5X269.5", - "kind":"keyword", - "trigger":"WT13.5X269.5" + "trigger": "WT10.5X73.5", + "details": "US 3D Section WT10.5X73.5", + "kind": "type", + "contents": "section US3D WT10.5X73.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT13.5X42 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT13.5X42", - "kind":"keyword", - "trigger":"WT13.5X42" + "trigger": "WT10.5X83", + "details": "US 2D Section WT10.5X83", + "kind": "type", + "contents": "section US2D WT10.5X83 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT13.5X42 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT13.5X42", - "kind":"keyword", - "trigger":"WT13.5X42" + "trigger": "WT10.5X83", + "details": "US 3D Section WT10.5X83", + "kind": "type", + "contents": "section US3D WT10.5X83 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT13.5X47 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT13.5X47", - "kind":"keyword", - "trigger":"WT13.5X47" + "trigger": "WT10.5X91", + "details": "US 2D Section WT10.5X91", + "kind": "type", + "contents": "section US2D WT10.5X91 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT13.5X47 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT13.5X47", - "kind":"keyword", - "trigger":"WT13.5X47" + "trigger": "WT10.5X91", + "details": "US 3D Section WT10.5X91", + "kind": "type", + "contents": "section US3D WT10.5X91 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT13.5X51 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT13.5X51", - "kind":"keyword", - "trigger":"WT13.5X51" + "trigger": "WT12X103.5", + "details": "US 2D Section WT12X103.5", + "kind": "type", + "contents": "section US2D WT12X103.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT13.5X51 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT13.5X51", - "kind":"keyword", - "trigger":"WT13.5X51" + "trigger": "WT12X103.5", + "details": "US 3D Section WT12X103.5", + "kind": "type", + "contents": "section US3D WT12X103.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT13.5X57 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT13.5X57", - "kind":"keyword", - "trigger":"WT13.5X57" + "trigger": "WT12X114.5", + "details": "US 2D Section WT12X114.5", + "kind": "type", + "contents": "section US2D WT12X114.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT13.5X57 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT13.5X57", - "kind":"keyword", - "trigger":"WT13.5X57" + "trigger": "WT12X114.5", + "details": "US 3D Section WT12X114.5", + "kind": "type", + "contents": "section US3D WT12X114.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT13.5X64.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT13.5X64.5", - "kind":"keyword", - "trigger":"WT13.5X64.5" + "trigger": "WT12X125", + "details": "US 2D Section WT12X125", + "kind": "type", + "contents": "section US2D WT12X125 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT13.5X64.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT13.5X64.5", - "kind":"keyword", - "trigger":"WT13.5X64.5" + "trigger": "WT12X125", + "details": "US 3D Section WT12X125", + "kind": "type", + "contents": "section US3D WT12X125 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT13.5X73 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT13.5X73", - "kind":"keyword", - "trigger":"WT13.5X73" + "trigger": "WT12X139.5", + "details": "US 2D Section WT12X139.5", + "kind": "type", + "contents": "section US2D WT12X139.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT13.5X73 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT13.5X73", - "kind":"keyword", - "trigger":"WT13.5X73" + "trigger": "WT12X139.5", + "details": "US 3D Section WT12X139.5", + "kind": "type", + "contents": "section US3D WT12X139.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT13.5X80.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT13.5X80.5", - "kind":"keyword", - "trigger":"WT13.5X80.5" + "trigger": "WT12X153", + "details": "US 2D Section WT12X153", + "kind": "type", + "contents": "section US2D WT12X153 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT13.5X80.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT13.5X80.5", - "kind":"keyword", - "trigger":"WT13.5X80.5" + "trigger": "WT12X153", + "details": "US 3D Section WT12X153", + "kind": "type", + "contents": "section US3D WT12X153 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT13.5X89 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT13.5X89", - "kind":"keyword", - "trigger":"WT13.5X89" + "trigger": "WT12X167.5", + "details": "US 2D Section WT12X167.5", + "kind": "type", + "contents": "section US2D WT12X167.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT13.5X89 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT13.5X89", - "kind":"keyword", - "trigger":"WT13.5X89" + "trigger": "WT12X167.5", + "details": "US 3D Section WT12X167.5", + "kind": "type", + "contents": "section US3D WT12X167.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT13.5X97 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT13.5X97", - "kind":"keyword", - "trigger":"WT13.5X97" + "trigger": "WT12X185", + "details": "US 2D Section WT12X185", + "kind": "type", + "contents": "section US2D WT12X185 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT13.5X97 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT13.5X97", - "kind":"keyword", - "trigger":"WT13.5X97" + "trigger": "WT12X185", + "details": "US 3D Section WT12X185", + "kind": "type", + "contents": "section US3D WT12X185 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT15X105.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT15X105.5", - "kind":"keyword", - "trigger":"WT15X105.5" + "trigger": "WT12X27.5", + "details": "US 2D Section WT12X27.5", + "kind": "type", + "contents": "section US2D WT12X27.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT15X105.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT15X105.5", - "kind":"keyword", - "trigger":"WT15X105.5" + "trigger": "WT12X27.5", + "details": "US 3D Section WT12X27.5", + "kind": "type", + "contents": "section US3D WT12X27.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT15X117.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT15X117.5", - "kind":"keyword", - "trigger":"WT15X117.5" + "trigger": "WT12X31", + "details": "US 2D Section WT12X31", + "kind": "type", + "contents": "section US2D WT12X31 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT15X117.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT15X117.5", - "kind":"keyword", - "trigger":"WT15X117.5" + "trigger": "WT12X31", + "details": "US 3D Section WT12X31", + "kind": "type", + "contents": "section US3D WT12X31 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT15X130.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT15X130.5", - "kind":"keyword", - "trigger":"WT15X130.5" + "trigger": "WT12X34", + "details": "US 2D Section WT12X34", + "kind": "type", + "contents": "section US2D WT12X34 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT15X130.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT15X130.5", - "kind":"keyword", - "trigger":"WT15X130.5" + "trigger": "WT12X34", + "details": "US 3D Section WT12X34", + "kind": "type", + "contents": "section US3D WT12X34 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT15X146 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT15X146", - "kind":"keyword", - "trigger":"WT15X146" + "trigger": "WT12X38", + "details": "US 2D Section WT12X38", + "kind": "type", + "contents": "section US2D WT12X38 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT15X146 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT15X146", - "kind":"keyword", - "trigger":"WT15X146" + "trigger": "WT12X38", + "details": "US 3D Section WT12X38", + "kind": "type", + "contents": "section US3D WT12X38 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT15X163 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT15X163", - "kind":"keyword", - "trigger":"WT15X163" + "trigger": "WT12X42", + "details": "US 2D Section WT12X42", + "kind": "type", + "contents": "section US2D WT12X42 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT15X163 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT15X163", - "kind":"keyword", - "trigger":"WT15X163" + "trigger": "WT12X42", + "details": "US 3D Section WT12X42", + "kind": "type", + "contents": "section US3D WT12X42 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT15X178.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT15X178.5", - "kind":"keyword", - "trigger":"WT15X178.5" + "trigger": "WT12X47", + "details": "US 2D Section WT12X47", + "kind": "type", + "contents": "section US2D WT12X47 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT15X178.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT15X178.5", - "kind":"keyword", - "trigger":"WT15X178.5" + "trigger": "WT12X47", + "details": "US 3D Section WT12X47", + "kind": "type", + "contents": "section US3D WT12X47 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT15X195.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT15X195.5", - "kind":"keyword", - "trigger":"WT15X195.5" + "trigger": "WT12X51.5", + "details": "US 2D Section WT12X51.5", + "kind": "type", + "contents": "section US2D WT12X51.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT15X195.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT15X195.5", - "kind":"keyword", - "trigger":"WT15X195.5" + "trigger": "WT12X51.5", + "details": "US 3D Section WT12X51.5", + "kind": "type", + "contents": "section US3D WT12X51.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT15X45 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT15X45", - "kind":"keyword", - "trigger":"WT15X45" + "trigger": "WT12X52", + "details": "US 2D Section WT12X52", + "kind": "type", + "contents": "section US2D WT12X52 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT15X45 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT15X45", - "kind":"keyword", - "trigger":"WT15X45" + "trigger": "WT12X52", + "details": "US 3D Section WT12X52", + "kind": "type", + "contents": "section US3D WT12X52 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT15X49.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT15X49.5", - "kind":"keyword", - "trigger":"WT15X49.5" + "trigger": "WT12X58.5", + "details": "US 2D Section WT12X58.5", + "kind": "type", + "contents": "section US2D WT12X58.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT15X49.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT15X49.5", - "kind":"keyword", - "trigger":"WT15X49.5" + "trigger": "WT12X58.5", + "details": "US 3D Section WT12X58.5", + "kind": "type", + "contents": "section US3D WT12X58.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT15X54 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT15X54", - "kind":"keyword", - "trigger":"WT15X54" + "trigger": "WT12X65.5", + "details": "US 2D Section WT12X65.5", + "kind": "type", + "contents": "section US2D WT12X65.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT15X54 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT15X54", - "kind":"keyword", - "trigger":"WT15X54" + "trigger": "WT12X65.5", + "details": "US 3D Section WT12X65.5", + "kind": "type", + "contents": "section US3D WT12X65.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT15X58 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT15X58", - "kind":"keyword", - "trigger":"WT15X58" + "trigger": "WT12X73", + "details": "US 2D Section WT12X73", + "kind": "type", + "contents": "section US2D WT12X73 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT15X58 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT15X58", - "kind":"keyword", - "trigger":"WT15X58" + "trigger": "WT12X73", + "details": "US 3D Section WT12X73", + "kind": "type", + "contents": "section US3D WT12X73 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT15X62 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT15X62", - "kind":"keyword", - "trigger":"WT15X62" + "trigger": "WT12X81", + "details": "US 2D Section WT12X81", + "kind": "type", + "contents": "section US2D WT12X81 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT15X62 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT15X62", - "kind":"keyword", - "trigger":"WT15X62" + "trigger": "WT12X81", + "details": "US 3D Section WT12X81", + "kind": "type", + "contents": "section US3D WT12X81 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT15X66 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT15X66", - "kind":"keyword", - "trigger":"WT15X66" + "trigger": "WT12X88", + "details": "US 2D Section WT12X88", + "kind": "type", + "contents": "section US2D WT12X88 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT15X66 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT15X66", - "kind":"keyword", - "trigger":"WT15X66" + "trigger": "WT12X88", + "details": "US 3D Section WT12X88", + "kind": "type", + "contents": "section US3D WT12X88 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT15X74 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT15X74", - "kind":"keyword", - "trigger":"WT15X74" + "trigger": "WT12X96", + "details": "US 2D Section WT12X96", + "kind": "type", + "contents": "section US2D WT12X96 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT15X74 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT15X74", - "kind":"keyword", - "trigger":"WT15X74" + "trigger": "WT12X96", + "details": "US 3D Section WT12X96", + "kind": "type", + "contents": "section US3D WT12X96 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT15X86.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT15X86.5", - "kind":"keyword", - "trigger":"WT15X86.5" + "trigger": "WT13.5X108.5", + "details": "US 2D Section WT13.5X108.5", + "kind": "type", + "contents": "section US2D WT13.5X108.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT15X86.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT15X86.5", - "kind":"keyword", - "trigger":"WT15X86.5" + "trigger": "WT13.5X108.5", + "details": "US 3D Section WT13.5X108.5", + "kind": "type", + "contents": "section US3D WT13.5X108.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT15X95.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT15X95.5", - "kind":"keyword", - "trigger":"WT15X95.5" + "trigger": "WT13.5X117.5", + "details": "US 2D Section WT13.5X117.5", + "kind": "type", + "contents": "section US2D WT13.5X117.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT15X95.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT15X95.5", - "kind":"keyword", - "trigger":"WT15X95.5" + "trigger": "WT13.5X117.5", + "details": "US 3D Section WT13.5X117.5", + "kind": "type", + "contents": "section US3D WT13.5X117.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT16.5X100.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT16.5X100.5", - "kind":"keyword", - "trigger":"WT16.5X100.5" + "trigger": "WT13.5X129", + "details": "US 2D Section WT13.5X129", + "kind": "type", + "contents": "section US2D WT13.5X129 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT16.5X100.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT16.5X100.5", - "kind":"keyword", - "trigger":"WT16.5X100.5" + "trigger": "WT13.5X129", + "details": "US 3D Section WT13.5X129", + "kind": "type", + "contents": "section US3D WT13.5X129 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT16.5X110.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT16.5X110.5", - "kind":"keyword", - "trigger":"WT16.5X110.5" + "trigger": "WT13.5X140.5", + "details": "US 2D Section WT13.5X140.5", + "kind": "type", + "contents": "section US2D WT13.5X140.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT16.5X110.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT16.5X110.5", - "kind":"keyword", - "trigger":"WT16.5X110.5" + "trigger": "WT13.5X140.5", + "details": "US 3D Section WT13.5X140.5", + "kind": "type", + "contents": "section US3D WT13.5X140.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT16.5X120.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT16.5X120.5", - "kind":"keyword", - "trigger":"WT16.5X120.5" + "trigger": "WT13.5X153.5", + "details": "US 2D Section WT13.5X153.5", + "kind": "type", + "contents": "section US2D WT13.5X153.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT16.5X120.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT16.5X120.5", - "kind":"keyword", - "trigger":"WT16.5X120.5" + "trigger": "WT13.5X153.5", + "details": "US 3D Section WT13.5X153.5", + "kind": "type", + "contents": "section US3D WT13.5X153.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT16.5X131.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT16.5X131.5", - "kind":"keyword", - "trigger":"WT16.5X131.5" + "trigger": "WT13.5X168", + "details": "US 2D Section WT13.5X168", + "kind": "type", + "contents": "section US2D WT13.5X168 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT16.5X131.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT16.5X131.5", - "kind":"keyword", - "trigger":"WT16.5X131.5" + "trigger": "WT13.5X168", + "details": "US 3D Section WT13.5X168", + "kind": "type", + "contents": "section US3D WT13.5X168 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT16.5X145.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT16.5X145.5", - "kind":"keyword", - "trigger":"WT16.5X145.5" + "trigger": "WT13.5X184", + "details": "US 2D Section WT13.5X184", + "kind": "type", + "contents": "section US2D WT13.5X184 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT16.5X145.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT16.5X145.5", - "kind":"keyword", - "trigger":"WT16.5X145.5" + "trigger": "WT13.5X184", + "details": "US 3D Section WT13.5X184", + "kind": "type", + "contents": "section US3D WT13.5X184 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT16.5X159 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT16.5X159", - "kind":"keyword", - "trigger":"WT16.5X159" + "trigger": "WT13.5X269.5", + "details": "US 2D Section WT13.5X269.5", + "kind": "type", + "contents": "section US2D WT13.5X269.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT16.5X159 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT16.5X159", - "kind":"keyword", - "trigger":"WT16.5X159" + "trigger": "WT13.5X269.5", + "details": "US 3D Section WT13.5X269.5", + "kind": "type", + "contents": "section US3D WT13.5X269.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT16.5X177 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT16.5X177", - "kind":"keyword", - "trigger":"WT16.5X177" + "trigger": "WT13.5X42", + "details": "US 2D Section WT13.5X42", + "kind": "type", + "contents": "section US2D WT13.5X42 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT16.5X177 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT16.5X177", - "kind":"keyword", - "trigger":"WT16.5X177" + "trigger": "WT13.5X42", + "details": "US 3D Section WT13.5X42", + "kind": "type", + "contents": "section US3D WT13.5X42 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT16.5X193.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT16.5X193.5", - "kind":"keyword", - "trigger":"WT16.5X193.5" + "trigger": "WT13.5X47", + "details": "US 2D Section WT13.5X47", + "kind": "type", + "contents": "section US2D WT13.5X47 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT16.5X193.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT16.5X193.5", - "kind":"keyword", - "trigger":"WT16.5X193.5" + "trigger": "WT13.5X47", + "details": "US 3D Section WT13.5X47", + "kind": "type", + "contents": "section US3D WT13.5X47 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT16.5X59 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT16.5X59", - "kind":"keyword", - "trigger":"WT16.5X59" + "trigger": "WT13.5X51", + "details": "US 2D Section WT13.5X51", + "kind": "type", + "contents": "section US2D WT13.5X51 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT16.5X59 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT16.5X59", - "kind":"keyword", - "trigger":"WT16.5X59" + "trigger": "WT13.5X51", + "details": "US 3D Section WT13.5X51", + "kind": "type", + "contents": "section US3D WT13.5X51 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT16.5X65 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT16.5X65", - "kind":"keyword", - "trigger":"WT16.5X65" + "trigger": "WT13.5X57", + "details": "US 2D Section WT13.5X57", + "kind": "type", + "contents": "section US2D WT13.5X57 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT16.5X65 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT16.5X65", - "kind":"keyword", - "trigger":"WT16.5X65" + "trigger": "WT13.5X57", + "details": "US 3D Section WT13.5X57", + "kind": "type", + "contents": "section US3D WT13.5X57 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT16.5X70.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT16.5X70.5", - "kind":"keyword", - "trigger":"WT16.5X70.5" + "trigger": "WT13.5X64.5", + "details": "US 2D Section WT13.5X64.5", + "kind": "type", + "contents": "section US2D WT13.5X64.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT16.5X70.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT16.5X70.5", - "kind":"keyword", - "trigger":"WT16.5X70.5" + "trigger": "WT13.5X64.5", + "details": "US 3D Section WT13.5X64.5", + "kind": "type", + "contents": "section US3D WT13.5X64.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT16.5X76 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT16.5X76", - "kind":"keyword", - "trigger":"WT16.5X76" + "trigger": "WT13.5X73", + "details": "US 2D Section WT13.5X73", + "kind": "type", + "contents": "section US2D WT13.5X73 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT16.5X76 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT16.5X76", - "kind":"keyword", - "trigger":"WT16.5X76" + "trigger": "WT13.5X73", + "details": "US 3D Section WT13.5X73", + "kind": "type", + "contents": "section US3D WT13.5X73 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT16.5X84.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT16.5X84.5", - "kind":"keyword", - "trigger":"WT16.5X84.5" + "trigger": "WT13.5X80.5", + "details": "US 2D Section WT13.5X80.5", + "kind": "type", + "contents": "section US2D WT13.5X80.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT16.5X84.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT16.5X84.5", - "kind":"keyword", - "trigger":"WT16.5X84.5" + "trigger": "WT13.5X80.5", + "details": "US 3D Section WT13.5X80.5", + "kind": "type", + "contents": "section US3D WT13.5X80.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT18X105 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT18X105", - "kind":"keyword", - "trigger":"WT18X105" + "trigger": "WT13.5X89", + "details": "US 2D Section WT13.5X89", + "kind": "type", + "contents": "section US2D WT13.5X89 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT18X105 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT18X105", - "kind":"keyword", - "trigger":"WT18X105" + "trigger": "WT13.5X89", + "details": "US 3D Section WT13.5X89", + "kind": "type", + "contents": "section US3D WT13.5X89 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT18X115.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT18X115.5", - "kind":"keyword", - "trigger":"WT18X115.5" + "trigger": "WT13.5X97", + "details": "US 2D Section WT13.5X97", + "kind": "type", + "contents": "section US2D WT13.5X97 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT18X115.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT18X115.5", - "kind":"keyword", - "trigger":"WT18X115.5" + "trigger": "WT13.5X97", + "details": "US 3D Section WT13.5X97", + "kind": "type", + "contents": "section US3D WT13.5X97 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT18X116 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT18X116", - "kind":"keyword", - "trigger":"WT18X116" + "trigger": "WT15X105.5", + "details": "US 2D Section WT15X105.5", + "kind": "type", + "contents": "section US2D WT15X105.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT18X116 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT18X116", - "kind":"keyword", - "trigger":"WT18X116" + "trigger": "WT15X105.5", + "details": "US 3D Section WT15X105.5", + "kind": "type", + "contents": "section US3D WT15X105.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT18X123.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT18X123.5", - "kind":"keyword", - "trigger":"WT18X123.5" + "trigger": "WT15X117.5", + "details": "US 2D Section WT15X117.5", + "kind": "type", + "contents": "section US2D WT15X117.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT18X123.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT18X123.5", - "kind":"keyword", - "trigger":"WT18X123.5" + "trigger": "WT15X117.5", + "details": "US 3D Section WT15X117.5", + "kind": "type", + "contents": "section US3D WT15X117.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT18X128 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT18X128", - "kind":"keyword", - "trigger":"WT18X128" + "trigger": "WT15X130.5", + "details": "US 2D Section WT15X130.5", + "kind": "type", + "contents": "section US2D WT15X130.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT18X128 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT18X128", - "kind":"keyword", - "trigger":"WT18X128" + "trigger": "WT15X130.5", + "details": "US 3D Section WT15X130.5", + "kind": "type", + "contents": "section US3D WT15X130.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT18X131 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT18X131", - "kind":"keyword", - "trigger":"WT18X131" + "trigger": "WT15X146", + "details": "US 2D Section WT15X146", + "kind": "type", + "contents": "section US2D WT15X146 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT18X131 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT18X131", - "kind":"keyword", - "trigger":"WT18X131" + "trigger": "WT15X146", + "details": "US 3D Section WT15X146", + "kind": "type", + "contents": "section US3D WT15X146 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT18X141 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT18X141", - "kind":"keyword", - "trigger":"WT18X141" + "trigger": "WT15X163", + "details": "US 2D Section WT15X163", + "kind": "type", + "contents": "section US2D WT15X163 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT18X141 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT18X141", - "kind":"keyword", - "trigger":"WT18X141" + "trigger": "WT15X163", + "details": "US 3D Section WT15X163", + "kind": "type", + "contents": "section US3D WT15X163 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT18X151 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT18X151", - "kind":"keyword", - "trigger":"WT18X151" + "trigger": "WT15X178.5", + "details": "US 2D Section WT15X178.5", + "kind": "type", + "contents": "section US2D WT15X178.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT18X151 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT18X151", - "kind":"keyword", - "trigger":"WT18X151" + "trigger": "WT15X178.5", + "details": "US 3D Section WT15X178.5", + "kind": "type", + "contents": "section US3D WT15X178.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT18X165 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT18X165", - "kind":"keyword", - "trigger":"WT18X165" + "trigger": "WT15X195.5", + "details": "US 2D Section WT15X195.5", + "kind": "type", + "contents": "section US2D WT15X195.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT18X165 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT18X165", - "kind":"keyword", - "trigger":"WT18X165" + "trigger": "WT15X195.5", + "details": "US 3D Section WT15X195.5", + "kind": "type", + "contents": "section US3D WT15X195.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT18X180.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT18X180.5", - "kind":"keyword", - "trigger":"WT18X180.5" + "trigger": "WT15X45", + "details": "US 2D Section WT15X45", + "kind": "type", + "contents": "section US2D WT15X45 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT18X180.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT18X180.5", - "kind":"keyword", - "trigger":"WT18X180.5" + "trigger": "WT15X45", + "details": "US 3D Section WT15X45", + "kind": "type", + "contents": "section US3D WT15X45 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT18X197.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT18X197.5", - "kind":"keyword", - "trigger":"WT18X197.5" + "trigger": "WT15X49.5", + "details": "US 2D Section WT15X49.5", + "kind": "type", + "contents": "section US2D WT15X49.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT18X197.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT18X197.5", - "kind":"keyword", - "trigger":"WT18X197.5" + "trigger": "WT15X49.5", + "details": "US 3D Section WT15X49.5", + "kind": "type", + "contents": "section US3D WT15X49.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT18X220.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT18X220.5", - "kind":"keyword", - "trigger":"WT18X220.5" + "trigger": "WT15X54", + "details": "US 2D Section WT15X54", + "kind": "type", + "contents": "section US2D WT15X54 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT18X220.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT18X220.5", - "kind":"keyword", - "trigger":"WT18X220.5" + "trigger": "WT15X54", + "details": "US 3D Section WT15X54", + "kind": "type", + "contents": "section US3D WT15X54 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT18X243.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT18X243.5", - "kind":"keyword", - "trigger":"WT18X243.5" + "trigger": "WT15X58", + "details": "US 2D Section WT15X58", + "kind": "type", + "contents": "section US2D WT15X58 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT18X243.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT18X243.5", - "kind":"keyword", - "trigger":"WT18X243.5" + "trigger": "WT15X58", + "details": "US 3D Section WT15X58", + "kind": "type", + "contents": "section US3D WT15X58 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT18X264.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT18X264.5", - "kind":"keyword", - "trigger":"WT18X264.5" + "trigger": "WT15X62", + "details": "US 2D Section WT15X62", + "kind": "type", + "contents": "section US2D WT15X62 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT18X264.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT18X264.5", - "kind":"keyword", - "trigger":"WT18X264.5" + "trigger": "WT15X62", + "details": "US 3D Section WT15X62", + "kind": "type", + "contents": "section US3D WT15X62 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT18X326 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT18X326", - "kind":"keyword", - "trigger":"WT18X326" + "trigger": "WT15X66", + "details": "US 2D Section WT15X66", + "kind": "type", + "contents": "section US2D WT15X66 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT18X326 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT18X326", - "kind":"keyword", - "trigger":"WT18X326" + "trigger": "WT15X66", + "details": "US 3D Section WT15X66", + "kind": "type", + "contents": "section US3D WT15X66 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT18X361.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT18X361.5", - "kind":"keyword", - "trigger":"WT18X361.5" + "trigger": "WT15X74", + "details": "US 2D Section WT15X74", + "kind": "type", + "contents": "section US2D WT15X74 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT18X361.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT18X361.5", - "kind":"keyword", - "trigger":"WT18X361.5" + "trigger": "WT15X74", + "details": "US 3D Section WT15X74", + "kind": "type", + "contents": "section US3D WT15X74 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT18X401 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT18X401", - "kind":"keyword", - "trigger":"WT18X401" + "trigger": "WT15X86.5", + "details": "US 2D Section WT15X86.5", + "kind": "type", + "contents": "section US2D WT15X86.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT18X401 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT18X401", - "kind":"keyword", - "trigger":"WT18X401" + "trigger": "WT15X86.5", + "details": "US 3D Section WT15X86.5", + "kind": "type", + "contents": "section US3D WT15X86.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT18X426.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT18X426.5", - "kind":"keyword", - "trigger":"WT18X426.5" + "trigger": "WT15X95.5", + "details": "US 2D Section WT15X95.5", + "kind": "type", + "contents": "section US2D WT15X95.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT18X426.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT18X426.5", - "kind":"keyword", - "trigger":"WT18X426.5" + "trigger": "WT15X95.5", + "details": "US 3D Section WT15X95.5", + "kind": "type", + "contents": "section US3D WT15X95.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT18X462.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT18X462.5", - "kind":"keyword", - "trigger":"WT18X462.5" + "trigger": "WT16.5X100.5", + "details": "US 2D Section WT16.5X100.5", + "kind": "type", + "contents": "section US2D WT16.5X100.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT18X462.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT18X462.5", - "kind":"keyword", - "trigger":"WT18X462.5" + "trigger": "WT16.5X100.5", + "details": "US 3D Section WT16.5X100.5", + "kind": "type", + "contents": "section US3D WT16.5X100.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT18X67.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT18X67.5", - "kind":"keyword", - "trigger":"WT18X67.5" + "trigger": "WT16.5X110.5", + "details": "US 2D Section WT16.5X110.5", + "kind": "type", + "contents": "section US2D WT16.5X110.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT18X67.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT18X67.5", - "kind":"keyword", - "trigger":"WT18X67.5" + "trigger": "WT16.5X110.5", + "details": "US 3D Section WT16.5X110.5", + "kind": "type", + "contents": "section US3D WT16.5X110.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT18X75 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT18X75", - "kind":"keyword", - "trigger":"WT18X75" + "trigger": "WT16.5X120.5", + "details": "US 2D Section WT16.5X120.5", + "kind": "type", + "contents": "section US2D WT16.5X120.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT18X75 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT18X75", - "kind":"keyword", - "trigger":"WT18X75" + "trigger": "WT16.5X120.5", + "details": "US 3D Section WT16.5X120.5", + "kind": "type", + "contents": "section US3D WT16.5X120.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT18X80 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT18X80", - "kind":"keyword", - "trigger":"WT18X80" + "trigger": "WT16.5X131.5", + "details": "US 2D Section WT16.5X131.5", + "kind": "type", + "contents": "section US2D WT16.5X131.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT18X80 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT18X80", - "kind":"keyword", - "trigger":"WT18X80" + "trigger": "WT16.5X131.5", + "details": "US 3D Section WT16.5X131.5", + "kind": "type", + "contents": "section US3D WT16.5X131.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT18X85 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT18X85", - "kind":"keyword", - "trigger":"WT18X85" + "trigger": "WT16.5X145.5", + "details": "US 2D Section WT16.5X145.5", + "kind": "type", + "contents": "section US2D WT16.5X145.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT18X85 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT18X85", - "kind":"keyword", - "trigger":"WT18X85" + "trigger": "WT16.5X145.5", + "details": "US 3D Section WT16.5X145.5", + "kind": "type", + "contents": "section US3D WT16.5X145.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT18X91 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT18X91", - "kind":"keyword", - "trigger":"WT18X91" + "trigger": "WT16.5X159", + "details": "US 2D Section WT16.5X159", + "kind": "type", + "contents": "section US2D WT16.5X159 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT18X91 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT18X91", - "kind":"keyword", - "trigger":"WT18X91" + "trigger": "WT16.5X159", + "details": "US 3D Section WT16.5X159", + "kind": "type", + "contents": "section US3D WT16.5X159 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT18X97 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT18X97", - "kind":"keyword", - "trigger":"WT18X97" + "trigger": "WT16.5X177", + "details": "US 2D Section WT16.5X177", + "kind": "type", + "contents": "section US2D WT16.5X177 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT18X97 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT18X97", - "kind":"keyword", - "trigger":"WT18X97" + "trigger": "WT16.5X177", + "details": "US 3D Section WT16.5X177", + "kind": "type", + "contents": "section US3D WT16.5X177 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT2.5X8 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT2.5X8", - "kind":"keyword", - "trigger":"WT2.5X8" + "trigger": "WT16.5X193.5", + "details": "US 2D Section WT16.5X193.5", + "kind": "type", + "contents": "section US2D WT16.5X193.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT2.5X8 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT2.5X8", - "kind":"keyword", - "trigger":"WT2.5X8" + "trigger": "WT16.5X193.5", + "details": "US 3D Section WT16.5X193.5", + "kind": "type", + "contents": "section US3D WT16.5X193.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT2.5X9.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT2.5X9.5", - "kind":"keyword", - "trigger":"WT2.5X9.5" + "trigger": "WT16.5X59", + "details": "US 2D Section WT16.5X59", + "kind": "type", + "contents": "section US2D WT16.5X59 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT2.5X9.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT2.5X9.5", - "kind":"keyword", - "trigger":"WT2.5X9.5" + "trigger": "WT16.5X59", + "details": "US 3D Section WT16.5X59", + "kind": "type", + "contents": "section US3D WT16.5X59 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT20X105.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT20X105.5", - "kind":"keyword", - "trigger":"WT20X105.5" + "trigger": "WT16.5X65", + "details": "US 2D Section WT16.5X65", + "kind": "type", + "contents": "section US2D WT16.5X65 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT20X105.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT20X105.5", - "kind":"keyword", - "trigger":"WT20X105.5" + "trigger": "WT16.5X65", + "details": "US 3D Section WT16.5X65", + "kind": "type", + "contents": "section US3D WT16.5X65 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT20X107.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT20X107.5", - "kind":"keyword", - "trigger":"WT20X107.5" + "trigger": "WT16.5X70.5", + "details": "US 2D Section WT16.5X70.5", + "kind": "type", + "contents": "section US2D WT16.5X70.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT20X107.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT20X107.5", - "kind":"keyword", - "trigger":"WT20X107.5" + "trigger": "WT16.5X70.5", + "details": "US 3D Section WT16.5X70.5", + "kind": "type", + "contents": "section US3D WT16.5X70.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT20X117.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT20X117.5", - "kind":"keyword", - "trigger":"WT20X117.5" + "trigger": "WT16.5X76", + "details": "US 2D Section WT16.5X76", + "kind": "type", + "contents": "section US2D WT16.5X76 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT20X117.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT20X117.5", - "kind":"keyword", - "trigger":"WT20X117.5" + "trigger": "WT16.5X76", + "details": "US 3D Section WT16.5X76", + "kind": "type", + "contents": "section US3D WT16.5X76 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT20X124.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT20X124.5", - "kind":"keyword", - "trigger":"WT20X124.5" + "trigger": "WT16.5X84.5", + "details": "US 2D Section WT16.5X84.5", + "kind": "type", + "contents": "section US2D WT16.5X84.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT20X124.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT20X124.5", - "kind":"keyword", - "trigger":"WT20X124.5" + "trigger": "WT16.5X84.5", + "details": "US 3D Section WT16.5X84.5", + "kind": "type", + "contents": "section US3D WT16.5X84.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT20X132 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT20X132", - "kind":"keyword", - "trigger":"WT20X132" + "trigger": "WT18X105", + "details": "US 2D Section WT18X105", + "kind": "type", + "contents": "section US2D WT18X105 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT20X132 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT20X132", - "kind":"keyword", - "trigger":"WT20X132" + "trigger": "WT18X105", + "details": "US 3D Section WT18X105", + "kind": "type", + "contents": "section US3D WT18X105 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT20X138.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT20X138.5", - "kind":"keyword", - "trigger":"WT20X138.5" + "trigger": "WT18X115.5", + "details": "US 2D Section WT18X115.5", + "kind": "type", + "contents": "section US2D WT18X115.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT20X138.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT20X138.5", - "kind":"keyword", - "trigger":"WT20X138.5" + "trigger": "WT18X115.5", + "details": "US 3D Section WT18X115.5", + "kind": "type", + "contents": "section US3D WT18X115.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT20X139 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT20X139", - "kind":"keyword", - "trigger":"WT20X139" + "trigger": "WT18X116", + "details": "US 2D Section WT18X116", + "kind": "type", + "contents": "section US2D WT18X116 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT20X139 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT20X139", - "kind":"keyword", - "trigger":"WT20X139" + "trigger": "WT18X116", + "details": "US 3D Section WT18X116", + "kind": "type", + "contents": "section US3D WT18X116 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT20X147 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT20X147", - "kind":"keyword", - "trigger":"WT20X147" + "trigger": "WT18X123.5", + "details": "US 2D Section WT18X123.5", + "kind": "type", + "contents": "section US2D WT18X123.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT20X147 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT20X147", - "kind":"keyword", - "trigger":"WT20X147" + "trigger": "WT18X123.5", + "details": "US 3D Section WT18X123.5", + "kind": "type", + "contents": "section US3D WT18X123.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT20X148.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT20X148.5", - "kind":"keyword", - "trigger":"WT20X148.5" + "trigger": "WT18X128", + "details": "US 2D Section WT18X128", + "kind": "type", + "contents": "section US2D WT18X128 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT20X148.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT20X148.5", - "kind":"keyword", - "trigger":"WT20X148.5" + "trigger": "WT18X128", + "details": "US 3D Section WT18X128", + "kind": "type", + "contents": "section US3D WT18X128 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT20X162 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT20X162", - "kind":"keyword", - "trigger":"WT20X162" + "trigger": "WT18X131", + "details": "US 2D Section WT18X131", + "kind": "type", + "contents": "section US2D WT18X131 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT20X162 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT20X162", - "kind":"keyword", - "trigger":"WT20X162" + "trigger": "WT18X131", + "details": "US 3D Section WT18X131", + "kind": "type", + "contents": "section US3D WT18X131 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT20X163.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT20X163.5", - "kind":"keyword", - "trigger":"WT20X163.5" + "trigger": "WT18X141", + "details": "US 2D Section WT18X141", + "kind": "type", + "contents": "section US2D WT18X141 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT20X163.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT20X163.5", - "kind":"keyword", - "trigger":"WT20X163.5" + "trigger": "WT18X141", + "details": "US 3D Section WT18X141", + "kind": "type", + "contents": "section US3D WT18X141 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT20X165.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT20X165.5", - "kind":"keyword", - "trigger":"WT20X165.5" + "trigger": "WT18X151", + "details": "US 2D Section WT18X151", + "kind": "type", + "contents": "section US2D WT18X151 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT20X165.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT20X165.5", - "kind":"keyword", - "trigger":"WT20X165.5" + "trigger": "WT18X151", + "details": "US 3D Section WT18X151", + "kind": "type", + "contents": "section US3D WT18X151 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT20X181 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT20X181", - "kind":"keyword", - "trigger":"WT20X181" + "trigger": "WT18X165", + "details": "US 2D Section WT18X165", + "kind": "type", + "contents": "section US2D WT18X165 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT20X181 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT20X181", - "kind":"keyword", - "trigger":"WT20X181" + "trigger": "WT18X165", + "details": "US 3D Section WT18X165", + "kind": "type", + "contents": "section US3D WT18X165 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT20X186 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT20X186", - "kind":"keyword", - "trigger":"WT20X186" + "trigger": "WT18X180.5", + "details": "US 2D Section WT18X180.5", + "kind": "type", + "contents": "section US2D WT18X180.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT20X186 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT20X186", - "kind":"keyword", - "trigger":"WT20X186" + "trigger": "WT18X180.5", + "details": "US 3D Section WT18X180.5", + "kind": "type", + "contents": "section US3D WT18X180.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT20X196 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT20X196", - "kind":"keyword", - "trigger":"WT20X196" + "trigger": "WT18X197.5", + "details": "US 2D Section WT18X197.5", + "kind": "type", + "contents": "section US2D WT18X197.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT20X196 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT20X196", - "kind":"keyword", - "trigger":"WT20X196" + "trigger": "WT18X197.5", + "details": "US 3D Section WT18X197.5", + "kind": "type", + "contents": "section US3D WT18X197.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT20X198.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT20X198.5", - "kind":"keyword", - "trigger":"WT20X198.5" + "trigger": "WT18X220.5", + "details": "US 2D Section WT18X220.5", + "kind": "type", + "contents": "section US2D WT18X220.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT20X198.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT20X198.5", - "kind":"keyword", - "trigger":"WT20X198.5" + "trigger": "WT18X220.5", + "details": "US 3D Section WT18X220.5", + "kind": "type", + "contents": "section US3D WT18X220.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT20X215.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT20X215.5", - "kind":"keyword", - "trigger":"WT20X215.5" + "trigger": "WT18X243.5", + "details": "US 2D Section WT18X243.5", + "kind": "type", + "contents": "section US2D WT18X243.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT20X215.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT20X215.5", - "kind":"keyword", - "trigger":"WT20X215.5" + "trigger": "WT18X243.5", + "details": "US 3D Section WT18X243.5", + "kind": "type", + "contents": "section US3D WT18X243.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT20X251.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT20X251.5", - "kind":"keyword", - "trigger":"WT20X251.5" + "trigger": "WT18X264.5", + "details": "US 2D Section WT18X264.5", + "kind": "type", + "contents": "section US2D WT18X264.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT20X251.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT20X251.5", - "kind":"keyword", - "trigger":"WT20X251.5" + "trigger": "WT18X264.5", + "details": "US 3D Section WT18X264.5", + "kind": "type", + "contents": "section US3D WT18X264.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT20X296.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT20X296.5", - "kind":"keyword", - "trigger":"WT20X296.5" + "trigger": "WT18X326", + "details": "US 2D Section WT18X326", + "kind": "type", + "contents": "section US2D WT18X326 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT20X296.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT20X296.5", - "kind":"keyword", - "trigger":"WT20X296.5" + "trigger": "WT18X326", + "details": "US 3D Section WT18X326", + "kind": "type", + "contents": "section US3D WT18X326 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT20X327.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT20X327.5", - "kind":"keyword", - "trigger":"WT20X327.5" + "trigger": "WT18X361.5", + "details": "US 2D Section WT18X361.5", + "kind": "type", + "contents": "section US2D WT18X361.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT20X327.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT20X327.5", - "kind":"keyword", - "trigger":"WT20X327.5" + "trigger": "WT18X361.5", + "details": "US 3D Section WT18X361.5", + "kind": "type", + "contents": "section US3D WT18X361.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT20X74.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT20X74.5", - "kind":"keyword", - "trigger":"WT20X74.5" + "trigger": "WT18X401", + "details": "US 2D Section WT18X401", + "kind": "type", + "contents": "section US2D WT18X401 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT20X74.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT20X74.5", - "kind":"keyword", - "trigger":"WT20X74.5" + "trigger": "WT18X401", + "details": "US 3D Section WT18X401", + "kind": "type", + "contents": "section US3D WT18X401 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT20X83.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT20X83.5", - "kind":"keyword", - "trigger":"WT20X83.5" + "trigger": "WT18X426.5", + "details": "US 2D Section WT18X426.5", + "kind": "type", + "contents": "section US2D WT18X426.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT20X83.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT20X83.5", - "kind":"keyword", - "trigger":"WT20X83.5" + "trigger": "WT18X426.5", + "details": "US 3D Section WT18X426.5", + "kind": "type", + "contents": "section US3D WT18X426.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT20X91.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT20X91.5", - "kind":"keyword", - "trigger":"WT20X91.5" + "trigger": "WT18X462.5", + "details": "US 2D Section WT18X462.5", + "kind": "type", + "contents": "section US2D WT18X462.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT20X91.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT20X91.5", - "kind":"keyword", - "trigger":"WT20X91.5" + "trigger": "WT18X462.5", + "details": "US 3D Section WT18X462.5", + "kind": "type", + "contents": "section US3D WT18X462.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT20X99.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT20X99.5", - "kind":"keyword", - "trigger":"WT20X99.5" + "trigger": "WT18X67.5", + "details": "US 2D Section WT18X67.5", + "kind": "type", + "contents": "section US2D WT18X67.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT20X99.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT20X99.5", - "kind":"keyword", - "trigger":"WT20X99.5" + "trigger": "WT18X67.5", + "details": "US 3D Section WT18X67.5", + "kind": "type", + "contents": "section US3D WT18X67.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT22X115 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT22X115", - "kind":"keyword", - "trigger":"WT22X115" + "trigger": "WT18X75", + "details": "US 2D Section WT18X75", + "kind": "type", + "contents": "section US2D WT18X75 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT22X115 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT22X115", - "kind":"keyword", - "trigger":"WT22X115" + "trigger": "WT18X75", + "details": "US 3D Section WT18X75", + "kind": "type", + "contents": "section US3D WT18X75 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT22X131 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT22X131", - "kind":"keyword", - "trigger":"WT22X131" + "trigger": "WT18X80", + "details": "US 2D Section WT18X80", + "kind": "type", + "contents": "section US2D WT18X80 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT22X131 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT22X131", - "kind":"keyword", - "trigger":"WT22X131" + "trigger": "WT18X80", + "details": "US 3D Section WT18X80", + "kind": "type", + "contents": "section US3D WT18X80 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT22X145 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT22X145", - "kind":"keyword", - "trigger":"WT22X145" + "trigger": "WT18X85", + "details": "US 2D Section WT18X85", + "kind": "type", + "contents": "section US2D WT18X85 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT22X145 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT22X145", - "kind":"keyword", - "trigger":"WT22X145" + "trigger": "WT18X85", + "details": "US 3D Section WT18X85", + "kind": "type", + "contents": "section US3D WT18X85 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT22X167.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT22X167.5", - "kind":"keyword", - "trigger":"WT22X167.5" + "trigger": "WT18X91", + "details": "US 2D Section WT18X91", + "kind": "type", + "contents": "section US2D WT18X91 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT22X167.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT22X167.5", - "kind":"keyword", - "trigger":"WT22X167.5" + "trigger": "WT18X91", + "details": "US 3D Section WT18X91", + "kind": "type", + "contents": "section US3D WT18X91 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT2X6.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT2X6.5", - "kind":"keyword", - "trigger":"WT2X6.5" + "trigger": "WT18X97", + "details": "US 2D Section WT18X97", + "kind": "type", + "contents": "section US2D WT18X97 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT2X6.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT2X6.5", - "kind":"keyword", - "trigger":"WT2X6.5" + "trigger": "WT18X97", + "details": "US 3D Section WT18X97", + "kind": "type", + "contents": "section US3D WT18X97 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT3X10 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT3X10", - "kind":"keyword", - "trigger":"WT3X10" + "trigger": "WT2.5X8", + "details": "US 2D Section WT2.5X8", + "kind": "type", + "contents": "section US2D WT2.5X8 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT3X10 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT3X10", - "kind":"keyword", - "trigger":"WT3X10" + "trigger": "WT2.5X8", + "details": "US 3D Section WT2.5X8", + "kind": "type", + "contents": "section US3D WT2.5X8 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT3X12.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT3X12.5", - "kind":"keyword", - "trigger":"WT3X12.5" + "trigger": "WT2.5X9.5", + "details": "US 2D Section WT2.5X9.5", + "kind": "type", + "contents": "section US2D WT2.5X9.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT3X12.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT3X12.5", - "kind":"keyword", - "trigger":"WT3X12.5" + "trigger": "WT2.5X9.5", + "details": "US 3D Section WT2.5X9.5", + "kind": "type", + "contents": "section US3D WT2.5X9.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT3X4.25 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT3X4.25", - "kind":"keyword", - "trigger":"WT3X4.25" + "trigger": "WT20X105.5", + "details": "US 2D Section WT20X105.5", + "kind": "type", + "contents": "section US2D WT20X105.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT3X4.25 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT3X4.25", - "kind":"keyword", - "trigger":"WT3X4.25" + "trigger": "WT20X105.5", + "details": "US 3D Section WT20X105.5", + "kind": "type", + "contents": "section US3D WT20X105.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT3X4.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT3X4.5", - "kind":"keyword", - "trigger":"WT3X4.5" + "trigger": "WT20X107.5", + "details": "US 2D Section WT20X107.5", + "kind": "type", + "contents": "section US2D WT20X107.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT3X4.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT3X4.5", - "kind":"keyword", - "trigger":"WT3X4.5" + "trigger": "WT20X107.5", + "details": "US 3D Section WT20X107.5", + "kind": "type", + "contents": "section US3D WT20X107.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT3X6 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT3X6", - "kind":"keyword", - "trigger":"WT3X6" + "trigger": "WT20X117.5", + "details": "US 2D Section WT20X117.5", + "kind": "type", + "contents": "section US2D WT20X117.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT3X6 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT3X6", - "kind":"keyword", - "trigger":"WT3X6" + "trigger": "WT20X117.5", + "details": "US 3D Section WT20X117.5", + "kind": "type", + "contents": "section US3D WT20X117.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT3X7.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT3X7.5", - "kind":"keyword", - "trigger":"WT3X7.5" + "trigger": "WT20X124.5", + "details": "US 2D Section WT20X124.5", + "kind": "type", + "contents": "section US2D WT20X124.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT3X7.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT3X7.5", - "kind":"keyword", - "trigger":"WT3X7.5" + "trigger": "WT20X124.5", + "details": "US 3D Section WT20X124.5", + "kind": "type", + "contents": "section US3D WT20X124.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT3X8 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT3X8", - "kind":"keyword", - "trigger":"WT3X8" + "trigger": "WT20X132", + "details": "US 2D Section WT20X132", + "kind": "type", + "contents": "section US2D WT20X132 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT3X8 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT3X8", - "kind":"keyword", - "trigger":"WT3X8" + "trigger": "WT20X132", + "details": "US 3D Section WT20X132", + "kind": "type", + "contents": "section US3D WT20X132 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT4X10.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT4X10.5", - "kind":"keyword", - "trigger":"WT4X10.5" + "trigger": "WT20X138.5", + "details": "US 2D Section WT20X138.5", + "kind": "type", + "contents": "section US2D WT20X138.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT4X10.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT4X10.5", - "kind":"keyword", - "trigger":"WT4X10.5" + "trigger": "WT20X138.5", + "details": "US 3D Section WT20X138.5", + "kind": "type", + "contents": "section US3D WT20X138.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT4X12 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT4X12", - "kind":"keyword", - "trigger":"WT4X12" + "trigger": "WT20X139", + "details": "US 2D Section WT20X139", + "kind": "type", + "contents": "section US2D WT20X139 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT4X12 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT4X12", - "kind":"keyword", - "trigger":"WT4X12" + "trigger": "WT20X139", + "details": "US 3D Section WT20X139", + "kind": "type", + "contents": "section US3D WT20X139 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT4X14 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT4X14", - "kind":"keyword", - "trigger":"WT4X14" + "trigger": "WT20X147", + "details": "US 2D Section WT20X147", + "kind": "type", + "contents": "section US2D WT20X147 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT4X14 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT4X14", - "kind":"keyword", - "trigger":"WT4X14" + "trigger": "WT20X147", + "details": "US 3D Section WT20X147", + "kind": "type", + "contents": "section US3D WT20X147 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT4X15.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT4X15.5", - "kind":"keyword", - "trigger":"WT4X15.5" + "trigger": "WT20X148.5", + "details": "US 2D Section WT20X148.5", + "kind": "type", + "contents": "section US2D WT20X148.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT4X15.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT4X15.5", - "kind":"keyword", - "trigger":"WT4X15.5" + "trigger": "WT20X148.5", + "details": "US 3D Section WT20X148.5", + "kind": "type", + "contents": "section US3D WT20X148.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT4X17.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT4X17.5", - "kind":"keyword", - "trigger":"WT4X17.5" + "trigger": "WT20X162", + "details": "US 2D Section WT20X162", + "kind": "type", + "contents": "section US2D WT20X162 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT4X17.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT4X17.5", - "kind":"keyword", - "trigger":"WT4X17.5" + "trigger": "WT20X162", + "details": "US 3D Section WT20X162", + "kind": "type", + "contents": "section US3D WT20X162 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT4X20 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT4X20", - "kind":"keyword", - "trigger":"WT4X20" + "trigger": "WT20X163.5", + "details": "US 2D Section WT20X163.5", + "kind": "type", + "contents": "section US2D WT20X163.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT4X20 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT4X20", - "kind":"keyword", - "trigger":"WT4X20" + "trigger": "WT20X163.5", + "details": "US 3D Section WT20X163.5", + "kind": "type", + "contents": "section US3D WT20X163.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT4X24 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT4X24", - "kind":"keyword", - "trigger":"WT4X24" + "trigger": "WT20X165.5", + "details": "US 2D Section WT20X165.5", + "kind": "type", + "contents": "section US2D WT20X165.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT4X24 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT4X24", - "kind":"keyword", - "trigger":"WT4X24" + "trigger": "WT20X165.5", + "details": "US 3D Section WT20X165.5", + "kind": "type", + "contents": "section US3D WT20X165.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT4X29 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT4X29", - "kind":"keyword", - "trigger":"WT4X29" + "trigger": "WT20X181", + "details": "US 2D Section WT20X181", + "kind": "type", + "contents": "section US2D WT20X181 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT4X29 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT4X29", - "kind":"keyword", - "trigger":"WT4X29" + "trigger": "WT20X181", + "details": "US 3D Section WT20X181", + "kind": "type", + "contents": "section US3D WT20X181 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT4X33.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT4X33.5", - "kind":"keyword", - "trigger":"WT4X33.5" + "trigger": "WT20X186", + "details": "US 2D Section WT20X186", + "kind": "type", + "contents": "section US2D WT20X186 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT4X33.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT4X33.5", - "kind":"keyword", - "trigger":"WT4X33.5" + "trigger": "WT20X186", + "details": "US 3D Section WT20X186", + "kind": "type", + "contents": "section US3D WT20X186 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT4X5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT4X5", - "kind":"keyword", - "trigger":"WT4X5" + "trigger": "WT20X196", + "details": "US 2D Section WT20X196", + "kind": "type", + "contents": "section US2D WT20X196 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT4X5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT4X5", - "kind":"keyword", - "trigger":"WT4X5" + "trigger": "WT20X196", + "details": "US 3D Section WT20X196", + "kind": "type", + "contents": "section US3D WT20X196 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT4X6.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT4X6.5", - "kind":"keyword", - "trigger":"WT4X6.5" + "trigger": "WT20X198.5", + "details": "US 2D Section WT20X198.5", + "kind": "type", + "contents": "section US2D WT20X198.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT4X6.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT4X6.5", - "kind":"keyword", - "trigger":"WT4X6.5" + "trigger": "WT20X198.5", + "details": "US 3D Section WT20X198.5", + "kind": "type", + "contents": "section US3D WT20X198.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT4X7.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT4X7.5", - "kind":"keyword", - "trigger":"WT4X7.5" + "trigger": "WT20X215.5", + "details": "US 2D Section WT20X215.5", + "kind": "type", + "contents": "section US2D WT20X215.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT4X7.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT4X7.5", - "kind":"keyword", - "trigger":"WT4X7.5" + "trigger": "WT20X215.5", + "details": "US 3D Section WT20X215.5", + "kind": "type", + "contents": "section US3D WT20X215.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT4X9 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT4X9", - "kind":"keyword", - "trigger":"WT4X9" + "trigger": "WT20X251.5", + "details": "US 2D Section WT20X251.5", + "kind": "type", + "contents": "section US2D WT20X251.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT4X9 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT4X9", - "kind":"keyword", - "trigger":"WT4X9" + "trigger": "WT20X251.5", + "details": "US 3D Section WT20X251.5", + "kind": "type", + "contents": "section US3D WT20X251.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT5X11 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT5X11", - "kind":"keyword", - "trigger":"WT5X11" + "trigger": "WT20X296.5", + "details": "US 2D Section WT20X296.5", + "kind": "type", + "contents": "section US2D WT20X296.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT5X11 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT5X11", - "kind":"keyword", - "trigger":"WT5X11" + "trigger": "WT20X296.5", + "details": "US 3D Section WT20X296.5", + "kind": "type", + "contents": "section US3D WT20X296.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT5X13 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT5X13", - "kind":"keyword", - "trigger":"WT5X13" + "trigger": "WT20X327.5", + "details": "US 2D Section WT20X327.5", + "kind": "type", + "contents": "section US2D WT20X327.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT5X13 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT5X13", - "kind":"keyword", - "trigger":"WT5X13" + "trigger": "WT20X327.5", + "details": "US 3D Section WT20X327.5", + "kind": "type", + "contents": "section US3D WT20X327.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT5X15 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT5X15", - "kind":"keyword", - "trigger":"WT5X15" + "trigger": "WT20X74.5", + "details": "US 2D Section WT20X74.5", + "kind": "type", + "contents": "section US2D WT20X74.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT5X15 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT5X15", - "kind":"keyword", - "trigger":"WT5X15" + "trigger": "WT20X74.5", + "details": "US 3D Section WT20X74.5", + "kind": "type", + "contents": "section US3D WT20X74.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT5X16.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT5X16.5", - "kind":"keyword", - "trigger":"WT5X16.5" + "trigger": "WT20X83.5", + "details": "US 2D Section WT20X83.5", + "kind": "type", + "contents": "section US2D WT20X83.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT5X16.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT5X16.5", - "kind":"keyword", - "trigger":"WT5X16.5" + "trigger": "WT20X83.5", + "details": "US 3D Section WT20X83.5", + "kind": "type", + "contents": "section US3D WT20X83.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT5X19.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT5X19.5", - "kind":"keyword", - "trigger":"WT5X19.5" + "trigger": "WT20X91.5", + "details": "US 2D Section WT20X91.5", + "kind": "type", + "contents": "section US2D WT20X91.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT5X19.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT5X19.5", - "kind":"keyword", - "trigger":"WT5X19.5" + "trigger": "WT20X91.5", + "details": "US 3D Section WT20X91.5", + "kind": "type", + "contents": "section US3D WT20X91.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT5X22.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT5X22.5", - "kind":"keyword", - "trigger":"WT5X22.5" + "trigger": "WT20X99.5", + "details": "US 2D Section WT20X99.5", + "kind": "type", + "contents": "section US2D WT20X99.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT5X22.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT5X22.5", - "kind":"keyword", - "trigger":"WT5X22.5" + "trigger": "WT20X99.5", + "details": "US 3D Section WT20X99.5", + "kind": "type", + "contents": "section US3D WT20X99.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT5X24.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT5X24.5", - "kind":"keyword", - "trigger":"WT5X24.5" + "trigger": "WT22X115", + "details": "US 2D Section WT22X115", + "kind": "type", + "contents": "section US2D WT22X115 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT5X24.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT5X24.5", - "kind":"keyword", - "trigger":"WT5X24.5" + "trigger": "WT22X115", + "details": "US 3D Section WT22X115", + "kind": "type", + "contents": "section US3D WT22X115 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT5X27 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT5X27", - "kind":"keyword", - "trigger":"WT5X27" + "trigger": "WT22X131", + "details": "US 2D Section WT22X131", + "kind": "type", + "contents": "section US2D WT22X131 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT5X27 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT5X27", - "kind":"keyword", - "trigger":"WT5X27" + "trigger": "WT22X131", + "details": "US 3D Section WT22X131", + "kind": "type", + "contents": "section US3D WT22X131 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT5X30 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT5X30", - "kind":"keyword", - "trigger":"WT5X30" + "trigger": "WT22X145", + "details": "US 2D Section WT22X145", + "kind": "type", + "contents": "section US2D WT22X145 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT5X30 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT5X30", - "kind":"keyword", - "trigger":"WT5X30" + "trigger": "WT22X145", + "details": "US 3D Section WT22X145", + "kind": "type", + "contents": "section US3D WT22X145 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT5X34 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT5X34", - "kind":"keyword", - "trigger":"WT5X34" + "trigger": "WT22X167.5", + "details": "US 2D Section WT22X167.5", + "kind": "type", + "contents": "section US2D WT22X167.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT5X34 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT5X34", - "kind":"keyword", - "trigger":"WT5X34" + "trigger": "WT22X167.5", + "details": "US 3D Section WT22X167.5", + "kind": "type", + "contents": "section US3D WT22X167.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT5X38.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT5X38.5", - "kind":"keyword", - "trigger":"WT5X38.5" + "trigger": "WT2X6.5", + "details": "US 2D Section WT2X6.5", + "kind": "type", + "contents": "section US2D WT2X6.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT5X38.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT5X38.5", - "kind":"keyword", - "trigger":"WT5X38.5" + "trigger": "WT2X6.5", + "details": "US 3D Section WT2X6.5", + "kind": "type", + "contents": "section US3D WT2X6.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT5X44 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT5X44", - "kind":"keyword", - "trigger":"WT5X44" + "trigger": "WT3X10", + "details": "US 2D Section WT3X10", + "kind": "type", + "contents": "section US2D WT3X10 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT5X44 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT5X44", - "kind":"keyword", - "trigger":"WT5X44" + "trigger": "WT3X10", + "details": "US 3D Section WT3X10", + "kind": "type", + "contents": "section US3D WT3X10 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT5X50 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT5X50", - "kind":"keyword", - "trigger":"WT5X50" + "trigger": "WT3X12.5", + "details": "US 2D Section WT3X12.5", + "kind": "type", + "contents": "section US2D WT3X12.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT5X50 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT5X50", - "kind":"keyword", - "trigger":"WT5X50" + "trigger": "WT3X12.5", + "details": "US 3D Section WT3X12.5", + "kind": "type", + "contents": "section US3D WT3X12.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT5X56 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT5X56", - "kind":"keyword", - "trigger":"WT5X56" + "trigger": "WT3X4.25", + "details": "US 2D Section WT3X4.25", + "kind": "type", + "contents": "section US2D WT3X4.25 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT5X56 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT5X56", - "kind":"keyword", - "trigger":"WT5X56" + "trigger": "WT3X4.25", + "details": "US 3D Section WT3X4.25", + "kind": "type", + "contents": "section US3D WT3X4.25 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT5X6 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT5X6", - "kind":"keyword", - "trigger":"WT5X6" + "trigger": "WT3X4.5", + "details": "US 2D Section WT3X4.5", + "kind": "type", + "contents": "section US2D WT3X4.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT5X6 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT5X6", - "kind":"keyword", - "trigger":"WT5X6" + "trigger": "WT3X4.5", + "details": "US 3D Section WT3X4.5", + "kind": "type", + "contents": "section US3D WT3X4.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT5X7.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT5X7.5", - "kind":"keyword", - "trigger":"WT5X7.5" + "trigger": "WT3X6", + "details": "US 2D Section WT3X6", + "kind": "type", + "contents": "section US2D WT3X6 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT5X7.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT5X7.5", - "kind":"keyword", - "trigger":"WT5X7.5" + "trigger": "WT3X6", + "details": "US 3D Section WT3X6", + "kind": "type", + "contents": "section US3D WT3X6 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT5X8.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT5X8.5", - "kind":"keyword", - "trigger":"WT5X8.5" + "trigger": "WT3X7.5", + "details": "US 2D Section WT3X7.5", + "kind": "type", + "contents": "section US2D WT3X7.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT5X8.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT5X8.5", - "kind":"keyword", - "trigger":"WT5X8.5" + "trigger": "WT3X7.5", + "details": "US 3D Section WT3X7.5", + "kind": "type", + "contents": "section US3D WT3X7.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT5X9.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT5X9.5", - "kind":"keyword", - "trigger":"WT5X9.5" + "trigger": "WT3X8", + "details": "US 2D Section WT3X8", + "kind": "type", + "contents": "section US2D WT3X8 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT5X9.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT5X9.5", - "kind":"keyword", - "trigger":"WT5X9.5" + "trigger": "WT3X8", + "details": "US 3D Section WT3X8", + "kind": "type", + "contents": "section US3D WT3X8 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT6X105 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT6X105", - "kind":"keyword", - "trigger":"WT6X105" + "trigger": "WT4X10.5", + "details": "US 2D Section WT4X10.5", + "kind": "type", + "contents": "section US2D WT4X10.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT6X105 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT6X105", - "kind":"keyword", - "trigger":"WT6X105" + "trigger": "WT4X10.5", + "details": "US 3D Section WT4X10.5", + "kind": "type", + "contents": "section US3D WT4X10.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT6X11 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT6X11", - "kind":"keyword", - "trigger":"WT6X11" + "trigger": "WT4X12", + "details": "US 2D Section WT4X12", + "kind": "type", + "contents": "section US2D WT4X12 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT6X11 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT6X11", - "kind":"keyword", - "trigger":"WT6X11" + "trigger": "WT4X12", + "details": "US 3D Section WT4X12", + "kind": "type", + "contents": "section US3D WT4X12 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT6X115 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT6X115", - "kind":"keyword", - "trigger":"WT6X115" + "trigger": "WT4X14", + "details": "US 2D Section WT4X14", + "kind": "type", + "contents": "section US2D WT4X14 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT6X115 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT6X115", - "kind":"keyword", - "trigger":"WT6X115" + "trigger": "WT4X14", + "details": "US 3D Section WT4X14", + "kind": "type", + "contents": "section US3D WT4X14 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT6X126 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT6X126", - "kind":"keyword", - "trigger":"WT6X126" + "trigger": "WT4X15.5", + "details": "US 2D Section WT4X15.5", + "kind": "type", + "contents": "section US2D WT4X15.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT6X126 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT6X126", - "kind":"keyword", - "trigger":"WT6X126" + "trigger": "WT4X15.5", + "details": "US 3D Section WT4X15.5", + "kind": "type", + "contents": "section US3D WT4X15.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT6X13 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT6X13", - "kind":"keyword", - "trigger":"WT6X13" + "trigger": "WT4X17.5", + "details": "US 2D Section WT4X17.5", + "kind": "type", + "contents": "section US2D WT4X17.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT6X13 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT6X13", - "kind":"keyword", - "trigger":"WT6X13" + "trigger": "WT4X17.5", + "details": "US 3D Section WT4X17.5", + "kind": "type", + "contents": "section US3D WT4X17.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT6X139.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT6X139.5", - "kind":"keyword", - "trigger":"WT6X139.5" + "trigger": "WT4X20", + "details": "US 2D Section WT4X20", + "kind": "type", + "contents": "section US2D WT4X20 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT6X139.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT6X139.5", - "kind":"keyword", - "trigger":"WT6X139.5" + "trigger": "WT4X20", + "details": "US 3D Section WT4X20", + "kind": "type", + "contents": "section US3D WT4X20 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT6X15 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT6X15", - "kind":"keyword", - "trigger":"WT6X15" + "trigger": "WT4X24", + "details": "US 2D Section WT4X24", + "kind": "type", + "contents": "section US2D WT4X24 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT6X15 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT6X15", - "kind":"keyword", - "trigger":"WT6X15" + "trigger": "WT4X24", + "details": "US 3D Section WT4X24", + "kind": "type", + "contents": "section US3D WT4X24 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT6X152.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT6X152.5", - "kind":"keyword", - "trigger":"WT6X152.5" + "trigger": "WT4X29", + "details": "US 2D Section WT4X29", + "kind": "type", + "contents": "section US2D WT4X29 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT6X152.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT6X152.5", - "kind":"keyword", - "trigger":"WT6X152.5" + "trigger": "WT4X29", + "details": "US 3D Section WT4X29", + "kind": "type", + "contents": "section US3D WT4X29 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT6X168 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT6X168", - "kind":"keyword", - "trigger":"WT6X168" + "trigger": "WT4X33.5", + "details": "US 2D Section WT4X33.5", + "kind": "type", + "contents": "section US2D WT4X33.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT6X168 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT6X168", - "kind":"keyword", - "trigger":"WT6X168" + "trigger": "WT4X33.5", + "details": "US 3D Section WT4X33.5", + "kind": "type", + "contents": "section US3D WT4X33.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT6X17.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT6X17.5", - "kind":"keyword", - "trigger":"WT6X17.5" + "trigger": "WT4X5", + "details": "US 2D Section WT4X5", + "kind": "type", + "contents": "section US2D WT4X5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT6X17.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT6X17.5", - "kind":"keyword", - "trigger":"WT6X17.5" + "trigger": "WT4X5", + "details": "US 3D Section WT4X5", + "kind": "type", + "contents": "section US3D WT4X5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT6X20 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT6X20", - "kind":"keyword", - "trigger":"WT6X20" + "trigger": "WT4X6.5", + "details": "US 2D Section WT4X6.5", + "kind": "type", + "contents": "section US2D WT4X6.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT6X20 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT6X20", - "kind":"keyword", - "trigger":"WT6X20" + "trigger": "WT4X6.5", + "details": "US 3D Section WT4X6.5", + "kind": "type", + "contents": "section US3D WT4X6.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT6X22.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT6X22.5", - "kind":"keyword", - "trigger":"WT6X22.5" + "trigger": "WT4X7.5", + "details": "US 2D Section WT4X7.5", + "kind": "type", + "contents": "section US2D WT4X7.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT6X22.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT6X22.5", - "kind":"keyword", - "trigger":"WT6X22.5" + "trigger": "WT4X7.5", + "details": "US 3D Section WT4X7.5", + "kind": "type", + "contents": "section US3D WT4X7.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT6X25 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT6X25", - "kind":"keyword", - "trigger":"WT6X25" + "trigger": "WT4X9", + "details": "US 2D Section WT4X9", + "kind": "type", + "contents": "section US2D WT4X9 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT6X25 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT6X25", - "kind":"keyword", - "trigger":"WT6X25" + "trigger": "WT4X9", + "details": "US 3D Section WT4X9", + "kind": "type", + "contents": "section US3D WT4X9 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT6X26.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT6X26.5", - "kind":"keyword", - "trigger":"WT6X26.5" + "trigger": "WT5X11", + "details": "US 2D Section WT5X11", + "kind": "type", + "contents": "section US2D WT5X11 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT6X26.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT6X26.5", - "kind":"keyword", - "trigger":"WT6X26.5" + "trigger": "WT5X11", + "details": "US 3D Section WT5X11", + "kind": "type", + "contents": "section US3D WT5X11 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT6X29 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT6X29", - "kind":"keyword", - "trigger":"WT6X29" + "trigger": "WT5X13", + "details": "US 2D Section WT5X13", + "kind": "type", + "contents": "section US2D WT5X13 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT6X29 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT6X29", - "kind":"keyword", - "trigger":"WT6X29" + "trigger": "WT5X13", + "details": "US 3D Section WT5X13", + "kind": "type", + "contents": "section US3D WT5X13 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT6X32.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT6X32.5", - "kind":"keyword", - "trigger":"WT6X32.5" + "trigger": "WT5X15", + "details": "US 2D Section WT5X15", + "kind": "type", + "contents": "section US2D WT5X15 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT6X32.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT6X32.5", - "kind":"keyword", - "trigger":"WT6X32.5" + "trigger": "WT5X15", + "details": "US 3D Section WT5X15", + "kind": "type", + "contents": "section US3D WT5X15 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT6X36 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT6X36", - "kind":"keyword", - "trigger":"WT6X36" + "trigger": "WT5X16.5", + "details": "US 2D Section WT5X16.5", + "kind": "type", + "contents": "section US2D WT5X16.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT6X36 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT6X36", - "kind":"keyword", - "trigger":"WT6X36" + "trigger": "WT5X16.5", + "details": "US 3D Section WT5X16.5", + "kind": "type", + "contents": "section US3D WT5X16.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT6X39.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT6X39.5", - "kind":"keyword", - "trigger":"WT6X39.5" + "trigger": "WT5X19.5", + "details": "US 2D Section WT5X19.5", + "kind": "type", + "contents": "section US2D WT5X19.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT6X39.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT6X39.5", - "kind":"keyword", - "trigger":"WT6X39.5" + "trigger": "WT5X19.5", + "details": "US 3D Section WT5X19.5", + "kind": "type", + "contents": "section US3D WT5X19.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT6X43.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT6X43.5", - "kind":"keyword", - "trigger":"WT6X43.5" + "trigger": "WT5X22.5", + "details": "US 2D Section WT5X22.5", + "kind": "type", + "contents": "section US2D WT5X22.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT6X43.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT6X43.5", - "kind":"keyword", - "trigger":"WT6X43.5" + "trigger": "WT5X22.5", + "details": "US 3D Section WT5X22.5", + "kind": "type", + "contents": "section US3D WT5X22.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT6X48 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT6X48", - "kind":"keyword", - "trigger":"WT6X48" + "trigger": "WT5X24.5", + "details": "US 2D Section WT5X24.5", + "kind": "type", + "contents": "section US2D WT5X24.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT6X48 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT6X48", - "kind":"keyword", - "trigger":"WT6X48" + "trigger": "WT5X24.5", + "details": "US 3D Section WT5X24.5", + "kind": "type", + "contents": "section US3D WT5X24.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT6X53 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT6X53", - "kind":"keyword", - "trigger":"WT6X53" + "trigger": "WT5X27", + "details": "US 2D Section WT5X27", + "kind": "type", + "contents": "section US2D WT5X27 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT6X53 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT6X53", - "kind":"keyword", - "trigger":"WT6X53" + "trigger": "WT5X27", + "details": "US 3D Section WT5X27", + "kind": "type", + "contents": "section US3D WT5X27 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT6X60 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT6X60", - "kind":"keyword", - "trigger":"WT6X60" + "trigger": "WT5X30", + "details": "US 2D Section WT5X30", + "kind": "type", + "contents": "section US2D WT5X30 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT6X60 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT6X60", - "kind":"keyword", - "trigger":"WT6X60" + "trigger": "WT5X30", + "details": "US 3D Section WT5X30", + "kind": "type", + "contents": "section US3D WT5X30 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT6X68 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT6X68", - "kind":"keyword", - "trigger":"WT6X68" + "trigger": "WT5X34", + "details": "US 2D Section WT5X34", + "kind": "type", + "contents": "section US2D WT5X34 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT6X68 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT6X68", - "kind":"keyword", - "trigger":"WT6X68" + "trigger": "WT5X34", + "details": "US 3D Section WT5X34", + "kind": "type", + "contents": "section US3D WT5X34 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT6X7 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT6X7", - "kind":"keyword", - "trigger":"WT6X7" + "trigger": "WT5X38.5", + "details": "US 2D Section WT5X38.5", + "kind": "type", + "contents": "section US2D WT5X38.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT6X7 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT6X7", - "kind":"keyword", - "trigger":"WT6X7" + "trigger": "WT5X38.5", + "details": "US 3D Section WT5X38.5", + "kind": "type", + "contents": "section US3D WT5X38.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT6X76 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT6X76", - "kind":"keyword", - "trigger":"WT6X76" + "trigger": "WT5X44", + "details": "US 2D Section WT5X44", + "kind": "type", + "contents": "section US2D WT5X44 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT6X76 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT6X76", - "kind":"keyword", - "trigger":"WT6X76" + "trigger": "WT5X44", + "details": "US 3D Section WT5X44", + "kind": "type", + "contents": "section US3D WT5X44 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT6X8 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT6X8", - "kind":"keyword", - "trigger":"WT6X8" + "trigger": "WT5X50", + "details": "US 2D Section WT5X50", + "kind": "type", + "contents": "section US2D WT5X50 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT6X8 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT6X8", - "kind":"keyword", - "trigger":"WT6X8" + "trigger": "WT5X50", + "details": "US 3D Section WT5X50", + "kind": "type", + "contents": "section US3D WT5X50 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT6X85 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT6X85", - "kind":"keyword", - "trigger":"WT6X85" + "trigger": "WT5X56", + "details": "US 2D Section WT5X56", + "kind": "type", + "contents": "section US2D WT5X56 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT6X85 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT6X85", - "kind":"keyword", - "trigger":"WT6X85" + "trigger": "WT5X56", + "details": "US 3D Section WT5X56", + "kind": "type", + "contents": "section US3D WT5X56 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT6X9.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT6X9.5", - "kind":"keyword", - "trigger":"WT6X9.5" + "trigger": "WT5X6", + "details": "US 2D Section WT5X6", + "kind": "type", + "contents": "section US2D WT5X6 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT6X9.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT6X9.5", - "kind":"keyword", - "trigger":"WT6X9.5" + "trigger": "WT5X6", + "details": "US 3D Section WT5X6", + "kind": "type", + "contents": "section US3D WT5X6 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT6X95 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT6X95", - "kind":"keyword", - "trigger":"WT6X95" + "trigger": "WT5X7.5", + "details": "US 2D Section WT5X7.5", + "kind": "type", + "contents": "section US2D WT5X7.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT6X95 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT6X95", - "kind":"keyword", - "trigger":"WT6X95" + "trigger": "WT5X7.5", + "details": "US 3D Section WT5X7.5", + "kind": "type", + "contents": "section US3D WT5X7.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT7X105.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT7X105.5", - "kind":"keyword", - "trigger":"WT7X105.5" + "trigger": "WT5X8.5", + "details": "US 2D Section WT5X8.5", + "kind": "type", + "contents": "section US2D WT5X8.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT7X105.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT7X105.5", - "kind":"keyword", - "trigger":"WT7X105.5" + "trigger": "WT5X8.5", + "details": "US 3D Section WT5X8.5", + "kind": "type", + "contents": "section US3D WT5X8.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT7X11 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT7X11", - "kind":"keyword", - "trigger":"WT7X11" + "trigger": "WT5X9.5", + "details": "US 2D Section WT5X9.5", + "kind": "type", + "contents": "section US2D WT5X9.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT7X11 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT7X11", - "kind":"keyword", - "trigger":"WT7X11" + "trigger": "WT5X9.5", + "details": "US 3D Section WT5X9.5", + "kind": "type", + "contents": "section US3D WT5X9.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT7X116.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT7X116.5", - "kind":"keyword", - "trigger":"WT7X116.5" + "trigger": "WT6X105", + "details": "US 2D Section WT6X105", + "kind": "type", + "contents": "section US2D WT6X105 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT7X116.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT7X116.5", - "kind":"keyword", - "trigger":"WT7X116.5" + "trigger": "WT6X105", + "details": "US 3D Section WT6X105", + "kind": "type", + "contents": "section US3D WT6X105 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT7X128.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT7X128.5", - "kind":"keyword", - "trigger":"WT7X128.5" + "trigger": "WT6X11", + "details": "US 2D Section WT6X11", + "kind": "type", + "contents": "section US2D WT6X11 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT7X128.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT7X128.5", - "kind":"keyword", - "trigger":"WT7X128.5" + "trigger": "WT6X11", + "details": "US 3D Section WT6X11", + "kind": "type", + "contents": "section US3D WT6X11 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT7X13 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT7X13", - "kind":"keyword", - "trigger":"WT7X13" + "trigger": "WT6X115", + "details": "US 2D Section WT6X115", + "kind": "type", + "contents": "section US2D WT6X115 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT7X13 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT7X13", - "kind":"keyword", - "trigger":"WT7X13" + "trigger": "WT6X115", + "details": "US 3D Section WT6X115", + "kind": "type", + "contents": "section US3D WT6X115 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT7X141.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT7X141.5", - "kind":"keyword", - "trigger":"WT7X141.5" + "trigger": "WT6X126", + "details": "US 2D Section WT6X126", + "kind": "type", + "contents": "section US2D WT6X126 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT7X141.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT7X141.5", - "kind":"keyword", - "trigger":"WT7X141.5" + "trigger": "WT6X126", + "details": "US 3D Section WT6X126", + "kind": "type", + "contents": "section US3D WT6X126 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT7X15 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT7X15", - "kind":"keyword", - "trigger":"WT7X15" + "trigger": "WT6X13", + "details": "US 2D Section WT6X13", + "kind": "type", + "contents": "section US2D WT6X13 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT7X15 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT7X15", - "kind":"keyword", - "trigger":"WT7X15" + "trigger": "WT6X13", + "details": "US 3D Section WT6X13", + "kind": "type", + "contents": "section US3D WT6X13 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT7X155.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT7X155.5", - "kind":"keyword", - "trigger":"WT7X155.5" + "trigger": "WT6X139.5", + "details": "US 2D Section WT6X139.5", + "kind": "type", + "contents": "section US2D WT6X139.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT7X155.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT7X155.5", - "kind":"keyword", - "trigger":"WT7X155.5" + "trigger": "WT6X139.5", + "details": "US 3D Section WT6X139.5", + "kind": "type", + "contents": "section US3D WT6X139.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT7X17 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT7X17", - "kind":"keyword", - "trigger":"WT7X17" + "trigger": "WT6X15", + "details": "US 2D Section WT6X15", + "kind": "type", + "contents": "section US2D WT6X15 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT7X17 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT7X17", - "kind":"keyword", - "trigger":"WT7X17" + "trigger": "WT6X15", + "details": "US 3D Section WT6X15", + "kind": "type", + "contents": "section US3D WT6X15 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT7X171 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT7X171", - "kind":"keyword", - "trigger":"WT7X171" + "trigger": "WT6X152.5", + "details": "US 2D Section WT6X152.5", + "kind": "type", + "contents": "section US2D WT6X152.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT7X171 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT7X171", - "kind":"keyword", - "trigger":"WT7X171" + "trigger": "WT6X152.5", + "details": "US 3D Section WT6X152.5", + "kind": "type", + "contents": "section US3D WT6X152.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT7X185 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT7X185", - "kind":"keyword", - "trigger":"WT7X185" + "trigger": "WT6X168", + "details": "US 2D Section WT6X168", + "kind": "type", + "contents": "section US2D WT6X168 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT7X185 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT7X185", - "kind":"keyword", - "trigger":"WT7X185" + "trigger": "WT6X168", + "details": "US 3D Section WT6X168", + "kind": "type", + "contents": "section US3D WT6X168 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT7X19 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT7X19", - "kind":"keyword", - "trigger":"WT7X19" + "trigger": "WT6X17.5", + "details": "US 2D Section WT6X17.5", + "kind": "type", + "contents": "section US2D WT6X17.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT7X19 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT7X19", - "kind":"keyword", - "trigger":"WT7X19" + "trigger": "WT6X17.5", + "details": "US 3D Section WT6X17.5", + "kind": "type", + "contents": "section US3D WT6X17.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT7X199 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT7X199", - "kind":"keyword", - "trigger":"WT7X199" + "trigger": "WT6X20", + "details": "US 2D Section WT6X20", + "kind": "type", + "contents": "section US2D WT6X20 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT7X199 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT7X199", - "kind":"keyword", - "trigger":"WT7X199" + "trigger": "WT6X20", + "details": "US 3D Section WT6X20", + "kind": "type", + "contents": "section US3D WT6X20 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT7X21.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT7X21.5", - "kind":"keyword", - "trigger":"WT7X21.5" + "trigger": "WT6X22.5", + "details": "US 2D Section WT6X22.5", + "kind": "type", + "contents": "section US2D WT6X22.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT7X21.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT7X21.5", - "kind":"keyword", - "trigger":"WT7X21.5" + "trigger": "WT6X22.5", + "details": "US 3D Section WT6X22.5", + "kind": "type", + "contents": "section US3D WT6X22.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT7X213 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT7X213", - "kind":"keyword", - "trigger":"WT7X213" + "trigger": "WT6X25", + "details": "US 2D Section WT6X25", + "kind": "type", + "contents": "section US2D WT6X25 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT7X213 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT7X213", - "kind":"keyword", - "trigger":"WT7X213" + "trigger": "WT6X25", + "details": "US 3D Section WT6X25", + "kind": "type", + "contents": "section US3D WT6X25 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT7X227.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT7X227.5", - "kind":"keyword", - "trigger":"WT7X227.5" + "trigger": "WT6X26.5", + "details": "US 2D Section WT6X26.5", + "kind": "type", + "contents": "section US2D WT6X26.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT7X227.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT7X227.5", - "kind":"keyword", - "trigger":"WT7X227.5" + "trigger": "WT6X26.5", + "details": "US 3D Section WT6X26.5", + "kind": "type", + "contents": "section US3D WT6X26.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT7X24 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT7X24", - "kind":"keyword", - "trigger":"WT7X24" + "trigger": "WT6X29", + "details": "US 2D Section WT6X29", + "kind": "type", + "contents": "section US2D WT6X29 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT7X24 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT7X24", - "kind":"keyword", - "trigger":"WT7X24" + "trigger": "WT6X29", + "details": "US 3D Section WT6X29", + "kind": "type", + "contents": "section US3D WT6X29 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT7X250 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT7X250", - "kind":"keyword", - "trigger":"WT7X250" + "trigger": "WT6X32.5", + "details": "US 2D Section WT6X32.5", + "kind": "type", + "contents": "section US2D WT6X32.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT7X250 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT7X250", - "kind":"keyword", - "trigger":"WT7X250" + "trigger": "WT6X32.5", + "details": "US 3D Section WT6X32.5", + "kind": "type", + "contents": "section US3D WT6X32.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT7X26.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT7X26.5", - "kind":"keyword", - "trigger":"WT7X26.5" + "trigger": "WT6X36", + "details": "US 2D Section WT6X36", + "kind": "type", + "contents": "section US2D WT6X36 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT7X26.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT7X26.5", - "kind":"keyword", - "trigger":"WT7X26.5" + "trigger": "WT6X36", + "details": "US 3D Section WT6X36", + "kind": "type", + "contents": "section US3D WT6X36 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT7X275 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT7X275", - "kind":"keyword", - "trigger":"WT7X275" + "trigger": "WT6X39.5", + "details": "US 2D Section WT6X39.5", + "kind": "type", + "contents": "section US2D WT6X39.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT7X275 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT7X275", - "kind":"keyword", - "trigger":"WT7X275" + "trigger": "WT6X39.5", + "details": "US 3D Section WT6X39.5", + "kind": "type", + "contents": "section US3D WT6X39.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT7X30.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT7X30.5", - "kind":"keyword", - "trigger":"WT7X30.5" + "trigger": "WT6X43.5", + "details": "US 2D Section WT6X43.5", + "kind": "type", + "contents": "section US2D WT6X43.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT7X30.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT7X30.5", - "kind":"keyword", - "trigger":"WT7X30.5" + "trigger": "WT6X43.5", + "details": "US 3D Section WT6X43.5", + "kind": "type", + "contents": "section US3D WT6X43.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT7X302.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT7X302.5", - "kind":"keyword", - "trigger":"WT7X302.5" + "trigger": "WT6X48", + "details": "US 2D Section WT6X48", + "kind": "type", + "contents": "section US2D WT6X48 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT7X302.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT7X302.5", - "kind":"keyword", - "trigger":"WT7X302.5" + "trigger": "WT6X48", + "details": "US 3D Section WT6X48", + "kind": "type", + "contents": "section US3D WT6X48 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT7X332.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT7X332.5", - "kind":"keyword", - "trigger":"WT7X332.5" + "trigger": "WT6X53", + "details": "US 2D Section WT6X53", + "kind": "type", + "contents": "section US2D WT6X53 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT7X332.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT7X332.5", - "kind":"keyword", - "trigger":"WT7X332.5" + "trigger": "WT6X53", + "details": "US 3D Section WT6X53", + "kind": "type", + "contents": "section US3D WT6X53 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT7X34 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT7X34", - "kind":"keyword", - "trigger":"WT7X34" + "trigger": "WT6X60", + "details": "US 2D Section WT6X60", + "kind": "type", + "contents": "section US2D WT6X60 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT7X34 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT7X34", - "kind":"keyword", - "trigger":"WT7X34" + "trigger": "WT6X60", + "details": "US 3D Section WT6X60", + "kind": "type", + "contents": "section US3D WT6X60 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT7X365 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT7X365", - "kind":"keyword", - "trigger":"WT7X365" + "trigger": "WT6X68", + "details": "US 2D Section WT6X68", + "kind": "type", + "contents": "section US2D WT6X68 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT7X365 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT7X365", - "kind":"keyword", - "trigger":"WT7X365" + "trigger": "WT6X68", + "details": "US 3D Section WT6X68", + "kind": "type", + "contents": "section US3D WT6X68 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT7X37 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT7X37", - "kind":"keyword", - "trigger":"WT7X37" + "trigger": "WT6X7", + "details": "US 2D Section WT6X7", + "kind": "type", + "contents": "section US2D WT6X7 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT7X37 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT7X37", - "kind":"keyword", - "trigger":"WT7X37" + "trigger": "WT6X7", + "details": "US 3D Section WT6X7", + "kind": "type", + "contents": "section US3D WT6X7 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT7X404 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT7X404", - "kind":"keyword", - "trigger":"WT7X404" + "trigger": "WT6X76", + "details": "US 2D Section WT6X76", + "kind": "type", + "contents": "section US2D WT6X76 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT7X404 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT7X404", - "kind":"keyword", - "trigger":"WT7X404" + "trigger": "WT6X76", + "details": "US 3D Section WT6X76", + "kind": "type", + "contents": "section US3D WT6X76 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT7X41 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT7X41", - "kind":"keyword", - "trigger":"WT7X41" + "trigger": "WT6X8", + "details": "US 2D Section WT6X8", + "kind": "type", + "contents": "section US2D WT6X8 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT7X41 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT7X41", - "kind":"keyword", - "trigger":"WT7X41" + "trigger": "WT6X8", + "details": "US 3D Section WT6X8", + "kind": "type", + "contents": "section US3D WT6X8 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT7X436.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT7X436.5", - "kind":"keyword", - "trigger":"WT7X436.5" + "trigger": "WT6X85", + "details": "US 2D Section WT6X85", + "kind": "type", + "contents": "section US2D WT6X85 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT7X436.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT7X436.5", - "kind":"keyword", - "trigger":"WT7X436.5" + "trigger": "WT6X85", + "details": "US 3D Section WT6X85", + "kind": "type", + "contents": "section US3D WT6X85 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT7X45 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT7X45", - "kind":"keyword", - "trigger":"WT7X45" + "trigger": "WT6X9.5", + "details": "US 2D Section WT6X9.5", + "kind": "type", + "contents": "section US2D WT6X9.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT7X45 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT7X45", - "kind":"keyword", - "trigger":"WT7X45" + "trigger": "WT6X9.5", + "details": "US 3D Section WT6X9.5", + "kind": "type", + "contents": "section US3D WT6X9.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT7X49.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT7X49.5", - "kind":"keyword", - "trigger":"WT7X49.5" + "trigger": "WT6X95", + "details": "US 2D Section WT6X95", + "kind": "type", + "contents": "section US2D WT6X95 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT7X49.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT7X49.5", - "kind":"keyword", - "trigger":"WT7X49.5" + "trigger": "WT6X95", + "details": "US 3D Section WT6X95", + "kind": "type", + "contents": "section US3D WT6X95 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT7X54.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT7X54.5", - "kind":"keyword", - "trigger":"WT7X54.5" + "trigger": "WT7X105.5", + "details": "US 2D Section WT7X105.5", + "kind": "type", + "contents": "section US2D WT7X105.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT7X54.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT7X54.5", - "kind":"keyword", - "trigger":"WT7X54.5" + "trigger": "WT7X105.5", + "details": "US 3D Section WT7X105.5", + "kind": "type", + "contents": "section US3D WT7X105.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT7X60 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT7X60", - "kind":"keyword", - "trigger":"WT7X60" + "trigger": "WT7X11", + "details": "US 2D Section WT7X11", + "kind": "type", + "contents": "section US2D WT7X11 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT7X60 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT7X60", - "kind":"keyword", - "trigger":"WT7X60" + "trigger": "WT7X11", + "details": "US 3D Section WT7X11", + "kind": "type", + "contents": "section US3D WT7X11 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT7X66 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT7X66", - "kind":"keyword", - "trigger":"WT7X66" + "trigger": "WT7X116.5", + "details": "US 2D Section WT7X116.5", + "kind": "type", + "contents": "section US2D WT7X116.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT7X66 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT7X66", - "kind":"keyword", - "trigger":"WT7X66" + "trigger": "WT7X116.5", + "details": "US 3D Section WT7X116.5", + "kind": "type", + "contents": "section US3D WT7X116.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT7X72.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT7X72.5", - "kind":"keyword", - "trigger":"WT7X72.5" + "trigger": "WT7X128.5", + "details": "US 2D Section WT7X128.5", + "kind": "type", + "contents": "section US2D WT7X128.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT7X72.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT7X72.5", - "kind":"keyword", - "trigger":"WT7X72.5" + "trigger": "WT7X128.5", + "details": "US 3D Section WT7X128.5", + "kind": "type", + "contents": "section US3D WT7X128.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT7X79.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT7X79.5", - "kind":"keyword", - "trigger":"WT7X79.5" + "trigger": "WT7X13", + "details": "US 2D Section WT7X13", + "kind": "type", + "contents": "section US2D WT7X13 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT7X79.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT7X79.5", - "kind":"keyword", - "trigger":"WT7X79.5" + "trigger": "WT7X13", + "details": "US 3D Section WT7X13", + "kind": "type", + "contents": "section US3D WT7X13 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT7X88 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT7X88", - "kind":"keyword", - "trigger":"WT7X88" + "trigger": "WT7X141.5", + "details": "US 2D Section WT7X141.5", + "kind": "type", + "contents": "section US2D WT7X141.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT7X88 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT7X88", - "kind":"keyword", - "trigger":"WT7X88" + "trigger": "WT7X141.5", + "details": "US 3D Section WT7X141.5", + "kind": "type", + "contents": "section US3D WT7X141.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT7X96.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT7X96.5", - "kind":"keyword", - "trigger":"WT7X96.5" + "trigger": "WT7X15", + "details": "US 2D Section WT7X15", + "kind": "type", + "contents": "section US2D WT7X15 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT7X96.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT7X96.5", - "kind":"keyword", - "trigger":"WT7X96.5" + "trigger": "WT7X15", + "details": "US 3D Section WT7X15", + "kind": "type", + "contents": "section US3D WT7X15 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT8X13 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT8X13", - "kind":"keyword", - "trigger":"WT8X13" + "trigger": "WT7X155.5", + "details": "US 2D Section WT7X155.5", + "kind": "type", + "contents": "section US2D WT7X155.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT8X13 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT8X13", - "kind":"keyword", - "trigger":"WT8X13" + "trigger": "WT7X155.5", + "details": "US 3D Section WT7X155.5", + "kind": "type", + "contents": "section US3D WT7X155.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT8X15.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT8X15.5", - "kind":"keyword", - "trigger":"WT8X15.5" + "trigger": "WT7X17", + "details": "US 2D Section WT7X17", + "kind": "type", + "contents": "section US2D WT7X17 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT8X15.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT8X15.5", - "kind":"keyword", - "trigger":"WT8X15.5" + "trigger": "WT7X17", + "details": "US 3D Section WT7X17", + "kind": "type", + "contents": "section US3D WT7X17 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT8X18 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT8X18", - "kind":"keyword", - "trigger":"WT8X18" + "trigger": "WT7X171", + "details": "US 2D Section WT7X171", + "kind": "type", + "contents": "section US2D WT7X171 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT8X18 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT8X18", - "kind":"keyword", - "trigger":"WT8X18" + "trigger": "WT7X171", + "details": "US 3D Section WT7X171", + "kind": "type", + "contents": "section US3D WT7X171 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT8X20 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT8X20", - "kind":"keyword", - "trigger":"WT8X20" + "trigger": "WT7X185", + "details": "US 2D Section WT7X185", + "kind": "type", + "contents": "section US2D WT7X185 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT8X20 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT8X20", - "kind":"keyword", - "trigger":"WT8X20" + "trigger": "WT7X185", + "details": "US 3D Section WT7X185", + "kind": "type", + "contents": "section US3D WT7X185 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT8X22.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT8X22.5", - "kind":"keyword", - "trigger":"WT8X22.5" + "trigger": "WT7X19", + "details": "US 2D Section WT7X19", + "kind": "type", + "contents": "section US2D WT7X19 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT8X22.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT8X22.5", - "kind":"keyword", - "trigger":"WT8X22.5" + "trigger": "WT7X19", + "details": "US 3D Section WT7X19", + "kind": "type", + "contents": "section US3D WT7X19 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT8X25 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT8X25", - "kind":"keyword", - "trigger":"WT8X25" + "trigger": "WT7X199", + "details": "US 2D Section WT7X199", + "kind": "type", + "contents": "section US2D WT7X199 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT8X25 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT8X25", - "kind":"keyword", - "trigger":"WT8X25" + "trigger": "WT7X199", + "details": "US 3D Section WT7X199", + "kind": "type", + "contents": "section US3D WT7X199 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT8X28.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT8X28.5", - "kind":"keyword", - "trigger":"WT8X28.5" + "trigger": "WT7X21.5", + "details": "US 2D Section WT7X21.5", + "kind": "type", + "contents": "section US2D WT7X21.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT8X28.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT8X28.5", - "kind":"keyword", - "trigger":"WT8X28.5" + "trigger": "WT7X21.5", + "details": "US 3D Section WT7X21.5", + "kind": "type", + "contents": "section US3D WT7X21.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT8X33.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT8X33.5", - "kind":"keyword", - "trigger":"WT8X33.5" + "trigger": "WT7X213", + "details": "US 2D Section WT7X213", + "kind": "type", + "contents": "section US2D WT7X213 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT8X33.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT8X33.5", - "kind":"keyword", - "trigger":"WT8X33.5" + "trigger": "WT7X213", + "details": "US 3D Section WT7X213", + "kind": "type", + "contents": "section US3D WT7X213 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT8X38.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT8X38.5", - "kind":"keyword", - "trigger":"WT8X38.5" + "trigger": "WT7X227.5", + "details": "US 2D Section WT7X227.5", + "kind": "type", + "contents": "section US2D WT7X227.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT8X38.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT8X38.5", - "kind":"keyword", - "trigger":"WT8X38.5" + "trigger": "WT7X227.5", + "details": "US 3D Section WT7X227.5", + "kind": "type", + "contents": "section US3D WT7X227.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT8X44.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT8X44.5", - "kind":"keyword", - "trigger":"WT8X44.5" + "trigger": "WT7X24", + "details": "US 2D Section WT7X24", + "kind": "type", + "contents": "section US2D WT7X24 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT8X44.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT8X44.5", - "kind":"keyword", - "trigger":"WT8X44.5" + "trigger": "WT7X24", + "details": "US 3D Section WT7X24", + "kind": "type", + "contents": "section US3D WT7X24 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT8X50 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT8X50", - "kind":"keyword", - "trigger":"WT8X50" + "trigger": "WT7X250", + "details": "US 2D Section WT7X250", + "kind": "type", + "contents": "section US2D WT7X250 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT8X50 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT8X50", - "kind":"keyword", - "trigger":"WT8X50" + "trigger": "WT7X250", + "details": "US 3D Section WT7X250", + "kind": "type", + "contents": "section US3D WT7X250 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT9X105.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT9X105.5", - "kind":"keyword", - "trigger":"WT9X105.5" + "trigger": "WT7X26.5", + "details": "US 2D Section WT7X26.5", + "kind": "type", + "contents": "section US2D WT7X26.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT9X105.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT9X105.5", - "kind":"keyword", - "trigger":"WT9X105.5" + "trigger": "WT7X26.5", + "details": "US 3D Section WT7X26.5", + "kind": "type", + "contents": "section US3D WT7X26.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT9X117 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT9X117", - "kind":"keyword", - "trigger":"WT9X117" + "trigger": "WT7X275", + "details": "US 2D Section WT7X275", + "kind": "type", + "contents": "section US2D WT7X275 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT9X117 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT9X117", - "kind":"keyword", - "trigger":"WT9X117" + "trigger": "WT7X275", + "details": "US 3D Section WT7X275", + "kind": "type", + "contents": "section US3D WT7X275 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT9X129 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT9X129", - "kind":"keyword", - "trigger":"WT9X129" + "trigger": "WT7X30.5", + "details": "US 2D Section WT7X30.5", + "kind": "type", + "contents": "section US2D WT7X30.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT9X129 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT9X129", - "kind":"keyword", - "trigger":"WT9X129" + "trigger": "WT7X30.5", + "details": "US 3D Section WT7X30.5", + "kind": "type", + "contents": "section US3D WT7X30.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT9X141.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT9X141.5", - "kind":"keyword", - "trigger":"WT9X141.5" + "trigger": "WT7X302.5", + "details": "US 2D Section WT7X302.5", + "kind": "type", + "contents": "section US2D WT7X302.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT9X141.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT9X141.5", - "kind":"keyword", - "trigger":"WT9X141.5" + "trigger": "WT7X302.5", + "details": "US 3D Section WT7X302.5", + "kind": "type", + "contents": "section US3D WT7X302.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT9X155.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT9X155.5", - "kind":"keyword", - "trigger":"WT9X155.5" + "trigger": "WT7X332.5", + "details": "US 2D Section WT7X332.5", + "kind": "type", + "contents": "section US2D WT7X332.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT9X155.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT9X155.5", - "kind":"keyword", - "trigger":"WT9X155.5" + "trigger": "WT7X332.5", + "details": "US 3D Section WT7X332.5", + "kind": "type", + "contents": "section US3D WT7X332.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT9X17.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT9X17.5", - "kind":"keyword", - "trigger":"WT9X17.5" + "trigger": "WT7X34", + "details": "US 2D Section WT7X34", + "kind": "type", + "contents": "section US2D WT7X34 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT9X17.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT9X17.5", - "kind":"keyword", - "trigger":"WT9X17.5" + "trigger": "WT7X34", + "details": "US 3D Section WT7X34", + "kind": "type", + "contents": "section US3D WT7X34 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT9X20 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT9X20", - "kind":"keyword", - "trigger":"WT9X20" + "trigger": "WT7X365", + "details": "US 2D Section WT7X365", + "kind": "type", + "contents": "section US2D WT7X365 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT9X20 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT9X20", - "kind":"keyword", - "trigger":"WT9X20" + "trigger": "WT7X365", + "details": "US 3D Section WT7X365", + "kind": "type", + "contents": "section US3D WT7X365 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT9X23 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT9X23", - "kind":"keyword", - "trigger":"WT9X23" + "trigger": "WT7X37", + "details": "US 2D Section WT7X37", + "kind": "type", + "contents": "section US2D WT7X37 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT9X23 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT9X23", - "kind":"keyword", - "trigger":"WT9X23" + "trigger": "WT7X37", + "details": "US 3D Section WT7X37", + "kind": "type", + "contents": "section US3D WT7X37 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT9X25 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT9X25", - "kind":"keyword", - "trigger":"WT9X25" + "trigger": "WT7X404", + "details": "US 2D Section WT7X404", + "kind": "type", + "contents": "section US2D WT7X404 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT9X25 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT9X25", - "kind":"keyword", - "trigger":"WT9X25" + "trigger": "WT7X404", + "details": "US 3D Section WT7X404", + "kind": "type", + "contents": "section US3D WT7X404 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT9X27.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT9X27.5", - "kind":"keyword", - "trigger":"WT9X27.5" + "trigger": "WT7X41", + "details": "US 2D Section WT7X41", + "kind": "type", + "contents": "section US2D WT7X41 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT9X27.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT9X27.5", - "kind":"keyword", - "trigger":"WT9X27.5" + "trigger": "WT7X41", + "details": "US 3D Section WT7X41", + "kind": "type", + "contents": "section US3D WT7X41 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT9X30 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT9X30", - "kind":"keyword", - "trigger":"WT9X30" + "trigger": "WT7X436.5", + "details": "US 2D Section WT7X436.5", + "kind": "type", + "contents": "section US2D WT7X436.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT9X30 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT9X30", - "kind":"keyword", - "trigger":"WT9X30" + "trigger": "WT7X436.5", + "details": "US 3D Section WT7X436.5", + "kind": "type", + "contents": "section US3D WT7X436.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT9X32.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT9X32.5", - "kind":"keyword", - "trigger":"WT9X32.5" + "trigger": "WT7X45", + "details": "US 2D Section WT7X45", + "kind": "type", + "contents": "section US2D WT7X45 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT9X32.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT9X32.5", - "kind":"keyword", - "trigger":"WT9X32.5" + "trigger": "WT7X45", + "details": "US 3D Section WT7X45", + "kind": "type", + "contents": "section US3D WT7X45 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT9X35.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT9X35.5", - "kind":"keyword", - "trigger":"WT9X35.5" + "trigger": "WT7X49.5", + "details": "US 2D Section WT7X49.5", + "kind": "type", + "contents": "section US2D WT7X49.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT9X35.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT9X35.5", - "kind":"keyword", - "trigger":"WT9X35.5" + "trigger": "WT7X49.5", + "details": "US 3D Section WT7X49.5", + "kind": "type", + "contents": "section US3D WT7X49.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT9X38 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT9X38", - "kind":"keyword", - "trigger":"WT9X38" + "trigger": "WT7X54.5", + "details": "US 2D Section WT7X54.5", + "kind": "type", + "contents": "section US2D WT7X54.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT9X38 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT9X38", - "kind":"keyword", - "trigger":"WT9X38" + "trigger": "WT7X54.5", + "details": "US 3D Section WT7X54.5", + "kind": "type", + "contents": "section US3D WT7X54.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT9X43 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT9X43", - "kind":"keyword", - "trigger":"WT9X43" + "trigger": "WT7X60", + "details": "US 2D Section WT7X60", + "kind": "type", + "contents": "section US2D WT7X60 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT9X43 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT9X43", - "kind":"keyword", - "trigger":"WT9X43" + "trigger": "WT7X60", + "details": "US 3D Section WT7X60", + "kind": "type", + "contents": "section US3D WT7X60 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT9X48.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT9X48.5", - "kind":"keyword", - "trigger":"WT9X48.5" + "trigger": "WT7X66", + "details": "US 2D Section WT7X66", + "kind": "type", + "contents": "section US2D WT7X66 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT9X48.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT9X48.5", - "kind":"keyword", - "trigger":"WT9X48.5" + "trigger": "WT7X66", + "details": "US 3D Section WT7X66", + "kind": "type", + "contents": "section US3D WT7X66 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT9X53 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT9X53", - "kind":"keyword", - "trigger":"WT9X53" + "trigger": "WT7X72.5", + "details": "US 2D Section WT7X72.5", + "kind": "type", + "contents": "section US2D WT7X72.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT9X53 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT9X53", - "kind":"keyword", - "trigger":"WT9X53" + "trigger": "WT7X72.5", + "details": "US 3D Section WT7X72.5", + "kind": "type", + "contents": "section US3D WT7X72.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT9X59.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT9X59.5", - "kind":"keyword", - "trigger":"WT9X59.5" + "trigger": "WT7X79.5", + "details": "US 2D Section WT7X79.5", + "kind": "type", + "contents": "section US2D WT7X79.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT9X59.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT9X59.5", - "kind":"keyword", - "trigger":"WT9X59.5" + "trigger": "WT7X79.5", + "details": "US 3D Section WT7X79.5", + "kind": "type", + "contents": "section US3D WT7X79.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT9X65 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT9X65", - "kind":"keyword", - "trigger":"WT9X65" + "trigger": "WT7X88", + "details": "US 2D Section WT7X88", + "kind": "type", + "contents": "section US2D WT7X88 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT9X65 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT9X65", - "kind":"keyword", - "trigger":"WT9X65" + "trigger": "WT7X88", + "details": "US 3D Section WT7X88", + "kind": "type", + "contents": "section US3D WT7X88 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT9X71.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT9X71.5", - "kind":"keyword", - "trigger":"WT9X71.5" + "trigger": "WT7X96.5", + "details": "US 2D Section WT7X96.5", + "kind": "type", + "contents": "section US2D WT7X96.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT9X71.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT9X71.5", - "kind":"keyword", - "trigger":"WT9X71.5" + "trigger": "WT7X96.5", + "details": "US 3D Section WT7X96.5", + "kind": "type", + "contents": "section US3D WT7X96.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT9X79 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT9X79", - "kind":"keyword", - "trigger":"WT9X79" + "trigger": "WT8X13", + "details": "US 2D Section WT8X13", + "kind": "type", + "contents": "section US2D WT8X13 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT9X79 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT9X79", - "kind":"keyword", - "trigger":"WT9X79" + "trigger": "WT8X13", + "details": "US 3D Section WT8X13", + "kind": "type", + "contents": "section US3D WT8X13 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT9X87.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT9X87.5", - "kind":"keyword", - "trigger":"WT9X87.5" + "trigger": "WT8X15.5", + "details": "US 2D Section WT8X15.5", + "kind": "type", + "contents": "section US2D WT8X15.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT9X87.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT9X87.5", - "kind":"keyword", - "trigger":"WT9X87.5" + "trigger": "WT8X15.5", + "details": "US 3D Section WT8X15.5", + "kind": "type", + "contents": "section US3D WT8X15.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"section US2D WT9X96 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n", - "details":"US 2D Section WT9X96", - "kind":"keyword", - "trigger":"WT9X96" + "trigger": "WT8X18", + "details": "US 2D Section WT8X18", + "kind": "type", + "contents": "section US2D WT8X18 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"section US3D WT9X96 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n", - "details":"US 3D Section WT9X96", - "kind":"keyword", - "trigger":"WT9X96" + "trigger": "WT8X18", + "details": "US 3D Section WT8X18", + "kind": "type", + "contents": "section US3D WT8X18 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Width" + "trigger": "WT8X20", + "details": "US 2D Section WT8X20", + "kind": "type", + "contents": "section US2D WT8X20 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"integrator WilsonPenzienNewmark ${1:(1)} ${2:(2)} ${3:(3)} ${4:[4...]}\n# (1) int, unique integrator tag\n# (2) double, alpha in Newmark algorithm\n# (3) double, beta in Newmark algorithm\n# [4...] double, damping ratios on the first n modes", - "details":"", - "kind":"type", - "trigger":"WilsonPenzienNewmark" + "trigger": "WT8X20", + "details": "US 3D Section WT8X20", + "kind": "type", + "contents": "section US3D WT8X20 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"Yeoh" + "trigger": "WT8X22.5", + "details": "US 2D Section WT8X22.5", + "kind": "type", + "contents": "section US2D WT8X22.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"acc" + "trigger": "WT8X22.5", + "details": "US 3D Section WT8X22.5", + "kind": "type", + "contents": "section US3D WT8X22.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"acceleration" + "trigger": "WT8X25", + "details": "US 2D Section WT8X25", + "kind": "type", + "contents": "section US2D WT8X25 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"amplitude" + "trigger": "WT8X25", + "details": "US 3D Section WT8X25", + "kind": "type", + "contents": "section US3D WT8X25 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"analyse" + "trigger": "WT8X28.5", + "details": "US 2D Section WT8X28.5", + "kind": "type", + "contents": "section US2D WT8X28.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"analyze" + "trigger": "WT8X28.5", + "details": "US 3D Section WT8X28.5", + "kind": "type", + "contents": "section US3D WT8X28.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"angularvelocity" + "trigger": "WT8X33.5", + "details": "US 2D Section WT8X33.5", + "kind": "type", + "contents": "section US2D WT8X33.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"avel" + "trigger": "WT8X33.5", + "details": "US 3D Section WT8X33.5", + "kind": "type", + "contents": "section US3D WT8X33.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"set band_mat ${1:(1)}\n# (1) bool, true of false", - "details":"Enable/Disable Banded Storage", - "kind":"type", - "trigger":"band_mat" + "trigger": "WT8X38.5", + "details": "US 2D Section WT8X38.5", + "kind": "type", + "contents": "section US2D WT8X38.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"bodyforce" + "trigger": "WT8X38.5", + "details": "US 3D Section WT8X38.5", + "kind": "type", + "contents": "section US3D WT8X38.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"clear", - "details":"Clear Domain", - "kind":"type", - "trigger":"clear" + "trigger": "WT8X44.5", + "details": "US 2D Section WT8X44.5", + "kind": "type", + "contents": "section US2D WT8X44.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"Concentrated Nodal Load", - "kind":"type", - "trigger":"cload" + "trigger": "WT8X44.5", + "details": "US 3D Section WT8X44.5", + "kind": "type", + "contents": "section US3D WT8X44.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"set color_model ${1:(1)}\n# (1) string, color algorithm, one of WP, MIS and false", - "details":"Set Coloring Algorithm", - "kind":"type", - "trigger":"color_model" + "trigger": "WT8X50", + "details": "US 2D Section WT8X50", + "kind": "type", + "contents": "section US2D WT8X50 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"command", - "details":"Show All Commands", - "kind":"type", - "trigger":"command" + "trigger": "WT8X50", + "details": "US 3D Section WT8X50", + "kind": "type", + "contents": "section US3D WT8X50 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"constraint" + "trigger": "WT9X105.5", + "details": "US 2D Section WT9X105.5", + "kind": "type", + "contents": "section US2D WT9X105.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"set constraint_multiplier ${1:(1)}\n# (1) double, multiplier", - "details":"Set Multiplier for Constraint", - "kind":"type", - "trigger":"constraint_multiplier" + "trigger": "WT9X105.5", + "details": "US 3D Section WT9X105.5", + "kind": "type", + "contents": "section US3D WT9X105.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"converger" + "trigger": "WT9X117", + "details": "US 2D Section WT9X117", + "kind": "type", + "contents": "section US2D WT9X117 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"converger ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)} ${5:[5]}\n# (1) string, converger type\n# (2) int, unique tag\n# (3) double, tolerance\n# (4) int, maximum iteration\n# [5] bool string, print switch, default: false", - "details":"Convergence Tester", - "kind":"type", - "trigger":"converger" + "trigger": "WT9X117", + "details": "US 3D Section WT9X117", + "kind": "type", + "contents": "section US3D WT9X117 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"criterion" + "trigger": "WT9X129", + "details": "US 2D Section WT9X129", + "kind": "type", + "contents": "section US2D WT9X129 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"deformed" + "trigger": "WT9X129", + "details": "US 3D Section WT9X129", + "kind": "type", + "contents": "section US3D WT9X129 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"delete" + "trigger": "WT9X141.5", + "details": "US 2D Section WT9X141.5", + "kind": "type", + "contents": "section US2D WT9X141.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"disable" + "trigger": "WT9X141.5", + "details": "US 3D Section WT9X141.5", + "kind": "type", + "contents": "section US3D WT9X141.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"disp" + "trigger": "WT9X155.5", + "details": "US 2D Section WT9X155.5", + "kind": "type", + "contents": "section US2D WT9X155.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"displacement" + "trigger": "WT9X155.5", + "details": "US 3D Section WT9X155.5", + "kind": "type", + "contents": "section US3D WT9X155.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"dispload" + "trigger": "WT9X17.5", + "details": "US 2D Section WT9X17.5", + "kind": "type", + "contents": "section US2D WT9X17.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"domain ${1:(1)}\n# (1) integer, domain tag", - "details":"Switch to Target Domain", - "kind":"type", - "trigger":"domain" + "trigger": "WT9X17.5", + "details": "US 3D Section WT9X17.5", + "kind": "type", + "contents": "section US3D WT9X17.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"double" + "trigger": "WT9X20", + "details": "US 2D Section WT9X20", + "kind": "type", + "contents": "section US2D WT9X20 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"eigen_number" + "trigger": "WT9X20", + "details": "US 3D Section WT9X20", + "kind": "type", + "contents": "section US3D WT9X20 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"eigenvalue" + "trigger": "WT9X23", + "details": "US 2D Section WT9X23", + "kind": "type", + "contents": "section US2D WT9X23 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"element" + "trigger": "WT9X23", + "details": "US 3D Section WT9X23", + "kind": "type", + "contents": "section US3D WT9X23 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"elementgroup" + "trigger": "WT9X25", + "details": "US 2D Section WT9X25", + "kind": "type", + "contents": "section US2D WT9X25 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"enable" + "trigger": "WT9X25", + "details": "US 3D Section WT9X25", + "kind": "type", + "contents": "section US3D WT9X25 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"erase" + "trigger": "WT9X27.5", + "details": "US 2D Section WT9X27.5", + "kind": "type", + "contents": "section US2D WT9X27.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"exit", - "details":"Exit/Quit", - "kind":"type", - "trigger":"exit" + "trigger": "WT9X27.5", + "details": "US 3D Section WT9X27.5", + "kind": "type", + "contents": "section US3D WT9X27.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"expression SimpleScalar ${1:(1)} ${2:(2)} ${3:(3)}\n# (1) int, unique expression tag\n# (2) string, variable list, vertical line separated\n# (3) string, expression or name of file containing expression", - "details":"Simple Scalar Valued Maths Expression", - "kind":"type", - "trigger":"expression" + "trigger": "WT9X30", + "details": "US 2D Section WT9X30", + "kind": "type", + "contents": "section US2D WT9X30 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"file ${1:(1)}\n# (1) string, file name with or without suffix .sp", - "details":"Load external file", - "kind":"type", - "trigger":"file" + "trigger": "WT9X30", + "details": "US 3D Section WT9X30", + "kind": "type", + "contents": "section US3D WT9X30 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"finiterestitutionwall" + "trigger": "WT9X32.5", + "details": "US 2D Section WT9X32.5", + "kind": "type", + "contents": "section US2D WT9X32.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"finiterestitutionwallpenalty" + "trigger": "WT9X32.5", + "details": "US 3D Section WT9X32.5", + "kind": "type", + "contents": "section US3D WT9X32.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"finiterigidwall" + "trigger": "WT9X35.5", + "details": "US 2D Section WT9X35.5", + "kind": "type", + "contents": "section US2D WT9X35.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"finiterigidwallmultiplier" + "trigger": "WT9X35.5", + "details": "US 3D Section WT9X35.5", + "kind": "type", + "contents": "section US3D WT9X35.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"finiterigidwallpenalty" + "trigger": "WT9X38", + "details": "US 2D Section WT9X38", + "kind": "type", + "contents": "section US2D WT9X38 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"fix" + "trigger": "WT9X38", + "details": "US 3D Section WT9X38", + "kind": "type", + "contents": "section US3D WT9X38 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"fix2" + "trigger": "WT9X43", + "details": "US 2D Section WT9X43", + "kind": "type", + "contents": "section US2D WT9X43 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"set fixed_step_size ${1:(1)}\n# (1) bool, true or false", - "details":"Set if to use fixed step size or allow automatic adjustment", - "kind":"type", - "trigger":"fixed_step_size" + "trigger": "WT9X43", + "details": "US 3D Section WT9X43", + "kind": "type", + "contents": "section US3D WT9X43 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"fixedlength2d" + "trigger": "WT9X48.5", + "details": "US 2D Section WT9X48.5", + "kind": "type", + "contents": "section US2D WT9X48.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"fixedlength3d" + "trigger": "WT9X48.5", + "details": "US 3D Section WT9X48.5", + "kind": "type", + "contents": "section US3D WT9X48.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"fontsize" + "trigger": "WT9X53", + "details": "US 2D Section WT9X53", + "kind": "type", + "contents": "section US2D WT9X53 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"full" + "trigger": "WT9X53", + "details": "US 3D Section WT9X53", + "kind": "type", + "contents": "section US3D WT9X53 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"fullname", - "details":"Print full name (including path) of the executable", - "kind":"type", - "trigger":"fullname" + "trigger": "WT9X59.5", + "details": "US 2D Section WT9X59.5", + "kind": "type", + "contents": "section US2D WT9X59.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"generate" + "trigger": "WT9X59.5", + "details": "US 3D Section WT9X59.5", + "kind": "type", + "contents": "section US3D WT9X59.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"generatebyplane" + "trigger": "WT9X65", + "details": "US 2D Section WT9X65", + "kind": "type", + "contents": "section US2D WT9X65 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"generatebypoint" + "trigger": "WT9X65", + "details": "US 3D Section WT9X65", + "kind": "type", + "contents": "section US3D WT9X65 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"generatebyrule" + "trigger": "WT9X71.5", + "details": "US 2D Section WT9X71.5", + "kind": "type", + "contents": "section US2D WT9X71.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"group" + "trigger": "WT9X71.5", + "details": "US 3D Section WT9X71.5", + "kind": "type", + "contents": "section US3D WT9X71.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"groupbodyforce" + "trigger": "WT9X79", + "details": "US 2D Section WT9X79", + "kind": "type", + "contents": "section US2D WT9X79 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"groupcload" + "trigger": "WT9X79", + "details": "US 3D Section WT9X79", + "kind": "type", + "contents": "section US3D WT9X79 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"groupdisp" + "trigger": "WT9X87.5", + "details": "US 2D Section WT9X87.5", + "kind": "type", + "contents": "section US2D WT9X87.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"groupdisplacement" + "trigger": "WT9X87.5", + "details": "US 3D Section WT9X87.5", + "kind": "type", + "contents": "section US3D WT9X87.5 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"groupdispload" + "trigger": "WT9X96", + "details": "US 2D Section WT9X96", + "kind": "type", + "contents": "section US2D WT9X96 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity, default: 0.0\n" }, { - "contents":"", - "details":"", - "kind":"type", - "trigger":"groupgroup" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"groupmultiplierbc" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"grouppenaltybc" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"hdf5recorder" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"help" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"history" - }, - { - "contents":"import ${1:(1)}\n# (1) string, external module name", - "details":"Import External Module", - "kind":"type", - "trigger":"import" - }, - { - "contents":"set ini_step_size ${1:(1)}\n# (1) double, step size", - "details":"Set Initial Step Size", - "kind":"type", - "trigger":"ini_step_size" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"initial" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"integrator" - }, - { - "contents":"set iterative_refinement ${1:(1)}\n# (1) integer, number of refinement steps", - "details":"Set Iterative Refinement Number", - "kind":"type", - "trigger":"iterative_refinement" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"list" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"load" - }, - { - "contents":"set load_multiplier ${1:(1)}\n# (1) double, multiplier", - "details":"Set Multiplier for Load", - "kind":"type", - "trigger":"load_multiplier" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"mass" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"material" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"materialtest1d" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"materialtest2d" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"materialtest3d" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"sectiontest1d" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"sectiontest2d" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"sectiontest3d" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"materialtestbyload1d" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"materialtestbyload2d" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"materialtestbyload3d" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"materialtestbyloadwithbase3d" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"materialtestbystrainhistory" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"materialtestbystresshistory" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"sectiontestbydeformationhistory" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"materialtestwithbase3d" - }, - { - "contents":"set max_iteration ${1:(1)}\n# (1) integer, number of iterations", - "details":"Set Maximum Iteration", - "kind":"type", - "trigger":"max_iteration" - }, - { - "contents":"set max_step_size ${1:(1)}\n# (1) double, step size", - "details":"Set Maximum Step Size", - "kind":"type", - "trigger":"max_step_size" - }, - { - "contents":"set min_step_size ${1:(1)}\n# (1) double, step size", - "details":"Set Minimum Step Size", - "kind":"type", - "trigger":"min_step_size" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"mixed" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"modifier" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"mpc" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"multiplierbc" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"mute" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"nobar" - }, - { - "contents":"element TranslationConnector2D ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)}\n# (1) integer, unique element tag\n# (2) integer, node i\n# (3) integer, node j\n# (4) integer, node k", - "details":"Define 2D Translation Connector", - "kind":"type", - "trigger":"TranslationConnector2D" - }, - { - "contents":"element TranslationConnector3D ${1:(1)} ${2:(2)} ${3:(3)} ${4:(4)}\n# (1) integer, unique element tag\n# (2) integer, node i\n# (3) integer, node j\n# (4) integer, node k", - "details":"Define 3D Translation Connector", - "kind":"type", - "trigger":"TranslationConnector3D" - }, - { - "contents":"node ${1:(1)} ${2:(2...)}\n# (1) integer, unique node tag\n# (2...) double, coordinates", - "details":"Define Node", - "kind":"type", - "trigger":"node" - }, - { - "contents":"node ${1:(1)} ${2:[2...]}\n# (1) int, unique tag\n# [2...] double, coordinates", - "details":"", - "kind":"keyword", - "trigger":"node" - }, - { - "contents":"customnodegroup ${1:(1)} ${2:(2)}\n# (1) integer, unique tag\n# (2) integer, tag of expression", - "details":"", - "kind":"type", - "trigger":"customnodegroup" - }, - { - "contents":"nodegroup ${1:(1)} ${2:(2...)}\n# (1) integer, unique tag\n# (2...) integer, tags of nodes to be included", - "details":"", - "kind":"type", - "trigger":"nodegroup" - }, - { - "contents":"set num_threads ${1:(1)}\n# (1) integer, thread number", - "details":"Set Number of Threads Used by OpenMP", - "kind":"type", - "trigger":"num_threads" - }, - { - "contents":"set output_folder ${1:(1)}\n# (1) string, absolute/relative path to the output folder", - "details":"Change Output Folder", - "kind":"type", - "trigger":"output_folder" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"particlecollision2d" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"particlecollision3d" - }, - { - "contents":"peek ${1:(1)} ${2:(2...)}\n# (1) string, object type\n# (2...) integer, tags", - "details":"Quick Check", - "kind":"type", - "trigger":"peek" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"penaltybc" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"plainrecorder" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"plot" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"precheck" - }, - { - "contents":"precheck", - "details":"Dry-run analysis", - "kind":"type", - "trigger":"precheck" - }, - { - "contents":"set precision ${1:(1)}\n# (1) string, preconditioner type, full or mixed", - "details":"Set Solving Precision", - "kind":"type", - "trigger":"precision" - }, - { - "contents":"set preconditioner ${1:(1)}\n# (1) string, preconditioner type, one of Jacobi, ILU and None", - "details":"Set Preconditioner Algorithm", - "kind":"type", - "trigger":"preconditioner" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"print" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"protect" - }, - { - "contents":"pwd ${1:[1]}\n# [1] string, path name", - "details":"Print or change current working folder", - "kind":"type", - "trigger":"pwd" - }, - { - "contents":"quit", - "details":"Exit/Quit", - "kind":"type", - "trigger":"quit" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"recorder" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"remove" - }, - { - "contents":"reset", - "details":"Reset Domain", - "kind":"type", - "trigger":"reset" - }, - { - "contents":"response_spectrum ${1:(motion_file_name)} ${2:(period_file_name)} ${3:[interval]} ${4:(damping_ratio)}", - "details":"Compute response spectrum of a target ground motion over given periods", - "kind":"type", - "trigger":"response_spectrum" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"restitutionwall" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"restitutionwallpenalty" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"rigidwall" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"rigidwallmultiplier" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"rigidwallpenalty" - }, - { - "contents":"save recorder ${1:(1...)}\n# (1...) integer, tags of recorders need to be saved", - "details":"Save recorded data to disk", - "kind":"type", - "trigger":"save" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"scale" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"screen_output" - }, - { - "contents":"sdof_response ${1:(motion_file_name)} ${2:[interval]} ${3:(natural_frequency)} ${4:(damping_ratio)}", - "details":"Perform response history analysis on a SDOF system with target natural frequency and damping ratio", - "kind":"type", - "trigger":"sdof_response" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"section" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"set" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"single" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"size" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"solver" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"sparse_mat" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"step" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"summary" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"supportacceleration" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"supportdisplacement" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"supportvelocity" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"suspend" - }, - { - "contents":"set symm_mat ${1:(1)}\n# (1) bool, true of false", - "details":"Enable/Disable Symmetric Storage", - "kind":"type", - "trigger":"symm_mat" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"system_solver" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"tabularspline" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"terminal" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"tolerance" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"type" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"undeformed" - }, - { - "contents":"upsampling ${1:(1)} ${2:(2)} ${3:(3)}\n# (1) string, file name\n# (2) integer, upsampling ratio\n# (3) string, window type, one of Hamming, Hann, Blackman, BlackmanNuttall, BlackmanHarris and FlatTop", - "details":"Upsample a given ground motion using a specific window type", - "kind":"type", - "trigger":"upsampling" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"vel" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"velocity" - }, - { - "contents":"", - "details":"", - "kind":"type", - "trigger":"version" + "trigger": "WT9X96", + "details": "US 3D Section WT9X96", + "kind": "type", + "contents": "section US3D WT9X96 ${1:(1)} ${2:(2)} ${3:[3]} ${4:[4]} ${5:[5]} ${6:[6]}\n# (1) int, unique tag\n# (2) int, material model tag\n# [3] double, scale, default: 1.0\n# [4] int, number of integration points, default: 6\n# [5] double, eccentricity of y axis, default: 0.0\n# [6] double, eccentricity of z axis, default: 0.0\n" } ], - "scope":[ + "scope": [ "source.supan" ] } \ No newline at end of file diff --git a/Enhancement/suanPan.sublime-syntax b/Enhancement/suanPan.sublime-syntax index 2a0f3eb22..7313ce77f 100644 --- a/Enhancement/suanPan.sublime-syntax +++ b/Enhancement/suanPan.sublime-syntax @@ -12,33 +12,33 @@ contexts: scope: comment.line - match: '\b(?i)(true|yes|on|t|y|false|no|off|f|n|superlu|mumps|cuda|magma|spike|pardiso|(f)gmres|bicgstab|lapack|full|mixed|single|double|iterative_refinement)\b' scope: variable - - match: '^(?i)(acceleration|analyse|analyze|bodyforce|clear|cload|command|converger|criterion|disable|displacement|domain|element|expression|enable|erase|exit|file|fix(2)?|fixedlength[2|3]d|generate|generatebyplane|generatebypoint|generatebyrule|group|groupbodyforce|groupcload|groupdisplacement|groupmultiplierbc|grouppenaltybc|import|initial|integrator|lineudl[2|3]d|material|materialtest(byload)?(withbase)?[1-3]d|modifier|multiplierbc|node|peek|penaltybc|plot|precheck|protect|pwd|qrcode|(hdf5|plain)?recorder|remove|reset|section(test)?([1-3]d)?|sectiontestbydeformationhistory|set|solver|step|summary|amplitude|(finite)rigidwall(penalty|multiplier)|(finite)restitutionwall|mass|mpc|constraint|(custom)?nodegroup|elementgroup|save|terminal|materialtestby(strain|stress)history|orientation|upsampling|response_spectrum|sdof_response)\b' + - match: '^(?i)(acceleration|analyse|analyze|bodyforce|clear|cload|ref(load|force)|command|converger|criterion|disable|displacement|domain|element|expression|enable|erase|exit|file|fix(2)?|fixedlength[2|3]d|generate|generatebyplane|generatebypoint|generatebyrule|group|groupbodyforce|groupcload|groupdisplacement|groupmultiplierbc|grouppenaltybc|import|initial|integrator|lineudl[2|3]d|material|materialtest(byload)?(withbase)?[1-3]d|modifier|multiplierbc|node|peek|penaltybc|plot|precheck|protect|pwd|qrcode|(hdf5|plain)?recorder|remove|reset|section(test)?([1-3]d)?|sectiontestbydeformationhistory|set|solver|step|summary|amplitude|(finite)rigidwall(penalty|multiplier)|(finite)restitutionwall|mass|mpc|constraint|(custom)?nodegroup|elementgroup|save|terminal|materialtestby(strain|stress)history|orientation|upsampling|response_spectrum|sdof_response)\b' scope: keyword # element - - match: '\b(?i)(Allman|B21|B21EL|B21EH|B21H|B31|NMB21(EL|EH)|NMB31|C3D20|C3D4|C3D8|C3D8I|C3D8R|CAX3|CAX4|CAX8|CIN3D8|CINP4|Contact2D|Contact3D|CP3|CSMT3|CSMT6|CSMQ[4-8]|CP4I|CP[4-8]|Damper0[1-4]|DC3D4|DC3D8|DCP3|DCP4|DKT3|DKT4|DKTS3|DKTS4|EB21|F21|F21H|F31|GCMQ|SGCMQ|GQ12|Joint|Mass(Point)([2-3]D)|Membrane|Mindlin|MVLEM|NodeLine|NodeFacet|PatchCube|PatchQuad|PCPE4DC|PCPE4DI|PCPE8DC|PCPE4UC|PCPE8UC|PS|QE2|S4|SGCMS|SingleSection2D|SingleSection3D|Spring01|Spring02|T[2|3]D2S?|R[2|3]D2|Tie|TranslationConnector[2|3]D|Embed[2|3]D|S?GCMQ(I|L|G)?|(T|B)[2|3]D(L|C)|Embedded[2|3]D|Sleeve[2|3]D)\b' + - match: '\b(?i)(Allman|B21|B21EL|B21EH|B21H|B31(OS)|NMB21(EL|EH)|NMB31|C3D20|C3D4|C3D8|C3D8I|C3D8R|CAX3|CAX4|CAX8|CIN3D8|CINP4|Contact2D|Contact3D|CP3|CSMT3|CSMT6|CSMQ[4-8]|CP4I|CP[4-8]|Damper0[1-4]|DC3D4|DC3D8|DCP3|DCP4|DKT3|DKT4|DKTS3|DKTS4|EB21|EB31OS|F21|F21H|F31|GCMQ|SGCMQ|GQ12|Joint|Mass(Point)([2-3]D)|Membrane|Mindlin|MVLEM|NodeLine|NodeFacet|PatchCube|PatchQuad|PCPE4DC|PCPE4DI|PCPE8DC|PCPE4UC|PCPE8UC|PS|QE2|S4|SGCMS|SingleSection2D|SingleSection3D|Spring01|Spring02|T[2|3]D2S?|R[2|3]D2|Tie|TranslationConnector[2|3]D|Embed[2|3]D|S?GCMQ(I|L|G)?|(T|B)[2|3]D(L|C)|B3DOS(L|C)|Embedded[2|3]D|Sleeve[2|3]D)\b' scope: storage # material - - match: '\b(?i)(AFC0[1-3]|AFCN|ArmstrongFrederick(1D)?|Axisymmetric(Elastic)?|Bilinear([1-2]D|CC|DP|J2|OO|PO|Peric|Hoffman)|(Bilinear|Asymm)Elastic1D|NLE1D01|BilinearMises1D|BlatzKo|BoucWen|BWBN|CDP(M2(NO|ISO|ANISO)?)?|Concrete2[1-2]|Concrete(CM|Tsai|Exp)|CoulombFriction|Custom(Degradation|Elastic1D|J2|DP|Hoffman|Mises1D|CC)|CustomGurson(1D)?|DafaliasManzari|Degradation|Elastic(1|2)D|Exp(CC|DP|Gurson|Gurson1D|Hoffman|J2|Mises1D)|Flag0(1|2)|Fluid|IsotropicDamage|Isotropic(Nonlinear)?Elastic3D|Kelvin|Laminated|LinearDamage|Maxwell|Metal|Mises1D|MooneyRivlin|MPF|Multilinear((Elastic)?1D|J2|OO|PO)|NLE3D01|OrthotropicElastic3D|ParabolicCC|Parallel|PlaneStrain|PlaneSymmetric(1|2)3|PlaneStress|PolyJ2|RambergOsgood|Rebar[2|3]D|Sequential|SimpleSand|SlipLock|Stacked|SteelBRB|TableCDP|TimberPD|Trivial|Uniaxial|VAFCRP(1D)?|Viscosity0(1|2)|Yeoh|Elastic3D|TrilinearDegradation|TableGurson|Substepping|PolyElastic1D|Rotation[2|3]D|MultilinearMises1D|Gap01|Dhakal|ConcreteTable|BilinearViscosity|Sinh1D|Tanh1D|SimpleScalar)\b' + - match: '\b(?i)(AFC0[1-3]|AFCN|ArmstrongFrederick(1D)?|Axisymmetric(Elastic)?|Bilinear(1D|CC|DP|J2|OO|PO|Peric|Hoffman)|(Bilinear|Asymm)Elastic1D|NLE1D01|BilinearMises1D|BlatzKo|BoucWen|BWBN|CDP(M2(NO|ISO|ANISO)?)?|Concrete2[1-2]|Concrete(CM|Tsai|Exp|K4)|CoulombFriction|Custom(StressDegradation|StrainDegradation|J2|DP|Hoffman|Mises1D|CC)|CustomGurson(1D)?|DafaliasManzari|Degradation|Elastic(1|2)D|Exp(CC|DP|Gurson|Gurson1D|Hoffman|J2|Mises1D)|Flag0(1|2)|Fluid|IsotropicDamage|Isotropic(Nonlinear)?Elastic3D|Kelvin|Laminated|LinearDamage|Maxwell|Metal|Mises1D|MooneyRivlin|MPF|Multilinear((Elastic)?1D|J2|OO|PO)|NLE3D01|OrthotropicElastic3D|ParabolicCC|Parallel|PlaneStr(ain|ess)|PlaneSymmetric(1|2)3|OS146S?|PolyJ2|RambergOsgood|Rebar[2|3]D|Sequential|SimpleSand|SlipLock|Stacked|SteelBRB|TableCDP|TimberPD|Trivial|Uniaxial|VAFCRP(1D)?|Viscosity0(1|2)|Yeoh|Elastic(1D|3D|OS)|TrilinearStrainDegradation|TableGurson|Substepping|PolyElastic1D|Rotation[2|3]D|MultilinearMises1D|Gap01|Dhakal|ConcreteTable|BilinearViscosity|Sinh1D|Tanh1D|SimpleScalar)\b' scope: storage # section - - match: '\b(?i)(Bar[2|3]D|Box[2|3]D|Circle[1-3]D|CircularHollow[2|3]D|EU[2|3]D|Fibre[1-3]D|HSection2D|ISection[2|3]D|NM[2|3]D[1-3]|NM[2|3]D3K|NZ[2|3]D|Rectangle[1-3]D|TrussSection|TSection[2-3]D|US[2|3]D)\b' + - match: '\b(?i)(Bar[2|3]D|Box[2|3]D|Circle[1-3]D|CircularHollow[2|3]D|EU[2|3]D|Fibre[1-3]D|Fibre3DOS|Cell3DOS|HSection2D|NM[2|3]D[1-3]|NM[2|3]D3K|NZ[2|3]D|Rectangle[1-3]D|TrussSection|[T|I]Section[2-3]DC?|US[2|3]DC?)\b' scope: storage # section designation - match: '\b(?i)(1000WB215|1000WB258|1000WB296|1000WB322|100UC14\.8|100X3\.0SHS|100X4\.0SHS|100X5\.0SHS|100X50X2\.0RHS|100X50X2\.5RHS|100X50X3\.0RHS|100X50X3\.5RHS|100X50X4\.0RHS|100X50X5\.0RHS|100X50X6\.0RHS|100X6\.0SHS|100X9\.0SHS|101\.6X2\.6CHS|101\.6X3\.2CHS|101\.6X4\.0CHS|101\.6X5\.0CHS|114\.3X3\.2CHS|114\.3X3\.6CHS|114\.3X4\.5CHS|114\.3X4\.8CHS|114\.3X5\.4CHS|114\.3X6\.0CHS|1200WB249|1200WB278|1200WB317|1200WB342|1200WB392|1200WB423|1200WB455|125X4\.0SHS|125X5\.0SHS|125X6\.0SHS|125X75X3\.0RHS|125X75X4\.0RHS|125X75X5\.0RHS|125X9\.0SHS|139\.7X3\.0CHS|139\.7X3\.5CHS|139\.7X5\.0CHS|139\.7X5\.4CHS|150UB14\.0|150UB18\.0|150UC23\.4|150UC30\.0|150UC37\.2|150X100X4\.0RHS|150X100X5\.0RHS|150X100X6\.0RHS|150X5\.0SHS|150X50X3\.0RHS|150X50X4\.0RHS|150X50X5\.0RHS|150X6\.0SHS|150X9\.0SHS|165\.1X3\.0CHS|165\.1X3\.5CHS|165\.1X5\.0CHS|165\.1X5\.4CHS|168\.3X4\.8CHS|168\.3X6\.4CHS|168\.3X7\.1CHS|180UB16\.1|180UB18\.1|180UB22\.2|200UB18\.2|200UB22\.3|200UB25\.4|200UB29\.8|200UC46\.2|200UC52\.2|200UC59\.5|200X100X4\.0RHS|200X100X5\.0RHS|200X100X6\.0RHS|200X100X9\.0RHS|200X5\.0SHS|200X6\.0SHS|200X9\.0SHS|20X1\.6SHS|219\.1X4\.8CHS|219\.1X6\.4CHS|219\.1X8\.2CHS|250UB25\.7|250UB31\.4|250UB37\.3|250UC72\.9|250UC89\.5|250X150X5\.0RHS|250X150X6\.0RHS|250X150X9\.0RHS|250X6\.0SHS|250X9\.0SHS|25X1\.6SHS|25X2\.0SHS|25X2\.5SHS|25X3\.0SHS|273\.1X4\.8CHS|273\.1X6\.4CHS|273\.1X9\.3CHS|30X1\.6SHS|30X2\.0SHS|310UB32\.0|310UB40\.4|310UB46\.2|310UC118|310UC137|310UC96\.8|320UC158|323\.9X12\.7CHS|323\.9X6\.4CHS|323\.9X9\.5CHS|350WC197|350WC230|350WC258|350WC280|355\.6X12\.7CHS|355\.6X6\.4CHS|355\.6X9\.5CHS|35X1\.6SHS|35X2\.0SHS|35X2\.5SHS|35X3\.0SHS|360UB44\.7|360UB50\.7|360UB56\.7|400WC144|400WC181|400WC212|400WC270|400WC303|400WC328|400WC361|406\.4X12\.7CHS|406\.4X6\.4CHS|406\.4X9\.5CHS|40X1\.6SHS|40X2\.0SHS|40X2\.5SHS|40X4\.0SHS|410UB53\.7|410UB59\.7|42\.4X3\.2CHS|42\.4X4\.0CHS|42\.4X4\.9CHS|457\.0X12\.7CHS|457\.0X6\.4CHS|457\.0X9\.5CHS|460UB67\.1|460UB74\.6|460UB82\.1|48\.3X3\.2CHS|48\.3X4\.0CHS|48\.3X5\.4CHS|500WC228|500WC267|500WC290|500WC340|500WC383|500WC414|500WC440|508\.0X12\.7CHS|508\.0X6\.4CHS|508\.0X9\.5CHS|50X1\.6SHS|50X2\.0SHS|50X2\.5SHS|50X20X1\.6RHS|50X20X2\.0RHS|50X20X2\.5RHS|50X20X3\.0RHS|50X25X1\.6RHS|50X25X2\.0RHS|50X25X2\.5RHS|50X25X3\.0RHS|50X3\.0SHS|50X4\.0SHS|530UB82\.0|530UB92\.4|60\.3X3\.6CHS|60\.3X4\.5CHS|60\.3X5\.4CHS|610\.0X12\.7CHS|610\.0X6\.4CHS|610\.0X9\.5CHS|610UB101|610UB113|610UB125|65X2\.0SHS|65X2\.5SHS|65X3\.0SHS|65X35X2\.0RHS|65X35X2\.5RHS|65X35X3\.0RHS|700WB115|700WB130|700WB150|700WB173|75X2\.5SHS|75X25X1\.6RHS|75X25X2\.0RHS|75X25X2\.5RHS|75X3\.0SHS|75X3\.5SHS|75X4\.0SHS|75X5\.0SHS|75X50X2\.0RHS|75X50X2\.5RHS|75X50X3\.0RHS|75X50X4\.0RHS|75X6\.0SHS|76\.1X2\.3CHS|76\.1X3\.2CHS|76\.1X3\.6CHS|76\.1X4\.5CHS|76\.1X5\.9CHS|800WB122|800WB146|800WB168|800WB192|88\.9X2\.6CHS|88\.9X3\.2CHS|88\.9X4\.0CHS|88\.9X4\.8CHS|88\.9X5\.0CHS|88\.9X5\.5CHS|88\.9X5\.9CHS|89X3\.5SHS|89X5\.0SHS|89X6\.0SHS|900WB175|900WB218|900WB257|900WB282|HEA100|HEA1000|HEA120|HEA140|HEA160|HEA180|HEA200|HEA220|HEA240|HEA260|HEA280|HEA300|HEA320|HEA340|HEA360|HEA400|HEA450|HEA500|HEA550|HEA600|HEA650|HEA700|HEA800|HEA900|HEB100|HEB1000|HEB120|HEB140|HEB160|HEB180|HEB200|HEB220|HEB240|HEB260|HEB280|HEB300|HEB320|HEB340|HEB360|HEB400|HEB450|HEB500|HEB550|HEB600|HEB650|HEB700|HEB800|HEB900|HEM100|HEM1000|HEM120|HEM140|HEM160|HEM180|HEM200|HEM220|HEM240|HEM260|HEM280|HEM300|HEM320|HEM340|HEM360|HEM400|HEM450|HEM500|HEM550|HEM600|HEM650|HEM700|HEM800|HEM900|HP10X42|HP10X57|HP12X53|HP12X63|HP12X74|HP12X84|HP12X89|HP14X102|HP14X117|HP14X73|HP14X89|HP16X101|HP16X121|HP16X141|HP16X162|HP16X183|HP16X88|HP18X135|HP18X157|HP18X181|HP18X204|HP8X36|IPE100|IPE120|IPE140|IPE160|IPE180|IPE200|IPE220|IPE240|IPE270|IPE300|IPE330|IPE360|IPE400|IPE450|IPE500|IPE550|IPE600|IPE80|M10X7\.5|M10X8|M10X9|M12\.5X11\.6|M12\.5X12\.4|M12X10|M12X10\.8|M12X11\.8|M3X2\.9|M4X3\.2|M4X3\.45|M4X4\.08|M4X6|M5X18\.9|M6X3\.7|M6X4\.4|M8X6\.2|M8X6\.5|MT2\.5X9\.45|MT2X3|MT3X1\.85|MT3X2\.2|MT4X3\.1|MT4X3\.25|MT5X3\.75|MT5X4|MT5X4\.5|MT6\.25X5\.8|MT6\.25X6\.2|MT6X5|MT6X5\.4|MT6X5\.9|S10X25\.4|S10X35|S12X31\.8|S12X35|S12X40\.8|S12X50|S15X42\.9|S15X50|S18X54\.7|S18X70|S20X66|S20X75|S20X86|S20X96|S24X100|S24X106|S24X121|S24X80|S24X90|S3X5\.7|S3X7\.5|S4X7\.7|S4X9\.5|S5X10|S6X12\.5|S6X17\.25|S8X18\.4|S8X23|ST1\.5X2\.85|ST1\.5X3\.75|ST10X33|ST10X37\.5|ST10X43|ST10X48|ST12X40|ST12X45|ST12X50|ST12X53|ST12X60\.5|ST2\.5X5|ST2X3\.85|ST2X4\.75|ST3X6\.25|ST3X8\.6|ST4X11\.5|ST4X9\.2|ST5X12\.7|ST5X17\.5|ST6X15\.9|ST6X17\.5|ST6X20\.4|ST6X25|ST7\.5X21\.45|ST7\.5X25|ST9X27\.35|ST9X35|W10X100|W10X112|W10X12|W10X15|W10X17|W10X19|W10X22|W10X26|W10X30|W10X33|W10X39|W10X45|W10X49|W10X54|W10X60|W10X68|W10X77|W10X88|W12X106|W12X120|W12X136|W12X14|W12X152|W12X16|W12X170|W12X19|W12X190|W12X210|W12X22|W12X230|W12X252|W12X26|W12X279|W12X30|W12X305|W12X336|W12X35|W12X40|W12X45|W12X50|W12X53|W12X58|W12X65|W12X72|W12X79|W12X87|W12X96|W14X109|W14X120|W14X132|W14X145|W14X159|W14X176|W14X193|W14X211|W14X22|W14X233|W14X257|W14X26|W14X283|W14X30|W14X311|W14X34|W14X342|W14X370|W14X38|W14X398|W14X426|W14X43|W14X455|W14X48|W14X500|W14X53|W14X550|W14X605|W14X61|W14X665|W14X68|W14X730|W14X74|W14X808|W14X82|W14X873|W14X90|W14X99|W16X100|W16X26|W16X31|W16X36|W16X40|W16X45|W16X50|W16X57|W16X67|W16X77|W16X89|W18X106|W18X119|W18X130|W18X143|W18X158|W18X175|W18X192|W18X211|W18X234|W18X258|W18X283|W18X311|W18X35|W18X40|W18X46|W18X50|W18X55|W18X60|W18X65|W18X71|W18X76|W18X86|W18X97|W21X101|W21X111|W21X122|W21X132|W21X147|W21X166|W21X182|W21X201|W21X223|W21X248|W21X275|W21X44|W21X48|W21X50|W21X55|W21X57|W21X62|W21X68|W21X73|W21X83|W21X93|W24X103|W24X104|W24X117|W24X131|W24X146|W24X162|W24X176|W24X192|W24X207|W24X229|W24X250|W24X279|W24X306|W24X335|W24X370|W24X55|W24X62|W24X68|W24X76|W24X84|W24X94|W27X102|W27X114|W27X129|W27X146|W27X161|W27X178|W27X194|W27X217|W27X235|W27X258|W27X281|W27X307|W27X336|W27X368|W27X539|W27X84|W27X94|W30X108|W30X116|W30X124|W30X132|W30X148|W30X173|W30X191|W30X211|W30X235|W30X261|W30X292|W30X326|W30X357|W30X391|W30X90|W30X99|W33X118|W33X130|W33X141|W33X152|W33X169|W33X201|W33X221|W33X241|W33X263|W33X291|W33X318|W33X354|W33X387|W36X135|W36X150|W36X160|W36X170|W36X182|W36X194|W36X210|W36X231|W36X232|W36X247|W36X256|W36X262|W36X282|W36X302|W36X330|W36X361|W36X395|W36X441|W36X487|W36X529|W36X652|W36X723|W36X802|W36X853|W36X925|W40X149|W40X167|W40X183|W40X199|W40X211|W40X215|W40X235|W40X249|W40X264|W40X277|W40X278|W40X294|W40X297|W40X324|W40X327|W40X331|W40X362|W40X372|W40X392|W40X397|W40X431|W40X503|W40X593|W40X655|W44X230|W44X262|W44X290|W44X335|W4X13|W5X16|W5X19|W6X12|W6X15|W6X16|W6X20|W6X25|W6X8\.5|W6X9|W8X10|W8X13|W8X15|W8X18|W8X21|W8X24|W8X28|W8X31|W8X35|W8X40|W8X48|W8X58|W8X67|WT10\.5X100\.5|WT10\.5X111\.5|WT10\.5X124|WT10\.5X137\.5|WT10\.5X22|WT10\.5X24|WT10\.5X25|WT10\.5X27\.5|WT10\.5X28\.5|WT10\.5X31|WT10\.5X34|WT10\.5X36\.5|WT10\.5X41\.5|WT10\.5X46\.5|WT10\.5X50\.5|WT10\.5X55\.5|WT10\.5X61|WT10\.5X66|WT10\.5X73\.5|WT10\.5X83|WT10\.5X91|WT12X103\.5|WT12X114\.5|WT12X125|WT12X139\.5|WT12X153|WT12X167\.5|WT12X185|WT12X27\.5|WT12X31|WT12X34|WT12X38|WT12X42|WT12X47|WT12X51\.5|WT12X52|WT12X58\.5|WT12X65\.5|WT12X73|WT12X81|WT12X88|WT12X96|WT13\.5X108\.5|WT13\.5X117\.5|WT13\.5X129|WT13\.5X140\.5|WT13\.5X153\.5|WT13\.5X168|WT13\.5X184|WT13\.5X269\.5|WT13\.5X42|WT13\.5X47|WT13\.5X51|WT13\.5X57|WT13\.5X64\.5|WT13\.5X73|WT13\.5X80\.5|WT13\.5X89|WT13\.5X97|WT15X105\.5|WT15X117\.5|WT15X130\.5|WT15X146|WT15X163|WT15X178\.5|WT15X195\.5|WT15X45|WT15X49\.5|WT15X54|WT15X58|WT15X62|WT15X66|WT15X74|WT15X86\.5|WT15X95\.5|WT16\.5X100\.5|WT16\.5X110\.5|WT16\.5X120\.5|WT16\.5X131\.5|WT16\.5X145\.5|WT16\.5X159|WT16\.5X177|WT16\.5X193\.5|WT16\.5X59|WT16\.5X65|WT16\.5X70\.5|WT16\.5X76|WT16\.5X84\.5|WT18X105|WT18X115\.5|WT18X116|WT18X123\.5|WT18X128|WT18X131|WT18X141|WT18X151|WT18X165|WT18X180\.5|WT18X197\.5|WT18X220\.5|WT18X243\.5|WT18X264\.5|WT18X326|WT18X361\.5|WT18X401|WT18X426\.5|WT18X462\.5|WT18X67\.5|WT18X75|WT18X80|WT18X85|WT18X91|WT18X97|WT2\.5X8|WT2\.5X9\.5|WT20X105\.5|WT20X107\.5|WT20X117\.5|WT20X124\.5|WT20X132|WT20X138\.5|WT20X139|WT20X147|WT20X148\.5|WT20X162|WT20X163\.5|WT20X165\.5|WT20X181|WT20X186|WT20X196|WT20X198\.5|WT20X215\.5|WT20X251\.5|WT20X296\.5|WT20X327\.5|WT20X74\.5|WT20X83\.5|WT20X91\.5|WT20X99\.5|WT22X115|WT22X131|WT22X145|WT22X167\.5|WT2X6\.5|WT3X10|WT3X12\.5|WT3X4\.25|WT3X4\.5|WT3X6|WT3X7\.5|WT3X8|WT4X10\.5|WT4X12|WT4X14|WT4X15\.5|WT4X17\.5|WT4X20|WT4X24|WT4X29|WT4X33\.5|WT4X5|WT4X6\.5|WT4X7\.5|WT4X9|WT5X11|WT5X13|WT5X15|WT5X16\.5|WT5X19\.5|WT5X22\.5|WT5X24\.5|WT5X27|WT5X30|WT5X34|WT5X38\.5|WT5X44|WT5X50|WT5X56|WT5X6|WT5X7\.5|WT5X8\.5|WT5X9\.5|WT6X105|WT6X11|WT6X115|WT6X126|WT6X13|WT6X139\.5|WT6X15|WT6X152\.5|WT6X168|WT6X17\.5|WT6X20|WT6X22\.5|WT6X25|WT6X26\.5|WT6X29|WT6X32\.5|WT6X36|WT6X39\.5|WT6X43\.5|WT6X48|WT6X53|WT6X60|WT6X68|WT6X7|WT6X76|WT6X8|WT6X85|WT6X9\.5|WT6X95|WT7X105\.5|WT7X11|WT7X116\.5|WT7X128\.5|WT7X13|WT7X141\.5|WT7X15|WT7X155\.5|WT7X17|WT7X171|WT7X185|WT7X19|WT7X199|WT7X21\.5|WT7X213|WT7X227\.5|WT7X24|WT7X250|WT7X26\.5|WT7X275|WT7X30\.5|WT7X302\.5|WT7X332\.5|WT7X34|WT7X365|WT7X37|WT7X404|WT7X41|WT7X436\.5|WT7X45|WT7X49\.5|WT7X54\.5|WT7X60|WT7X66|WT7X72\.5|WT7X79\.5|WT7X88|WT7X96\.5|WT8X13|WT8X15\.5|WT8X18|WT8X20|WT8X22\.5|WT8X25|WT8X28\.5|WT8X33\.5|WT8X38\.5|WT8X44\.5|WT8X50|WT9X105\.5|WT9X117|WT9X129|WT9X141\.5|WT9X155\.5|WT9X17\.5|WT9X20|WT9X23|WT9X25|WT9X27\.5|WT9X30|WT9X32\.5|WT9X35\.5|WT9X38|WT9X43|WT9X48\.5|WT9X53|WT9X59\.5|WT9X65|WT9X71\.5|WT9X79|WT9X87\.5|WT9X96)\b' scope: string # recorder and modifier - - match: '\b(?i)(Eigen|Element|GroupElement|GroupNode|GroupSum|Node|Visualisation|ElementalModal|LeeElementalDamping|LumpedScale|LumpedSimple|Rayleigh|LinearViscosity|Global|Frame|Sum)\b' + - match: '\b(?i)(Eigen|Element|GroupElement|GroupNode|GroupSum|Node|Visualisation|Elemental(Modal|Lee|Nonviscous)|LumpedScale|LumpedSimple|Rayleigh|LinearViscosity|Global|Frame|Sum)\b' scope: string - match: '\b(?i)(Hann|Hamming|Blackman|BlackmanNuttall|BlackmanHarris|FlatTop)\b' scope: string # other - - match: '\b(?i)((Abs|Rel)(Error|IncreEnergy|Residual)|ArcLength|Logic(AND|OR|XOR)|OALTS|Bathe(TwoStep|Explicit)|BFGS|Buckle|Combine|Constant|Converger|Decay|(Implicit|Explicit)Dynamic|FEAST|FixedNumber|FixedLength[2|3]D|Min(imum)?Gap[2|3]D|Max(imum)?Gap[2|3]D|Frequency|Generali(s|z)edAlpha(Explicit)|GSSSS(U|V)0|GSSSSOptimal|LeeNewmark(Full)?|Linear|(Max|Min)Displacement|MaxHistory|(Max|Min)Resistance|Modulated|MPC|MPDC|m?Newton|NZStrongMotion|Optimization|OutputType|ParticleCollision[2|3]D|LJPotential2D|Ramm|(Rayleigh|Nonviscous)?Newmark|Tchamwa|(Rel|Abs)(Incre)?(Disp|Acc)|(Finite)RigidWall(Penalty|Multiplier)|(Finite)RestitutionWall(Penalty)|Static|StrainEnergyEvolution|Tabular(Spline)|Sine|Cosine|WilsonPenzienNewmark|LeeElementalNewmark)\b' + - match: '\b(?i)((Abs|Rel)(Error|IncreEnergy|Residual)|ArcLength|Logic(AND|OR|XOR)|OALTS|AICN|Bathe(TwoStep|Explicit)|BFGS|Buckle|Combine|Constant|Converger|Decay|(Implicit|Explicit)Dynamic|FEAST|FixedNumber|FixedLength[2|3]D|Min(imum)?Gap[2|3]D|Max(imum)?Gap[2|3]D|Frequency|Generali(s|z)edAlpha(Explicit)|GSSSS(U|V)0|GSSSSOptimal|LeeNewmark(Full)?|Linear|(Max|Min)Displacement|MaxHistory|(Max|Min)Resistance|Modulated|MPC|MPDC|m?Newton|NZStrongMotion|Optimization|OutputType|ParticleCollision[2|3]D|LJPotential2D|Ramm|(Rayleigh|Nonviscous)?Newmark|Tchamwa|(Rel|Abs)(Incre)?(Disp|Acc)|(Finite)RigidWall(Penalty|Multiplier)|(Finite)RestitutionWall(Penalty)|Static|StrainEnergyEvolution|Tabular(Spline)|Sine|Cosine|WilsonPenzienNewmark|LeeElementalNewmark)\b' scope: string # output type - - match: '\b(?i)(A[1-6]?|AR[1-3]?|AT|AXIAL|CSE|DAMAGE|DC|DF[1-6]?|DM[1-3]?|DT|E|E11|E12|E13|E22|E23|E33|ED|EE|EE11|EE12|EE13|EE22|EE23|EE33|EEEQ|EEP|EEP1|EEP2|EEP3|EEQ|EINT|EP[1-3]?|ES|HIST|HYDRO|IF[1-6]?|IM[1-3]{1}|K|KAPPAC|KAPPAP|KAPPAT|KE|LITR|M|MISES|MOMENT|MOMENTUM((R?)[XYZ])?|NL|NMISES|PE|PE11|PE12|PE13|PE22|PE23|PE33|PEEQ|PEP[1-3]?|PP|REBARE|REBARS|RESULTANT|RF[1-6]?|RM[1-3]?|RT|S|S11|S12|S13|S22|S23|S33|SD|SE|SHEAR|SINT|SINV|SP[1-3]?|SS|TORSION|TRESC|TSE|U[1-6]?|UR[1-3]?|UT|V[1-6]?|VD|VF|VR[1-3]?|VS|VT|GDF|YF|VE|BEAM[SE])\b' + - match: '\b(?i)(A[1-6]?|AR[1-3]?|AT|AXIAL|CSE|DAMAGE|DC|DF[1-6]?|DM[1-3]?|DT|E|E11|E12|E13|E22|E23|E33|ED|EE|EE11|EE12|EE13|EE22|EE23|EE33|EEEQ|EEP|EEP1|EEP2|EEP3|EEQ|EINT|EP[1-3]?|ES|HIST|HYDRO|IF[1-6]?|IM[1-3]{1}|K|KAPPAC|KAPPAP|KAPPAT|KE|LITR|M|MISES|MOMENT|MOMENTUM((R?)[XYZ])?|NL|NMISES|PE|PE11|PE12|PE13|PE22|PE23|PE33|PEEQ|PEP[1-3]?|PP|REBARE|REBARS|RESULTANT|RF[1-6]?|RM[1-3]?|RT|S|S11|S12|S13|S22|S23|S33|SD|SE|SHEAR|SINT|SINV|SP[1-3]?|SS|TORSION|TRESC|TSE|U[1-6]?|UR[1-3]?|UT|V[1-6]?|VD|VF|VR[1-3]?|VS|VT|G[DI]F[1-6]?|YF|N?VE|BEAM[SE])\b' scope: storage # misc - - match: '\b(?i)(acceleration|amplitude|amplitude|band_mat|color_model|constraint|constraint_multiplier|criterion|displacement|eigenvalue|element|elementgroup|encastre|fixed_step_size|group|hdf5|history|ini_step_size|integrator|load_multiplier|material|(max|min)_step_size|preconditioner|ILU|Jacobi|modifier|node|nodegroup|output_folder|orientation|pinned|plain|precision|recorder|solver|sparse_mat|step|supportdisplacement|supportvelocity|supportacceleration|symm_mat|system_solver|velocity|[xyz]{1}symm|p|e|x|y|z|load|domain|max_iteration|true|false|every)\b' + - match: '\b(?i)(acceleration|amplitude|amplitude|band_mat|color_model|constraint|constraint_multiplier|criterion|displacement|eigenvalue|element|(group|node|element)?group|encastre|fixed_step_size|hdf5|history|ini_step_size|integrator|load_multiplier|material|(max|min)_step_size|preconditioner|ILU|Jacobi|modifier|node|output_folder|orientation|pinned|plain|precision|recorder|solver|sparse_mat|step|supportdisplacement|supportvelocity|supportacceleration|symm_mat|system_solver|velocity|[xyz]{1}symm|p|e|x|y|z|load|domain|max_iteration|true|false|every)\b' scope: string - match: "(?i)(-type[0-3]{1}|width|every|-node|-material|-thickness|-knot[xyz]{1})" scope: support diff --git a/Enhancement/suanpan.nuspec b/Enhancement/suanpan.nuspec index 279c8c4cb..f910d986a 100644 --- a/Enhancement/suanpan.nuspec +++ b/Enhancement/suanpan.nuspec @@ -2,7 +2,7 @@ suanpan - 3.1 + 3.2 https://github.com/TLCFEM/suanPan Theodore Chang suanPan diff --git a/Example/Element/B21.supan b/Example/Element/B21.supan index bf30ba430..8a78a0ae0 100644 --- a/Example/Element/B21.supan +++ b/Example/Element/B21.supan @@ -19,6 +19,7 @@ lineudl2d 2 0 10 2 1 2 recorder 1 hdf5 Element E 1 recorder 2 hdf5 Element S 1 recorder 3 hdf5 Element PE 1 +recorder 4 hdf5 Element EE 1 step static 1 1 set ini_step_size .1 @@ -28,8 +29,8 @@ converger RelIncreDisp 1 1E-8 5 1 analyze -# -0.0270 0.3272 0.4865 cload -# -0.0069 -0.1659 -0.2483 lineudl2d +# -2.6967e-02 3.2715e-01 4.8652e-01 cload +# -6.8955e-03 -1.6589e-01 -2.4828e-01 lineudl2d peek node 2 peek element 1 diff --git a/Example/Element/B21E.supan b/Example/Element/B21E.supan index 4aca13256..3e789bdd0 100644 --- a/Example/Element/B21E.supan +++ b/Example/Element/B21E.supan @@ -29,11 +29,11 @@ analyze # Node 2: # Coordinate: -# 1.0000 0 +# 1.0000e+00 0.0000e+00 # Displacement: -# 0.0081 -0.0014 -0.0021 +# 8.1479e-03 -1.3921e-03 -2.0712e-03 # Resistance: -# 1.0000e+02 8.8995e-13 -4.3036e-14 +# 1.0000e+02 7.7627e-13 -4.1685e-14 peek node 2 peek element 1 diff --git a/Example/Element/B21H.supan b/Example/Element/B21H.supan index 2eb367958..fbfc34a2a 100644 --- a/Example/Element/B21H.supan +++ b/Example/Element/B21H.supan @@ -25,7 +25,13 @@ converger RelIncreDisp 1 1E-8 5 1 analyze -# -3.6624E-19 1.0233E-01 1.4156E-01 +# Node 2: +# Coordinate: +# 1.0000e+00 0.0000e+00 +# Displacement: +# 9.7439e-19 1.0233e-01 1.4156e-01 +# Resistance: +# 5.8981e-17 1.0000e+00 1.5642e-10 peek node 2 peek element 1 diff --git a/Example/Element/B31.supan b/Example/Element/B31.supan index 483169e30..0fccf6928 100644 --- a/Example/Element/B31.supan +++ b/Example/Element/B31.supan @@ -5,6 +5,7 @@ node 2 1 0 0 node 3 1 1 0 orientation B3DL 1 0. 0. 1. +orientation B3DOSL 2 0. 0. 1. material Elastic1D 1 10 @@ -14,6 +15,8 @@ element B31 1 1 2 1 1 element B31 2 2 3 1 1 element MassPoint3D 3 2 1 element MassPoint3D 4 2 1 1 +element B31 8 1 2 1 3 +element B31 9 2 3 1 2 fix2 1 E 1 @@ -34,6 +37,13 @@ converger RelIncreDisp 1 1E-8 5 1 analyze +# Node 3: +# Coordinate: +# 1.0000e+00 1.0000e+00 0.0000e+00 +# Displacement: +# -2.5000e-01 -1.6667e-01 -6.9427e-04 -3.4740e-04 1.3889e-03 -2.5000e-01 +# Resistance: +# -1.5528e-15 3.2216e-15 1.0000e+00 7.0777e-16 0.0000e+00 4.8117e-16 peek node 3 peek element 1 diff --git a/Example/Element/B31NL.supan b/Example/Element/B31NL.supan index 00d9dd3f3..08120c5a2 100644 --- a/Example/Element/B31NL.supan +++ b/Example/Element/B31NL.supan @@ -30,6 +30,21 @@ converger RelIncreDisp 1 1E-12 10 1 analyze +# Node 2: +# Coordinate: +# 6.0000e-01 8.0000e-01 2.0000e-01 +# Displacement: +# 9.7651e-03 1.2582e-02 6.7677e-03 4.1110e-03 -2.9901e-03 -3.7263e-04 +# Resistance: +# 1.5221e-11 -1.0729e-12 1.0000e+02 -7.1121e-10 -9.7956e-10 -2.3914e-10 +# +# Node 4: +# Coordinate: +# 2.6000e+00 8.0000e-01 2.0000e-01 +# Displacement: +# 4.2974e-03 -5.3494e-03 4.0172e-03 -4.0881e-03 -2.9432e-03 4.5396e-04 +# Resistance: +# 7.1054e-15 7.1054e-15 1.0000e+02 -1.1291e-12 1.5366e-12 -1.6112e-13 peek node 2 4 reset diff --git a/Example/Element/B31OS.supan b/Example/Element/B31OS.supan new file mode 100644 index 000000000..ebabba4ab --- /dev/null +++ b/Example/Element/B31OS.supan @@ -0,0 +1,64 @@ +# A TEST MODEL FOR B31OS ELEMENT + +node 1 0 0 0 +node 2 1 0 0 +node 3 1 1 0 + +material ElasticOS 1 100 .2 +section Cell3DOS 1 10. 1. 1. 1. 1 10. 10. +section Cell3DOS 2 10. -1. 1. 1. 1 -10. -10. +section Cell3DOS 4 10. -1. 1. 1. 1 -10. 10. +section Fibre3DOS 3 1 2 4 + +material Elastic1D 2 100 ! wrong material +section Cell3DOS 5 10. -1. 1. 1. 2 -10. 10. + +orientation B3DOSL 1 0. 0. 1. + +element B31OS 1 1 2 3 1 6 + +orientation B3DOSC 2 0. 0. 1. +orientation B3DL 3 0. 0. 1. +element B31OS 3 2 3 3 2 6 ! wrong transformation +element B31OS 4 2 3 3 3 6 ! wrong transformation +element B31OS 5 2 3 3 4 6 ! missing transformation + +element B31OS 8 2 3 3 2 6 1 ! nlgeom enabled + +fix2 1 E 1 + +cload 1 0 100 3 3 + +recorder 1 hdf5 Element E 1 +recorder 2 hdf5 Element S 1 + +step static 1 +set ini_step_size 1E-1 +set fixed_step_size true + +converger RelIncreDisp 1 1E-10 5 1 + +analyze + +# Node 2: +# Coordinate: +# 1.0000e+00 0.0000e+00 0.0000e+00 +# Displacement: +# 1.2355e-03 6.8692e-05 1.5621e-04 3.6613e-04 -2.4984e-04 1.3796e-04 1.9364e-04 +# Resistance: +# -1.9010e-13 4.3160e-15 3.1264e-13 1.4211e-13 3.4764e-15 9.7460e-14 1.3323e-14 +# +# Node 3: +# Coordinate: +# 1.0000e+00 1.0000e+00 0.0000e+00 +# Displacement: +# 1.0063e-03 1.3455e-03 6.8006e-04 6.1770e-04 -2.2829e-04 2.7732e-04 6.4496e-05 +# Resistance: +# 1.9048e-13 1.1449e-15 1.0000e+02 1.3013e-13 -9.5165e-15 8.4817e-14 7.7716e-15 +peek node 2 3 + +peek element 1 + +reset +clear +exit \ No newline at end of file diff --git a/Example/Element/C3D8.supan b/Example/Element/C3D8.supan index 7187e9658..37191a69f 100644 --- a/Example/Element/C3D8.supan +++ b/Example/Element/C3D8.supan @@ -96,6 +96,23 @@ displacement 1 0 1 3 12 recorder 1 plain Element E 1 recorder 2 plain Element S 1 +recorder 3 plain Element EEQ 1 +recorder 4 plain Element SP 1 +recorder 5 plain Element SP1 1 +recorder 6 plain Element SP2 1 +recorder 7 plain Element SP3 1 +recorder 8 plain Element EP 1 +recorder 9 plain Element EP1 1 +recorder 10 plain Element EP2 1 +recorder 11 plain Element EP3 1 +recorder 12 plain Element EEP 1 +recorder 13 plain Element EEP1 1 +recorder 14 plain Element EEP2 1 +recorder 15 plain Element EEP3 1 +recorder 16 plain Element PEP 1 +recorder 17 plain Element PEP1 1 +recorder 18 plain Element PEP2 1 +recorder 19 plain Element PEP3 1 step static 1 set fixed_step_size 1 @@ -107,7 +124,13 @@ converger RelIncreDisp 1 1E-12 50 1 analyze -# -0.0714 -0.0500 1.0000 +# Node 12: +# Coordinate: +# 3.0000e+01 3.0000e+01 5.0000e+00 +# Displacement: +# -7.1440e-02 -4.9961e-02 1.0000e+00 +# Resistance: +# 3.1732e-14 2.8803e-14 5.2365e+00 peek node 12 peek element 1 diff --git a/Example/Element/CAX4.supan b/Example/Element/CAX4.supan index 60cd9221d..c3ce5397e 100644 --- a/Example/Element/CAX4.supan +++ b/Example/Element/CAX4.supan @@ -34,25 +34,28 @@ converger RelIncreDisp 1 1E-10 20 1 analyze # Node 3: -# 2.0000 0 +# Coordinate: +# 2.0000e+00 0.0000e+00 # Displacement: -# 0.0024 0 +# 2.4228e-03 0.0000e+00 # Resistance: -# -6.0779e-08 4.5099e+00 +# -3.5245e-10 4.5135e+00 # # Node 6: -# 2.0000 1.0000 +# Coordinate: +# 2.0000e+00 1.0000e+00 # Displacement: -# 0.0024 -0.0025 +# 2.4228e-03 -2.5000e-03 # Resistance: -# -4.6574e-08 -6.0838e-08 +# -7.0472e-10 -1.3411e-13 # # Node 9: -# 2.0000 2.0000 +# Coordinate: +# 2.0000e+00 2.0000e+00 # Displacement: -# 0.0024 -0.0050 +# 2.4228e-03 -5.0000e-03 # Resistance: -# 1.7420e-15 -4.5099e+00 +# -3.5230e-10 -4.5135e+00 peek node 3 6 9 peek element 1 diff --git a/Example/Element/CINP4.supan b/Example/Element/CINP4.supan index d2bb86924..f9b174c22 100644 --- a/Example/Element/CINP4.supan +++ b/Example/Element/CINP4.supan @@ -14,7 +14,7 @@ element CP4 2 5 6 9 10 1 1 element CP4 3 6 7 8 9 1 1 element CINP4 4 8 7 2 3 1 1 -plainrecorder 11 Element S 4 +plainrecorder 11 Element S 4 5 material Elastic2D 1 1000 .2 diff --git a/Example/Element/CP4.supan b/Example/Element/CP4.supan index 93437071b..7b4597a33 100644 --- a/Example/Element/CP4.supan +++ b/Example/Element/CP4.supan @@ -151,9 +151,8 @@ element CP4 62 77 82 83 78 1 1 element CP4 63 78 83 84 79 1 1 element CP4 64 79 84 85 80 1 1 -recorder 1 plain Element NMISES 1 - -material Bilinear2D 1 5000 .2 80 .05 +material BilinearJ2 2 5000 .2 80 .05 +material PlaneStress 1 2 fix 1 P 1 2 3 4 5 diff --git a/Example/Element/CSMQ4.supan b/Example/Element/CSMQ4.supan index 2cfe8c5ae..2ab05888e 100644 --- a/Example/Element/CSMQ4.supan +++ b/Example/Element/CSMQ4.supan @@ -22,8 +22,7 @@ element CSMQ4 3 3 4 10 9 1 1 1E-1 element CSMQ4 4 4 5 11 10 1 1 1E-1 element CSMQ4 5 5 6 12 11 1 1 1E-1 -recorder 1 plain Element NMISES 1 -recorder 2 plain Element S 1 +recorder 1 plain Element S 1 fix 1 1 1 7 fix 2 2 1 diff --git a/Example/Element/DCP4.supan b/Example/Element/DCP4.supan index 4b0c838d2..ce7359fe6 100644 --- a/Example/Element/DCP4.supan +++ b/Example/Element/DCP4.supan @@ -2121,9 +2121,8 @@ element DCP4 1022 1095 1096 188 189 1 5 5 50 element DCP4 1023 1096 1097 187 188 1 5 5 50 element DCP4 1024 1097 186 13 187 1 5 5 50 -recorder 1 plain Element NMISES 1 -recorder 2 plain Element DAMAGE 1 -recorder 3 plain Element S 1 +recorder 1 plain Element DAMAGE 1 +recorder 2 plain Element S 1 material PlaneStress 1 2 material Elastic3D 2 2E5 .3 .01 diff --git a/Example/Element/Damper02.supan b/Example/Element/Damper02.supan index ce9a6ef5c..a9a59fc83 100644 --- a/Example/Element/Damper02.supan +++ b/Example/Element/Damper02.supan @@ -22,6 +22,9 @@ amplitude Combine 1 2 3 # acceleration 2 1 1 1 2 displacement 2 1 1 1 2 +recorder 1 plain Element E 2 +recorder 2 plain Element S 2 + step dynamic 1 2 set ini_step_size .01 set fixed_step_size 1 diff --git a/Example/Element/EB21.supan b/Example/Element/EB21.supan index 4a4f4b52c..ed5bf1f66 100644 --- a/Example/Element/EB21.supan +++ b/Example/Element/EB21.supan @@ -29,18 +29,20 @@ converger RelIncreDisp 1 1E-10 5 1 analyze # Node 2: -# 1.0000 0 +# Coordinate: +# 1.0000e+00 0.0000e+00 # Displacement: -# 0 0.2167 0.3250 +# 0.0000e+00 2.1667e-01 3.2500e-01 # Resistance: -# 0 1.0000e+01 -6.5001e-08 +# 0.0000e+00 1.0000e+01 -5.2003e-12 # # Node 3: -# 2.0000 0 +# Coordinate: +# 2.0000e+00 0.0000e+00 # Displacement: -# 0 0.1167 -0.1750 +# 0.0000e+00 1.1666e-01 -1.7500e-01 # Resistance: -# 0 8.7490e-08 3.4999e-08 +# 0.0000e+00 1.8904e-11 3.0949e-12 peek node 2 3 peek element 1 diff --git a/Example/Element/EB31OS.supan b/Example/Element/EB31OS.supan new file mode 100644 index 000000000..96681f4cd --- /dev/null +++ b/Example/Element/EB31OS.supan @@ -0,0 +1,47 @@ +# A TEST MODEL FOR EB31OS ELEMENT + +node 1 0 0 0 +node 2 1 0 0 +node 3 1 1 0 + +orientation B3DOSL 1 0. 0. 1. +orientation B3DOSC 3 0. 0. 1. +orientation B3DL 2 0. 0. 1. + +element EB31OS 1 1 2 30 10 19.5 421 98 4.85 28.5 1 +element EB31OS 2 2 3 30 10 19.5 421 98 4.85 28.5 1 +element EB31OS 3 2 3 30 10 19.5 421 98 4.85 28.5 2 +element EB31OS 4 2 3 30 10 19.5 421 98 4.85 28.5 3 +element EB31OS 5 2 3 30 10 19.5 421 98 4.85 28.5 4 +element EB31OS 6 2 3 30 10 19.5 421 98 4.85 28.5 1 1 + +fix2 1 E 1 +fix2 2 7 1 + +cload 1 0 1 3 3 + +recorder 1 hdf5 Element E 1 +recorder 2 hdf5 Element S 1 + +step static 1 +set ini_step_size 1 +set fixed_step_size true + +converger RelIncreDisp 1 1E-8 5 1 + +analyze + +# Node 3: +# Coordinate: +# 1.0000e+00 1.0000e+00 0.0000e+00 +# Displacement: +# 2.6392e-05 1.3196e-05 4.1927e-04 -3.9288e-04 5.0527e-04 2.6392e-05 -5.2667e-04 +# Resistance: +# -1.5101e-15 0.0000e+00 1.0000e+00 -1.5938e-16 -1.4991e-16 -3.1876e-16 -3.4418e-16 +peek node 3 + +peek element 1 + +reset +clear +exit \ No newline at end of file diff --git a/Example/Element/EB31OSNL.supan b/Example/Element/EB31OSNL.supan new file mode 100644 index 000000000..5c9d17a6b --- /dev/null +++ b/Example/Element/EB31OSNL.supan @@ -0,0 +1,41 @@ +# A TEST MODEL FOR EB31OS ELEMENT + +node 1 0 0 0 +node 2 1 0 0 +node 3 1 1 0 + +orientation B3DOSC 1 0. 0. 1. + +element EB31OS 1 1 2 30 10 19.5 421 98 4.85 28.5 1 1 +element EB31OS 2 2 3 30 10 19.5 421 98 4.85 28.5 1 1 + +fix2 1 E 1 +# fix2 2 7 1 + +cload 1 0 .1 3 3 + +recorder 1 hdf5 Element E 1 +recorder 2 hdf5 Element S 1 + +step static 1 +set ini_step_size 1 +set fixed_step_size true + +converger RelIncreDisp 1 1E-12 5 1 + +analyze + +# Node 3: +# Coordinate: +# 1.0000e+00 1.0000e+00 0.0000e+00 +# Displacement: +# -2.6415e-06 9.4552e-07 1.0553e-03 1.0526e-03 1.0092e-03 3.1731e-06 1.0024e-03 +# Resistance: +# 2.1783e-15 -4.6892e-18 1.0000e-01 8.4122e-16 -2.6877e-15 -4.5476e-16 1.4056e-15 +peek node 3 + +peek element 1 + +reset +clear +exit \ No newline at end of file diff --git a/Example/Element/F21.supan b/Example/Element/F21.supan index 2d8bbf28e..45130ad9e 100644 --- a/Example/Element/F21.supan +++ b/Example/Element/F21.supan @@ -33,11 +33,11 @@ analyze # Node 2: # Coordinate: -# 10.0000 0 +# 1.0000e+01 0.0000e+00 # Displacement: -# 2.1835e-18 6.4808e-01 8.3170e-02 +# -3.0158e-18 6.4808e-01 8.3170e-02 # Resistance: -# -1.0672e-15 1.0000e+00 -2.4695e-15 +# -3.0316e-15 1.0000e+00 8.9913e-16 peek node 2 peek element 1 diff --git a/Example/Element/F21H.supan b/Example/Element/F21H.supan index e3a95a94b..302a04f30 100644 --- a/Example/Element/F21H.supan +++ b/Example/Element/F21H.supan @@ -29,11 +29,11 @@ analyze # Node 2: # Coordinate: -# 10.0000 0 +# 1.0000e+01 0.0000e+00 # Displacement: -# 3.6751e-18 1.2676e+00 1.4342e-01 +# 1.5473e-17 1.2676e+00 1.4342e-01 # Resistance: -# -6.0158e-16 1.0000e+00 5.5777e-15 +# 3.7097e-15 1.0000e+00 7.4146e-15 peek node 2 peek element 1 diff --git a/Example/Element/F31.supan b/Example/Element/F31.supan index d9fa75ea7..b3a8ec343 100644 --- a/Example/Element/F31.supan +++ b/Example/Element/F31.supan @@ -4,6 +4,7 @@ node 1 0 0 0 node 2 10 0 0 orientation B3DL 1 0. 1. 0. +orientation B3DOSL 2 0. 0. 1. material MPF 1 1E2 2E-1 .02 # material Elastic1D 1 10 @@ -13,6 +14,8 @@ section Bar3D 3 100 1 section Fibre3D 1 2 3 element F31 1 1 2 1 1 +element F31 2 1 2 1 2 +element F31 3 1 2 1 3 fix2 1 E 1 @@ -35,11 +38,11 @@ analyze # Node 2: # Coordinate: -# 10.0000 0 0 +# 1.0000e+01 0.0000e+00 0.0000e+00 # Displacement: -# 0 0.3899 0 0 0 0.0469 +# 0.0000e+00 3.8990e-01 0.0000e+00 0.0000e+00 0.0000e+00 4.6912e-02 # Resistance: -# 0 1.0000e+00 0 0 0 -3.8095e-12 +# 0.0000e+00 1.0000e+00 0.0000e+00 0.0000e+00 0.0000e+00 -3.8021e-12 peek node 2 peek element 1 diff --git a/Example/Element/GCMQ.supan b/Example/Element/GCMQ.supan index cc3860a22..e671b2695 100644 --- a/Example/Element/GCMQ.supan +++ b/Example/Element/GCMQ.supan @@ -43,28 +43,22 @@ recorder 1 hdf5 Element S 1 recorder 2 hdf5 Element S11 1 recorder 3 hdf5 Element S22 1 recorder 4 hdf5 Element S12 1 -recorder 5 hdf5 Element SINT 1 -recorder 6 hdf5 Element E 1 -recorder 7 hdf5 Element E11 1 -recorder 8 hdf5 Element E22 1 -recorder 9 hdf5 Element E12 1 -recorder 10 hdf5 Element EINT 1 -recorder 11 hdf5 Element AXIAL 1 -recorder 12 hdf5 Element SHEAR 1 -recorder 13 hdf5 Element MOMENT 1 -recorder 14 hdf5 Element RESULTANT 1 -recorder 15 hdf5 Element MISES 1 -recorder 16 hdf5 Element K 1 -recorder 17 hdf5 Element M 1 -recorder 18 hdf5 Element SP 1 -recorder 19 hdf5 Element SP1 1 -recorder 20 hdf5 Element SP2 1 -recorder 21 hdf5 Element EP 1 -recorder 22 hdf5 Element EP1 1 -recorder 23 hdf5 Element EP2 1 -recorder 24 hdf5 Element PE 1 -recorder 25 hdf5 Element PEP 1 -recorder 26 hdf5 Element PEEQ 1 +recorder 5 hdf5 Element E 1 +recorder 6 hdf5 Element E11 1 +recorder 7 hdf5 Element E22 1 +recorder 8 hdf5 Element E12 1 +recorder 9 hdf5 Element MISES 1 +recorder 10 hdf5 Element K 1 +recorder 11 hdf5 Element M 1 +recorder 12 hdf5 Element SP 1 +recorder 13 hdf5 Element SP1 1 +recorder 14 hdf5 Element SP2 1 +recorder 15 hdf5 Element EP 1 +recorder 16 hdf5 Element EP1 1 +recorder 17 hdf5 Element EP2 1 +recorder 18 hdf5 Element PE 1 +recorder 19 hdf5 Element PEP 1 +recorder 20 hdf5 Element PEEQ 1 step static 1 diff --git a/Example/Element/NMB31.supan b/Example/Element/NMB31.supan index 22501d6d8..32d5356f0 100644 --- a/Example/Element/NMB31.supan +++ b/Example/Element/NMB31.supan @@ -15,6 +15,12 @@ section NM3D1 1 144 1728 1728 0. element NMB31 1 1 2 1 1 element NMB31 2 2 3 1 1 +section NM2D1 2 12 12 0. ! wrong section +element NMB31 3 2 3 2 1 + +orientation B3DOSL 2 0. 0. 1. +element NMB31 3 2 3 1 2 ! wrong transformation + fix2 1 E 1 cload 1 0 1 3 3 diff --git a/Example/Element/PCPE4DC.supan b/Example/Element/PCPE4DC.supan index a08731b4a..518bf5483 100644 --- a/Example/Element/PCPE4DC.supan +++ b/Example/Element/PCPE4DC.supan @@ -22,7 +22,6 @@ displacement 2 0 -.2 4 3 4 recorder 1 hdf5 Element PP 1 recorder 2 hdf5 Element S 1 -recorder 3 hdf5 Element NMISES 1 step static 1 set fixed_step_size true diff --git a/Example/Element/PCPE4UC.supan b/Example/Element/PCPE4UC.supan index 58644adcb..32c82f432 100644 --- a/Example/Element/PCPE4UC.supan +++ b/Example/Element/PCPE4UC.supan @@ -18,7 +18,6 @@ displacement 1 0 -.2 2 3 4 recorder 1 hdf5 Element PP 1 recorder 2 hdf5 Element S 1 -recorder 3 hdf5 Element NMISES 1 step static 1 set fixed_step_size true diff --git a/Example/Element/PCPE8UC.supan b/Example/Element/PCPE8UC.supan index bcbacdc1c..ed577f382 100644 --- a/Example/Element/PCPE8UC.supan +++ b/Example/Element/PCPE8UC.supan @@ -12,7 +12,7 @@ node 8 0 1 material Elastic2D 1 1500 .25 1E-4 1 material Fluid 2 1000 1E-4 -element PCPE8UC 1 1 2 3 4 5 6 7 8 1 2 1. .8 1E1 +element PCPE8UC 1 1 2 3 4 5 6 7 8 1 2 1. .8 fix 1 1 1 2 3 4 6 8 fix 2 2 1 2 5 diff --git a/Example/Element/S4D.supan b/Example/Element/S4D.supan new file mode 100644 index 000000000..b4c9cd01a --- /dev/null +++ b/Example/Element/S4D.supan @@ -0,0 +1,225 @@ +node 1 0 0 0 +node 2 1 0 0 +node 3 1 1 0 +node 4 0 1 0 +node 5 0.125 0 0 +node 6 0.25 0 0 +node 7 0.375 0 0 +node 8 0.5 0 0 +node 9 0.625 0 0 +node 10 0.75 0 0 +node 11 0.875 0 0 +node 12 1 0.125 0 +node 13 1 0.25 0 +node 14 1 0.375 0 +node 15 1 0.5 0 +node 16 1 0.625 0 +node 17 1 0.75 0 +node 18 1 0.875 0 +node 19 0.875 1 0 +node 20 0.75 1 0 +node 21 0.625 1 0 +node 22 0.5 1 0 +node 23 0.375 1 0 +node 24 0.25 1 0 +node 25 0.125 1 0 +node 26 0 0.875 0 +node 27 0 0.75 0 +node 28 0 0.625 0 +node 29 0 0.5 0 +node 30 0 0.375 0 +node 31 0 0.25 0 +node 32 0 0.125 0 +node 33 0.125 0.125 0 +node 34 0.125 0.25 0 +node 35 0.125 0.375 0 +node 36 0.125 0.5 0 +node 37 0.125 0.625 0 +node 38 0.125 0.75 0 +node 39 0.125 0.875 0 +node 40 0.25 0.125 0 +node 41 0.25 0.25 0 +node 42 0.25 0.375 0 +node 43 0.25 0.5 0 +node 44 0.25 0.625 0 +node 45 0.25 0.75 0 +node 46 0.25 0.875 0 +node 47 0.375 0.125 0 +node 48 0.375 0.25 0 +node 49 0.375 0.375 0 +node 50 0.375 0.5 0 +node 51 0.375 0.625 0 +node 52 0.375 0.75 0 +node 53 0.375 0.875 0 +node 54 0.5 0.125 0 +node 55 0.5 0.25 0 +node 56 0.5 0.375 0 +node 57 0.5 0.5 0 +node 58 0.5 0.625 0 +node 59 0.5 0.75 0 +node 60 0.5 0.875 0 +node 61 0.625 0.125 0 +node 62 0.625 0.25 0 +node 63 0.625 0.375 0 +node 64 0.625 0.5 0 +node 65 0.625 0.625 0 +node 66 0.625 0.75 0 +node 67 0.625 0.875 0 +node 68 0.75 0.125 0 +node 69 0.75 0.25 0 +node 70 0.75 0.375 0 +node 71 0.75 0.5 0 +node 72 0.75 0.625 0 +node 73 0.75 0.75 0 +node 74 0.75 0.875 0 +node 75 0.875 0.125 0 +node 76 0.875 0.25 0 +node 77 0.875 0.375 0 +node 78 0.875 0.5 0 +node 79 0.875 0.625 0 +node 80 0.875 0.75 0 +node 81 0.875 0.875 0 + +element S4 341 1 5 33 32 1 .01 true +element S4 342 32 33 34 31 1 .01 true +element S4 343 31 34 35 30 1 .01 true +element S4 344 30 35 36 29 1 .01 true +element S4 345 29 36 37 28 1 .01 true +element S4 346 28 37 38 27 1 .01 true +element S4 347 27 38 39 26 1 .01 true +element S4 348 26 39 25 4 1 .01 true +element S4 349 5 6 40 33 1 .01 true +element S4 350 33 40 41 34 1 .01 true +element S4 351 34 41 42 35 1 .01 true +element S4 352 35 42 43 36 1 .01 true +element S4 353 36 43 44 37 1 .01 true +element S4 354 37 44 45 38 1 .01 true +element S4 355 38 45 46 39 1 .01 true +element S4 356 39 46 24 25 1 .01 true +element S4 357 6 7 47 40 1 .01 true +element S4 358 40 47 48 41 1 .01 true +element S4 359 41 48 49 42 1 .01 true +element S4 360 42 49 50 43 1 .01 true +element S4 361 43 50 51 44 1 .01 true +element S4 362 44 51 52 45 1 .01 true +element S4 363 45 52 53 46 1 .01 true +element S4 364 46 53 23 24 1 .01 true +element S4 365 7 8 54 47 1 .01 true +element S4 366 47 54 55 48 1 .01 true +element S4 367 48 55 56 49 1 .01 true +element S4 368 49 56 57 50 1 .01 true +element S4 369 50 57 58 51 1 .01 true +element S4 370 51 58 59 52 1 .01 true +element S4 371 52 59 60 53 1 .01 true +element S4 372 53 60 22 23 1 .01 true +element S4 373 8 9 61 54 1 .01 true +element S4 374 54 61 62 55 1 .01 true +element S4 375 55 62 63 56 1 .01 true +element S4 376 56 63 64 57 1 .01 true +element S4 377 57 64 65 58 1 .01 true +element S4 378 58 65 66 59 1 .01 true +element S4 379 59 66 67 60 1 .01 true +element S4 380 60 67 21 22 1 .01 true +element S4 381 9 10 68 61 1 .01 true +element S4 382 61 68 69 62 1 .01 true +element S4 383 62 69 70 63 1 .01 true +element S4 384 63 70 71 64 1 .01 true +element S4 385 64 71 72 65 1 .01 true +element S4 386 65 72 73 66 1 .01 true +element S4 387 66 73 74 67 1 .01 true +element S4 388 67 74 20 21 1 .01 true +element S4 389 10 11 75 68 1 .01 true +element S4 390 68 75 76 69 1 .01 true +element S4 391 69 76 77 70 1 .01 true +element S4 392 70 77 78 71 1 .01 true +element S4 393 71 78 79 72 1 .01 true +element S4 394 72 79 80 73 1 .01 true +element S4 395 73 80 81 74 1 .01 true +element S4 396 74 81 19 20 1 .01 true +element S4 397 11 2 12 75 1 .01 true +element S4 398 75 12 13 76 1 .01 true +element S4 399 76 13 14 77 1 .01 true +element S4 400 77 14 15 78 1 .01 true +element S4 401 78 15 16 79 1 .01 true +element S4 402 79 16 17 80 1 .01 true +element S4 403 80 17 18 81 1 .01 true +element S4 404 81 18 3 19 1 .01 true + +material Elastic2D 1 12000000 .0 1E2 + +recorder 1 plain Node RF1 57 +recorder 2 plain Node RF2 57 +recorder 3 plain Node RF3 57 +recorder 4 plain Node RF4 57 +recorder 5 plain Node RF5 57 +recorder 6 plain Node RF6 57 +recorder 7 plain Node RM1 57 +recorder 8 plain Node RM2 57 +recorder 9 plain Node RM3 57 +recorder 10 plain Node DF1 57 +recorder 11 plain Node DF2 57 +recorder 12 plain Node DF3 57 +recorder 13 plain Node DF4 57 +recorder 14 plain Node DF5 57 +recorder 15 plain Node DF6 57 +recorder 16 plain Node DM1 57 +recorder 17 plain Node DM2 57 +recorder 18 plain Node DM3 57 +recorder 19 plain Node IF1 57 +recorder 20 plain Node IF2 57 +recorder 21 plain Node IF3 57 +recorder 22 plain Node IF4 57 +recorder 23 plain Node IF5 57 +recorder 24 plain Node IF6 57 +recorder 25 plain Node IM1 57 +recorder 26 plain Node IM2 57 +recorder 27 plain Node IM3 57 +recorder 28 plain Node U1 57 +recorder 29 plain Node U2 57 +recorder 30 plain Node U3 57 +recorder 31 plain Node U4 57 +recorder 32 plain Node U5 57 +recorder 33 plain Node U6 57 +recorder 34 plain Node UR1 57 +recorder 35 plain Node UR2 57 +recorder 36 plain Node UR3 57 +recorder 37 plain Node V1 57 +recorder 38 plain Node V2 57 +recorder 39 plain Node V3 57 +recorder 40 plain Node V4 57 +recorder 41 plain Node V5 57 +recorder 42 plain Node V6 57 +recorder 43 plain Node VR1 57 +recorder 44 plain Node VR2 57 +recorder 45 plain Node VR3 57 +recorder 46 plain Node A1 57 +recorder 47 plain Node A2 57 +recorder 48 plain Node A3 57 +recorder 49 plain Node A4 57 +recorder 50 plain Node A5 57 +recorder 51 plain Node A6 57 +recorder 52 plain Node AR1 57 +recorder 53 plain Node AR2 57 +recorder 54 plain Node AR3 57 + +fix 1 E 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 + +cload 1 0 -1 3 57 + +step dynamic 1 1 +set ini_step_size 1E-1 +set fixed_step_size 1 +# set sparse_mat 0 + +converger RelIncreDisp 1 1E-8 10 1 + +analyze + +# -2.1926e-06 2.1933e-06 -4.6631e-03 1.7015e-04 1.7065e-04 -1.4934e-10 +peek node 57 + +peek element 400 + +reset +clear +exit \ No newline at end of file diff --git a/Example/Element/SGCMQ.supan b/Example/Element/SGCMQ.supan index de79495f7..548357fb0 100644 --- a/Example/Element/SGCMQ.supan +++ b/Example/Element/SGCMQ.supan @@ -33,17 +33,10 @@ recorder 1 hdf5 Element S 1 recorder 2 hdf5 Element S11 1 recorder 3 hdf5 Element S22 1 recorder 4 hdf5 Element S12 1 -recorder 5 hdf5 Element SINT 1 -recorder 6 hdf5 Element E 1 -recorder 7 hdf5 Element E11 1 -recorder 8 hdf5 Element E22 1 -recorder 9 hdf5 Element E12 1 -recorder 10 hdf5 Element EINT 1 -recorder 11 hdf5 Element AXIAL 1 -recorder 12 hdf5 Element SHEAR 1 -recorder 13 hdf5 Element MOMENT 1 -recorder 14 hdf5 Element RESULTANT 1 -recorder 15 hdf5 Element NMISES 1 +recorder 5 hdf5 Element E 1 +recorder 6 hdf5 Element E11 1 +recorder 7 hdf5 Element E22 1 +recorder 8 hdf5 Element E12 1 step static 1 diff --git a/Example/Material/ArmstrongFrederick1D.supan b/Example/Material/ArmstrongFrederick1D.supan index cb1472d07..67132e1f1 100644 --- a/Example/Material/ArmstrongFrederick1D.supan +++ b/Example/Material/ArmstrongFrederick1D.supan @@ -21,7 +21,7 @@ set fixed_step_size 1 set ini_step_size .01 set symm_mat 0 -converger RelIncreDisp 1 1E-10 10 1 +converger RelIncreDisp 1 1E-12 10 1 analyze diff --git a/Example/Material/BilinearCC.supan b/Example/Material/BilinearCC.supan index 42ce6df79..384881183 100644 --- a/Example/Material/BilinearCC.supan +++ b/Example/Material/BilinearCC.supan @@ -23,19 +23,20 @@ hdf5recorder 1 Node RF 1 2 3 4 step static 1 set fixed_step_size 1 -set ini_step_size 1E-2 +set ini_step_size 1E-1 set symm_mat 0 -converger RelIncreDisp 1 1E-13 50 1 +converger RelIncreDisp 1 1E-10 10 1 analyze # Node 6: -# 5.0000 5.0000 5.0000 +# Coordinate: +# 5.0000e+00 5.0000e+00 5.0000e+00 # Displacement: -# 0 0.0014 -0.0020 +# 0.0000e+00 1.4075e-03 -2.0000e-03 # Resistance: -# 1.6604e-13 2.0946e-13 -1.8623e+03 +# -2.7073e-08 -2.7073e-08 -1.8643e+03 peek node 6 peek element 1 diff --git a/Example/Material/CDP.supan b/Example/Material/CDP.supan index 0f4450413..20bc0d920 100644 --- a/Example/Material/CDP.supan +++ b/Example/Material/CDP.supan @@ -23,8 +23,6 @@ element C3D8 2 5 6 7 8 9 10 11 12 5 G recorder 1 hdf5 Element DT 1 recorder 2 hdf5 Element DC 1 -recorder 3 hdf5 Element KAPPAT 1 -recorder 4 hdf5 Element KAPPAC 1 recorder 5 hdf5 Element PE 1 recorder 6 hdf5 Element PE11 1 recorder 7 hdf5 Element PE22 1 diff --git a/Example/Material/CDPM2.supan b/Example/Material/CDPM2.supan index 15b93ded7..cc2c3ed00 100644 --- a/Example/Material/CDPM2.supan +++ b/Example/Material/CDPM2.supan @@ -19,10 +19,11 @@ element C3D8 1 1 2 3 4 5 6 7 8 1 G element C3D8 2 5 6 7 8 9 10 11 12 1 G hdf5recorder 1 Node RF3 9 -hdf5recorder 2 Element KAPPAP 1 hdf5recorder 3 Element DT 1 hdf5recorder 4 Element DC 1 hdf5recorder 5 Element S 1 +hdf5recorder 6 Element YF 1 +hdf5recorder 7 Element HIST 1 fix 1 1 1 2 5 6 9 10 fix 2 2 1 4 5 8 9 12 @@ -44,35 +45,35 @@ peek element 1 # Node 9: # Coordinate: -# 5.0000 -5.0000 20.0000 +# 5.0000e+00 -5.0000e+00 2.0000e+01 # Displacement: -# 0 0 -0.1000 +# 0.0000e+00 0.0000e+00 -1.0000e-01 # Resistance: -# -1.1333e-13 1.5915e-13 -4.0729e+00 +# -1.5635e-14 1.6473e-14 -3.3636e+01 # # Node 10: # Coordinate: -# 5.0000 5.0000 20.0000 +# 5.0000e+00 5.0000e+00 2.0000e+01 # Displacement: -# 0 0.0370 -0.1000 +# 0.0000e+00 3.6742e-02 -1.0000e-01 # Resistance: -# -1.0423e-13 8.8103e-16 -4.0729e+00 +# -8.4487e-15 -4.5427e-16 -3.3636e+01 # # Node 11: # Coordinate: -# -5.0000 5.0000 20.0000 +# -5.0000e+00 5.0000e+00 2.0000e+01 # Displacement: -# -0.0370 0.0370 -0.1000 +# -3.6742e-02 3.6742e-02 -1.0000e-01 # Resistance: -# 4.5427e-16 7.5096e-16 -4.0729e+00 +# -1.4442e-14 -4.6659e-15 -3.3636e+01 # # Node 12: # Coordinate: -# -5.0000 -5.0000 20.0000 +# -5.0000e+00 -5.0000e+00 2.0000e+01 # Displacement: -# -0.0370 0 -0.1000 +# -3.6742e-02 0.0000e+00 -1.0000e-01 # Resistance: -# -5.9986e-16 1.4301e-13 -4.0729e+00 +# -4.5101e-15 2.0442e-14 -3.3636e+01 peek node 9 10 11 12 # save recorder 1 diff --git a/Example/Material/CDPM2PS.supan b/Example/Material/CDPM2PS.supan index 6ac6dbb75..fdc5a675f 100644 --- a/Example/Material/CDPM2PS.supan +++ b/Example/Material/CDPM2PS.supan @@ -18,29 +18,31 @@ hdf5recorder 1 Node RF1 3 4 displacement 1 0 -8E-4 1 3 4 step static 1 1 -set fixed_step_size 1 +set fixed_step_size 0 set ini_step_size 1E-2 set symm_mat 0 -converger RelIncreDisp 1 1E-10 20 1 +converger AbsIncreDisp 1 1E-10 7 1 analyze # save recorder 1 # Node 3: -# 1.0000 1.0000 +# Coordinate: +# 1.0000e+00 1.0000e+00 # Displacement: -# -0.0008 0.0009 +# -8.0000e-04 7.8386e-04 # Resistance: -# -2.4842e-01 -1.3184e-16 +# -4.4910e-01 -1.4752e-13 # # Node 4: -# 0 1.0000 +# Coordinate: +# 0.0000e+00 1.0000e+00 # Displacement: -# -0.0008 -0.0002 +# -8.0000e-04 -2.2095e-04 # Resistance: -# -5.2314e-01 -6.9389e-18 +# -8.4607e-01 7.0818e-14 peek node 3 4 reset diff --git a/Example/Material/CDPPS.supan b/Example/Material/CDPPS.supan index 0ef77e706..00c5bd0ff 100644 --- a/Example/Material/CDPPS.supan +++ b/Example/Material/CDPPS.supan @@ -18,8 +18,6 @@ displacement 2 0 -3E-2 2 3 4 hdf5recorder 1 Element DT 1 hdf5recorder 2 Element DC 1 -hdf5recorder 3 Element KAPPAT 1 -hdf5recorder 4 Element KAPPAC 1 hdf5recorder 5 Element PE 1 hdf5recorder 6 Element PE11 1 hdf5recorder 7 Element PE22 1 diff --git a/Example/Material/Concrete22.supan b/Example/Material/Concrete22.supan index eb6a4b620..593d2fb7c 100644 --- a/Example/Material/Concrete22.supan +++ b/Example/Material/Concrete22.supan @@ -12,6 +12,9 @@ element CP4 1 1 2 3 4 1 1 fix 1 1 1 2 fix 2 2 1 2 +recorder 1 plain Element SP 1 +recorder 2 plain Element EP 1 + step static 1 1 set fixed_step_size 1 set ini_step_size 1E-1 diff --git a/Example/Material/ConcreteK4.supan b/Example/Material/ConcreteK4.supan new file mode 100644 index 000000000..cdb536e9d --- /dev/null +++ b/Example/Material/ConcreteK4.supan @@ -0,0 +1,59 @@ +# A TEST MODEL FOR CONCRETEK4 MATERIAL + +node 1 0 0 +node 2 3 0 +node 3 6 0 + +material ConcreteK4 1 3E4 .05 .01 .01 3. 30. 2E-3 .7 .05 0.5 +element T2D2 1 1 2 1 10 +element T2D2 2 3 2 1 10 + +fix2 1 P 1 +fix2 2 2 2 3 + +hdf5recorder 1 Element E 1 +hdf5recorder 2 Element S 1 + +step static 1 +set ini_step_size 1E-2 +set fixed_step_size 1 + +displacement 1 0 .002 1 3 +converger RelIncreDisp 1 1E-8 10 1 + +step static 2 +set ini_step_size 1E-1 +set fixed_step_size 1 + +displacement 2 0 -.025 1 3 + +step static 3 +set ini_step_size 1E-2 +set fixed_step_size 1 + +displacement 3 0 .01 1 3 + +step static 4 +set ini_step_size 1E-2 +set fixed_step_size 1 + +displacement 4 0 -.02 1 3 + +analyze + +# Node 3: +# Coordinate: +# 6.0000e+00 0.0000e+00 +# Displacement: +# -3.3000e-02 0.0000e+00 +# Resistance: +# -8.9176e+01 0.0000e+00 +peek node 3 + +peek element 1 2 + +# save recorder 1 2 + +reset +clear +exit \ No newline at end of file diff --git a/Example/Material/Custom.supan b/Example/Material/Custom.supan index 2f557abc4..31b0f1499 100644 --- a/Example/Material/Custom.supan +++ b/Example/Material/Custom.supan @@ -3,6 +3,7 @@ expression SimpleVector 1 x y|6 example expression SimpleVector 2 x y|3 y:=0 expression SimpleVector 3 x y y:=x +expression SimpleVector 8 x y|2 y:=0 material CustomJ2 1 500 0 5 5 material CustomJ2 2 500 0 2 5 @@ -27,11 +28,17 @@ material CustomGurson 14 1 material CustomGurson 15 5 material MPF 100 1000 5 .1 -material CustomDegradation 20 100 1 -material CustomDegradation 21 100 5 - -material CustomViscosity 22 1 -material CustomViscosity 23 5 +material CustomStrainDegradation 20 100 1 +material CustomStrainDegradation 21 100 5 +material CustomStrainDegradation 22 100 1 5 +material CustomStrainDegradation 23 100 8 1 +material CustomStressDegradation 24 100 1 +material CustomStressDegradation 25 100 5 +material CustomStressDegradation 26 100 1 5 +material CustomStressDegradation 27 100 8 1 + +material CustomViscosity 30 1 +material CustomViscosity 31 5 step static 1 diff --git a/Example/Material/CustomCC.supan b/Example/Material/CustomCC.supan index b0f18a59f..f1527329e 100644 --- a/Example/Material/CustomCC.supan +++ b/Example/Material/CustomCC.supan @@ -28,7 +28,7 @@ set fixed_step_size 1 set ini_step_size 1E-2 set symm_mat 0 -converger RelIncreDisp 1 1E-13 50 1 +converger RelIncreDisp 1 1E-12 50 1 analyze diff --git a/Example/Material/CustomJ2.supan b/Example/Material/CustomJ2.supan index 6c193bc66..a0e1d241c 100644 --- a/Example/Material/CustomJ2.supan +++ b/Example/Material/CustomJ2.supan @@ -1,4 +1,4 @@ -# A TEST MODEL FOR EXPJ2 MATERIAL +# A TEST MODEL FOR CUSTOMJ2 MATERIAL node 1 5 -5 -5 node 2 5 5 -5 diff --git a/Example/Material/CustomDegradation.supan b/Example/Material/CustomStrainDegradation.supan similarity index 78% rename from Example/Material/CustomDegradation.supan rename to Example/Material/CustomStrainDegradation.supan index 032d0893a..37cc3241b 100644 --- a/Example/Material/CustomDegradation.supan +++ b/Example/Material/CustomStrainDegradation.supan @@ -1,6 +1,6 @@ material MPF 1 1000 5 .1 expression SimpleVector 1 x y|2 y[0]:=1+.01x;y[1]:=.01 -material CustomDegradation 2 1 1 +material CustomStrainDegradation 2 1 1 materialTest1D 2 -1E-4 200 50 150 380 30 50 450 470 500 exit \ No newline at end of file diff --git a/Example/Material/CustomStressDegradation.supan b/Example/Material/CustomStressDegradation.supan new file mode 100644 index 000000000..27a4ac409 --- /dev/null +++ b/Example/Material/CustomStressDegradation.supan @@ -0,0 +1,6 @@ +material Elastic1D 1 1000 +expression SimpleVector 1 x y|2 exp +material CustomStressDegradation 2 1 1 +materialTest1D 2 1E-3 10 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 105 110 115 120 60 + +exit \ No newline at end of file diff --git a/Example/Material/DafaliasManzari.supan b/Example/Material/DafaliasManzari.supan index e98fe6755..0c53c58bd 100644 --- a/Example/Material/DafaliasManzari.supan +++ b/Example/Material/DafaliasManzari.supan @@ -8,22 +8,31 @@ node 5 5 -5 10 node 6 5 5 10 node 7 -5 5 10 node 8 -5 -5 10 +node 9 5 -5 20 +node 10 5 5 20 +node 11 -5 5 20 +node 12 -5 -5 20 material DafaliasManzari 1 element C3D8 1 1 2 3 4 5 6 7 8 1 G +element C3D8 2 5 6 7 8 9 10 11 12 1 G -recorder 2 hdf5 Element S 1 +hdf5recorder 1 Node RF3 9 +hdf5recorder 3 Element DT 1 +hdf5recorder 4 Element DC 1 +hdf5recorder 5 Element S 1 -fix 1 1 1 2 3 4 5 6 7 8 -fix 2 2 1 2 3 4 5 6 7 8 +fix 1 1 1 2 5 6 9 10 3 4 7 8 11 12 +fix 2 2 1 4 5 8 9 12 2 3 6 7 10 11 fix 3 3 1 2 3 4 -displacement 1 0 -.02 3 5 6 7 8 +displacement 1 0 -.05 3 11 12 +displacement 2 0 -.06 3 9 10 step static 1 set fixed_step_size 1 -set ini_step_size 1E-2 +set ini_step_size 1E-1 set symm_mat 0 converger RelIncreDisp 1 1E-12 10 1 @@ -32,6 +41,39 @@ analyze peek element 1 +# Node 9: +# Coordinate: +# 5.0000e+00 -5.0000e+00 2.0000e+01 +# Displacement: +# 0.0000e+00 0.0000e+00 -6.0000e-02 +# Resistance: +# -2.3952e+02 2.1342e+02 -6.8601e+02 +# +# Node 10: +# Coordinate: +# 5.0000e+00 5.0000e+00 2.0000e+01 +# Displacement: +# 0.0000e+00 0.0000e+00 -6.0000e-02 +# Resistance: +# -2.3952e+02 -2.1342e+02 -6.8601e+02 +# +# Node 11: +# Coordinate: +# -5.0000e+00 5.0000e+00 2.0000e+01 +# Displacement: +# 0.0000e+00 0.0000e+00 -5.0000e-02 +# Resistance: +# 1.5676e+02 -1.7889e+02 -4.7638e+02 +# +# Node 12: +# Coordinate: +# -5.0000e+00 -5.0000e+00 2.0000e+01 +# Displacement: +# 0.0000e+00 0.0000e+00 -5.0000e-02 +# Resistance: +# 1.5676e+02 1.7889e+02 -4.7638e+02 +peek node 9 10 11 12 + reset clear exit \ No newline at end of file diff --git a/Example/Material/Degradation.supan b/Example/Material/Degradation.supan new file mode 100644 index 000000000..3e279560f --- /dev/null +++ b/Example/Material/Degradation.supan @@ -0,0 +1,45 @@ +# A TEST MODEL FOR CUSTOMSTRESSDEGRADATION MATERIAL + +node 1 0 0 +node 2 4 0 +node 3 0 -3 + +material Elastic1D 1 1000 +expression SimpleVector 1 x y|2 exp +material CustomStressDegradation 2 1 1 +expression SimpleVector 2 x y|2 y[0]:=1;y[1]=0. +material CustomStrainDegradation 3 1 2 + +element T2D2 1 1 2 2 10 +element T2D2 2 3 2 3 10 + +hdf5recorder 1 Element DT 1 2 +hdf5recorder 2 Element DC 1 2 +hdf5recorder 3 Element S 1 2 + +fix 1 P 1 3 + +step static 1 +set ini_step_size 1E-1 +set fixed_step_size 1 + +displacement 1 0 1 2 2 + +converger RelIncreDisp 1 1E-10 10 1 + +analyze + +# Node 2: +# Coordinate: +# 4.0000e+00 0.0000e+00 +# Displacement: +# -7.4966e-01 1.0000e+00 +# Resistance: +# 2.2204e-14 3.2545e-01 +peek node 2 + +peek element 1 + +reset +clear +exit diff --git a/Example/Material/ExpCC.supan b/Example/Material/ExpCC.supan index 5dea1cae1..e07bfbd9f 100644 --- a/Example/Material/ExpCC.supan +++ b/Example/Material/ExpCC.supan @@ -17,7 +17,7 @@ fix2 1 1 1 2 5 6 fix2 2 2 1 4 5 8 fix2 3 3 1 2 3 4 -displacement 1 0 -2E-2 3 5 6 7 8 +displacement 1 0 -1E-2 3 5 6 7 8 hdf5recorder 1 Node RF 1 2 3 4 @@ -26,16 +26,17 @@ set fixed_step_size 1 set ini_step_size 1E-1 set symm_mat 0 -converger RelIncreDisp 1 1E-12 50 1 +converger RelIncreDisp 1 1E-10 10 1 analyze # Node 6: -# 5.0000 5.0000 5.0000 +# Coordinate: +# 5.0000e+00 5.0000e+00 5.0000e+00 # Displacement: -# 0 0.0262 -0.0200 +# 0.0000e+00 8.9781e-03 -1.0000e-02 # Resistance: -# -6.8585e-12 -6.4791e-12 -1.5084e+04 +# -5.3965e-08 -5.3965e-08 -1.5427e+04 peek node 6 peek element 1 diff --git a/Example/Material/ExpDP.supan b/Example/Material/ExpDP.supan index 8c169e0c5..96a095f26 100644 --- a/Example/Material/ExpDP.supan +++ b/Example/Material/ExpDP.supan @@ -1,4 +1,4 @@ -# A TEST MODEL FOR EXPJ2 MATERIAL +# A TEST MODEL FOR EXPDP MATERIAL node 1 5 -5 -5 node 2 5 5 -5 diff --git a/Example/Material/Kelvin.supan b/Example/Material/Kelvin.supan index c6edb5e31..6b234362f 100644 --- a/Example/Material/Kelvin.supan +++ b/Example/Material/Kelvin.supan @@ -51,6 +51,8 @@ analyze # 0.0066 0 peek node 2 +peek material 2 3 + reset clear exit \ No newline at end of file diff --git a/Example/Material/OS146.supan b/Example/Material/OS146.supan new file mode 100644 index 000000000..878f358c8 --- /dev/null +++ b/Example/Material/OS146.supan @@ -0,0 +1,43 @@ +# A TEST MODEL FOR OS146 MATERIAL + +node 1 0 0 0 +node 2 1 0 0 + +material Elastic3D 1 100 .2 +material OS146 2 1 + +section Cell3DOS 1 10. 1. 1. 1. 2 10. 10. +section Cell3DOS 2 10. -1. 1. 1. 2 -10. -10. +section Cell3DOS 4 10. -1. 1. 1. 2 -10. 10. +section Fibre3DOS 3 1 2 4 + +orientation B3DOSL 1 0. 0. 1. + +element B31OS 1 1 2 3 1 6 + +fix2 1 E 1 + +cload 1 0 100 3 2 + +step static 1 +set ini_step_size 1E-1 +set fixed_step_size true + +converger RelIncreDisp 1 1E-10 5 1 + +analyze + +# Node 2: +# Coordinate: +# 1.0000e+00 0.0000e+00 0.0000e+00 +# Displacement: +# 1.2500e-03 7.2915e-05 1.5625e-04 -8.0729e-09 -2.5000e-04 1.2500e-04 -8.1209e-10 +# Resistance: +# 4.0939e-15 -3.8986e-14 1.0000e+02 -2.8238e-15 -1.7605e-14 2.4229e-16 -2.7139e-16 +peek node 2 3 + +peek element 1 + +reset +clear +exit \ No newline at end of file diff --git a/Example/Material/OS146S.supan b/Example/Material/OS146S.supan new file mode 100644 index 000000000..268f58bdc --- /dev/null +++ b/Example/Material/OS146S.supan @@ -0,0 +1,43 @@ +# A TEST MODEL FOR OS146S MATERIAL + +node 1 0 0 0 +node 2 1 0 0 + +material Elastic1D 1 100 +material OS146S 2 1 60 + +section Cell3DOS 1 10. 1. 1. 1. 2 10. 10. +section Cell3DOS 2 10. -1. 1. 1. 2 -10. -10. +section Cell3DOS 4 10. -1. 1. 1. 2 -10. 10. +section Fibre3DOS 3 1 2 4 + +orientation B3DOSL 1 0. 0. 1. + +element B31OS 1 1 2 3 1 6 + +fix2 1 E 1 + +cload 1 0 100 3 2 + +step static 1 +set ini_step_size 1E-1 +set fixed_step_size true + +converger RelIncreDisp 1 1E-10 5 1 + +analyze + +# Node 2: +# Coordinate: +# 1.0000e+00 0.0000e+00 0.0000e+00 +# Displacement: +# 1.2500e-03 7.2915e-05 1.5625e-04 -8.0729e-09 -2.5000e-04 1.2500e-04 -8.1209e-10 +# Resistance: +# 4.0939e-15 -3.8986e-14 1.0000e+02 -2.8238e-15 -1.7605e-14 2.4229e-16 -2.7139e-16 +peek node 2 3 + +peek element 1 + +reset +clear +exit \ No newline at end of file diff --git a/Example/Material/ParabolicCC.supan b/Example/Material/ParabolicCC.supan index 48ff050dd..14fa3eae9 100644 --- a/Example/Material/ParabolicCC.supan +++ b/Example/Material/ParabolicCC.supan @@ -23,15 +23,20 @@ hdf5recorder 1 Node RF 1 2 3 4 step static 1 set fixed_step_size 1 -set ini_step_size 1E-2 +set ini_step_size 1E-1 set symm_mat 0 -converger AbsIncreDisp 1 1E-13 10 1 +converger AbsIncreDisp 1 1E-12 10 1 analyze +# Node 5: +# Coordinate: +# 5.0000e+00 -5.0000e+00 5.0000e+00 +# Displacement: +# 0.0000e+00 0.0000e+00 -2.0000e-02 # Resistance: -# -5.8435e+03 5.8435e+03 -7.7404e+03 +# -5.8449e+03 5.8449e+03 -7.7403e+03 peek node 5 6 7 8 peek element 1 diff --git a/Example/Material/PlaneStress.supan b/Example/Material/PlaneStress.supan index 5430a6055..1333b6581 100644 --- a/Example/Material/PlaneStress.supan +++ b/Example/Material/PlaneStress.supan @@ -147,9 +147,9 @@ element CP4 58 72 77 78 73 1 1 element CP4 59 73 78 79 74 1 1 element CP4 60 74 79 80 75 1 1 element CP4 61 76 81 82 77 1 1 -element CP4 62 77 82 83 78 5 1 +element CP4 62 77 82 83 78 4 1 element CP4 63 78 83 84 79 4 1 -element CP4 64 79 84 85 80 3 1 +element CP4 64 79 84 85 80 1 1 fix 1 P 1 2 3 4 5 @@ -157,16 +157,17 @@ cload 1 0 2 2 84 83 82 cload 2 0 1 2 85 81 material BilinearJ2 2 5000 .2 80 .05 -material PlaneStress 1 2 1 true -material PlaneStress 3 2 1 false -material PlaneStress 4 2 10 true -material PlaneStress 5 2 10 false +material PlaneStress 1 2 10 +material PlaneStress 4 2 1 + +material Elastic2D 10 100 .2 +material PlaneStress 11 10 step static 1 -set ini_step_size .1 +set ini_step_size 1E-2 set fixed_step_size true -converger RelIncreDisp 1 1E-10 50 1 +converger RelIncreDisp 1 1E-12 20 1 analyze diff --git a/Example/Material/Substepping.supan b/Example/Material/Substepping.supan index 1621e2cee..5f992a00e 100644 --- a/Example/Material/Substepping.supan +++ b/Example/Material/Substepping.supan @@ -32,11 +32,12 @@ converger RelIncreDisp 1 1E-12 50 1 analyze # Node 6: -# 5.0000 5.0000 5.0000 +# Coordinate: +# 5.0000e+00 5.0000e+00 5.0000e+00 # Displacement: -# 0 0.0262 -0.0200 +# 0.0000e+00 2.6156e-02 -2.0000e-02 # Resistance: -# -6.8585e-12 -6.4791e-12 -1.5084e+04 +# -8.6466e-12 -5.2780e-12 -1.5084e+04 peek node 6 # save recorder 1 diff --git a/Example/Material/TrilinearDegradation.supan b/Example/Material/TrilinearDegradation.supan index 5a842cef5..a9e77e1de 100644 --- a/Example/Material/TrilinearDegradation.supan +++ b/Example/Material/TrilinearDegradation.supan @@ -1,5 +1,5 @@ material MPF 1 1000 5 .1 -material TrilinearDegradation 2 1 1E-2 6E-2 .1 +material TrilinearStrainDegradation 2 1 1E-2 6E-2 .1 materialTest1D 2 -1E-4 200 50 150 380 30 50 450 470 500 exit \ No newline at end of file diff --git a/Example/Material/exp b/Example/Material/exp new file mode 100644 index 000000000..baddea43e --- /dev/null +++ b/Example/Material/exp @@ -0,0 +1,7 @@ +if(x>20){ + y[0]:=exp(-(x-20)/20); + y[1]:=-y[0]/20; +}else{ + y[0]:=1.; + y[1]:=0.; +} \ No newline at end of file diff --git a/Example/Other/Group.supan b/Example/Other/Group.supan index 8b01ae2f9..7942d82b4 100644 --- a/Example/Other/Group.supan +++ b/Example/Other/Group.supan @@ -166,12 +166,15 @@ expression SimpleScalar 1 x if(x==0)1;else-1; customnodegroup 4 1 +groupgroup 10 1 3 + groupmultiplierbc 1 P 2 groupcload 1 0 2 2 1 plainrecorder 1 GroupSum RF2 1 plainrecorder 2 GroupNode RF2 3 +plainrecorder 3 Sum RF2 1 2 3 4 step static 1 @@ -188,7 +191,9 @@ peek node 117 peek element 1 -peek group 4 +peek group 1 3 4 10 + +peek recorder 1 2 3 reset clear diff --git a/Example/Section/Fibre2D.supan b/Example/Section/Fibre2D.supan index 7e6721f8d..2dbba580e 100644 --- a/Example/Section/Fibre2D.supan +++ b/Example/Section/Fibre2D.supan @@ -5,6 +5,8 @@ node 1 0 0 material ConcreteTsai 1 30. 2. 2. 2. 2. 2. .2 2E-3 1E-4 material MPF 2 2E5 400 .01 +material ElasticOS 3 100 .2 ! wrong material type + section Rectangle2D 2 300 500 1 9 section Bar2D 3 1200 2 230 section Bar2D 4 1200 2 -230 @@ -16,7 +18,11 @@ section TSection2D 9 200 25 100 25 1 6 section EU2D HEM100 10 1 section US2D W44X290 11 2 -section Fibre2D 1 2 3 4 5 6 7 8 9 10 11 +section Bar3D 12 1200 2 230 ! wrong type +section Bar3D 13 1200 5 230 ! missing material +section Bar3D 14 1200 3 230 ! wrong material + +section Fibre2D 1 2 3 4 5 6 7 8 9 10 11 12 element SingleSection2D 1 1 1 diff --git a/Example/Section/NM2D1.supan b/Example/Section/NM2D1.supan new file mode 100644 index 000000000..d8d113160 --- /dev/null +++ b/Example/Section/NM2D1.supan @@ -0,0 +1,47 @@ +# A TEST MODEL FOR NM2D1 SECTION + +node 1 0 0 +node 2 2 0 +node 3 1 0 + +section NM2D1 1 10 1E3 0. +element NMB21 1 1 3 1 +element NMB21 2 3 2 1 + +recorder 1 hdf5 Element S 1 + +fix2 1 P 1 + +displacement 1 0 .3 2 2 + +step static 1 1 +set ini_step_size 1E-1 +set fixed_step_size true +set symm_mat false + +converger RelIncreDisp 1 1E-10 5 1 + +analyze + +# Node 1: +# Coordinate: +# 0.0000e+00 0.0000e+00 +# Displacement: +# 0.0000e+00 0.0000e+00 0.0000e+00 +# Resistance: +# 0.0000e+00 -1.1250e+02 -2.2500e+02 +# +# Node 2: +# Coordinate: +# 2.0000e+00 0.0000e+00 +# Displacement: +# 0.0000e+00 3.0000e-01 2.2500e-01 +# Resistance: +# 0.0000e+00 1.1250e+02 1.1369e-13 +peek node 1 2 + +peek element 1 + +reset +clear +exit \ No newline at end of file diff --git a/Example/Section/NM3D1.supan b/Example/Section/NM3D1.supan new file mode 100644 index 000000000..8d7cc9c16 --- /dev/null +++ b/Example/Section/NM3D1.supan @@ -0,0 +1,60 @@ +# A TEST MODEL FOR NM3D1 SECTION + +node 1 0 0 0 +node 2 1 0 0 +node 3 1 2 0 + +orientation B3DL 1 0. 0. 1. + +section NM3D1 1 10 200 400 0. +element NMB31 1 1 2 1 1 +element NMB31 2 2 3 1 1 + +fix2 1 E 1 + +displacement 1 0 .6 3 3 + +recorder 1 hdf5 Element E 1 +recorder 2 hdf5 Element S 1 +recorder 3 hdf5 Element PE 1 + +step static 1 +set ini_step_size 1E-1 +set fixed_step_size true + +converger RelIncreDisp 1 1E-12 20 1 + +analyze + +# Node 1: +# Coordinate: +# 0.0000e+00 0.0000e+00 0.0000e+00 +# Displacement: +# 0.0000e+00 0.0000e+00 0.0000e+00 0.0000e+00 0.0000e+00 0.0000e+00 +# Resistance: +# 0.0000e+00 0.0000e+00 -7.9973e+01 1.5995e+02 7.9973e+01 0.0000e+00 +# +# Node 2: +# Coordinate: +# 1.0000e+00 0.0000e+00 0.0000e+00 +# Displacement: +# 0.0000e+00 0.0000e+00 6.6644e-02 -9.9967e-05 -9.9967e-02 0.0000e+00 +# Resistance: +# 0.0000e+00 0.0000e+00 -4.2633e-14 0.0000e+00 -5.1870e-13 0.0000e+00 +# +# Node 3: +# Coordinate: +# 1.0000e+00 2.0000e+00 0.0000e+00 +# Displacement: +# 0.0000e+00 0.0000e+00 6.0000e-01 -3.9997e-01 -9.9967e-02 0.0000e+00 +# Resistance: +# 0.0000e+00 0.0000e+00 7.9973e+01 2.8422e-14 0.0000e+00 0.0000e+00 +peek node 1 2 3 + +peek element 1 2 + +# save recorder 2 + +reset +clear +exit \ No newline at end of file diff --git a/Example/Section/US2DC.supan b/Example/Section/US2DC.supan new file mode 100644 index 000000000..8aed8f89a --- /dev/null +++ b/Example/Section/US2DC.supan @@ -0,0 +1,40 @@ +# A TEST MODEL FOR US2D T SECTION + +node 1 0 0 +node 2 1 0 + +material Elastic1D 1 10 + +section US2DC WT12X31 1 1 1 10 +section US2DC WT20X181 2 1 1 10 +section US2DC WT20X132 3 1 1 10 +section US2DC WT18X401 4 1 1 10 +section US2DC WT18X141 5 1 1 10 +section US2DC WT18X116 6 1 1 10 +section US2DC WT18X80 7 1 1 10 +section US2DC WT15X163 8 1 1 10 +section US2DC WT15X146 9 1 1 10 + +element B21 1 1 2 1 +element B21 2 1 2 2 +element B21 3 1 2 3 +element B21 4 1 2 4 +element B21 5 1 2 5 +element B21 6 1 2 6 +element B21 7 1 2 7 +element B21 8 1 2 8 +element B21 9 1 2 9 + +fix2 1 E 1 + +displacement 1 0 1 1 2 + +step static 1 + +analyze + +peek node 2 + +reset +clear +exit \ No newline at end of file diff --git a/Example/Section/US3DC.supan b/Example/Section/US3DC.supan new file mode 100644 index 000000000..5262aa734 --- /dev/null +++ b/Example/Section/US3DC.supan @@ -0,0 +1,42 @@ +# A TEST MODEL FOR US3D T SECTION + +node 1 0 0 0 +node 2 1 0 0 + +orientation B3DL 1 0. 1. 0. + +material Elastic1D 1 10 + +section US3DC WT12X31 1 1 1 10 +section US3DC WT20X181 2 1 1 10 +section US3DC WT20X132 3 1 1 10 +section US3DC WT18X401 4 1 1 10 +section US3DC WT18X141 5 1 1 10 +section US3DC WT18X116 6 1 1 10 +section US3DC WT18X80 7 1 1 10 +section US3DC WT15X163 8 1 1 10 +section US3DC WT15X146 9 1 1 10 + +element B31 1 1 2 1 1 +element B31 2 1 2 2 1 +element B31 3 1 2 3 1 +element B31 4 1 2 4 1 +element B31 5 1 2 5 1 +element B31 6 1 2 6 1 +element B31 7 1 2 7 1 +element B31 8 1 2 8 1 +element B31 9 1 2 9 1 + +fix2 1 E 1 + +displacement 1 0 1 3 2 + +step static 1 + +analyze + +peek node 2 + +reset +clear +exit \ No newline at end of file diff --git a/Example/Solver/AICN.supan b/Example/Solver/AICN.supan new file mode 100644 index 000000000..f4d4861ef --- /dev/null +++ b/Example/Solver/AICN.supan @@ -0,0 +1,52 @@ +# A TEST MODEL FOR AICN SOLVER + +node 1 0 0 +node 2 1 0 +node 3 1 1 +node 4 0 1 + +material BilinearJ2 2 5000 .2 4 .05 +material PlaneStress 1 2 + +element CP4 1 1 2 3 4 1 1 + +fix 1 1 1 +fix 2 2 1 2 + +cload 1 0 10 1 3 4 +cload 2 0 20 2 3 4 + +step static 1 1 +solver AICN 1 0.2 +set fixed_step_size 1 +set ini_step_size 1E-1 +set symm_mat 0 + +converger RelIncreDisp 1 1E-11 20 1 + +analyze + +peek element 1 + +# Node 3: +# Coordinate: +# 1.0000e+00 1.0000e+00 +# Displacement: +# 3.2825e-01 -1.1472e-02 +# Resistance: +# 1.0000e+01 2.0000e+01 +# +# Node 4: +# Coordinate: +# 0.0000e+00 1.0000e+00 +# Displacement: +# 4.2981e-01 2.7330e-01 +# Resistance: +# 1.0000e+01 2.0000e+01 +peek node 3 4 + +peek solver 1 + +reset +clear +exit \ No newline at end of file diff --git a/Example/Solver/Buckle2.supan b/Example/Solver/Buckle2.supan new file mode 100644 index 000000000..9833a5027 --- /dev/null +++ b/Example/Solver/Buckle2.supan @@ -0,0 +1,27 @@ +material Elastic1D 1 1200 +section Rectangle2D 1 1 1 1 + +node 1 0 0 +node 2 2 0 +node 3 4 0 +node 4 6 0 +node 5 8 0 +node 6 10 0 + +element B21 1 1 2 1 6 0 +element B21 2 2 3 1 6 0 +element B21 3 3 4 1 6 0 +element B21 4 4 5 1 6 0 +element B21 5 5 6 1 6 0 + +fix 1 P 1 + +cload 1 0 -1E-2 1 6 + +step buckle 1 +set symm_mat 0 + +# need nlgeom +analyze + +exit \ No newline at end of file diff --git a/Example/Solver/ElementalNonviscous.supan b/Example/Solver/ElementalNonviscous.supan new file mode 100644 index 000000000..dd7de4861 --- /dev/null +++ b/Example/Solver/ElementalNonviscous.supan @@ -0,0 +1,62 @@ +# A TEST MODEL FOR NONVISCOUS DAMPING MODEL + +node 1 0 0 +node 2 1 0 + +material Bilinear1D 1 100 1 .05 1. 1E-2 + +element T2D2 1 1 2 1 1 +element Mass 2 2 100 1 + +fix 1 1 1 +fix2 2 2 1 2 + +hdf5recorder 1 Node U1 2 +hdf5recorder 2 Node RF1 2 +hdf5recorder 3 Global KE +hdf5recorder 4 Global SE +hdf5recorder 5 Global VE +hdf5recorder 6 Global NVE + +elementgroup 1 1 + +modifier ElementalNonviscous 1 1 8. 0 2. 0 4. 0 1. 1 +modifier ElementalNonviscous 1 1 8. 0 2. 0 4. 0 1. 0 +modifier ElementalNonviscousGroup 2 1 8. 0 2. 0 4. 0 1. 0 + +step static 1 1 +set ini_step_size .1 +set fixed_step_size 1 + +displacement 1 0 .012 1 2 + +converger RelIncreDisp 1 1E-10 3 1 + +step dynamic 2 6 +set ini_step_size .02 +set fixed_step_size 1 + +converger RelIncreDisp 2 1E-10 10 1 + +analyze --ignore-error + +# Node 2: +# Coordinate: +# 1.0000e+00 0.0000e+00 +# Displacement: +# 1.0193e-02 0.0000e+00 +# Resistance: +# 8.2929e-01 0.0000e+00 +# Velocity: +# 1.7389e-03 0.0000e+00 +# Acceleration: +# -8.6931e-03 0.0000e+00 +peek node 2 + +peek group 1 + +# save recorder 1 2 3 4 5 + +reset +clear +exit \ No newline at end of file diff --git a/Example/Solver/GSSSSV0.supan b/Example/Solver/GSSSSV0.supan index f380b902b..7641ab5fb 100644 --- a/Example/Solver/GSSSSV0.supan +++ b/Example/Solver/GSSSSV0.supan @@ -5,7 +5,7 @@ node 2 0 1 material Elastic1D 1 100 .1 -element EB21 1 1 2 10 1 1 0 +element EB21 1 1 2 10 1 1 1 mass 2 2 10 1 @@ -29,15 +29,15 @@ analyze # Node 2: # Coordinate: -# 0 1.0000 +# 0.0000e+00 1.0000e+00 # Displacement: -# 0.0329 0 -0.0491 +# 3.2860e-02 -1.5189e-04 -4.9113e-02 # Resistance: -# 9.9584 0 0.0672 +# 9.9600e+00 6.0810e-02 6.6965e-02 # Velocity: -# 0.3755 0 -0.5750 +# 3.7549e-01 -4.8237e-03 -5.7474e-01 # Acceleration: -# 0.4176 0 -1.7028 +# 4.1739e-01 -8.1271e-02 -1.6983e+00 peek node 2 peek integrator 1 diff --git a/Example/Solver/LeeElemental.supan b/Example/Solver/LeeElemental.supan index eafc16eb7..b301e35b3 100644 --- a/Example/Solver/LeeElemental.supan +++ b/Example/Solver/LeeElemental.supan @@ -2,6 +2,7 @@ node 1 0 0 node 2 1 0 +node 4 0 0 material Bilinear1D 1 100 1 .05 1. 1E-2 @@ -12,9 +13,9 @@ fix 1 1 1 fix 2 2 1 2 hdf5recorder 1 Node U1 2 -hdf5recorder 2 Node RF1 2 +hdf5recorder 2 Node RF1 2 4 -modifier LeeElementalDamping 1 .05 1 2 +modifier ElementalLee 1 .05 1 2 step static 1 1 set ini_step_size .1 @@ -47,7 +48,7 @@ analyze # -0.0085 0 peek node 2 -# save recorder 1 2 +save recorder 1 2 peek integrator 1 diff --git a/Example/Solver/LeeFull.supan b/Example/Solver/LeeFull.supan index 565b513f2..741941d1e 100644 --- a/Example/Solver/LeeFull.supan +++ b/Example/Solver/LeeFull.supan @@ -18,6 +18,10 @@ plainrecorder 3 Node DF1 2 plainrecorder 4 Node IF1 2 plainrecorder 5 Node GDF1 2 plainrecorder 6 Node GIF1 2 +plainrecorder 7 Node GDF2 2 +plainrecorder 8 Node GIF2 2 +plainrecorder 9 Node GIF 2 +plainrecorder 10 Node GDF 2 step static 1 1 set ini_step_size .1 diff --git a/Example/Solver/MPDC.supan b/Example/Solver/MPDC.supan new file mode 100644 index 000000000..84eca181c --- /dev/null +++ b/Example/Solver/MPDC.supan @@ -0,0 +1,26 @@ +# A TEST MODEL FOR MPDC + +node 1 0 0 +node 2 10 0 + +material MPF 1 1E3 3 .02 + +section Rectangle2D 1 12 1 1 12 + +element F21 1 1 2 1 5 + +fix2 1 P 1 + +displacement 1 0 1 2 3 ! wrong node + +step static 1 1 +solver Newton 1 +set fixed_step_size 1 + +converger RelIncreDisp 1 1E-12 10 1 + +analyze + +reset +clear +exit \ No newline at end of file diff --git a/Example/Solver/Momentum.supan b/Example/Solver/Momentum.supan index 35cd46ac2..977775a86 100644 --- a/Example/Solver/Momentum.supan +++ b/Example/Solver/Momentum.supan @@ -24,10 +24,11 @@ cload 2 1 -100 2 3 cload 3 1 -200 2 4 hdf5recorder 1 Global KE -hdf5recorder 2 Global MOMENTUMX -hdf5recorder 3 Global MOMENTUMY -hdf5recorder 4 Node MOMENTUMX 2 3 4 -hdf5recorder 5 Node MOMENTUMY 2 3 4 +hdf5recorder 2 Global MM1 +hdf5recorder 3 Global MM2 +hdf5recorder 4 Node MM1 2 3 4 +hdf5recorder 5 Node MM2 2 3 4 +hdf5recorder 6 Node MM 3 step dynamic 1 1 set ini_step_size 1E-3 @@ -42,17 +43,19 @@ analyze # Node 4: # Coordinate: -# 0 -5.0000 +# 0.0000e+00 -5.0000e+00 # Displacement: -# 2.5699 8.2627 +# 2.5699e+00 8.2627e+00 # Resistance: -# 0 0 +# 0.0000e+00 0.0000e+00 # Velocity: -# 3.5857 1.0751 +# 3.5857e+00 1.0751e+00 # Acceleration: -# -1.7425 -15.4797 +# -1.7425e+00 -1.5480e+01 peek node 4 +peek recorder 1 2 3 4 5 + # save recorder 1 2 3 4 5 exit \ No newline at end of file diff --git a/Example/Solver/Newmark.supan b/Example/Solver/Newmark.supan index 28aed6237..2eeb84944 100644 --- a/Example/Solver/Newmark.supan +++ b/Example/Solver/Newmark.supan @@ -13,8 +13,8 @@ mass 2 2 10 1 fix 1 P 1 -hdf5recorder 1 Global MOMENTUMRZ -hdf5recorder 2 Node MOMENTUMRZ 2 +hdf5recorder 1 Global MMR3 +hdf5recorder 2 Node MMR3 2 amplitude Tabular 1 EZ # amplitude Decay 1 10 20 diff --git a/Example/Solver/Newton.supan b/Example/Solver/Newton.supan index af62d5504..39bf1b9de 100644 --- a/Example/Solver/Newton.supan +++ b/Example/Solver/Newton.supan @@ -18,7 +18,7 @@ set ini_step_size .1 cload 1 0 100 2 2 -converger RelIncreDisp 1 1E-10 10 1 +converger RelIncreDisp 1 1E-10 4 1 analyze diff --git a/Example/Solver/OALTS.supan b/Example/Solver/OALTS.supan new file mode 100644 index 000000000..c92eafe7b --- /dev/null +++ b/Example/Solver/OALTS.supan @@ -0,0 +1,50 @@ +# A TEST MODEL FOR SUPPORTMOTION INTEGRATOR + +node 1 0 0 +node 2 0 1 + +material Elastic1D 1 100 .1 + +section Rectangle2D 1 12 1 1 + +element B21 1 1 2 1 6 1 + +mass 2 2 10 1 + +fix 1 2 1 +fix 2 3 1 + +amplitude Tabular 1 EZ + +supportacceleration 2 1 .2 1 1 + +hdf5recorder 1 Node U1 1 2 + +step dynamic 1 1 +set ini_step_size 1E-2 +set fixed_step_size true + +integrator OALTS 1 .8 + +converger RelIncreDisp 1 1E-10 4 1 + +analyze + +# Node 2: +# Coordinate: +# 0.0000e+00 1.0000e+00 +# Displacement: +# -1.4318e-01 -2.6075e-04 5.7910e-02 +# Resistance: +# -1.1802e+01 1.3240e-01 -1.0595e-01 +# Velocity: +# -3.0080e-01 -6.2230e-03 5.6520e-01 +# Acceleration: +# 1.1154e+00 -1.6550e-01 1.2249e-01 +peek node 1 2 + +peek integrator 1 + +# save recorder 1 + +exit \ No newline at end of file diff --git a/Example/Solver/Ramm.supan b/Example/Solver/Ramm.supan index b380c09d2..8da2b3bb4 100644 --- a/Example/Solver/Ramm.supan +++ b/Example/Solver/Ramm.supan @@ -40,25 +40,33 @@ element EB21 16 16 17 1000 1 1 1 fix 1 1 1 17 fix 2 2 1 17 -# recorder 1 hdf5 Node U 11 +recorder 1 hdf5 Node U 11 -step arclength 1 11 2 -20 +refload 1 0 -20 2 11 + +step arclength 1 +solver Ramm 1 +set ini_step_size .1 +set min_step_size .05 +set max_step_size .2 criterion MinDisplacement 1 11 2 -5.5 -converger RelIncreDisp 1 1E-10 4 1 +converger RelIncreDisp 1 1E-10 6 1 analyze # Node 11: # Coordinate: -# 2.0000 8.0000 +# 2.0000e+00 8.0000e+00 # Displacement: -# 5.9364 -5.5092 0.6794 +# 5.9392e+00 -5.5060e+00 6.7793e-01 # Resistance: -# -1.2223e-09 -1.0142e+01 1.8190e-12 +# -2.6251e-08 -9.1406e+00 3.5243e-12 peek node 11 +peek solver 1 + # save recorder 1 exit \ No newline at end of file diff --git a/Example/Solver/SHALLOW.ARC.supan b/Example/Solver/SHALLOW.ARC.supan index 3c736ad55..2c47cd596 100644 --- a/Example/Solver/SHALLOW.ARC.supan +++ b/Example/Solver/SHALLOW.ARC.supan @@ -51,21 +51,24 @@ fix 2 2 1 21 recorder 1 hdf5 Node U 7 # recorder 2 hdf5 Node RF1 7 -step arclength 1 7 2 -300 +refforce 1 0 -300 2 7 + +step arclength 1 set symm_mat false criterion MinDisplacement 1 7 2 -1.8 -converger RelIncreDisp 1 1E-4 4 1 +converger RelIncreDisp 1 1E-10 6 1 analyze # Node 7: -# 4.0223 0.8396 +# Coordinate: +# 4.0223e+00 8.3955e-01 # Displacement: -# 0.0168 -1.8050 0.1679 +# 2.8077e-02 -1.8912e+00 1.5941e-01 # Resistance: -# -1.4197e-10 -1.8196e+02 -2.2510e-11 +# -1.2903e-10 -4.1933e+02 -1.3188e-11 peek node 7 # save recorder 1 diff --git a/Include/armadillo/armadillo_bits/Mat_meat.hpp b/Include/armadillo/armadillo_bits/Mat_meat.hpp index a96fbd9b0..4cb8d7654 100644 --- a/Include/armadillo/armadillo_bits/Mat_meat.hpp +++ b/Include/armadillo/armadillo_bits/Mat_meat.hpp @@ -2657,6 +2657,8 @@ Mat::operator=(const SpBase& m) (*this).zeros(x.n_rows, x_n_cols); + if(x.n_nonzero == 0) { return *this; } + const eT* x_values = x.values; const uword* x_row_indices = x.row_indices; const uword* x_col_ptrs = x.col_ptrs; diff --git a/Include/armadillo/armadillo_bits/SpMat_meat.hpp b/Include/armadillo/armadillo_bits/SpMat_meat.hpp index ded6e7ca8..0ce91527e 100644 --- a/Include/armadillo/armadillo_bits/SpMat_meat.hpp +++ b/Include/armadillo/armadillo_bits/SpMat_meat.hpp @@ -2971,12 +2971,11 @@ SpMat::swap_cols(const uword in_col1, const uword in_col2) // TODO: this is a rudimentary implementation - SpMat tmp = (*this); + const SpMat tmp1 = (*this).col(in_col1); + const SpMat tmp2 = (*this).col(in_col2); - tmp.col(in_col1) = (*this).col(in_col2); - tmp.col(in_col2) = (*this).col(in_col1); - - steal_mem(tmp); + (*this).col(in_col2) = tmp1; + (*this).col(in_col1) = tmp2; // for(uword lrow = 0; lrow < n_rows; ++lrow) // { @@ -4099,9 +4098,14 @@ SpMat::zeros() { arma_extra_debug_sigprint(); - const bool already_done = ( (sync_state != 1) && (n_nonzero == 0) ); - - if(already_done == false) { init(n_rows, n_cols); } + if((n_nonzero == 0) && (values != nullptr)) + { + invalidate_cache(); + } + else + { + init(n_rows, n_cols); + } return *this; } @@ -4136,9 +4140,14 @@ SpMat::zeros(const uword in_rows, const uword in_cols) { arma_extra_debug_sigprint(); - const bool already_done = ( (sync_state != 1) && (n_nonzero == 0) && (n_rows == in_rows) && (n_cols == in_cols) ); - - if(already_done == false) { init(in_rows, in_cols); } + if((n_nonzero == 0) && (n_rows == in_rows) && (n_cols == in_cols) && (values != nullptr)) + { + invalidate_cache(); + } + else + { + init(in_rows, in_cols); + } return *this; } @@ -5197,11 +5206,21 @@ SpMat::init_simple(const SpMat& x) if(this == &x) { return; } - init(x.n_rows, x.n_cols, x.n_nonzero); + if((x.n_nonzero == 0) && (n_nonzero == 0) && (n_rows == x.n_rows) && (n_cols == x.n_cols) && (values != nullptr)) + { + invalidate_cache(); + } + else + { + init(x.n_rows, x.n_cols, x.n_nonzero); + } - if(x.values ) { arrayops::copy(access::rwp(values), x.values, x.n_nonzero + 1); } - if(x.row_indices) { arrayops::copy(access::rwp(row_indices), x.row_indices, x.n_nonzero + 1); } - if(x.col_ptrs ) { arrayops::copy(access::rwp(col_ptrs), x.col_ptrs, x.n_cols + 1); } + if(x.n_nonzero != 0) + { + if(x.values ) { arrayops::copy(access::rwp(values), x.values, x.n_nonzero + 1); } + if(x.row_indices) { arrayops::copy(access::rwp(row_indices), x.row_indices, x.n_nonzero + 1); } + if(x.col_ptrs ) { arrayops::copy(access::rwp(col_ptrs), x.col_ptrs, x.n_cols + 1); } + } } diff --git a/Include/armadillo/armadillo_bits/arma_version.hpp b/Include/armadillo/armadillo_bits/arma_version.hpp index 11a77576a..025dec500 100644 --- a/Include/armadillo/armadillo_bits/arma_version.hpp +++ b/Include/armadillo/armadillo_bits/arma_version.hpp @@ -23,7 +23,7 @@ #define ARMA_VERSION_MAJOR 12 #define ARMA_VERSION_MINOR 6 -#define ARMA_VERSION_PATCH 3 +#define ARMA_VERSION_PATCH 6 #define ARMA_VERSION_NAME "Cortisol Retox" diff --git a/Include/armadillo/armadillo_bits/auxlib_bones.hpp b/Include/armadillo/armadillo_bits/auxlib_bones.hpp index 56237d2de..63292dd9e 100644 --- a/Include/armadillo/armadillo_bits/auxlib_bones.hpp +++ b/Include/armadillo/armadillo_bits/auxlib_bones.hpp @@ -433,6 +433,15 @@ class auxlib template inline static bool rudimentary_sym_check(const Mat< std::complex >& X); + + template + inline static typename get_pod_type::result norm1_gen(const Mat& A); + + template + inline static typename get_pod_type::result norm1_sym(const Mat& A); + + template + inline static typename get_pod_type::result norm1_band(const Mat& A, const uword KL, const uword KU); }; diff --git a/Include/armadillo/armadillo_bits/auxlib_meat.hpp b/Include/armadillo/armadillo_bits/auxlib_meat.hpp index cca13a080..373aaa4e3 100644 --- a/Include/armadillo/armadillo_bits/auxlib_meat.hpp +++ b/Include/armadillo/armadillo_bits/auxlib_meat.hpp @@ -121,7 +121,7 @@ auxlib::inv_rcond(Mat& A, typename get_pod_type::result& out_rcond) podarray ipiv(A.n_rows); arma_extra_debug_print("lapack::lange()"); - norm_val = lapack::lange(&norm_id, &n, &n, A.memptr(), &lda, junk.memptr()); + norm_val = (has_blas_float_bug::value) ? auxlib::norm1_gen(A) : lapack::lange(&norm_id, &n, &n, A.memptr(), &lda, junk.memptr()); arma_extra_debug_print("lapack::getrf()"); lapack::getrf(&n, &n, A.memptr(), &lda, ipiv.memptr(), &info); @@ -333,7 +333,7 @@ auxlib::inv_sympd_rcond(Mat& A, bool& out_sympd_state, eT& out_rcond) podarray work(A.n_rows); arma_extra_debug_print("lapack::lansy()"); - norm_val = lapack::lansy(&norm_id, &uplo, &n, A.memptr(), &n, work.memptr()); + norm_val = (has_blas_float_bug::value) ? auxlib::norm1_sym(A) : lapack::lansy(&norm_id, &uplo, &n, A.memptr(), &n, work.memptr()); arma_extra_debug_print("lapack::potrf()"); lapack::potrf(&uplo, &n, A.memptr(), &n, &info); @@ -399,7 +399,7 @@ auxlib::inv_sympd_rcond(Mat< std::complex >& A, bool& out_sympd_state, T& out podarray work(A.n_rows); arma_extra_debug_print("lapack::lanhe()"); - norm_val = lapack::lanhe(&norm_id, &uplo, &n, A.memptr(), &n, work.memptr()); + norm_val = (has_blas_float_bug::value) ? auxlib::norm1_sym(A) : lapack::lanhe(&norm_id, &uplo, &n, A.memptr(), &n, work.memptr()); arma_extra_debug_print("lapack::potrf()"); lapack::potrf(&uplo, &n, A.memptr(), &n, &info); @@ -4039,7 +4039,7 @@ auxlib::solve_square_rcond(Mat& out, typename T1::pod_ty podarray ipiv(A.n_rows + 2); // +2 for paranoia arma_extra_debug_print("lapack::lange()"); - norm_val = lapack::lange(&norm_id, &n, &n, A.memptr(), &lda, junk.memptr()); + norm_val = (has_blas_float_bug::value) ? auxlib::norm1_gen(A) : lapack::lange(&norm_id, &n, &n, A.memptr(), &lda, junk.memptr()); arma_extra_debug_print("lapack::getrf()"); lapack::getrf(&n, &n, A.memptr(), &n, ipiv.memptr(), &info); @@ -4368,7 +4368,7 @@ auxlib::solve_sympd_rcond(Mat& out, bool& out_sympd_state podarray work(A.n_rows); arma_extra_debug_print("lapack::lansy()"); - norm_val = lapack::lansy(&norm_id, &uplo, &n, A.memptr(), &n, work.memptr()); + norm_val = (has_blas_float_bug::value) ? auxlib::norm1_sym(A) : lapack::lansy(&norm_id, &uplo, &n, A.memptr(), &n, work.memptr()); arma_extra_debug_print("lapack::potrf()"); lapack::potrf(&uplo, &n, A.memptr(), &n, &info); @@ -4446,7 +4446,7 @@ auxlib::solve_sympd_rcond(Mat< std::complex >& out, bool& podarray work(A.n_rows); arma_extra_debug_print("lapack::lanhe()"); - norm_val = lapack::lanhe(&norm_id, &uplo, &n, A.memptr(), &n, work.memptr()); + norm_val = (has_blas_float_bug::value) ? auxlib::norm1_sym(A) : lapack::lanhe(&norm_id, &uplo, &n, A.memptr(), &n, work.memptr()); arma_extra_debug_print("lapack::potrf()"); lapack::potrf(&uplo, &n, A.memptr(), &n, &info); @@ -5387,7 +5387,7 @@ auxlib::solve_band_rcond_common(Mat& out, typename T1::p arma_debug_assert_blas_size(AB,out); - char norm_id = '1'; + //char norm_id = '1'; char trans = 'N'; blas_int n = blas_int(N); // assuming square matrix blas_int kl = blas_int(KL); @@ -5398,11 +5398,14 @@ auxlib::solve_band_rcond_common(Mat& out, typename T1::p blas_int info = blas_int(0); T norm_val = T(0); - podarray junk(1); + //podarray junk(1); podarray ipiv(N + 2); // +2 for paranoia - arma_extra_debug_print("lapack::langb()"); - norm_val = lapack::langb(&norm_id, &n, &kl, &ku, AB.memptr(), &ldab, junk.memptr()); + // // NOTE: lapack::langb() and lapack::gbtrf() use incompatible storage formats for the band matrix + // arma_extra_debug_print("lapack::langb()"); + // norm_val = lapack::langb(&norm_id, &n, &kl, &ku, AB.memptr(), &ldab, junk.memptr()); + + norm_val = auxlib::norm1_band(A,KL,KU); arma_extra_debug_print("lapack::gbtrf()"); lapack::gbtrf(&n, &n, &kl, &ku, AB.memptr(), &ldab, ipiv.memptr(), &info); @@ -6098,7 +6101,7 @@ auxlib::rcond(Mat& A) podarray ipiv( (std::min)(A.n_rows, A.n_cols) ); arma_extra_debug_print("lapack::lange()"); - norm_val = lapack::lange(&norm_id, &m, &n, A.memptr(), &lda, work.memptr()); + norm_val = (has_blas_float_bug::value) ? auxlib::norm1_gen(A) : lapack::lange(&norm_id, &m, &n, A.memptr(), &lda, work.memptr()); arma_extra_debug_print("lapack::getrf()"); lapack::getrf(&m, &n, A.memptr(), &lda, ipiv.memptr(), &info); @@ -6148,7 +6151,7 @@ auxlib::rcond(Mat< std::complex >& A) podarray ipiv( (std::min)(A.n_rows, A.n_cols) ); arma_extra_debug_print("lapack::lange()"); - norm_val = lapack::lange(&norm_id, &m, &n, A.memptr(), &lda, junk.memptr()); + norm_val = (has_blas_float_bug::value) ? auxlib::norm1_gen(A) : lapack::lange(&norm_id, &m, &n, A.memptr(), &lda, junk.memptr()); arma_extra_debug_print("lapack::getrf()"); lapack::getrf(&m, &n, A.memptr(), &lda, ipiv.memptr(), &info); @@ -6196,7 +6199,7 @@ auxlib::rcond_sympd(Mat& A, bool& calc_ok) podarray iwork( A.n_rows); arma_extra_debug_print("lapack::lansy()"); - norm_val = lapack::lansy(&norm_id, &uplo, &n, A.memptr(), &lda, work.memptr()); + norm_val = (has_blas_float_bug::value) ? auxlib::norm1_sym(A) : lapack::lansy(&norm_id, &uplo, &n, A.memptr(), &lda, work.memptr()); arma_extra_debug_print("lapack::potrf()"); lapack::potrf(&uplo, &n, A.memptr(), &lda, &info); @@ -6257,7 +6260,7 @@ auxlib::rcond_sympd(Mat< std::complex >& A, bool& calc_ok) podarray< T> rwork( A.n_rows); arma_extra_debug_print("lapack::lanhe()"); - norm_val = lapack::lanhe(&norm_id, &uplo, &n, A.memptr(), &lda, rwork.memptr()); + norm_val = (has_blas_float_bug::value) ? auxlib::norm1_sym(A) : lapack::lanhe(&norm_id, &uplo, &n, A.memptr(), &lda, rwork.memptr()); arma_extra_debug_print("lapack::potrf()"); lapack::potrf(&uplo, &n, A.memptr(), &lda, &info); @@ -6701,6 +6704,105 @@ auxlib::rudimentary_sym_check(const Mat< std::complex >& X) +template +inline +typename get_pod_type::result +auxlib::norm1_gen(const Mat& A) + { + arma_extra_debug_sigprint(); + + typedef typename get_pod_type::result T; + + if(A.n_elem == 0) { return T(0); } + + const uword n_rows = A.n_rows; + const uword n_cols = A.n_cols; + + T max_val = T(0); + + for(uword c=0; c < n_cols; ++c) + { + const eT* colmem = A.colptr(c); + T acc_val = T(0); + + for(uword r=0; r < n_rows; ++r) { acc_val += std::abs(colmem[r]); } + + max_val = (acc_val > max_val) ? acc_val : max_val; + } + + return max_val; + } + + + +template +inline +typename get_pod_type::result +auxlib::norm1_sym(const Mat& A) + { + arma_extra_debug_sigprint(); + + typedef typename get_pod_type::result T; + + if(A.n_elem == 0) { return T(0); } + + const uword N = (std::min)(A.n_rows, A.n_cols); + + T max_val = T(0); + + for(uword col=0; col < N; ++col) + { + const eT* colmem = A.colptr(col); + T acc_val = T(0); + + for(uword c=0; c < col; ++c) { acc_val += std::abs(A.at(col,c)); } + + for(uword r=col; r < N; ++r) { acc_val += std::abs(colmem[r]); } + + max_val = (acc_val > max_val) ? acc_val : max_val; + } + + return max_val; + } + + + +template +inline +typename get_pod_type::result +auxlib::norm1_band(const Mat& A, const uword KL, const uword KU) + { + arma_extra_debug_sigprint(); + + typedef typename get_pod_type::result T; + + if(A.n_elem == 0) { return T(0); } + + const uword n_rows = A.n_rows; + const uword n_cols = A.n_cols; + + T max_val = T(0); + + for(uword c=0; c < n_cols; ++c) + { + const eT* colmem = A.colptr(c); + T acc_val = T(0); + + // use values only from main diagonal + KU upper diagonals + KL lower diagonals + + const uword start = ( c > KU ) ? (c - KU) : 0; + const uword end = ((c + KL) < n_rows) ? (c + KL) : (n_rows-1); + + for(uword r=start; r <= end; ++r) { acc_val += std::abs(colmem[r]); } + + max_val = (acc_val > max_val) ? acc_val : max_val; + } + + return max_val; + } + + + // diff --git a/Include/armadillo/armadillo_bits/compiler_setup.hpp b/Include/armadillo/armadillo_bits/compiler_setup.hpp index b0bcb2ed8..775b82a93 100644 --- a/Include/armadillo/armadillo_bits/compiler_setup.hpp +++ b/Include/armadillo/armadillo_bits/compiler_setup.hpp @@ -114,8 +114,10 @@ #if defined(__APPLE__) || defined(__apple_build_version__) - #undef ARMA_BLAS_SDOT_BUG - #define ARMA_BLAS_SDOT_BUG + // NOTE: Apple accelerate framework has broken implementations of functions that return a float value, + // NOTE: such as sdot(), slange(), clange(), slansy(), clanhe(), slangb() + #undef ARMA_BLAS_FLOAT_BUG + #define ARMA_BLAS_FLOAT_BUG // #undef ARMA_HAVE_POSIX_MEMALIGN // NOTE: posix_memalign() is available since macOS 10.6 (late 2009 onwards) diff --git a/Include/armadillo/armadillo_bits/op_det_bones.hpp b/Include/armadillo/armadillo_bits/op_det_bones.hpp index ecc715145..59575faa9 100644 --- a/Include/armadillo/armadillo_bits/op_det_bones.hpp +++ b/Include/armadillo/armadillo_bits/op_det_bones.hpp @@ -31,7 +31,6 @@ class op_det { static constexpr uword n2 = row + col*2; static constexpr uword n3 = row + col*3; - static constexpr uword n4 = row + col*4; }; template @@ -48,9 +47,6 @@ class op_det template arma_cold inline static eT apply_tiny_3x3(const Mat& X); - - template - arma_cold inline static eT apply_tiny_4x4(const Mat& X); }; diff --git a/Include/armadillo/armadillo_bits/op_det_meat.hpp b/Include/armadillo/armadillo_bits/op_det_meat.hpp index 021cc872c..81c9b399f 100644 --- a/Include/armadillo/armadillo_bits/op_det_meat.hpp +++ b/Include/armadillo/armadillo_bits/op_det_meat.hpp @@ -58,7 +58,7 @@ op_det::apply_direct(typename T1::elem_type& out_val, const Base::no) && (N <= 4)) + if((is_cx::no) && (N <= 3)) { constexpr T det_min = std::numeric_limits::epsilon(); constexpr T det_max = T(1) / std::numeric_limits::epsilon(); @@ -67,7 +67,6 @@ op_det::apply_direct(typename T1::elem_type& out_val, const Base& X) -template -inline -eT -op_det::apply_tiny_4x4(const Mat& X) - { - arma_extra_debug_sigprint(); - - const eT* Xm = X.memptr(); - - const eT val_03_12 = Xm[pos<0,3>::n4] * Xm[pos<1,2>::n4]; - const eT val_02_13 = Xm[pos<0,2>::n4] * Xm[pos<1,3>::n4]; - const eT val_03_11 = Xm[pos<0,3>::n4] * Xm[pos<1,1>::n4]; - - const eT val_01_13 = Xm[pos<0,1>::n4] * Xm[pos<1,3>::n4]; - const eT val_02_11 = Xm[pos<0,2>::n4] * Xm[pos<1,1>::n4]; - const eT val_01_12 = Xm[pos<0,1>::n4] * Xm[pos<1,2>::n4]; - - const eT val_03_10 = Xm[pos<0,3>::n4] * Xm[pos<1,0>::n4]; - const eT val_00_13 = Xm[pos<0,0>::n4] * Xm[pos<1,3>::n4]; - const eT val_02_10 = Xm[pos<0,2>::n4] * Xm[pos<1,0>::n4]; - const eT val_00_12 = Xm[pos<0,0>::n4] * Xm[pos<1,2>::n4]; - - const eT val_01_10 = Xm[pos<0,1>::n4] * Xm[pos<1,0>::n4]; - const eT val_00_11 = Xm[pos<0,0>::n4] * Xm[pos<1,1>::n4]; - - const eT val_21_30 = Xm[pos<2,1>::n4] * Xm[pos<3,0>::n4]; - const eT val_22_30 = Xm[pos<2,2>::n4] * Xm[pos<3,0>::n4]; - const eT val_23_30 = Xm[pos<2,3>::n4] * Xm[pos<3,0>::n4]; - - const eT val_20_31 = Xm[pos<2,0>::n4] * Xm[pos<3,1>::n4]; - const eT val_22_31 = Xm[pos<2,2>::n4] * Xm[pos<3,1>::n4]; - const eT val_23_31 = Xm[pos<2,3>::n4] * Xm[pos<3,1>::n4]; - - const eT val_20_32 = Xm[pos<2,0>::n4] * Xm[pos<3,2>::n4]; - const eT val_21_32 = Xm[pos<2,1>::n4] * Xm[pos<3,2>::n4]; - const eT val_23_32 = Xm[pos<2,3>::n4] * Xm[pos<3,2>::n4]; - - const eT val_20_33 = Xm[pos<2,0>::n4] * Xm[pos<3,3>::n4]; - const eT val_21_33 = Xm[pos<2,1>::n4] * Xm[pos<3,3>::n4]; - const eT val_22_33 = Xm[pos<2,2>::n4] * Xm[pos<3,3>::n4]; - - const eT val = \ - val_03_12 * val_21_30 \ - - val_02_13 * val_21_30 \ - - val_03_11 * val_22_30 \ - + val_01_13 * val_22_30 \ - + val_02_11 * val_23_30 \ - - val_01_12 * val_23_30 \ - - val_03_12 * val_20_31 \ - + val_02_13 * val_20_31 \ - + val_03_10 * val_22_31 \ - - val_00_13 * val_22_31 \ - - val_02_10 * val_23_31 \ - + val_00_12 * val_23_31 \ - + val_03_11 * val_20_32 \ - - val_01_13 * val_20_32 \ - - val_03_10 * val_21_32 \ - + val_00_13 * val_21_32 \ - + val_01_10 * val_23_32 \ - - val_00_11 * val_23_32 \ - - val_02_11 * val_20_33 \ - + val_01_12 * val_20_33 \ - + val_02_10 * val_21_33 \ - - val_00_12 * val_21_33 \ - - val_01_10 * val_22_33 \ - + val_00_11 * val_22_33 \ - ; - - return val; - } - - - //! @} diff --git a/Include/armadillo/armadillo_bits/op_inv_gen_bones.hpp b/Include/armadillo/armadillo_bits/op_inv_gen_bones.hpp index bb0f25d6e..fe952ed1b 100644 --- a/Include/armadillo/armadillo_bits/op_inv_gen_bones.hpp +++ b/Include/armadillo/armadillo_bits/op_inv_gen_bones.hpp @@ -45,7 +45,6 @@ class op_inv_gen_full { static constexpr uword n2 = row + col*2; static constexpr uword n3 = row + col*3; - static constexpr uword n4 = row + col*4; }; template @@ -59,9 +58,6 @@ class op_inv_gen_full template arma_cold inline static bool apply_tiny_3x3(Mat& X); - - template - arma_cold inline static bool apply_tiny_4x4(Mat& X); }; @@ -118,13 +114,15 @@ namespace inv_opts // The values can change without notice. static constexpr uword flag_none = uword(0 ); - static constexpr uword flag_tiny = uword(1u << 0); + static constexpr uword flag_fast = uword(1u << 0); + static constexpr uword flag_tiny = uword(1u << 0); // deprecated static constexpr uword flag_allow_approx = uword(1u << 1); - static constexpr uword flag_likely_sympd = uword(1u << 2); - static constexpr uword flag_no_sympd = uword(1u << 3); + static constexpr uword flag_likely_sympd = uword(1u << 2); // deprecated + static constexpr uword flag_no_sympd = uword(1u << 3); // deprecated static constexpr uword flag_no_ugly = uword(1u << 4); struct opts_none : public opts { inline constexpr opts_none() : opts(flag_none ) {} }; + struct opts_fast : public opts { inline constexpr opts_fast() : opts(flag_fast ) {} }; struct opts_tiny : public opts { inline constexpr opts_tiny() : opts(flag_tiny ) {} }; struct opts_allow_approx : public opts { inline constexpr opts_allow_approx() : opts(flag_allow_approx) {} }; struct opts_likely_sympd : public opts { inline constexpr opts_likely_sympd() : opts(flag_likely_sympd) {} }; @@ -132,6 +130,7 @@ namespace inv_opts struct opts_no_ugly : public opts { inline constexpr opts_no_ugly() : opts(flag_no_ugly ) {} }; static constexpr opts_none none; + static constexpr opts_fast fast; static constexpr opts_tiny tiny; static constexpr opts_allow_approx allow_approx; static constexpr opts_likely_sympd likely_sympd; diff --git a/Include/armadillo/armadillo_bits/op_inv_gen_meat.hpp b/Include/armadillo/armadillo_bits/op_inv_gen_meat.hpp index 1e50243ce..a7585d715 100644 --- a/Include/armadillo/armadillo_bits/op_inv_gen_meat.hpp +++ b/Include/armadillo/armadillo_bits/op_inv_gen_meat.hpp @@ -88,24 +88,21 @@ op_inv_gen_full::apply_direct(Mat& out, const Base& out, const Base::epsilon())) || arma_isnan(local_rcond)) { return false; } @@ -132,7 +129,7 @@ op_inv_gen_full::apply_direct(Mat& out, const Base::epsilon())) || arma_isnan(local_rcond)) @@ -176,17 +173,10 @@ op_inv_gen_full::apply_direct(Mat& out, const Base& out, const Base& X) -template -inline -bool -op_inv_gen_full::apply_tiny_4x4(Mat& X) - { - arma_extra_debug_sigprint(); - - typedef typename get_pod_type::result T; - - // NOTE: assuming matrix X is square sized - - constexpr T det_min = std::numeric_limits::epsilon(); - constexpr T det_max = T(1) / std::numeric_limits::epsilon(); - - Mat Y(4, 4, arma_nozeros_indicator()); - - eT* Xm = X.memptr(); - eT* Ym = Y.memptr(); - - const eT det_val = op_det::apply_tiny_4x4(X); - const T abs_det_val = std::abs(det_val); - - if((abs_det_val < det_min) || (abs_det_val > det_max) || arma_isnan(det_val)) { return false; } - - Ym[pos<0,0>::n4] = ( Xm[pos<1,2>::n4]*Xm[pos<2,3>::n4]*Xm[pos<3,1>::n4] - Xm[pos<1,3>::n4]*Xm[pos<2,2>::n4]*Xm[pos<3,1>::n4] + Xm[pos<1,3>::n4]*Xm[pos<2,1>::n4]*Xm[pos<3,2>::n4] - Xm[pos<1,1>::n4]*Xm[pos<2,3>::n4]*Xm[pos<3,2>::n4] - Xm[pos<1,2>::n4]*Xm[pos<2,1>::n4]*Xm[pos<3,3>::n4] + Xm[pos<1,1>::n4]*Xm[pos<2,2>::n4]*Xm[pos<3,3>::n4] ) / det_val; - Ym[pos<1,0>::n4] = ( Xm[pos<1,3>::n4]*Xm[pos<2,2>::n4]*Xm[pos<3,0>::n4] - Xm[pos<1,2>::n4]*Xm[pos<2,3>::n4]*Xm[pos<3,0>::n4] - Xm[pos<1,3>::n4]*Xm[pos<2,0>::n4]*Xm[pos<3,2>::n4] + Xm[pos<1,0>::n4]*Xm[pos<2,3>::n4]*Xm[pos<3,2>::n4] + Xm[pos<1,2>::n4]*Xm[pos<2,0>::n4]*Xm[pos<3,3>::n4] - Xm[pos<1,0>::n4]*Xm[pos<2,2>::n4]*Xm[pos<3,3>::n4] ) / det_val; - Ym[pos<2,0>::n4] = ( Xm[pos<1,1>::n4]*Xm[pos<2,3>::n4]*Xm[pos<3,0>::n4] - Xm[pos<1,3>::n4]*Xm[pos<2,1>::n4]*Xm[pos<3,0>::n4] + Xm[pos<1,3>::n4]*Xm[pos<2,0>::n4]*Xm[pos<3,1>::n4] - Xm[pos<1,0>::n4]*Xm[pos<2,3>::n4]*Xm[pos<3,1>::n4] - Xm[pos<1,1>::n4]*Xm[pos<2,0>::n4]*Xm[pos<3,3>::n4] + Xm[pos<1,0>::n4]*Xm[pos<2,1>::n4]*Xm[pos<3,3>::n4] ) / det_val; - Ym[pos<3,0>::n4] = ( Xm[pos<1,2>::n4]*Xm[pos<2,1>::n4]*Xm[pos<3,0>::n4] - Xm[pos<1,1>::n4]*Xm[pos<2,2>::n4]*Xm[pos<3,0>::n4] - Xm[pos<1,2>::n4]*Xm[pos<2,0>::n4]*Xm[pos<3,1>::n4] + Xm[pos<1,0>::n4]*Xm[pos<2,2>::n4]*Xm[pos<3,1>::n4] + Xm[pos<1,1>::n4]*Xm[pos<2,0>::n4]*Xm[pos<3,2>::n4] - Xm[pos<1,0>::n4]*Xm[pos<2,1>::n4]*Xm[pos<3,2>::n4] ) / det_val; - - Ym[pos<0,1>::n4] = ( Xm[pos<0,3>::n4]*Xm[pos<2,2>::n4]*Xm[pos<3,1>::n4] - Xm[pos<0,2>::n4]*Xm[pos<2,3>::n4]*Xm[pos<3,1>::n4] - Xm[pos<0,3>::n4]*Xm[pos<2,1>::n4]*Xm[pos<3,2>::n4] + Xm[pos<0,1>::n4]*Xm[pos<2,3>::n4]*Xm[pos<3,2>::n4] + Xm[pos<0,2>::n4]*Xm[pos<2,1>::n4]*Xm[pos<3,3>::n4] - Xm[pos<0,1>::n4]*Xm[pos<2,2>::n4]*Xm[pos<3,3>::n4] ) / det_val; - Ym[pos<1,1>::n4] = ( Xm[pos<0,2>::n4]*Xm[pos<2,3>::n4]*Xm[pos<3,0>::n4] - Xm[pos<0,3>::n4]*Xm[pos<2,2>::n4]*Xm[pos<3,0>::n4] + Xm[pos<0,3>::n4]*Xm[pos<2,0>::n4]*Xm[pos<3,2>::n4] - Xm[pos<0,0>::n4]*Xm[pos<2,3>::n4]*Xm[pos<3,2>::n4] - Xm[pos<0,2>::n4]*Xm[pos<2,0>::n4]*Xm[pos<3,3>::n4] + Xm[pos<0,0>::n4]*Xm[pos<2,2>::n4]*Xm[pos<3,3>::n4] ) / det_val; - Ym[pos<2,1>::n4] = ( Xm[pos<0,3>::n4]*Xm[pos<2,1>::n4]*Xm[pos<3,0>::n4] - Xm[pos<0,1>::n4]*Xm[pos<2,3>::n4]*Xm[pos<3,0>::n4] - Xm[pos<0,3>::n4]*Xm[pos<2,0>::n4]*Xm[pos<3,1>::n4] + Xm[pos<0,0>::n4]*Xm[pos<2,3>::n4]*Xm[pos<3,1>::n4] + Xm[pos<0,1>::n4]*Xm[pos<2,0>::n4]*Xm[pos<3,3>::n4] - Xm[pos<0,0>::n4]*Xm[pos<2,1>::n4]*Xm[pos<3,3>::n4] ) / det_val; - Ym[pos<3,1>::n4] = ( Xm[pos<0,1>::n4]*Xm[pos<2,2>::n4]*Xm[pos<3,0>::n4] - Xm[pos<0,2>::n4]*Xm[pos<2,1>::n4]*Xm[pos<3,0>::n4] + Xm[pos<0,2>::n4]*Xm[pos<2,0>::n4]*Xm[pos<3,1>::n4] - Xm[pos<0,0>::n4]*Xm[pos<2,2>::n4]*Xm[pos<3,1>::n4] - Xm[pos<0,1>::n4]*Xm[pos<2,0>::n4]*Xm[pos<3,2>::n4] + Xm[pos<0,0>::n4]*Xm[pos<2,1>::n4]*Xm[pos<3,2>::n4] ) / det_val; - - Ym[pos<0,2>::n4] = ( Xm[pos<0,2>::n4]*Xm[pos<1,3>::n4]*Xm[pos<3,1>::n4] - Xm[pos<0,3>::n4]*Xm[pos<1,2>::n4]*Xm[pos<3,1>::n4] + Xm[pos<0,3>::n4]*Xm[pos<1,1>::n4]*Xm[pos<3,2>::n4] - Xm[pos<0,1>::n4]*Xm[pos<1,3>::n4]*Xm[pos<3,2>::n4] - Xm[pos<0,2>::n4]*Xm[pos<1,1>::n4]*Xm[pos<3,3>::n4] + Xm[pos<0,1>::n4]*Xm[pos<1,2>::n4]*Xm[pos<3,3>::n4] ) / det_val; - Ym[pos<1,2>::n4] = ( Xm[pos<0,3>::n4]*Xm[pos<1,2>::n4]*Xm[pos<3,0>::n4] - Xm[pos<0,2>::n4]*Xm[pos<1,3>::n4]*Xm[pos<3,0>::n4] - Xm[pos<0,3>::n4]*Xm[pos<1,0>::n4]*Xm[pos<3,2>::n4] + Xm[pos<0,0>::n4]*Xm[pos<1,3>::n4]*Xm[pos<3,2>::n4] + Xm[pos<0,2>::n4]*Xm[pos<1,0>::n4]*Xm[pos<3,3>::n4] - Xm[pos<0,0>::n4]*Xm[pos<1,2>::n4]*Xm[pos<3,3>::n4] ) / det_val; - Ym[pos<2,2>::n4] = ( Xm[pos<0,1>::n4]*Xm[pos<1,3>::n4]*Xm[pos<3,0>::n4] - Xm[pos<0,3>::n4]*Xm[pos<1,1>::n4]*Xm[pos<3,0>::n4] + Xm[pos<0,3>::n4]*Xm[pos<1,0>::n4]*Xm[pos<3,1>::n4] - Xm[pos<0,0>::n4]*Xm[pos<1,3>::n4]*Xm[pos<3,1>::n4] - Xm[pos<0,1>::n4]*Xm[pos<1,0>::n4]*Xm[pos<3,3>::n4] + Xm[pos<0,0>::n4]*Xm[pos<1,1>::n4]*Xm[pos<3,3>::n4] ) / det_val; - Ym[pos<3,2>::n4] = ( Xm[pos<0,2>::n4]*Xm[pos<1,1>::n4]*Xm[pos<3,0>::n4] - Xm[pos<0,1>::n4]*Xm[pos<1,2>::n4]*Xm[pos<3,0>::n4] - Xm[pos<0,2>::n4]*Xm[pos<1,0>::n4]*Xm[pos<3,1>::n4] + Xm[pos<0,0>::n4]*Xm[pos<1,2>::n4]*Xm[pos<3,1>::n4] + Xm[pos<0,1>::n4]*Xm[pos<1,0>::n4]*Xm[pos<3,2>::n4] - Xm[pos<0,0>::n4]*Xm[pos<1,1>::n4]*Xm[pos<3,2>::n4] ) / det_val; - - Ym[pos<0,3>::n4] = ( Xm[pos<0,3>::n4]*Xm[pos<1,2>::n4]*Xm[pos<2,1>::n4] - Xm[pos<0,2>::n4]*Xm[pos<1,3>::n4]*Xm[pos<2,1>::n4] - Xm[pos<0,3>::n4]*Xm[pos<1,1>::n4]*Xm[pos<2,2>::n4] + Xm[pos<0,1>::n4]*Xm[pos<1,3>::n4]*Xm[pos<2,2>::n4] + Xm[pos<0,2>::n4]*Xm[pos<1,1>::n4]*Xm[pos<2,3>::n4] - Xm[pos<0,1>::n4]*Xm[pos<1,2>::n4]*Xm[pos<2,3>::n4] ) / det_val; - Ym[pos<1,3>::n4] = ( Xm[pos<0,2>::n4]*Xm[pos<1,3>::n4]*Xm[pos<2,0>::n4] - Xm[pos<0,3>::n4]*Xm[pos<1,2>::n4]*Xm[pos<2,0>::n4] + Xm[pos<0,3>::n4]*Xm[pos<1,0>::n4]*Xm[pos<2,2>::n4] - Xm[pos<0,0>::n4]*Xm[pos<1,3>::n4]*Xm[pos<2,2>::n4] - Xm[pos<0,2>::n4]*Xm[pos<1,0>::n4]*Xm[pos<2,3>::n4] + Xm[pos<0,0>::n4]*Xm[pos<1,2>::n4]*Xm[pos<2,3>::n4] ) / det_val; - Ym[pos<2,3>::n4] = ( Xm[pos<0,3>::n4]*Xm[pos<1,1>::n4]*Xm[pos<2,0>::n4] - Xm[pos<0,1>::n4]*Xm[pos<1,3>::n4]*Xm[pos<2,0>::n4] - Xm[pos<0,3>::n4]*Xm[pos<1,0>::n4]*Xm[pos<2,1>::n4] + Xm[pos<0,0>::n4]*Xm[pos<1,3>::n4]*Xm[pos<2,1>::n4] + Xm[pos<0,1>::n4]*Xm[pos<1,0>::n4]*Xm[pos<2,3>::n4] - Xm[pos<0,0>::n4]*Xm[pos<1,1>::n4]*Xm[pos<2,3>::n4] ) / det_val; - Ym[pos<3,3>::n4] = ( Xm[pos<0,1>::n4]*Xm[pos<1,2>::n4]*Xm[pos<2,0>::n4] - Xm[pos<0,2>::n4]*Xm[pos<1,1>::n4]*Xm[pos<2,0>::n4] + Xm[pos<0,2>::n4]*Xm[pos<1,0>::n4]*Xm[pos<2,1>::n4] - Xm[pos<0,0>::n4]*Xm[pos<1,2>::n4]*Xm[pos<2,1>::n4] - Xm[pos<0,1>::n4]*Xm[pos<1,0>::n4]*Xm[pos<2,2>::n4] + Xm[pos<0,0>::n4]*Xm[pos<1,1>::n4]*Xm[pos<2,2>::n4] ) / det_val; - - const eT check_val = Xm[pos<0,0>::n4]*Ym[pos<0,0>::n4] + Xm[pos<0,1>::n4]*Ym[pos<1,0>::n4] + Xm[pos<0,2>::n4]*Ym[pos<2,0>::n4] + Xm[pos<0,3>::n4]*Ym[pos<3,0>::n4]; - - const T max_diff = (is_float::value) ? T(1e-4) : T(1e-10); // empirically determined; may need tuning - - if(std::abs(T(1) - check_val) >= max_diff) { return false; } - - arrayops::copy(Xm, Ym, uword(4*4)); - - return true; - } - - - template inline bool diff --git a/Include/armadillo/armadillo_bits/op_inv_spd_bones.hpp b/Include/armadillo/armadillo_bits/op_inv_spd_bones.hpp index ee2c26f06..85a501321 100644 --- a/Include/armadillo/armadillo_bits/op_inv_spd_bones.hpp +++ b/Include/armadillo/armadillo_bits/op_inv_spd_bones.hpp @@ -48,12 +48,6 @@ class op_inv_spd_full template arma_cold inline static bool apply_tiny_2x2(Mat& X); - - template - arma_cold inline static bool apply_tiny_3x3(Mat& X); - - template - arma_cold inline static bool apply_tiny_4x4(Mat& X); }; diff --git a/Include/armadillo/armadillo_bits/op_inv_spd_meat.hpp b/Include/armadillo/armadillo_bits/op_inv_spd_meat.hpp index c88b6641d..0c6097454 100644 --- a/Include/armadillo/armadillo_bits/op_inv_spd_meat.hpp +++ b/Include/armadillo/armadillo_bits/op_inv_spd_meat.hpp @@ -88,25 +88,20 @@ op_inv_spd_full::apply_direct(Mat& out, const Base& out, const Base& X) -template -inline -bool -op_inv_spd_full::apply_tiny_3x3(Mat& X) - { - arma_extra_debug_sigprint(); - - // NOTE: assuming matrix X is square sized - // NOTE: assuming matrix X is symmetric - // NOTE: assuming matrix X is real - - Mat Y(3, 3, arma_nozeros_indicator()); - - arrayops::copy(Y.memptr(), X.memptr(), uword(3*3)); - - const bool is_posdef = auxlib::chol_simple(Y); - - if(is_posdef == false) { return false; } - - const bool status = op_inv_gen_full::apply_tiny_3x3(X); - - if(status == false) { return false; } - - X = symmatl(X); - - return true; - } - - - -template -inline -bool -op_inv_spd_full::apply_tiny_4x4(Mat& X) - { - arma_extra_debug_sigprint(); - - // NOTE: assuming matrix X is square sized - // NOTE: assuming matrix X is symmetric - // NOTE: assuming matrix X is real - - Mat Y(4, 4, arma_nozeros_indicator()); - - arrayops::copy(Y.memptr(), X.memptr(), uword(4*4)); - - const bool is_posdef = auxlib::chol_simple(Y); - - if(is_posdef == false) { return false; } - - const bool status = op_inv_gen_full::apply_tiny_4x4(X); - - if(status == false) { return false; } - - X = symmatl(X); - - return true; - } - - - // diff --git a/Include/armadillo/armadillo_bits/sp_auxlib_bones.hpp b/Include/armadillo/armadillo_bits/sp_auxlib_bones.hpp index 4a06e74e0..698265b47 100644 --- a/Include/armadillo/armadillo_bits/sp_auxlib_bones.hpp +++ b/Include/armadillo/armadillo_bits/sp_auxlib_bones.hpp @@ -158,6 +158,31 @@ class sp_auxlib +template +struct eigs_randu_filler + { + std::mt19937_64 local_engine; + std::uniform_real_distribution local_u_distr; + + inline eigs_randu_filler(); + + inline void fill(podarray& X, const uword N); + }; + + +template +struct eigs_randu_filler< std::complex > + { + std::mt19937_64 local_engine; + std::uniform_real_distribution local_u_distr; + + inline eigs_randu_filler(); + + inline void fill(podarray< std::complex >& X, const uword N); + }; + + + #if defined(ARMA_USE_SUPERLU) class superlu_supermatrix_wrangler diff --git a/Include/armadillo/armadillo_bits/sp_auxlib_meat.hpp b/Include/armadillo/armadillo_bits/sp_auxlib_meat.hpp index 31e820ae6..dbfdf2d7d 100644 --- a/Include/armadillo/armadillo_bits/sp_auxlib_meat.hpp +++ b/Include/armadillo/armadillo_bits/sp_auxlib_meat.hpp @@ -1921,7 +1921,9 @@ sp_auxlib::run_aupd_plain n = X.n_rows; // The size of the matrix (should already be set outside). blas_int nev = n_eigvals; - resid.zeros(n); + // resid.zeros(n); + eigs_randu_filler randu_filler; + randu_filler.fill(resid, n); // use deterministic starting point // Two contraints on NCV: (NCV > NEV) for sym problems or // (NCV > NEV + 2) for gen problems and (NCV <= N) @@ -1956,7 +1958,8 @@ sp_auxlib::run_aupd_plain // Real work array of length lworkl. workl.zeros(lworkl); - info = 0; // Set to 0 initially to use random initial vector. + // info = 0; // resid to be filled with random values by ARPACK (non-deterministic) + info = 1; // resid is already filled with random values (deterministic) // All the parameters have been set or created. Time to loop a lot. while(ido != 99) @@ -2109,7 +2112,9 @@ sp_auxlib::run_aupd_shiftinvert n = X.n_rows; // The size of the matrix (should already be set outside). blas_int nev = n_eigvals; - resid.zeros(n); + // resid.zeros(n); + eigs_randu_filler randu_filler; + randu_filler.fill(resid, n); // use deterministic starting point // Two contraints on NCV: (NCV > NEV) for sym problems or // (NCV > NEV + 2) for gen problems and (NCV <= N) @@ -2147,7 +2152,8 @@ sp_auxlib::run_aupd_shiftinvert // Real work array of length lworkl. workl.zeros(lworkl); - info = 0; // Set to 0 initially to use random initial vector. + // info = 0; // resid to be filled with random values by ARPACK (non-deterministic) + info = 1; // resid is already filled with random values (deterministic) superlu_opts superlu_opts_default; superlu::superlu_options_t options; @@ -2439,6 +2445,85 @@ sp_auxlib::rudimentary_sym_check(const SpMat< std::complex >& X) +// + + + +template +inline +eigs_randu_filler::eigs_randu_filler() + { + arma_extra_debug_sigprint(); + + typedef typename std::mt19937_64::result_type local_seed_type; + + local_engine.seed(local_seed_type(123)); + + typedef typename std::uniform_real_distribution::param_type local_param_type; + + local_u_distr.param(local_param_type(-1.0, +1.0)); + } + + +template +inline +void +eigs_randu_filler::fill(podarray& X, const uword N) + { + arma_extra_debug_sigprint(); + + X.set_size(N); + + eT* X_mem = X.memptr(); + + for(uword i=0; i +inline +eigs_randu_filler< std::complex >::eigs_randu_filler() + { + arma_extra_debug_sigprint(); + + typedef typename std::mt19937_64::result_type local_seed_type; + + local_engine.seed(local_seed_type(123)); + + typedef typename std::uniform_real_distribution::param_type local_param_type; + + local_u_distr.param(local_param_type(-1.0, +1.0)); + } + + +template +inline +void +eigs_randu_filler< std::complex >::fill(podarray< std::complex >& X, const uword N) + { + arma_extra_debug_sigprint(); + + typedef typename std::complex eT; + + X.set_size(N); + + eT* X_mem = X.memptr(); + + for(uword i=0; i +struct has_blas_float_bug + { + #if defined(ARMA_BLAS_FLOAT_BUG) + static constexpr bool value = is_float::result>::value; + #else + static constexpr bool value = false; + #endif + }; + + + template struct is_signed { diff --git a/Include/armadillo/armadillo_bits/translate_blas.hpp b/Include/armadillo/armadillo_bits/translate_blas.hpp index a598de682..91fb6a2dd 100644 --- a/Include/armadillo/armadillo_bits/translate_blas.hpp +++ b/Include/armadillo/armadillo_bits/translate_blas.hpp @@ -130,7 +130,7 @@ namespace blas if(is_float::value) { - #if defined(ARMA_BLAS_SDOT_BUG) + #if defined(ARMA_BLAS_FLOAT_BUG) { if(n_elem == 0) { return eT(0); } diff --git a/Include/catch/catch_amalgamated.cpp b/Include/catch/catch_amalgamated.cpp index 256b73de3..375488b32 100644 --- a/Include/catch/catch_amalgamated.cpp +++ b/Include/catch/catch_amalgamated.cpp @@ -81,14 +81,9 @@ namespace Catch { namespace Benchmark { namespace Detail { namespace { - template static sample resample(URng& rng, - unsigned int resamples, - std::vector::const_iterator first, - std::vector::const_iterator last, - Estimator& estimator) { + template static sample resample(URng& rng, unsigned int resamples, std::vector::const_iterator first, std::vector::const_iterator last, Estimator& estimator) { auto n = static_cast(last - first); - std::uniform_int_distribution dist(0, - n - 1); + std::uniform_int_distribution dist(0, n - 1); sample out; out.reserve(resamples); @@ -98,22 +93,15 @@ namespace Catch { resampled.reserve(n); for(size_t i = 0; i < resamples; ++i) { resampled.clear(); - for(size_t s = 0; s < n; ++s) { - resampled.push_back( - first[static_cast( - dist(rng))]); - } - const auto estimate = - estimator(resampled.begin(), resampled.end()); + for(size_t s = 0; s < n; ++s) { resampled.push_back(first[static_cast(dist(rng))]); } + const auto estimate = estimator(resampled.begin(), resampled.end()); out.push_back(estimate); } std::sort(out.begin(), out.end()); return out; } - static double outlier_variance(Estimate mean, - Estimate stddev, - int n) { + static double outlier_variance(Estimate mean, Estimate stddev, int n) { double sb = stddev.point; double mn = mean.point / n; double mg_min = mn / 2.; @@ -128,8 +116,7 @@ namespace Catch { double k0 = -n * nd; double k1 = sb2 - n * sg2 + nd; double det = k1 * k1 - 4 * sg2 * k0; - return static_cast(-2. * k0 / - (k1 + std::sqrt(det))); + return static_cast(-2. * k0 / (k1 + std::sqrt(det))); }; auto var_out = [n, sb2, sg2](double c) { @@ -137,11 +124,7 @@ namespace Catch { return (nc / n) * (sb2 - nc * sg2); }; - return (std::min)(var_out(1), - var_out( - (std::min)(c_max(0.), - c_max(mg_min)))) / - sb2; + return (std::min)(var_out(1), var_out((std::min)(c_max(0.), c_max(mg_min)))) / sb2; } static double erf_inv(double x) { @@ -222,18 +205,12 @@ namespace Catch { return p * x; } - static double standard_deviation(std::vector::const_iterator first, - std::vector::const_iterator last) { + static double standard_deviation(std::vector::const_iterator first, std::vector::const_iterator last) { auto m = Catch::Benchmark::Detail::mean(first, last); - double variance = - std::accumulate(first, - last, - 0., - [m](double a, double b) { - double diff = b - m; - return a + diff * diff; - }) / - (last - first); + double variance = std::accumulate(first, last, 0., [m](double a, double b) { + double diff = b - m; + return a + diff * diff; + }) / (last - first); return std::sqrt(variance); } } // namespace @@ -266,8 +243,7 @@ namespace Catch { return xj + g * (xj1 - xj); } - OutlierClassification classify_outliers(std::vector::const_iterator first, - std::vector::const_iterator last) { + OutlierClassification classify_outliers(std::vector::const_iterator first, std::vector::const_iterator last) { std::vector copy(first, last); auto q1 = weighted_average_quantile(1, 4, copy.begin(), copy.end()); @@ -290,8 +266,7 @@ namespace Catch { return o; } - double mean(std::vector::const_iterator first, - std::vector::const_iterator last) { + double mean(std::vector::const_iterator first, std::vector::const_iterator last) { auto count = last - first; double sum = 0.; while(first != last) { @@ -317,13 +292,9 @@ namespace Catch { return result; } - bootstrap_analysis analyse_samples(double confidence_level, - unsigned int n_resamples, - std::vector::iterator first, - std::vector::iterator last) { + bootstrap_analysis analyse_samples(double confidence_level, unsigned int n_resamples, std::vector::iterator first, std::vector::iterator last) { CATCH_INTERNAL_START_WARNINGS_SUPPRESSION - CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS - static std::random_device entropy; + CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS static std::random_device entropy; CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION auto n = static_cast(last - first); // seriously, one can't use integral types without hell in C++ @@ -332,8 +303,7 @@ namespace Catch { auto stddev = &standard_deviation; #if defined(CATCH_CONFIG_USE_ASYNC) - auto Estimate = [=](double (*f)(std::vector::const_iterator, - std::vector::const_iterator)) { + auto Estimate = [=](double (*f)(std::vector::const_iterator, std::vector::const_iterator)) { auto seed = entropy(); return std::async(std::launch::async, [=] { std::mt19937 rng(seed); @@ -401,21 +371,16 @@ namespace Catch { bool Approx::equalityComparisonImpl(const double other) const { // First try with fixed margin, then compute margin based on epsilon, scale and Approx's value // Thanks to Richard Harris for his help refining the scaled margin value - return marginComparison(m_value, other, m_margin) - || marginComparison(m_value, other, m_epsilon * (m_scale + std::fabs(std::isinf(m_value) ? 0 : m_value))); + return marginComparison(m_value, other, m_margin) || marginComparison(m_value, other, m_epsilon * (m_scale + std::fabs(std::isinf(m_value) ? 0 : m_value))); } void Approx::setMargin(double newMargin) { - CATCH_ENFORCE(newMargin >= 0, - "Invalid Approx::margin: " << newMargin << '.' - << " Approx::Margin has to be non-negative."); + CATCH_ENFORCE(newMargin >= 0, "Invalid Approx::margin: " << newMargin << '.' << " Approx::Margin has to be non-negative."); m_margin = newMargin; } void Approx::setEpsilon(double newEpsilon) { - CATCH_ENFORCE(newEpsilon >= 0 && newEpsilon <= 1.0, - "Invalid Approx::epsilon: " << newEpsilon << '.' - << " Approx::epsilon has to be in [0, 1]"); + CATCH_ENFORCE(newEpsilon >= 0 && newEpsilon <= 1.0, "Invalid Approx::epsilon: " << newEpsilon << '.' << " Approx::epsilon has to be in [0, 1]"); m_epsilon = newEpsilon; } @@ -430,8 +395,7 @@ namespace Catch { namespace Catch { AssertionResultData::AssertionResultData(ResultWas::OfType _resultType, LazyExpression const& _lazyExpression) - : - lazyExpression(_lazyExpression) + : lazyExpression(_lazyExpression) , resultType(_resultType) {} std::string AssertionResultData::reconstructExpression() const { @@ -486,9 +450,7 @@ namespace Catch { std::string AssertionResult::getExpandedExpression() const { std::string expr = m_resultData.reconstructExpression(); - return expr.empty() - ? getExpression() - : expr; + return expr.empty() ? getExpression() : expr; } StringRef AssertionResult::getMessage() const { return m_resultData.message; } @@ -520,16 +482,11 @@ namespace Catch { const auto bazelShardTotal = Detail::getEnv("TEST_TOTAL_SHARDS"); const auto bazelShardInfoFile = Detail::getEnv("TEST_SHARD_STATUS_FILE"); - const bool has_all = - bazelShardIndex && bazelShardTotal && bazelShardInfoFile; + const bool has_all = bazelShardIndex && bazelShardTotal && bazelShardInfoFile; if(!has_all) { // We provide nice warning message if the input is // misconfigured. - auto warn = [](const char* env_var) { - Catch::cerr() - << "Warning: Bazel shard configuration is missing '" - << env_var << "'. Shard configuration is skipped.\n"; - }; + auto warn = [](const char* env_var) { Catch::cerr() << "Warning: Bazel shard configuration is missing '" << env_var << "'. Shard configuration is skipped.\n"; }; if(!bazelShardIndex) { warn("TEST_SHARD_INDEX"); } if(!bazelShardTotal) { warn("TEST_TOTAL_SHARDS"); } if(!bazelShardInfoFile) { warn("TEST_SHARD_STATUS_FILE"); } @@ -538,36 +495,23 @@ namespace Catch { auto shardIndex = parseUInt(bazelShardIndex); if(!shardIndex) { - Catch::cerr() - << "Warning: could not parse 'TEST_SHARD_INDEX' ('" << bazelShardIndex - << "') as unsigned int.\n"; + Catch::cerr() << "Warning: could not parse 'TEST_SHARD_INDEX' ('" << bazelShardIndex << "') as unsigned int.\n"; return {}; } auto shardTotal = parseUInt(bazelShardTotal); if(!shardTotal) { - Catch::cerr() - << "Warning: could not parse 'TEST_TOTAL_SHARD' ('" - << bazelShardTotal << "') as unsigned int.\n"; + Catch::cerr() << "Warning: could not parse 'TEST_TOTAL_SHARD' ('" << bazelShardTotal << "') as unsigned int.\n"; return {}; } - return bazelShardingOptions{ - *shardIndex, *shardTotal, bazelShardInfoFile - }; + return bazelShardingOptions{*shardIndex, *shardTotal, bazelShardInfoFile}; } } // end namespace - bool operator==(ProcessedReporterSpec const& lhs, - ProcessedReporterSpec const& rhs) { - return lhs.name == rhs.name && - lhs.outputFilename == rhs.outputFilename && - lhs.colourMode == rhs.colourMode && - lhs.customOptions == rhs.customOptions; - } + bool operator==(ProcessedReporterSpec const& lhs, ProcessedReporterSpec const& rhs) { return lhs.name == rhs.name && lhs.outputFilename == rhs.outputFilename && lhs.colourMode == rhs.colourMode && lhs.customOptions == rhs.customOptions; } Config::Config(ConfigData const& data) - : - m_data(data) { + : m_data(data) { // We need to trim filter specs to avoid trouble with superfluous // whitespace (esp. important for bdd macros, as those are manually // aligned with whitespace). @@ -583,7 +527,9 @@ namespace Catch { #else "console", #endif - {}, {}, {} + {}, + {}, + {} }); } @@ -606,20 +552,11 @@ namespace Catch { // using the default output below to make the code simpler // and avoid superfluous copies. if(reporterSpec.outputFile().none()) { - CATCH_ENFORCE(!defaultOutputUsed, - "Internal error: cannot use default output for " - "multiple reporters"); + CATCH_ENFORCE(!defaultOutputUsed, "Internal error: cannot use default output for " "multiple reporters"); defaultOutputUsed = true; } - m_processedReporterSpecs.push_back(ProcessedReporterSpec{ - reporterSpec.name(), - reporterSpec.outputFile() - ? *reporterSpec.outputFile() - : data.defaultOutputFilename, - reporterSpec.colourMode().valueOr(data.defaultColourMode), - reporterSpec.customOptions() - }); + m_processedReporterSpecs.push_back(ProcessedReporterSpec{reporterSpec.name(), reporterSpec.outputFile() ? *reporterSpec.outputFile() : data.defaultOutputFilename, reporterSpec.colourMode().valueOr(data.defaultColourMode), reporterSpec.customOptions()}); } } @@ -702,10 +639,7 @@ namespace Catch { // than what is possible otherwise. const auto bazelOutputFile = Detail::getEnv("XML_OUTPUT_FILE"); - if(bazelOutputFile) { - m_data.reporterSpecifications.push_back( - {"junit", std::string(bazelOutputFile), {}, {}}); - } + if(bazelOutputFile) { m_data.reporterSpecifications.push_back({"junit", std::string(bazelOutputFile), {}, {}}); } const auto bazelTestSpec = Detail::getEnv("TESTBRIDGE_TEST_ONLY"); if(bazelTestSpec) { @@ -717,8 +651,7 @@ namespace Catch { const auto bazelShardOptions = readBazelShardingOptions(); if(bazelShardOptions) { - std::ofstream f(bazelShardOptions->shardFilePath, - std::ios_base::out | std::ios_base::trunc); + std::ofstream f(bazelShardOptions->shardFilePath, std::ios_base::out | std::ios_base::trunc); if(f.is_open()) { f << ""; m_data.shardIndex = bazelShardOptions->shardIndex; @@ -739,24 +672,18 @@ namespace Catch { //////////////////////////////////////////////////////////////////////////// ScopedMessage::ScopedMessage(MessageBuilder&& builder) - : - m_info(CATCH_MOVE(builder.m_info)) { + : m_info(CATCH_MOVE(builder.m_info)) { m_info.message = builder.m_stream.str(); getResultCapture().pushScopedMessage(m_info); } ScopedMessage::ScopedMessage(ScopedMessage&& old) noexcept - : - m_info(CATCH_MOVE(old.m_info)) { old.m_moved = true; } + : m_info(CATCH_MOVE(old.m_info)) { old.m_moved = true; } ScopedMessage::~ScopedMessage() { if(!uncaught_exceptions() && !m_moved) { getResultCapture().popScopedMessage(m_info); } } - Capturer::Capturer(StringRef macroName, - SourceLineInfo const& lineInfo, - ResultWas::OfType resultType, - StringRef names) - : - m_resultCapture(getResultCapture()) { + Capturer::Capturer(StringRef macroName, SourceLineInfo const& lineInfo, ResultWas::OfType resultType, StringRef names) + : m_resultCapture(getResultCapture()) { auto trimmed = [&](size_t start, size_t end) { while(names[start] == ',' || isspace(static_cast(names[start]))) { ++start; } while(names[end] == ',' || isspace(static_cast(names[end]))) { --end; } @@ -827,9 +754,7 @@ namespace Catch { namespace Catch { namespace { - class RegistryHub : public IRegistryHub, - public IMutableRegistryHub, - private Detail::NonCopyable { + class RegistryHub : public IRegistryHub, public IMutableRegistryHub, private Detail::NonCopyable { public: // IRegistryHub RegistryHub() = default; @@ -906,15 +831,9 @@ namespace Catch { } IEventListenerPtr prepareReporters(Config const* config) { - if(Catch::getRegistryHub().getReporterRegistry().getListeners().empty() - && config->getProcessedReporterSpecs().size() == 1) { + if(Catch::getRegistryHub().getReporterRegistry().getListeners().empty() && config->getProcessedReporterSpecs().size() == 1) { auto const& spec = config->getProcessedReporterSpecs()[0]; - return createReporter( - spec.name, - ReporterConfig(config, - makeStream(spec.outputFilename), - spec.colourMode, - spec.customOptions)); + return createReporter(spec.name, ReporterConfig(config, makeStream(spec.outputFilename), spec.colourMode, spec.customOptions)); } auto multi = Detail::make_unique(config); @@ -922,14 +841,7 @@ namespace Catch { auto const& listeners = Catch::getRegistryHub().getReporterRegistry().getListeners(); for(auto const& listener : listeners) { multi->addListener(listener->create(config)); } - for(auto const& reporterSpec : config->getProcessedReporterSpecs()) { - multi->addReporter(createReporter( - reporterSpec.name, - ReporterConfig(config, - makeStream(reporterSpec.outputFilename), - reporterSpec.colourMode, - reporterSpec.customOptions))); - } + for(auto const& reporterSpec : config->getProcessedReporterSpecs()) { multi->addReporter(createReporter(reporterSpec.name, ReporterConfig(config, makeStream(reporterSpec.outputFilename), reporterSpec.colourMode, reporterSpec.customOptions))); } return multi; } @@ -937,23 +849,17 @@ namespace Catch { class TestGroup { public: explicit TestGroup(IEventListenerPtr&& reporter, Config const* config) - : - m_reporter(reporter.get()) + : m_reporter(reporter.get()) , m_config{config} , m_context{config, CATCH_MOVE(reporter)} { - assert(m_config->testSpec().getInvalidSpecs().empty() && - "Invalid test specs should be handled before running tests"); + assert(m_config->testSpec().getInvalidSpecs().empty() && "Invalid test specs should be handled before running tests"); auto const& allTestCases = getAllTestCasesSorted(*m_config); auto const& testSpec = m_config->testSpec(); if(!testSpec.hasFilters()) { for(auto const& test : allTestCases) { if(!test.getTestCaseInfo().isHidden()) { m_tests.emplace(&test); } } } else { - m_matches = - testSpec.matchesByFilter(allTestCases, *m_config); - for(auto const& match : m_matches) { - m_tests.insert(match.tests.begin(), - match.tests.end()); - } + m_matches = testSpec.matchesByFilter(allTestCases, *m_config); + for(auto const& match : m_matches) { m_tests.insert(match.tests.begin(), match.tests.end()); } } m_tests = createShard(m_tests, m_config->shardCount(), m_config->shardIndex()); @@ -992,10 +898,7 @@ namespace Catch { Session::Session() { static bool alreadyInstantiated = false; - if(alreadyInstantiated) { - CATCH_TRY { CATCH_INTERNAL_ERROR("Only one instance of Catch::Session can ever be used"); } - CATCH_CATCH_ALL { getMutableRegistryHub().registerStartupException(); } - } + if(alreadyInstantiated) { CATCH_TRY { CATCH_INTERNAL_ERROR("Only one instance of Catch::Session can ever be used"); } CATCH_CATCH_ALL { getMutableRegistryHub().registerStartupException(); } } // There cannot be exceptions at startup in no-exception mode. #if !defined(CATCH_CONFIG_DISABLE_EXCEPTIONS) @@ -1006,8 +909,7 @@ namespace Catch { m_startupExceptions = true; auto errStream = makeStream("%stderr"); - auto colourImpl = makeColourImpl( - ColourMode::PlatformDefault, errStream.get()); + auto colourImpl = makeColourImpl(ColourMode::PlatformDefault, errStream.get()); auto guard = colourImpl->guardColour(Colour::Red); errStream->stream() << "Errors occurred during startup!" << '\n'; // iterate over all exceptions and notify user @@ -1024,20 +926,9 @@ namespace Catch { Session::~Session() { Catch::cleanUp(); } - void Session::showHelp() const { - Catch::cout() - << "\nCatch2 v" << libraryVersion() << '\n' - << m_cli << '\n' - << "For more detailed usage please see the project docs\n\n" << std::flush; - } + void Session::showHelp() const { Catch::cout() << "\nCatch2 v" << libraryVersion() << '\n' << m_cli << '\n' << "For more detailed usage please see the project docs\n\n" << std::flush; } - void Session::libIdentify() { - Catch::cout() - << std::left << std::setw(16) << "description: " << "A Catch2 test executable\n" - << std::left << std::setw(16) << "category: " << "testframework\n" - << std::left << std::setw(16) << "framework: " << "Catch2\n" - << std::left << std::setw(16) << "version: " << libraryVersion() << '\n' << std::flush; - } + void Session::libIdentify() { Catch::cout() << std::left << std::setw(16) << "description: " << "A Catch2 test executable\n" << std::left << std::setw(16) << "category: " << "testframework\n" << std::left << std::setw(16) << "framework: " << "Catch2\n" << std::left << std::setw(16) << "version: " << libraryVersion() << '\n' << std::flush; } int Session::applyCommandLine(int argc, char const* const * argv) { if(m_startupExceptions) return 1; @@ -1050,11 +941,7 @@ namespace Catch { auto errStream = makeStream("%stderr"); auto colour = makeColourImpl(ColourMode::PlatformDefault, errStream.get()); - errStream->stream() - << colour->guardColour(Colour::Red) - << "\nError(s) in input:\n" - << TextFlow::Column(result.errorMessage()).indent(2) - << "\n\n"; + errStream->stream() << colour->guardColour(Colour::Red) << "\nError(s) in input:\n" << TextFlow::Column(result.errorMessage()).indent(2) << "\n\n"; errStream->stream() << "Run with -? for usage\n\n" << std::flush; return MaxExitCode; } @@ -1123,10 +1010,7 @@ namespace Catch { if(m_configData.showHelp || m_configData.libIdentify) { return 0; } if(m_configData.shardIndex >= m_configData.shardCount) { - Catch::cerr() << "The shard count (" << m_configData.shardCount - << ") must be greater than the shard index (" - << m_configData.shardIndex << ")\n" - << std::flush; + Catch::cerr() << "The shard count (" << m_configData.shardCount << ") must be greater than the shard index (" << m_configData.shardIndex << ")\n" << std::flush; return 1; } @@ -1155,15 +1039,11 @@ namespace Catch { TestGroup tests{CATCH_MOVE(reporter), m_config.get()}; auto const totals = tests.execute(); - if(tests.hadUnmatchedTestSpecs() - && m_config->warnAboutUnmatchedTestSpecs()) { return 3; } + if(tests.hadUnmatchedTestSpecs() && m_config->warnAboutUnmatchedTestSpecs()) { return 3; } - if(totals.testCases.total() == 0 - && !m_config->zeroTestsCountAsSuccess()) { return 2; } + if(totals.testCases.total() == 0 && !m_config->zeroTestsCountAsSuccess()) { return 2; } - if(totals.testCases.total() > 0 && - totals.testCases.total() == totals.testCases.skipped - && !m_config->zeroTestsCountAsSuccess()) { return 4; } + if(totals.testCases.total() > 0 && totals.testCases.total() == totals.testCases.skipped && !m_config->zeroTestsCountAsSuccess()) { return 4; } // Note that on unices only the lower 8 bits are usually used, clamping // the return value to 255 prevents false negative when some multiple @@ -1195,31 +1075,19 @@ namespace Catch { namespace Catch { namespace { using TCP_underlying_type = uint8_t; - static_assert(sizeof(TestCaseProperties) == sizeof(TCP_underlying_type), - "The size of the TestCaseProperties is different from the assumed size"); + static_assert(sizeof(TestCaseProperties) == sizeof(TCP_underlying_type), "The size of the TestCaseProperties is different from the assumed size"); - TestCaseProperties operator|(TestCaseProperties lhs, TestCaseProperties rhs) { - return static_cast( - static_cast(lhs) | static_cast(rhs) - ); - } + TestCaseProperties operator|(TestCaseProperties lhs, TestCaseProperties rhs) { return static_cast(static_cast(lhs) | static_cast(rhs)); } TestCaseProperties& operator|=(TestCaseProperties& lhs, TestCaseProperties rhs) { - lhs = static_cast( - static_cast(lhs) | static_cast(rhs) - ); + lhs = static_cast(static_cast(lhs) | static_cast(rhs)); return lhs; } - TestCaseProperties operator&(TestCaseProperties lhs, TestCaseProperties rhs) { - return static_cast( - static_cast(lhs) & static_cast(rhs) - ); - } + TestCaseProperties operator&(TestCaseProperties lhs, TestCaseProperties rhs) { return static_cast(static_cast(lhs) & static_cast(rhs)); } bool applies(TestCaseProperties tcp) { - static_assert(static_cast(TestCaseProperties::None) == 0, - "TestCaseProperties::None must be equal to 0"); + static_assert(static_cast(TestCaseProperties::None) == 0, "TestCaseProperties::None must be equal to 0"); return tcp != TestCaseProperties::None; } @@ -1233,18 +1101,9 @@ namespace Catch { else return TestCaseProperties::None; } - bool isReservedTag(StringRef tag) { - return parseSpecialTag(tag) == TestCaseProperties::None - && tag.size() > 0 - && !std::isalnum(static_cast(tag[0])); - } + bool isReservedTag(StringRef tag) { return parseSpecialTag(tag) == TestCaseProperties::None && tag.size() > 0 && !std::isalnum(static_cast(tag[0])); } - void enforceNotReservedTag(StringRef tag, SourceLineInfo const& _lineInfo) { - CATCH_ENFORCE(!isReservedTag(tag), - "Tag name: [" << tag << "] is not allowed.\n" - << "Tag names starting with non alphanumeric characters are reserved\n" - << _lineInfo); - } + void enforceNotReservedTag(StringRef tag, SourceLineInfo const& _lineInfo) { CATCH_ENFORCE(!isReservedTag(tag), "Tag name: [" << tag << "] is not allowed.\n" << "Tag names starting with non alphanumeric characters are reserved\n" << _lineInfo); } std::string makeDefaultName() { static size_t counter = 0; @@ -1280,15 +1139,10 @@ namespace Catch { return cmp(lhs.original, rhs.original); } - Detail::unique_ptr makeTestCaseInfo(StringRef _className, - NameAndTags const& nameAndTags, - SourceLineInfo const& _lineInfo) { return Detail::make_unique(_className, nameAndTags, _lineInfo); } + Detail::unique_ptr makeTestCaseInfo(StringRef _className, NameAndTags const& nameAndTags, SourceLineInfo const& _lineInfo) { return Detail::make_unique(_className, nameAndTags, _lineInfo); } - TestCaseInfo::TestCaseInfo(StringRef _className, - NameAndTags const& _nameAndTags, - SourceLineInfo const& _lineInfo) - : - name(_nameAndTags.name.empty() ? makeDefaultName() : _nameAndTags.name) + TestCaseInfo::TestCaseInfo(StringRef _className, NameAndTags const& _nameAndTags, SourceLineInfo const& _lineInfo) + : name(_nameAndTags.name.empty() ? makeDefaultName() : _nameAndTags.name) , className(_className) , lineInfo(_lineInfo) { StringRef originalTags = _nameAndTags.tags; @@ -1305,19 +1159,13 @@ namespace Catch { for(size_t idx = 0; idx < originalTags.size(); ++idx) { auto c = originalTags[idx]; if(c == '[') { - CATCH_ENFORCE( - !inTag, - "Found '[' inside a tag while registering test case '" - << _nameAndTags.name << "' at " << _lineInfo); + CATCH_ENFORCE(!inTag, "Found '[' inside a tag while registering test case '" << _nameAndTags.name << "' at " << _lineInfo); inTag = true; tagStart = idx; } if(c == ']') { - CATCH_ENFORCE( - inTag, - "Found unmatched ']' while registering test case '" - << _nameAndTags.name << "' at " << _lineInfo); + CATCH_ENFORCE(inTag, "Found unmatched ']' while registering test case '" << _nameAndTags.name << "' at " << _lineInfo); inTag = false; tagEnd = idx; @@ -1327,10 +1175,7 @@ namespace Catch { // it over to backing storage and actually reference the // backing storage in the saved tags StringRef tagStr = originalTags.substr(tagStart + 1, tagEnd - tagStart - 1); - CATCH_ENFORCE(!tagStr.empty(), - "Found an empty tag while registering test case '" - << _nameAndTags.name << "' at " - << _lineInfo); + CATCH_ENFORCE(!tagStr.empty(), "Found an empty tag while registering test case '" << _nameAndTags.name << "' at " << _lineInfo); enforceNotReservedTag(tagStr, lineInfo); properties |= parseSpecialTag(tagStr); @@ -1344,17 +1189,14 @@ namespace Catch { internalAppendTag(tagStr); } } - CATCH_ENFORCE(!inTag, - "Found an unclosed tag while registering test case '" - << _nameAndTags.name << "' at " << _lineInfo); + CATCH_ENFORCE(!inTag, "Found an unclosed tag while registering test case '" << _nameAndTags.name << "' at " << _lineInfo); // Add [.] if relevant if(isHidden()) { internalAppendTag("."_sr); } // Sort and prepare tags std::sort(begin(tags), end(tags)); - tags.erase(std::unique(begin(tags), end(tags)), - end(tags)); + tags.erase(std::unique(begin(tags), end(tags)), end(tags)); } bool TestCaseInfo::isHidden() const { return applies(properties & TestCaseProperties::IsHidden); } @@ -1434,11 +1276,7 @@ namespace Catch { : Pattern(filterString) , m_tag(tag) {} - bool TestSpec::TagPattern::matches(TestCaseInfo const& testCase) const { - return std::find(begin(testCase.tags), - end(testCase.tags), - Tag(m_tag)) != end(testCase.tags); - } + bool TestSpec::TagPattern::matches(TestCaseInfo const& testCase) const { return std::find(begin(testCase.tags), end(testCase.tags), Tag(m_tag)) != end(testCase.tags); } void TestSpec::TagPattern::serializeTo(std::ostream& out) const { out << name(); } @@ -1481,12 +1319,8 @@ namespace Catch { matches.reserve(m_filters.size()); for(auto const& filter : m_filters) { std::vector currentMatches; - for(auto const& test : testCases) - if(isThrowSafe(test, config) && - filter.matches(test.getTestCaseInfo())) - currentMatches.emplace_back(&test); - matches.push_back( - FilterMatch{extractFilterName(filter), currentMatches}); + for(auto const& test : testCases) if(isThrowSafe(test, config) && filter.matches(test.getTestCaseInfo())) currentMatches.emplace_back(&test); + matches.push_back(FilterMatch{extractFilterName(filter), currentMatches}); } return matches; } @@ -1545,9 +1379,7 @@ namespace Catch { if(Catch::isnan(value)) { return "nan"; } ReusableStringStream rss; - rss << std::setprecision(precision) - << std::fixed - << value; + rss << std::setprecision(precision) << std::fixed << value; std::string d = rss.str(); std::size_t i = d.find_last_not_of('0'); if(i != std::string::npos && i != d.size() - 1) { @@ -1762,23 +1594,14 @@ namespace Catch { namespace Catch { namespace Detail { - void registerTranslatorImpl( - Detail::unique_ptr&& translator) { - getMutableRegistryHub().registerTranslator( - CATCH_MOVE(translator)); - } + void registerTranslatorImpl(Detail::unique_ptr&& translator) { getMutableRegistryHub().registerTranslator(CATCH_MOVE(translator)); } } // namespace Detail } // namespace Catch #include namespace Catch { - Version::Version - (unsigned int _majorVersion, - unsigned int _minorVersion, - unsigned int _patchNumber, - char const* const _branchName, - unsigned int _buildNumber) + Version::Version(unsigned int _majorVersion, unsigned int _minorVersion, unsigned int _patchNumber, char const* const _branchName, unsigned int _buildNumber) : majorVersion(_majorVersion) , minorVersion(_minorVersion) , patchNumber(_patchNumber) @@ -1786,14 +1609,9 @@ namespace Catch { , buildNumber(_buildNumber) {} std::ostream& operator <<(std::ostream& os, Version const& version) { - os << version.majorVersion << '.' - << version.minorVersion << '.' - << version.patchNumber; + os << version.majorVersion << '.' << version.minorVersion << '.' << version.patchNumber; // branchName is never null -> 0th char is \0 if it is empty - if(version.branchName[0]) { - os << '-' << version.branchName - << '.' << version.buildNumber; - } + if(version.branchName[0]) { os << '-' << version.branchName << '.' << version.buildNumber; } return os; } @@ -1812,20 +1630,14 @@ namespace Catch { namespace Generators { namespace Detail { - [[noreturn]] - void throw_generator_exception(char const* msg) { Catch::throw_exception(GeneratorException{msg}); } + [[noreturn]] void throw_generator_exception(char const* msg) { Catch::throw_exception(GeneratorException{msg}); } } // end namespace Detail GeneratorUntypedBase::~GeneratorUntypedBase() = default; IGeneratorTracker* acquireGeneratorTracker(StringRef generatorName, SourceLineInfo const& lineInfo) { return getResultCapture().acquireGeneratorTracker(generatorName, lineInfo); } - IGeneratorTracker* createGeneratorTracker(StringRef generatorName, - SourceLineInfo lineInfo, - GeneratorBasePtr&& generator) { - return getResultCapture().createGeneratorTracker( - generatorName, lineInfo, CATCH_MOVE(generator)); - } + IGeneratorTracker* createGeneratorTracker(StringRef generatorName, SourceLineInfo lineInfo, GeneratorBasePtr&& generator) { return getResultCapture().createGeneratorTracker(generatorName, lineInfo, CATCH_MOVE(generator)); } } // namespace Generators } // namespace Catch @@ -1874,13 +1686,8 @@ namespace Catch { #include namespace Catch { - ReporterConfig::ReporterConfig( - IConfig const* _fullConfig, - Detail::unique_ptr _stream, - ColourMode colourMode, - std::map customOptions) - : - m_stream(CATCH_MOVE(_stream)) + ReporterConfig::ReporterConfig(IConfig const* _fullConfig, Detail::unique_ptr _stream, ColourMode colourMode, std::map customOptions) + : m_stream(CATCH_MOVE(_stream)) , m_fullConfig(_fullConfig) , m_colourMode(colourMode) , m_customOptions(CATCH_MOVE(customOptions)) {} @@ -1898,9 +1705,7 @@ namespace Catch { ReporterConfig::~ReporterConfig() = default; - AssertionStats::AssertionStats(AssertionResult const& _assertionResult, - std::vector const& _infoMessages, - Totals const& _totals) + AssertionStats::AssertionStats(AssertionResult const& _assertionResult, std::vector const& _infoMessages, Totals const& _totals) : assertionResult(_assertionResult) , infoMessages(_infoMessages) , totals(_totals) { @@ -1914,29 +1719,20 @@ namespace Catch { } } - SectionStats::SectionStats(SectionInfo&& _sectionInfo, - Counts const& _assertions, - double _durationInSeconds, - bool _missingAssertions) + SectionStats::SectionStats(SectionInfo&& _sectionInfo, Counts const& _assertions, double _durationInSeconds, bool _missingAssertions) : sectionInfo(CATCH_MOVE(_sectionInfo)) , assertions(_assertions) , durationInSeconds(_durationInSeconds) , missingAssertions(_missingAssertions) {} - TestCaseStats::TestCaseStats(TestCaseInfo const& _testInfo, - Totals const& _totals, - std::string&& _stdOut, - std::string&& _stdErr, - bool _aborting) + TestCaseStats::TestCaseStats(TestCaseInfo const& _testInfo, Totals const& _totals, std::string&& _stdOut, std::string&& _stdErr, bool _aborting) : testInfo(&_testInfo) , totals(_totals) , stdOut(CATCH_MOVE(_stdOut)) , stdErr(CATCH_MOVE(_stdErr)) , aborting(_aborting) {} - TestRunStats::TestRunStats(TestRunInfo const& _runInfo, - Totals const& _totals, - bool _aborting) + TestRunStats::TestRunStats(TestRunInfo const& _runInfo, Totals const& _totals, bool _aborting) : runInfo(_runInfo) , totals(_totals) , aborting(_aborting) {} @@ -1954,11 +1750,7 @@ namespace Catch { } namespace Catch { - AssertionHandler::AssertionHandler - (StringRef macroName, - SourceLineInfo const& lineInfo, - StringRef capturedExpression, - ResultDisposition::Flags resultDisposition) + AssertionHandler::AssertionHandler(StringRef macroName, SourceLineInfo const& lineInfo, StringRef capturedExpression, ResultDisposition::Flags resultDisposition) : m_assertionInfo{macroName, lineInfo, capturedExpression, resultDisposition} , m_resultCapture(getResultCapture()) { m_resultCapture.notifyAssertionStarted(m_assertionInfo); } @@ -2000,21 +1792,9 @@ namespace Catch { namespace Catch { namespace Detail { - bool CaseInsensitiveLess::operator()(StringRef lhs, - StringRef rhs) const { - return std::lexicographical_compare( - lhs.begin(), lhs.end(), - rhs.begin(), rhs.end(), - [](char l, char r) { return toLower(l) < toLower(r); }); - } + bool CaseInsensitiveLess::operator()(StringRef lhs, StringRef rhs) const { return std::lexicographical_compare(lhs.begin(), lhs.end(), rhs.begin(), rhs.end(), [](char l, char r) { return toLower(l) < toLower(r); }); } - bool CaseInsensitiveEqualTo::operator()(StringRef lhs, - StringRef rhs) const { - return std::equal( - lhs.begin(), lhs.end(), - rhs.begin(), rhs.end(), - [](char l, char r) { return toLower(l) == toLower(r); }); - } + bool CaseInsensitiveEqualTo::operator()(StringRef lhs, StringRef rhs) const { return std::equal(lhs.begin(), lhs.end(), rhs.begin(), rhs.end(), [](char l, char r) { return toLower(l) == toLower(r); }); } } // namespace Detail } // namespace Catch @@ -2053,46 +1833,29 @@ namespace Catch { if(isOptPrefix(next[0])) { auto delimiterPos = next.find_first_of(" :="); if(delimiterPos != std::string::npos) { - m_tokenBuffer.push_back( - { - TokenType::Option, - next.substr(0, delimiterPos) - }); - m_tokenBuffer.push_back( - { - TokenType::Argument, - next.substr(delimiterPos + 1) - }); + m_tokenBuffer.push_back({TokenType::Option, next.substr(0, delimiterPos)}); + m_tokenBuffer.push_back({TokenType::Argument, next.substr(delimiterPos + 1)}); } else { if(next[1] != '-' && next.size() > 2) { std::string opt = "- "; for(size_t i = 1; i < next.size(); ++i) { opt[1] = next[i]; - m_tokenBuffer.push_back( - {TokenType::Option, opt}); + m_tokenBuffer.push_back({TokenType::Option, opt}); } } - else { - m_tokenBuffer.push_back( - {TokenType::Option, next}); - } + else { m_tokenBuffer.push_back({TokenType::Option, next}); } } } - else { - m_tokenBuffer.push_back( - {TokenType::Argument, next}); - } + else { m_tokenBuffer.push_back({TokenType::Argument, next}); } } } TokenStream::TokenStream(Args const& args) - : - TokenStream(args.m_args.begin(), args.m_args.end()) {} + : TokenStream(args.m_args.begin(), args.m_args.end()) {} TokenStream::TokenStream(Iterator it_, Iterator itEnd_) - : - it(it_) + : it(it_) , itEnd(itEnd_) { loadBuffer(); } TokenStream& TokenStream::operator++() { @@ -2104,25 +1867,17 @@ namespace Catch { return *this; } - ParserResult convertInto(std::string const& source, - std::string& target) { + ParserResult convertInto(std::string const& source, std::string& target) { target = source; return ParserResult::ok(ParseResultType::Matched); } - ParserResult convertInto(std::string const& source, - bool& target) { + ParserResult convertInto(std::string const& source, bool& target) { std::string srcLC = toLower(source); - if(srcLC == "y" || srcLC == "1" || srcLC == "true" || - srcLC == "yes" || srcLC == "on") { target = true; } - else if(srcLC == "n" || srcLC == "0" || srcLC == "false" || - srcLC == "no" || srcLC == "off") { target = false; } - else { - return ParserResult::runtimeError( - "Expected a boolean value but did not recognise: '" + - source + '\''); - } + if(srcLC == "y" || srcLC == "1" || srcLC == "true" || srcLC == "yes" || srcLC == "on") { target = true; } + else if(srcLC == "n" || srcLC == "0" || srcLC == "false" || srcLC == "no" || srcLC == "off") { target = false; } + else { return ParserResult::runtimeError("Expected a boolean value but did not recognise: '" + source + '\''); } return ParserResult::ok(ParseResultType::Matched); } @@ -2130,10 +1885,8 @@ namespace Catch { InternalParseResult ParserBase::parse(Args const& args) const { return parse(args.exeName(), TokenStream(args)); } - ParseState::ParseState(ParseResultType type, - TokenStream const& remainingTokens) - : - m_type(type) + ParseState::ParseState(ParseResultType type, TokenStream const& remainingTokens) + : m_type(type) , m_remainingTokens(remainingTokens) {} ParserResult BoundFlagRef::setFlag(bool flag) { @@ -2150,31 +1903,24 @@ namespace Catch { bool BoundFlagRefBase::isFlag() const { return true; } } // namespace Detail - Detail::InternalParseResult Arg::parse(std::string const&, - Detail::TokenStream const& tokens) const { + Detail::InternalParseResult Arg::parse(std::string const&, Detail::TokenStream const& tokens) const { auto validationResult = validate(); if(!validationResult) return Detail::InternalParseResult(validationResult); auto remainingTokens = tokens; auto const& token = *remainingTokens; - if(token.type != Detail::TokenType::Argument) - return Detail::InternalParseResult::ok(Detail::ParseState( - ParseResultType::NoMatch, remainingTokens)); + if(token.type != Detail::TokenType::Argument) return Detail::InternalParseResult::ok(Detail::ParseState(ParseResultType::NoMatch, remainingTokens)); assert(!m_ref->isFlag()); - auto valueRef = - static_cast(m_ref.get()); + auto valueRef = static_cast(m_ref.get()); auto result = valueRef->setValue(remainingTokens->token); if(!result) return Detail::InternalParseResult(result); - else - return Detail::InternalParseResult::ok(Detail::ParseState( - ParseResultType::Matched, ++remainingTokens)); + else return Detail::InternalParseResult::ok(Detail::ParseState(ParseResultType::Matched, ++remainingTokens)); } Opt::Opt(bool& ref) - : - ParserRefImpl(std::make_shared(ref)) {} + : ParserRefImpl(std::make_shared(ref)) {} std::vector Opt::getHelpColumns() const { std::ostringstream oss; @@ -2194,66 +1940,42 @@ namespace Catch { return false; } - Detail::InternalParseResult Opt::parse(std::string const&, - Detail::TokenStream const& tokens) const { + Detail::InternalParseResult Opt::parse(std::string const&, Detail::TokenStream const& tokens) const { auto validationResult = validate(); if(!validationResult) return Detail::InternalParseResult(validationResult); auto remainingTokens = tokens; - if(remainingTokens && - remainingTokens->type == Detail::TokenType::Option) { + if(remainingTokens && remainingTokens->type == Detail::TokenType::Option) { auto const& token = *remainingTokens; if(isMatch(token.token)) { if(m_ref->isFlag()) { - auto flagRef = - static_cast( - m_ref.get()); + auto flagRef = static_cast(m_ref.get()); auto result = flagRef->setFlag(true); if(!result) return Detail::InternalParseResult(result); - if(result.value() == - ParseResultType::ShortCircuitAll) - return Detail::InternalParseResult::ok(Detail::ParseState( - result.value(), remainingTokens)); + if(result.value() == ParseResultType::ShortCircuitAll) return Detail::InternalParseResult::ok(Detail::ParseState(result.value(), remainingTokens)); } else { - auto valueRef = - static_cast( - m_ref.get()); + auto valueRef = static_cast(m_ref.get()); ++remainingTokens; - if(!remainingTokens) - return Detail::InternalParseResult::runtimeError( - "Expected argument following " + - token.token); + if(!remainingTokens) return Detail::InternalParseResult::runtimeError("Expected argument following " + token.token); auto const& argToken = *remainingTokens; - if(argToken.type != Detail::TokenType::Argument) - return Detail::InternalParseResult::runtimeError( - "Expected argument following " + - token.token); + if(argToken.type != Detail::TokenType::Argument) return Detail::InternalParseResult::runtimeError("Expected argument following " + token.token); const auto result = valueRef->setValue(argToken.token); if(!result) return Detail::InternalParseResult(result); - if(result.value() == - ParseResultType::ShortCircuitAll) - return Detail::InternalParseResult::ok(Detail::ParseState( - result.value(), remainingTokens)); + if(result.value() == ParseResultType::ShortCircuitAll) return Detail::InternalParseResult::ok(Detail::ParseState(result.value(), remainingTokens)); } - return Detail::InternalParseResult::ok(Detail::ParseState( - ParseResultType::Matched, ++remainingTokens)); + return Detail::InternalParseResult::ok(Detail::ParseState(ParseResultType::Matched, ++remainingTokens)); } } - return Detail::InternalParseResult::ok( - Detail::ParseState(ParseResultType::NoMatch, remainingTokens)); + return Detail::InternalParseResult::ok(Detail::ParseState(ParseResultType::NoMatch, remainingTokens)); } Detail::Result Opt::validate() const { if(m_optNames.empty()) return Detail::Result::logicError("No options supplied to Opt"); for(auto const& name : m_optNames) { - if(name.empty()) - return Detail::Result::logicError( - "Option name cannot be empty"); + if(name.empty()) return Detail::Result::logicError("Option name cannot be empty"); #ifdef CATCH_PLATFORM_WINDOWS - if(name[0] != '-' && name[0] != '/') - return Detail::Result::logicError( - "Option name must begin with '-' or '/'"); + if(name[0] != '-' && name[0] != '/') return Detail::Result::logicError("Option name must begin with '-' or '/'"); #else if (name[0] != '-') return Detail::Result::logicError( @@ -2264,23 +1986,16 @@ namespace Catch { } ExeName::ExeName() - : - m_name(std::make_shared("")) {} + : m_name(std::make_shared("")) {} ExeName::ExeName(std::string& ref) : ExeName() { m_ref = std::make_shared>(ref); } - Detail::InternalParseResult ExeName::parse(std::string const&, - Detail::TokenStream const& tokens) const { - return Detail::InternalParseResult::ok( - Detail::ParseState(ParseResultType::NoMatch, tokens)); - } + Detail::InternalParseResult ExeName::parse(std::string const&, Detail::TokenStream const& tokens) const { return Detail::InternalParseResult::ok(Detail::ParseState(ParseResultType::NoMatch, tokens)); } ParserResult ExeName::set(std::string const& newName) { auto lastSlash = newName.find_last_of("\\/"); - auto filename = (lastSlash == std::string::npos) - ? newName - : newName.substr(lastSlash + 1); + auto filename = (lastSlash == std::string::npos) ? newName : newName.substr(lastSlash + 1); *m_name = filename; if(m_ref) return m_ref->setValue(filename); @@ -2288,11 +2003,8 @@ namespace Catch { } Parser& Parser::operator|=(Parser const& other) { - m_options.insert(m_options.end(), - other.m_options.begin(), - other.m_options.end()); - m_args.insert( - m_args.end(), other.m_args.begin(), other.m_args.end()); + m_options.insert(m_options.end(), other.m_options.begin(), other.m_options.end()); + m_args.insert(m_args.end(), other.m_args.begin(), other.m_args.end()); return *this; } @@ -2307,8 +2019,7 @@ namespace Catch { void Parser::writeToStream(std::ostream& os) const { if(!m_exeName.name().empty()) { - os << "usage:\n" - << " " << m_exeName.name() << ' '; + os << "usage:\n" << " " << m_exeName.name() << ' '; bool required = true, first = true; for(auto const& arg : m_args) { if(first) first = false; @@ -2333,12 +2044,7 @@ namespace Catch { optWidth = (std::min)(optWidth, consoleWidth / 2); for(auto const& cols : rows) { - auto row = TextFlow::Column(cols.left) - .width(optWidth) - .indent(2) + - TextFlow::Spacer(4) + - TextFlow::Column(cols.right) - .width(consoleWidth - 7 - optWidth); + auto row = TextFlow::Column(cols.left).width(optWidth).indent(2) + TextFlow::Spacer(4) + TextFlow::Column(cols.right).width(consoleWidth - 7 - optWidth); os << row << '\n'; } } @@ -2355,8 +2061,7 @@ namespace Catch { return Detail::Result::ok(); } - Detail::InternalParseResult Parser::parse(std::string const& exeName, - Detail::TokenStream const& tokens) const { + Detail::InternalParseResult Parser::parse(std::string const& exeName, Detail::TokenStream const& tokens) const { struct ParserInfo { ParserBase const* parser = nullptr; size_t count = 0; @@ -2368,19 +2073,15 @@ namespace Catch { m_exeName.set(exeName); - auto result = Detail::InternalParseResult::ok( - Detail::ParseState(ParseResultType::NoMatch, tokens)); + auto result = Detail::InternalParseResult::ok(Detail::ParseState(ParseResultType::NoMatch, tokens)); while(result.value().remainingTokens()) { bool tokenParsed = false; for(auto& parseInfo : parseInfos) { - if(parseInfo.parser->cardinality() == 0 || - parseInfo.count < parseInfo.parser->cardinality()) { - result = parseInfo.parser->parse( - exeName, result.value().remainingTokens()); + if(parseInfo.parser->cardinality() == 0 || parseInfo.count < parseInfo.parser->cardinality()) { + result = parseInfo.parser->parse(exeName, result.value().remainingTokens()); if(!result) return result; - if(result.value().type() != - ParseResultType::NoMatch) { + if(result.value().type() != ParseResultType::NoMatch) { tokenParsed = true; ++parseInfo.count; break; @@ -2389,35 +2090,25 @@ namespace Catch { } if(result.value().type() == ParseResultType::ShortCircuitAll) return result; - if(!tokenParsed) - return Detail::InternalParseResult::runtimeError( - "Unrecognised token: " + - result.value().remainingTokens()->token); + if(!tokenParsed) return Detail::InternalParseResult::runtimeError("Unrecognised token: " + result.value().remainingTokens()->token); } // !TBD Check missing required options return result; } Args::Args(int argc, char const* const* argv) - : - m_exeName(argv[0]) + : m_exeName(argv[0]) , m_args(argv + 1, argv + argc) {} Args::Args(std::initializer_list args) - : - m_exeName(*args.begin()) + : m_exeName(*args.begin()) , m_args(args.begin() + 1, args.end()) {} Help::Help(bool& showHelpFlag) - : - Opt([&](bool flag) { + : Opt([&](bool flag) { showHelpFlag = flag; return ParserResult::ok(ParseResultType::ShortCircuitAll); - }) { - static_cast(*this)( - "display usage information")["-?"]["-h"]["--help"] - .optional(); - } + }) { static_cast(*this)("display usage information")["-?"]["-h"]["--help"].optional(); } } // namespace Clara } // namespace Catch @@ -2438,8 +2129,7 @@ namespace Catch { return ParserResult::ok(ParseResultType::Matched); } - return ParserResult::runtimeError( - "Unrecognised warning option: '" + warning + '\''); + return ParserResult::runtimeError("Unrecognised warning option: '" + warning + '\''); }; auto const loadTestNamesFromFile = [&](std::string const& filename) { std::ifstream f(filename.c_str()); @@ -2485,18 +2175,9 @@ namespace Catch { }; auto const setDefaultColourMode = [&](std::string const& colourMode) { Optional maybeMode = Catch::Detail::stringToColourMode(toLower(colourMode)); - if(!maybeMode) { - return ParserResult::runtimeError( - "colour mode must be one of: default, ansi, win32, " - "or none. '" + - colourMode + "' is not recognised"); - } + if(!maybeMode) { return ParserResult::runtimeError("colour mode must be one of: default, ansi, win32, " "or none. '" + colourMode + "' is not recognised"); } auto mode = *maybeMode; - if(!isColourImplAvailable(mode)) { - return ParserResult::runtimeError( - "colour mode '" + colourMode + - "' is not supported in this binary"); - } + if(!isColourImplAvailable(mode)) { return ParserResult::runtimeError("colour mode '" + colourMode + "' is not supported in this binary"); } config.defaultColourMode = mode; return ParserResult::ok(ParseResultType::Matched); }; @@ -2520,25 +2201,15 @@ namespace Catch { auto const setReporter = [&](std::string const& userReporterSpec) { if(userReporterSpec.empty()) { return ParserResult::runtimeError("Received empty reporter spec."); } - Optional parsed = - parseReporterSpec(userReporterSpec); - if(!parsed) { - return ParserResult::runtimeError( - "Could not parse reporter spec '" + userReporterSpec + - "'"); - } + Optional parsed = parseReporterSpec(userReporterSpec); + if(!parsed) { return ParserResult::runtimeError("Could not parse reporter spec '" + userReporterSpec + "'"); } auto const& reporterSpec = *parsed; - auto const& factories = - getRegistryHub().getReporterRegistry().getFactories(); + auto const& factories = getRegistryHub().getReporterRegistry().getFactories(); auto result = factories.find(reporterSpec.name()); - if(result == factories.end()) { - return ParserResult::runtimeError( - "Unrecognized reporter, '" + reporterSpec.name() + - "'. Check available with --list-reporters"); - } + if(result == factories.end()) { return ParserResult::runtimeError("Unrecognized reporter, '" + reporterSpec.name() + "'. Check available with --list-reporters"); } const bool hadOutputFile = reporterSpec.outputFile().some(); config.reporterSpecifications.push_back(CATCH_MOVE(*parsed)); @@ -2556,135 +2227,20 @@ namespace Catch { }; auto const setShardCount = [&](std::string const& shardCount) { auto parsedCount = parseUInt(shardCount); - if(!parsedCount) { - return ParserResult::runtimeError( - "Could not parse '" + shardCount + "' as shard count"); - } - if(*parsedCount == 0) { - return ParserResult::runtimeError( - "Shard count must be positive"); - } + if(!parsedCount) { return ParserResult::runtimeError("Could not parse '" + shardCount + "' as shard count"); } + if(*parsedCount == 0) { return ParserResult::runtimeError("Shard count must be positive"); } config.shardCount = *parsedCount; return ParserResult::ok(ParseResultType::Matched); }; auto const setShardIndex = [&](std::string const& shardIndex) { auto parsedIndex = parseUInt(shardIndex); - if(!parsedIndex) { - return ParserResult::runtimeError( - "Could not parse '" + shardIndex + "' as shard index"); - } + if(!parsedIndex) { return ParserResult::runtimeError("Could not parse '" + shardIndex + "' as shard index"); } config.shardIndex = *parsedIndex; return ParserResult::ok(ParseResultType::Matched); }; - auto cli - = ExeName(config.processName) - | Help(config.showHelp) - | Opt(config.showSuccessfulTests) - ["-s"]["--success"] - ("include successful tests in output") - | Opt(config.shouldDebugBreak) - ["-b"]["--break"] - ("break into debugger on failure") - | Opt(config.noThrow) - ["-e"]["--nothrow"] - ("skip exception tests") - | Opt(config.showInvisibles) - ["-i"]["--invisibles"] - ("show invisibles (tabs, newlines)") - | Opt(config.defaultOutputFilename, "filename") - ["-o"]["--out"] - ("default output filename") - | Opt(accept_many, setReporter, "name[::key=value]*") - ["-r"]["--reporter"] - ("reporter to use (defaults to console)") - | Opt(config.name, "name") - ["-n"]["--name"] - ("suite name") - | Opt([&](bool) { config.abortAfter = 1; }) - ["-a"]["--abort"] - ("abort at first failure") - | Opt([&](int x) { config.abortAfter = x; }, "no. failures") - ["-x"]["--abortx"] - ("abort after x failures") - | Opt(accept_many, setWarning, "warning name") - ["-w"]["--warn"] - ("enable warnings") - | Opt([&](bool flag) { config.showDurations = flag ? ShowDurations::Always : ShowDurations::Never; }, "yes|no") - ["-d"]["--durations"] - ("show test durations") - | Opt(config.minDuration, "seconds") - ["-D"]["--min-duration"] - ("show test durations for tests taking at least the given number of seconds") - | Opt(loadTestNamesFromFile, "filename") - ["-f"]["--input-file"] - ("load test names to run from a file") - | Opt(config.filenamesAsTags) - ["-#"]["--filenames-as-tags"] - ("adds a tag for the filename") - | Opt(config.sectionsToRun, "section name") - ["-c"]["--section"] - ("specify section to run") - | Opt(setVerbosity, "quiet|normal|high") - ["-v"]["--verbosity"] - ("set output verbosity") - | Opt(config.listTests) - ["--list-tests"] - ("list all/matching test cases") - | Opt(config.listTags) - ["--list-tags"] - ("list all/matching tags") - | Opt(config.listReporters) - ["--list-reporters"] - ("list all available reporters") - | Opt(config.listListeners) - ["--list-listeners"] - ("list all listeners") - | Opt(setTestOrder, "decl|lex|rand") - ["--order"] - ("test case order (defaults to decl)") - | Opt(setRngSeed, "'time'|'random-device'|number") - ["--rng-seed"] - ("set a specific seed for random numbers") - | Opt(setDefaultColourMode, "ansi|win32|none|default") - ["--colour-mode"] - ("what color mode should be used as default") - | Opt(config.libIdentify) - ["--libidentify"] - ("report name and version according to libidentify standard") - | Opt(setWaitForKeypress, "never|start|exit|both") - ["--wait-for-keypress"] - ("waits for a keypress before exiting") - | Opt(config.skipBenchmarks) - ["--skip-benchmarks"] - ("disable running benchmarks") - | Opt(config.benchmarkSamples, "samples") - ["--benchmark-samples"] - ("number of samples to collect (default: 100)") - | Opt(config.benchmarkResamples, "resamples") - ["--benchmark-resamples"] - ("number of resamples for the bootstrap (default: 100000)") - | Opt(config.benchmarkConfidenceInterval, "confidence interval") - ["--benchmark-confidence-interval"] - ("confidence interval for the bootstrap (between 0 and 1, default: 0.95)") - | Opt(config.benchmarkNoAnalysis) - ["--benchmark-no-analysis"] - ("perform only measurements; do not perform any analysis") - | Opt(config.benchmarkWarmupTime, "benchmarkWarmupTime") - ["--benchmark-warmup-time"] - ("amount of time in milliseconds spent on warming up each test (default: 100)") - | Opt(setShardCount, "shard count") - ["--shard-count"] - ("split the tests to execute into this many groups") - | Opt(setShardIndex, "shard index") - ["--shard-index"] - ("index of the group of tests to execute (see --shard-count)") | - Opt(config.allowZeroTests) - ["--allow-running-no-tests"] - ("Treat 'No tests run' as a success") - | Arg(config.testsOrTags, "test name|pattern|tags") - ("which test or tests to use"); + auto cli = ExeName(config.processName) | Help(config.showHelp) | Opt(config.showSuccessfulTests)["-s"]["--success"]("include successful tests in output") | Opt(config.shouldDebugBreak)["-b"]["--break"]("break into debugger on failure") | Opt(config.noThrow)["-e"]["--nothrow"]("skip exception tests") | Opt(config.showInvisibles)["-i"]["--invisibles"]("show invisibles (tabs, newlines)") | Opt(config.defaultOutputFilename, "filename")["-o"]["--out"]("default output filename") | Opt(accept_many, setReporter, "name[::key=value]*")["-r"]["--reporter"]("reporter to use (defaults to console)") | Opt(config.name, "name")["-n"]["--name"]("suite name") | Opt([&](bool) { config.abortAfter = 1; })["-a"]["--abort"]("abort at first failure") | Opt([&](int x) { config.abortAfter = x; }, "no. failures")["-x"]["--abortx"]("abort after x failures") | Opt(accept_many, setWarning, "warning name")["-w"]["--warn"]("enable warnings") | Opt([&](bool flag) { config.showDurations = flag ? ShowDurations::Always : ShowDurations::Never; }, "yes|no")["-d"]["--durations"]("show test durations") | Opt(config.minDuration, "seconds")["-D"]["--min-duration"]("show test durations for tests taking at least the given number of seconds") | Opt(loadTestNamesFromFile, "filename")["-f"]["--input-file"]("load test names to run from a file") | Opt(config.filenamesAsTags)["-#"]["--filenames-as-tags"]("adds a tag for the filename") | Opt(config.sectionsToRun, "section name")["-c"]["--section"]("specify section to run") | Opt(setVerbosity, "quiet|normal|high")["-v"]["--verbosity"]("set output verbosity") | Opt(config.listTests)["--list-tests"]("list all/matching test cases") | Opt(config.listTags)["--list-tags"]("list all/matching tags") | Opt(config.listReporters)["--list-reporters"]("list all available reporters") | Opt(config.listListeners)["--list-listeners"]("list all listeners") | Opt(setTestOrder, "decl|lex|rand")["--order"]("test case order (defaults to decl)") | Opt(setRngSeed, "'time'|'random-device'|number")["--rng-seed"]("set a specific seed for random numbers") | Opt(setDefaultColourMode, "ansi|win32|none|default")["--colour-mode"]("what color mode should be used as default") | Opt(config.libIdentify)["--libidentify"]("report name and version according to libidentify standard") | Opt(setWaitForKeypress, "never|start|exit|both")["--wait-for-keypress"]("waits for a keypress before exiting") | Opt(config.skipBenchmarks)["--skip-benchmarks"]("disable running benchmarks") | Opt(config.benchmarkSamples, "samples")["--benchmark-samples"]("number of samples to collect (default: 100)") | Opt(config.benchmarkResamples, "resamples")["--benchmark-resamples"]("number of resamples for the bootstrap (default: 100000)") | Opt(config.benchmarkConfidenceInterval, "confidence interval")["--benchmark-confidence-interval"]("confidence interval for the bootstrap (between 0 and 1, default: 0.95)") | Opt(config.benchmarkNoAnalysis)["--benchmark-no-analysis"]("perform only measurements; do not perform any analysis") | Opt(config.benchmarkWarmupTime, "benchmarkWarmupTime")["--benchmark-warmup-time"]("amount of time in milliseconds spent on warming up each test (default: 100)") | Opt(setShardCount, "shard count")["--shard-count"]("split the tests to execute into this many groups") | Opt(setShardIndex, "shard index")["--shard-index"]("index of the group of tests to execute (see --shard-count)") | Opt(config.allowZeroTests)["--allow-running-no-tests"]("Treat 'No tests run' as a success") | Arg(config.testsOrTags, "test name|pattern|tags")("which test or tests to use"); return cli; } @@ -2705,24 +2261,19 @@ namespace Catch { ColourImpl::ColourGuard ColourImpl::guardColour(Colour::Code colourCode) { return ColourGuard(colourCode, this); } void ColourImpl::ColourGuard::engageImpl(std::ostream& stream) { - assert(&stream == &m_colourImpl->m_stream->stream() && - "Engaging colour guard for different stream than used by the " - "parent colour implementation"); + assert(&stream == &m_colourImpl->m_stream->stream() && "Engaging colour guard for different stream than used by the " "parent colour implementation"); static_cast(stream); m_engaged = true; m_colourImpl->use(m_code); } - ColourImpl::ColourGuard::ColourGuard(Colour::Code code, - ColourImpl const* colour) - : - m_colourImpl(colour) + ColourImpl::ColourGuard::ColourGuard(Colour::Code code, ColourImpl const* colour) + : m_colourImpl(colour) , m_code(code) { } ColourImpl::ColourGuard::ColourGuard(ColourGuard&& rhs) noexcept - : - m_colourImpl(rhs.m_colourImpl) + : m_colourImpl(rhs.m_colourImpl) , m_code(rhs.m_code) , m_engaged(rhs.m_engaged) { rhs.m_engaged = false; } @@ -2768,11 +2319,9 @@ namespace Catch { class Win32ColourImpl final : public ColourImpl { public: Win32ColourImpl(IStream* stream) - : - ColourImpl(stream) { + : ColourImpl(stream) { CONSOLE_SCREEN_BUFFER_INFO csbiInfo; - GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), - &csbiInfo); + GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbiInfo); originalForegroundAttributes = csbiInfo.wAttributes & ~(BACKGROUND_GREEN | BACKGROUND_RED | BACKGROUND_BLUE | BACKGROUND_INTENSITY); originalBackgroundAttributes = csbiInfo.wAttributes & ~(FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_INTENSITY); } @@ -2817,16 +2366,11 @@ namespace Catch { case Colour::Bright: CATCH_INTERNAL_ERROR("not a colour"); - default: - CATCH_ERROR("Unknown colour requested"); + default: CATCH_ERROR("Unknown colour requested"); } } - void setTextAttribute(WORD _textAttribute) const { - SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), - _textAttribute | - originalBackgroundAttributes); - } + void setTextAttribute(WORD _textAttribute) const { SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), _textAttribute | originalBackgroundAttributes); } WORD originalForegroundAttributes; WORD originalBackgroundAttributes; @@ -2871,8 +2415,7 @@ namespace Catch { private: void use(Colour::Code _colourCode) const override { - auto setColour = [&out = - m_stream->stream()](char const* escapeCode) { + auto setColour = [&out = m_stream->stream()](char const* escapeCode) { // The escape sequence must be flushed to console, otherwise // if stdin and stderr are intermixed, we'd get accidentally // coloured output. @@ -2915,8 +2458,7 @@ namespace Catch { } // end namespace Catch namespace Catch { - Detail::unique_ptr makeColourImpl(ColourMode implSelection, - IStream* stream) { + Detail::unique_ptr makeColourImpl(ColourMode implSelection, IStream* stream) { #if defined( CATCH_CONFIG_COLOUR_WIN32 ) if(implSelection == ColourMode::Win32) { return Detail::make_unique(stream); } #endif @@ -3119,10 +2661,7 @@ namespace Catch { ITransientExpression::~ITransientExpression() = default; void formatReconstructedExpression(std::ostream& os, std::string const& lhs, StringRef op, std::string const& rhs) { - if(lhs.size() + rhs.size() < 40 && - lhs.find('\n') == std::string::npos && - rhs.find('\n') == std::string::npos) - os << lhs << ' ' << op << ' ' << rhs; + if(lhs.size() + rhs.size() < 40 && lhs.find('\n') == std::string::npos && rhs.find('\n') == std::string::npos) os << lhs << ' ' << op << ' ' << rhs; else os << lhs << '\n' << op << '\n' << rhs; } } @@ -3139,14 +2678,11 @@ namespace Catch { } #endif - [[noreturn]] - void throw_logic_error(std::string const& msg) { throw_exception(std::logic_error(msg)); } + [[noreturn]] void throw_logic_error(std::string const& msg) { throw_exception(std::logic_error(msg)); } - [[noreturn]] - void throw_domain_error(std::string const& msg) { throw_exception(std::domain_error(msg)); } + [[noreturn]] void throw_domain_error(std::string const& msg) { throw_exception(std::domain_error(msg)); } - [[noreturn]] - void throw_runtime_error(std::string const& msg) { throw_exception(std::runtime_error(msg)); } + [[noreturn]] void throw_runtime_error(std::string const& msg) { throw_exception(std::runtime_error(msg)); } } // namespace Catch; #include @@ -3216,14 +2752,9 @@ namespace Catch { namespace Catch { namespace { - static std::string tryTranslators( - std::vector< - Detail::unique_ptr> const& translators) { + static std::string tryTranslators(std::vector> const& translators) { if(translators.empty()) { std::rethrow_exception(std::current_exception()); } - else { - return translators[0]->translate(translators.begin() + 1, - translators.end()); - } + else { return translators[0]->translate(translators.begin() + 1, translators.end()); } } } @@ -3248,12 +2779,7 @@ namespace Catch { try { return tryTranslators(m_translators); } // To avoid having to handle TFE explicitly everywhere, we just // rethrow it so that it goes back up the caller. - catch(TestFailureException&) { std::rethrow_exception(std::current_exception()); } - catch(TestSkipException&) { std::rethrow_exception(std::current_exception()); } - catch(std::exception const& ex) { return ex.what(); } - catch(std::string const& msg) { return msg; } - catch(const char* msg) { return msg; } - catch(...) { return "Unknown exception"; } + catch(TestFailureException&) { std::rethrow_exception(std::current_exception()); } catch(TestSkipException&) { std::rethrow_exception(std::current_exception()); } catch(std::exception const& ex) { return ex.what(); } catch(std::string const& msg) { return msg; } catch(const char* msg) { return msg; } catch(...) { return "Unknown exception"; } } #else // ^^ Exceptions are enabled // Exceptions are disabled vv @@ -3327,12 +2853,7 @@ namespace Catch { // There is no 1-1 mapping between signals and windows exceptions. // Windows can easily distinguish between SO and SigSegV, // but SigInt, SigTerm, etc are handled differently. - static SignalDefs signalDefs[] = { - {EXCEPTION_ILLEGAL_INSTRUCTION, "SIGILL - Illegal instruction signal"}, - {EXCEPTION_STACK_OVERFLOW, "SIGSEGV - Stack overflow"}, - {EXCEPTION_ACCESS_VIOLATION, "SIGSEGV - Segmentation violation signal"}, - {EXCEPTION_INT_DIVIDE_BY_ZERO, "Divide by zero error"}, - }; + static SignalDefs signalDefs[] = {{EXCEPTION_ILLEGAL_INSTRUCTION, "SIGILL - Illegal instruction signal"}, {EXCEPTION_STACK_OVERFLOW, "SIGSEGV - Stack overflow"}, {EXCEPTION_ACCESS_VIOLATION, "SIGSEGV - Segmentation violation signal"}, {EXCEPTION_INT_DIVIDE_BY_ZERO, "Divide by zero error"},}; static LONG CALLBACK topLevelExceptionFilter(PEXCEPTION_POINTERS ExceptionInfo) { for(auto const& def : signalDefs) { if(ExceptionInfo->ExceptionRecord->ExceptionCode == def.id) { reportFatal(def.name); } } @@ -3353,9 +2874,7 @@ namespace Catch { if(!SetThreadStackGuarantee(&guaranteeSize)) { // We do not want to fully error out, because needing // the stack reserve should be rare enough anyway. - Catch::cerr() - << "Failed to reserve piece of stack." - << " Stack overflows will not be reported successfully."; + Catch::cerr() << "Failed to reserve piece of stack." << " Stack overflows will not be reported successfully."; } } @@ -3369,11 +2888,7 @@ namespace Catch { } void FatalConditionHandler::disengage_platform() noexcept { - if(SetUnhandledExceptionFilter(previousTopLevelExceptionFilter) != topLevelExceptionFilter) { - Catch::cerr() - << "Unexpected SEH unhandled exception filter on disengage." - << " The filter was restored, but might be rolled back unexpectedly."; - } + if(SetUnhandledExceptionFilter(previousTopLevelExceptionFilter) != topLevelExceptionFilter) { Catch::cerr() << "Unexpected SEH unhandled exception filter on disengage." << " The filter was restored, but might be rolled back unexpectedly."; } previousTopLevelExceptionFilter = nullptr; } } // end namespace Catch @@ -3739,8 +3254,7 @@ namespace Catch { void listListeners(IEventListener& reporter) { std::vector descriptions; - auto const& factories = - getRegistryHub().getReporterRegistry().getListeners(); + auto const& factories = getRegistryHub().getReporterRegistry().getListeners(); descriptions.reserve(factories.size()); for(auto const& fac : factories) { descriptions.push_back({fac->getName(), fac->getDescription()}); } @@ -3792,15 +3306,12 @@ namespace Catch { namespace Catch { CATCH_INTERNAL_START_WARNINGS_SUPPRESSION - CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS - static LeakDetector leakDetector; + CATCH_INTERNAL_SUPPRESS_GLOBALS_WARNINGS static LeakDetector leakDetector; CATCH_INTERNAL_STOP_WARNINGS_SUPPRESSION } namespace Catch { - MessageInfo::MessageInfo(StringRef _macroName, - SourceLineInfo const& _lineInfo, - ResultWas::OfType _type) + MessageInfo::MessageInfo(StringRef _macroName, SourceLineInfo const& _lineInfo, ResultWas::OfType _type) : macroName(_macroName) , lineInfo(_lineInfo) , type(_type) @@ -3961,11 +3472,9 @@ namespace Catch { // Too large if(ret > std::numeric_limits::max()) { return {}; } return static_cast(ret); - } - CATCH_CATCH_ANON(std::invalid_argument const&) { + } CATCH_CATCH_ANON(std::invalid_argument const&) { // no conversion could be performed - } - CATCH_CATCH_ANON(std::out_of_range const&) { + } CATCH_CATCH_ANON(std::out_of_range const&) { // the input does not fit into an unsigned long long } return {}; @@ -4054,8 +3563,7 @@ namespace Catch { // 16 bits. That is still some randomness, so we don't care too much return static_cast(std::random_device{}()); - default: - CATCH_ERROR("Unknown generation method"); + default: CATCH_ERROR("Unknown generation method"); } } } // end namespace Catch @@ -4063,59 +3571,40 @@ namespace Catch { namespace Catch { struct ReporterRegistry::ReporterRegistryImpl { std::vector> listeners; - std::map - factories; + std::map factories; }; ReporterRegistry::ReporterRegistry() - : - m_impl(Detail::make_unique()) { + : m_impl(Detail::make_unique()) { // Because it is impossible to move out of initializer list, // we have to add the elements manually - m_impl->factories["Automake"] = - Detail::make_unique>(); - m_impl->factories["compact"] = - Detail::make_unique>(); - m_impl->factories["console"] = - Detail::make_unique>(); - m_impl->factories["JUnit"] = - Detail::make_unique>(); - m_impl->factories["SonarQube"] = - Detail::make_unique>(); - m_impl->factories["TAP"] = - Detail::make_unique>(); - m_impl->factories["TeamCity"] = - Detail::make_unique>(); - m_impl->factories["XML"] = - Detail::make_unique>(); + m_impl->factories["Automake"] = Detail::make_unique>(); + m_impl->factories["compact"] = Detail::make_unique>(); + m_impl->factories["console"] = Detail::make_unique>(); + m_impl->factories["JUnit"] = Detail::make_unique>(); + m_impl->factories["SonarQube"] = Detail::make_unique>(); + m_impl->factories["TAP"] = Detail::make_unique>(); + m_impl->factories["TeamCity"] = Detail::make_unique>(); + m_impl->factories["XML"] = Detail::make_unique>(); } ReporterRegistry::~ReporterRegistry() = default; - IEventListenerPtr ReporterRegistry::create(std::string const& name, - ReporterConfig&& config) const { + IEventListenerPtr ReporterRegistry::create(std::string const& name, ReporterConfig&& config) const { auto it = m_impl->factories.find(name); if(it == m_impl->factories.end()) return nullptr; return it->second->create(CATCH_MOVE(config)); } - void ReporterRegistry::registerReporter(std::string const& name, - IReporterFactoryPtr factory) { - CATCH_ENFORCE(name.find( "::" ) == name.npos, - "'::' is not allowed in reporter name: '" + name + - '\''); + void ReporterRegistry::registerReporter(std::string const& name, IReporterFactoryPtr factory) { + CATCH_ENFORCE(name.find( "::" ) == name.npos, "'::' is not allowed in reporter name: '" + name + '\''); auto ret = m_impl->factories.emplace(name, CATCH_MOVE(factory)); - CATCH_ENFORCE(ret.second, - "reporter using '" + name + - "' as name was already registered"); + CATCH_ENFORCE(ret.second, "reporter using '" + name + "' as name was already registered"); } - void ReporterRegistry::registerListener( - Detail::unique_ptr factory) { m_impl->listeners.push_back(CATCH_MOVE(factory)); } + void ReporterRegistry::registerListener(Detail::unique_ptr factory) { m_impl->listeners.push_back(CATCH_MOVE(factory)); } - std::map const& ReporterRegistry::getFactories() const { return m_impl->factories; } + std::map const& ReporterRegistry::getFactories() const { return m_impl->factories; } std::vector> const& ReporterRegistry::getListeners() const { return m_impl->listeners; } } // namespace Catch @@ -4129,14 +3618,9 @@ namespace Catch { }; kvPair splitKVPair(StringRef kvString) { - auto splitPos = static_cast( - std::find(kvString.begin(), kvString.end(), '=') - - kvString.begin()); + auto splitPos = static_cast(std::find(kvString.begin(), kvString.end(), '=') - kvString.begin()); - return { - kvString.substr(0, splitPos), - kvString.substr(splitPos + 1, kvString.size()) - }; + return {kvString.substr(0, splitPos), kvString.substr(splitPos + 1, kvString.size())}; } } @@ -4147,16 +3631,12 @@ namespace Catch { size_t separatorPos = 0; auto findNextSeparator = [&reporterSpec](size_t startPos) { - static_assert( - separatorSize == 2, - "The code below currently assumes 2 char separator"); + static_assert(separatorSize == 2, "The code below currently assumes 2 char separator"); auto currentPos = startPos; do { - while(currentPos < reporterSpec.size() && - reporterSpec[currentPos] != separator[0]) { ++currentPos; } - if(currentPos + 1 < reporterSpec.size() && - reporterSpec[currentPos + 1] == separator[1]) { return currentPos; } + while(currentPos < reporterSpec.size() && reporterSpec[currentPos] != separator[0]) { ++currentPos; } + if(currentPos + 1 < reporterSpec.size() && reporterSpec[currentPos + 1] == separator[1]) { return currentPos; } ++currentPos; } while(currentPos < reporterSpec.size()); @@ -4168,8 +3648,7 @@ namespace Catch { while(separatorPos < reporterSpec.size()) { const auto nextSeparator = findNextSeparator(separatorPos); - parts.push_back(static_cast(reporterSpec.substr( - separatorPos, nextSeparator - separatorPos))); + parts.push_back(static_cast(reporterSpec.substr(separatorPos, nextSeparator - separatorPos))); if(nextSeparator == static_cast(-1)) { break; } separatorPos = nextSeparator + separatorSize; @@ -4192,12 +3671,7 @@ namespace Catch { } } // namespace Detail - bool operator==(ReporterSpec const& lhs, ReporterSpec const& rhs) { - return lhs.m_name == rhs.m_name && - lhs.m_outputFileName == rhs.m_outputFileName && - lhs.m_colourMode == rhs.m_colourMode && - lhs.m_customOptions == rhs.m_customOptions; - } + bool operator==(ReporterSpec const& lhs, ReporterSpec const& rhs) { return lhs.m_name == rhs.m_name && lhs.m_outputFileName == rhs.m_outputFileName && lhs.m_colourMode == rhs.m_colourMode && lhs.m_customOptions == rhs.m_customOptions; } Optional parseReporterSpec(StringRef reporterSpec) { auto parts = Detail::splitReporterSpec(reporterSpec); @@ -4244,21 +3718,11 @@ namespace Catch { } } - return ReporterSpec{ - CATCH_MOVE(parts[0]), - CATCH_MOVE(outputFileName), - CATCH_MOVE(colourMode), - CATCH_MOVE(kvPairs) - }; + return ReporterSpec{CATCH_MOVE(parts[0]), CATCH_MOVE(outputFileName), CATCH_MOVE(colourMode), CATCH_MOVE(kvPairs)}; } - ReporterSpec::ReporterSpec( - std::string name, - Optional outputFileName, - Optional colourMode, - std::map customOptions) - : - m_name(CATCH_MOVE(name)) + ReporterSpec::ReporterSpec(std::string name, Optional outputFileName, Optional colourMode, std::map customOptions) + : m_name(CATCH_MOVE(name)) , m_outputFileName(CATCH_MOVE(outputFileName)) , m_colourMode(CATCH_MOVE(colourMode)) , m_customOptions(CATCH_MOVE(customOptions)) {} @@ -4326,22 +3790,15 @@ namespace Catch { namespace Catch { namespace Generators { namespace { - struct GeneratorTracker final : TestCaseTracking::TrackerBase, - IGeneratorTracker { + struct GeneratorTracker final : TestCaseTracking::TrackerBase, IGeneratorTracker { GeneratorBasePtr m_generator; - GeneratorTracker( - TestCaseTracking::NameAndLocation&& nameAndLocation, - TrackerContext& ctx, - ITracker* parent) - : - TrackerBase(CATCH_MOVE(nameAndLocation), ctx, parent) {} + GeneratorTracker(TestCaseTracking::NameAndLocation&& nameAndLocation, TrackerContext& ctx, ITracker* parent) + : TrackerBase(CATCH_MOVE(nameAndLocation), ctx, parent) {} ~GeneratorTracker() override = default; - static GeneratorTracker* acquire(TrackerContext& ctx, - TestCaseTracking::NameAndLocationRef const& - nameAndLocation) { + static GeneratorTracker* acquire(TrackerContext& ctx, TestCaseTracking::NameAndLocationRef const& nameAndLocation) { GeneratorTracker* tracker; ITracker& currentTracker = ctx.currentTracker(); @@ -4357,19 +3814,15 @@ namespace Catch { // // without it, the code above creates 5 nested generators. if(currentTracker.nameAndLocation() == nameAndLocation) { - auto thisTracker = currentTracker.parent()->findChild( - nameAndLocation); + auto thisTracker = currentTracker.parent()->findChild(nameAndLocation); assert(thisTracker); assert(thisTracker->isGeneratorTracker()); tracker = static_cast(thisTracker); } - else if(ITracker* childTracker = - currentTracker.findChild( - nameAndLocation)) { + else if(ITracker* childTracker = currentTracker.findChild(nameAndLocation)) { assert(childTracker); assert(childTracker->isGeneratorTracker()); - tracker = - static_cast(childTracker); + tracker = static_cast(childTracker); } else { return nullptr; } @@ -4397,13 +3850,7 @@ namespace Catch { // No children -> nobody to wait for if(m_children.empty()) { return false; } // If at least one child started executing, don't wait - if(std::find_if( - m_children.begin(), - m_children.end(), - [](TestCaseTracking::ITrackerPtr const& - tracker) { - return tracker->hasStarted(); - }) != m_children.end()) { return false; } + if(std::find_if(m_children.begin(), m_children.end(), [](TestCaseTracking::ITrackerPtr const& tracker) { return tracker->hasStarted(); }) != m_children.end()) { return false; } // No children have started. We need to check if they // _can_ start, and thus we should wait for them, or @@ -4413,24 +3860,14 @@ namespace Catch { // This is safe: there is always at least one section // tracker in a test case tracking tree while(!parent->isSectionTracker()) { parent = parent->parent(); } - assert(parent && - "Missing root (test case) level section"); + assert(parent && "Missing root (test case) level section"); - auto const& parentSection = - static_cast(*parent); + auto const& parentSection = static_cast(*parent); auto const& filters = parentSection.getFilters(); // No filters -> no restrictions on running sections if(filters.empty()) { return true; } - for(auto const& child : m_children) { - if(child->isSectionTracker() && - std::find(filters.begin(), - filters.end(), - static_cast( - *child) - .trimmedName()) != - filters.end()) { return true; } - } + for(auto const& child : m_children) { if(child->isSectionTracker() && std::find(filters.begin(), filters.end(), static_cast(*child).trimmedName()) != filters.end()) { return true; } } return false; }(); @@ -4439,9 +3876,7 @@ namespace Catch { // value, but we do not want to invoke the side-effect if // this generator is still waiting for any child to start. assert(m_generator && "Tracker without generator"); - if(should_wait_for_child || - (m_runState == CompletedSuccessfully && - m_generator->countedNext())) { + if(should_wait_for_child || (m_runState == CompletedSuccessfully && m_generator->countedNext())) { m_children.clear(); m_runState = Executing; } @@ -4541,11 +3976,7 @@ namespace Catch { deltaTotals.testCases.failed++; } m_totals.testCases += deltaTotals.testCases; - m_reporter->testCaseEnded(TestCaseStats(testInfo, - deltaTotals, - CATCH_MOVE(redirectedCout), - CATCH_MOVE(redirectedCerr), - aborting())); + m_reporter->testCaseEnded(TestCaseStats(testInfo, deltaTotals, CATCH_MOVE(redirectedCout), CATCH_MOVE(redirectedCerr), aborting())); m_activeTestCase = nullptr; m_testCaseTracker = nullptr; @@ -4586,13 +4017,8 @@ namespace Catch { void RunContext::notifyAssertionStarted(AssertionInfo const& info) { m_reporter->assertionStarting(info); } - bool RunContext::sectionStarted(StringRef sectionName, - SourceLineInfo const& sectionLineInfo, - Counts& assertions) { - ITracker& sectionTracker = - SectionTracker::acquire(m_trackerContext, - TestCaseTracking::NameAndLocationRef( - sectionName, sectionLineInfo)); + bool RunContext::sectionStarted(StringRef sectionName, SourceLineInfo const& sectionLineInfo, Counts& assertions) { + ITracker& sectionTracker = SectionTracker::acquire(m_trackerContext, TestCaseTracking::NameAndLocationRef(sectionName, sectionLineInfo)); if(!sectionTracker.isOpen()) return false; m_activeSections.push_back(§ionTracker); @@ -4607,29 +4033,19 @@ namespace Catch { return true; } - IGeneratorTracker* RunContext::acquireGeneratorTracker(StringRef generatorName, - SourceLineInfo const& lineInfo) { + IGeneratorTracker* RunContext::acquireGeneratorTracker(StringRef generatorName, SourceLineInfo const& lineInfo) { using namespace Generators; - GeneratorTracker* tracker = GeneratorTracker::acquire( - m_trackerContext, - TestCaseTracking::NameAndLocationRef( - generatorName, lineInfo)); + GeneratorTracker* tracker = GeneratorTracker::acquire(m_trackerContext, TestCaseTracking::NameAndLocationRef(generatorName, lineInfo)); m_lastAssertionInfo.lineInfo = lineInfo; return tracker; } - IGeneratorTracker* RunContext::createGeneratorTracker( - StringRef generatorName, - SourceLineInfo lineInfo, - Generators::GeneratorBasePtr&& generator) { + IGeneratorTracker* RunContext::createGeneratorTracker(StringRef generatorName, SourceLineInfo lineInfo, Generators::GeneratorBasePtr&& generator) { auto nameAndLoc = TestCaseTracking::NameAndLocation(static_cast(generatorName), lineInfo); auto& currentTracker = m_trackerContext.currentTracker(); - assert( - currentTracker.nameAndLocation() != nameAndLoc && - "Trying to create tracker for a genreator that already has one"); + assert(currentTracker.nameAndLocation() != nameAndLoc && "Trying to create tracker for a genreator that already has one"); - auto newTracker = Catch::Detail::make_unique( - CATCH_MOVE(nameAndLoc), m_trackerContext, ¤tTracker); + auto newTracker = Catch::Detail::make_unique(CATCH_MOVE(nameAndLoc), m_trackerContext, ¤tTracker); auto ret = newTracker.get(); currentTracker.addChild(CATCH_MOVE(newTracker)); @@ -4683,11 +4099,7 @@ namespace Catch { void RunContext::emplaceUnscopedMessage(MessageBuilder&& builder) { m_messageScopes.emplace_back(CATCH_MOVE(builder)); } - std::string RunContext::getCurrentTestName() const { - return m_activeTestCase - ? m_activeTestCase->getTestCaseInfo().name - : std::string(); - } + std::string RunContext::getCurrentTestName() const { return m_activeTestCase ? m_activeTestCase->getTestCaseInfo().name : std::string(); } const AssertionResult* RunContext::getLastResult() const { return &(*m_lastResult); } @@ -4721,11 +4133,7 @@ namespace Catch { Totals deltaTotals; deltaTotals.testCases.failed = 1; deltaTotals.assertions.failed = 1; - m_reporter->testCaseEnded(TestCaseStats(testInfo, - deltaTotals, - std::string(), - std::string(), - false)); + m_reporter->testCaseEnded(TestCaseStats(testInfo, deltaTotals, std::string(), std::string(), false)); m_totals.testCases.failed++; m_reporter->testRunEnded(TestRunStats(m_runInfo, m_totals, false)); } @@ -4809,19 +4217,11 @@ namespace Catch { void RunContext::handleUnfinishedSections() { // If sections ended prematurely due to an exception we stored their // infos here so we can tear them down outside the unwind process. - for(auto it = m_unfinishedSections.rbegin(), - itEnd = m_unfinishedSections.rend(); - it != itEnd; - ++it) - sectionEnded(CATCH_MOVE(*it)); + for(auto it = m_unfinishedSections.rbegin(), itEnd = m_unfinishedSections.rend(); it != itEnd; ++it) sectionEnded(CATCH_MOVE(*it)); m_unfinishedSections.clear(); } - void RunContext::handleExpr( - AssertionInfo const& info, - ITransientExpression const& expr, - AssertionReaction& reaction - ) { + void RunContext::handleExpr(AssertionInfo const& info, ITransientExpression const& expr, AssertionReaction& reaction) { bool negated = isFalseTest(info.resultDisposition); bool result = expr.getResult() != negated; @@ -4835,11 +4235,7 @@ namespace Catch { } } - void RunContext::reportExpr( - AssertionInfo const& info, - ResultWas::OfType resultType, - ITransientExpression const* expr, - bool negated) { + void RunContext::reportExpr(AssertionInfo const& info, ResultWas::OfType resultType, ITransientExpression const* expr, bool negated) { m_lastAssertionInfo = info; AssertionResultData data(resultType, LazyExpression(negated)); @@ -4849,20 +4245,12 @@ namespace Catch { assertionEnded(CATCH_MOVE(assertionResult)); } - void RunContext::handleMessage( - AssertionInfo const& info, - ResultWas::OfType resultType, - StringRef message, - AssertionReaction& reaction - ) { + void RunContext::handleMessage(AssertionInfo const& info, ResultWas::OfType resultType, StringRef message, AssertionReaction& reaction) { m_lastAssertionInfo = info; AssertionResultData data(resultType, LazyExpression(false)); data.message = static_cast(message); - AssertionResult assertionResult{ - m_lastAssertionInfo, - CATCH_MOVE(data) - }; + AssertionResult assertionResult{m_lastAssertionInfo, CATCH_MOVE(data)}; const auto isOk = assertionResult.isOk(); assertionEnded(CATCH_MOVE(assertionResult)); @@ -4874,16 +4262,9 @@ namespace Catch { } } - void RunContext::handleUnexpectedExceptionNotThrown( - AssertionInfo const& info, - AssertionReaction& reaction - ) { handleNonExpr(info, Catch::ResultWas::DidntThrowException, reaction); } + void RunContext::handleUnexpectedExceptionNotThrown(AssertionInfo const& info, AssertionReaction& reaction) { handleNonExpr(info, Catch::ResultWas::DidntThrowException, reaction); } - void RunContext::handleUnexpectedInflightException( - AssertionInfo const& info, - std::string&& message, - AssertionReaction& reaction - ) { + void RunContext::handleUnexpectedInflightException(AssertionInfo const& info, std::string&& message, AssertionReaction& reaction) { m_lastAssertionInfo = info; AssertionResultData data(ResultWas::ThrewException, LazyExpression(false)); @@ -4898,9 +4279,7 @@ namespace Catch { reaction.shouldThrow = aborting() || (m_lastAssertionInfo.resultDisposition & ResultDisposition::Normal); } - void RunContext::handleIncomplete( - AssertionInfo const& info - ) { + void RunContext::handleIncomplete(AssertionInfo const& info) { using namespace std::string_literals; m_lastAssertionInfo = info; @@ -4910,11 +4289,7 @@ namespace Catch { assertionEnded(CATCH_MOVE(assertionResult)); } - void RunContext::handleNonExpr( - AssertionInfo const& info, - ResultWas::OfType resultType, - AssertionReaction& reaction - ) { + void RunContext::handleNonExpr(AssertionInfo const& info, ResultWas::OfType resultType, AssertionReaction& reaction) { m_lastAssertionInfo = info; AssertionResultData data(resultType, LazyExpression(false)); @@ -4938,22 +4313,16 @@ namespace Catch { namespace Catch { Section::Section(SectionInfo&& info) - : - m_info(CATCH_MOVE(info)) - , m_sectionIncluded( - getResultCapture().sectionStarted(m_info.name, m_info.lineInfo, m_assertions)) { + : m_info(CATCH_MOVE(info)) + , m_sectionIncluded(getResultCapture().sectionStarted(m_info.name, m_info.lineInfo, m_assertions)) { // Non-"included" sections will not use the timing information // anyway, so don't bother with the potential syscall. if(m_sectionIncluded) { m_timer.start(); } } - Section::Section(SourceLineInfo const& _lineInfo, - StringRef _name, - const char* const) - : - m_info({"invalid", static_cast(-1)}, std::string{}) - , m_sectionIncluded( - getResultCapture().sectionStarted(_name, _lineInfo, m_assertions)) { + Section::Section(SourceLineInfo const& _lineInfo, StringRef _name, const char* const) + : m_info({"invalid", static_cast(-1)}, std::string{}) + , m_sectionIncluded(getResultCapture().sectionStarted(_name, _lineInfo, m_assertions)) { // We delay initialization the SectionInfo member until we know // this section needs it, so we avoid allocating std::string for name. // We also delay timer start to avoid the potential syscall unless we @@ -5139,8 +4508,7 @@ namespace Catch { } int StringRef::compare(StringRef rhs) const { - auto cmpResult = - strncmp(m_start, rhs.m_start, std::min(m_size, rhs.m_size)); + auto cmpResult = strncmp(m_start, rhs.m_start, std::min(m_size, rhs.m_size)); // This means that strncmp found a difference before the strings // ended, and we can return it directly @@ -5182,23 +4550,15 @@ namespace Catch { std::string expandedTestSpec = unexpandedTestSpec; for(auto const& registryKvp : m_registry) { std::size_t pos = expandedTestSpec.find(registryKvp.first); - if(pos != std::string::npos) { - expandedTestSpec = expandedTestSpec.substr(0, pos) + - registryKvp.second.tag + - expandedTestSpec.substr(pos + registryKvp.first.size()); - } + if(pos != std::string::npos) { expandedTestSpec = expandedTestSpec.substr(0, pos) + registryKvp.second.tag + expandedTestSpec.substr(pos + registryKvp.first.size()); } } return expandedTestSpec; } void TagAliasRegistry::add(std::string const& alias, std::string const& tag, SourceLineInfo const& lineInfo) { - CATCH_ENFORCE(startsWith(alias, "[@") && endsWith(alias, ']'), - "error: tag alias, '" << alias << "' is not of the form [@alias name].\n" << lineInfo); + CATCH_ENFORCE(startsWith(alias, "[@") && endsWith(alias, ']'), "error: tag alias, '" << alias << "' is not of the form [@alias name].\n" << lineInfo); - CATCH_ENFORCE(m_registry.insert(std::make_pair(alias, TagAlias(tag, lineInfo))).second, - "error: tag alias, '" << alias << "' already registered.\n" - << "\tFirst seen at: " << find(alias)->lineInfo << "\n" - << "\tRedefined at: " << lineInfo); + CATCH_ENFORCE(m_registry.insert(std::make_pair(alias, TagAlias(tag, lineInfo))).second, "error: tag alias, '" << alias << "' already registered.\n" << "\tFirst seen at: " << find(alias)->lineInfo << "\n" << "\tRedefined at: " << lineInfo); } ITagAliasRegistry::~ITagAliasRegistry() = default; @@ -5241,34 +4601,17 @@ namespace Catch { namespace Catch { namespace { - static void enforceNoDuplicateTestCases( - std::vector const& tests) { - auto testInfoCmp = [](TestCaseInfo const* lhs, - TestCaseInfo const* rhs) { - return *lhs < *rhs; - }; - std::set seenTests( - testInfoCmp); + static void enforceNoDuplicateTestCases(std::vector const& tests) { + auto testInfoCmp = [](TestCaseInfo const* lhs, TestCaseInfo const* rhs) { return *lhs < *rhs; }; + std::set seenTests(testInfoCmp); for(auto const& test : tests) { const auto infoPtr = &test.getTestCaseInfo(); const auto prev = seenTests.insert(infoPtr); - CATCH_ENFORCE(prev.second, - "error: test case \"" - << infoPtr->name << "\", with tags \"" - << infoPtr->tagsAsString() - << "\" already defined.\n" - << "\tFirst seen at " - << ( *prev.first )->lineInfo << "\n" - << "\tRedefined at " << infoPtr->lineInfo); + CATCH_ENFORCE(prev.second, "error: test case \"" << infoPtr->name << "\", with tags \"" << infoPtr->tagsAsString() << "\" already defined.\n" << "\tFirst seen at " << ( *prev.first )->lineInfo << "\n" << "\tRedefined at " << infoPtr->lineInfo); } } - static bool matchTest(TestCaseHandle const& testCase, - TestSpec const& testSpec, - IConfig const& config) { - return testSpec.matches(testCase.getTestCaseInfo()) && - isThrowSafe(testCase, config); - } + static bool matchTest(TestCaseHandle const& testCase, TestSpec const& testSpec, IConfig const& config) { return testSpec.matches(testCase.getTestCaseInfo()) && isThrowSafe(testCase, config); } } // end unnamed namespace std::vector sortTests(IConfig const& config, std::vector const& unsortedTestCases) { @@ -5278,11 +4621,7 @@ namespace Catch { case TestRunOrder::LexicographicallySorted: { std::vector sorted = unsortedTestCases; - std::sort( - sorted.begin(), - sorted.end(), - [](TestCaseHandle const& lhs, TestCaseHandle const& rhs) { return lhs.getTestCaseInfo() < rhs.getTestCaseInfo(); } - ); + std::sort(sorted.begin(), sorted.end(), [](TestCaseHandle const& lhs, TestCaseHandle const& rhs) { return lhs.getTestCaseInfo() < rhs.getTestCaseInfo(); }); return sorted; } case TestRunOrder::Randomized: { @@ -5295,15 +4634,10 @@ namespace Catch { for(auto const& handle : unsortedTestCases) { indexed_tests.emplace_back(h(handle.getTestCaseInfo()), handle); } - std::sort(indexed_tests.begin(), - indexed_tests.end(), - [](TestWithHash const& lhs, TestWithHash const& rhs) { - if(lhs.first == rhs.first) { - return lhs.second.getTestCaseInfo() < - rhs.second.getTestCaseInfo(); - } - return lhs.first < rhs.first; - }); + std::sort(indexed_tests.begin(), indexed_tests.end(), [](TestWithHash const& lhs, TestWithHash const& rhs) { + if(lhs.first == rhs.first) { return lhs.second.getTestCaseInfo() < rhs.second.getTestCaseInfo(); } + return lhs.first < rhs.first; + }); std::vector randomized; randomized.reserve(indexed_tests.size()); @@ -5322,10 +4656,7 @@ namespace Catch { std::vector filterTests(std::vector const& testCases, TestSpec const& testSpec, IConfig const& config) { std::vector filtered; filtered.reserve(testCases.size()); - for(auto const& testCase : testCases) { - if((!testSpec.hasFilters() && !testCase.getTestCaseInfo().isHidden()) || - (testSpec.hasFilters() && matchTest(testCase, testSpec, config))) { filtered.push_back(testCase); } - } + for(auto const& testCase : testCases) { if((!testSpec.hasFilters() && !testCase.getTestCaseInfo().isHidden()) || (testSpec.hasFilters() && matchTest(testCase, testSpec, config))) { filtered.push_back(testCase); } } return createShard(filtered, config.shardCount(), config.shardIndex()); } @@ -5374,15 +4705,11 @@ namespace Catch { void ITracker::addChild(ITrackerPtr&& child) { m_children.push_back(CATCH_MOVE(child)); } ITracker* ITracker::findChild(NameAndLocationRef const& nameAndLocation) { - auto it = std::find_if( - m_children.begin(), - m_children.end(), - [&nameAndLocation](ITrackerPtr const& tracker) { - auto const& tnameAndLoc = tracker->nameAndLocation(); - if(tnameAndLoc.location.line != - nameAndLocation.location.line) { return false; } - return tnameAndLoc == nameAndLocation; - }); + auto it = std::find_if(m_children.begin(), m_children.end(), [&nameAndLocation](ITrackerPtr const& tracker) { + auto const& tnameAndLoc = tracker->nameAndLocation(); + if(tnameAndLoc.location.line != nameAndLocation.location.line) { return false; } + return tnameAndLoc == nameAndLocation; + }); return (it != m_children.end()) ? it->get() : nullptr; } @@ -5403,10 +4730,7 @@ namespace Catch { ITracker& TrackerContext::startRun() { using namespace std::string_literals; - m_rootTracker = Catch::Detail::make_unique( - NameAndLocation("{root}"s, CATCH_INTERNAL_LINEINFO), - *this, - nullptr); + m_rootTracker = Catch::Detail::make_unique(NameAndLocation("{root}"s, CATCH_INTERNAL_LINEINFO), *this, nullptr); m_currentTracker = nullptr; m_runState = Executing; return *m_rootTracker; @@ -5419,8 +4743,7 @@ namespace Catch { void TrackerContext::setCurrentTracker(ITracker* tracker) { m_currentTracker = tracker; } TrackerBase::TrackerBase(NameAndLocation&& nameAndLocation, TrackerContext& ctx, ITracker* parent) - : - ITracker(CATCH_MOVE(nameAndLocation), parent) + : ITracker(CATCH_MOVE(nameAndLocation), parent) , m_ctx(ctx) {} bool TrackerBase::isComplete() const { return m_runState == CompletedSuccessfully || m_runState == Failed; } @@ -5448,11 +4771,9 @@ namespace Catch { case NotStarted: case CompletedSuccessfully: - case Failed: - CATCH_INTERNAL_ERROR("Illogical state: " << m_runState); + case Failed: CATCH_INTERNAL_ERROR("Illogical state: " << m_runState); - default: - CATCH_INTERNAL_ERROR("Unknown state: " << m_runState); + default: CATCH_INTERNAL_ERROR("Unknown state: " << m_runState); } moveToParent(); m_ctx.completeCycle(); @@ -5486,9 +4807,7 @@ namespace Catch { bool SectionTracker::isComplete() const { bool complete = true; - if(m_filters.empty() - || m_filters[0].empty() - || std::find(m_filters.begin(), m_filters.end(), m_trimmed_name) != m_filters.end()) { complete = TrackerBase::isComplete(); } + if(m_filters.empty() || m_filters[0].empty() || std::find(m_filters.begin(), m_filters.end(), m_trimmed_name) != m_filters.end()) { complete = TrackerBase::isComplete(); } return complete; } @@ -5498,20 +4817,13 @@ namespace Catch { SectionTracker* tracker; ITracker& currentTracker = ctx.currentTracker(); - if(ITracker* childTracker = - currentTracker.findChild(nameAndLocation)) { + if(ITracker* childTracker = currentTracker.findChild(nameAndLocation)) { assert(childTracker); assert(childTracker->isSectionTracker()); tracker = static_cast(childTracker); } else { - auto newTracker = Catch::Detail::make_unique( - NameAndLocation{ - static_cast(nameAndLocation.name), - nameAndLocation.location - }, - ctx, - ¤tTracker); + auto newTracker = Catch::Detail::make_unique(NameAndLocation{static_cast(nameAndLocation.name), nameAndLocation.location}, ctx, ¤tTracker); tracker = newTracker.get(); currentTracker.addChild(CATCH_MOVE(newTracker)); } @@ -5571,8 +4883,7 @@ namespace Catch { if(!startsWith(classOrMethodName, '&')) { return classOrMethodName; } // Remove the leading '&' to avoid having to special case it later - const auto methodName = - classOrMethodName.substr(1, classOrMethodName.size()); + const auto methodName = classOrMethodName.substr(1, classOrMethodName.size()); auto reverseStart = std::make_reverse_iterator(methodName.end()); auto reverseEnd = std::make_reverse_iterator(methodName.begin()); @@ -5582,15 +4893,12 @@ namespace Catch { // relatively safe assumption because the input is generated // as stringification of type through preprocessor). auto lastColons = std::find(reverseStart, reverseEnd, ':') + 1; - auto secondLastColons = - std::find(lastColons + 1, reverseEnd, ':'); + auto secondLastColons = std::find(lastColons + 1, reverseEnd, ':'); auto const startIdx = reverseEnd - secondLastColons; auto const classNameSize = secondLastColons - lastColons - 1; - return methodName.substr( - static_cast(startIdx), - static_cast(classNameSize)); + return methodName.substr(static_cast(startIdx), static_cast(classNameSize)); } class TestInvokerAsFunction final : public ITestInvoker { @@ -5599,8 +4907,7 @@ namespace Catch { public: TestInvokerAsFunction(TestType testAsFunction) noexcept - : - m_testAsFunction(testAsFunction) {} + : m_testAsFunction(testAsFunction) {} void invoke() const override { m_testAsFunction(); } }; @@ -5609,16 +4916,7 @@ namespace Catch { Detail::unique_ptr makeTestInvoker(void (*testAsFunction)()) { return Detail::make_unique(testAsFunction); } AutoReg::AutoReg(Detail::unique_ptr invoker, SourceLineInfo const& lineInfo, StringRef classOrMethod, NameAndTags const& nameAndTags) noexcept { - CATCH_TRY { - getMutableRegistryHub() - .registerTest( - makeTestCaseInfo( - extractClassName(classOrMethod), - nameAndTags, - lineInfo), - CATCH_MOVE(invoker) - ); - } CATCH_CATCH_ALL { + CATCH_TRY { getMutableRegistryHub().registerTest(makeTestCaseInfo(extractClassName(classOrMethod), nameAndTags, lineInfo), CATCH_MOVE(invoker)); } CATCH_CATCH_ALL { // Do not throw when constructing global objects, instead register the exception to be processed later getMutableRegistryHub().registerStartupException(); } @@ -5672,8 +4970,7 @@ namespace Catch { endMode(); addCharToPattern(c); return true; - default: - case Tag: + default: case Tag: case QuotedName: if(processOtherChar(c)) return true; break; @@ -5735,8 +5032,7 @@ namespace Catch { case EscapedName: revertBackToLastMode(); return; - case None: - default: + case None: default: return startNewMode(None); } } @@ -5858,10 +5154,7 @@ namespace { assert(at > 0); assert(at <= line.size()); - return at == line.size() || - (isWhitespace(line[at]) && !isWhitespace(line[at - 1])) || - isBreakableBefore(line[at]) || - isBreakableAfter(line[at - 1]); + return at == line.size() || (isWhitespace(line[at]) && !isWhitespace(line[at - 1])) || isBreakableBefore(line[at]) || isBreakableAfter(line[at - 1]); } } // namespace @@ -5876,8 +5169,7 @@ namespace Catch { const auto maxLineLength = m_column.m_width - indentSize(); const auto maxParseTo = std::min(current_line.size(), m_lineStart + maxLineLength); - while(m_parsedTo < maxParseTo && - current_line[m_parsedTo] != '\n') { ++m_parsedTo; } + while(m_parsedTo < maxParseTo && current_line[m_parsedTo] != '\n') { ++m_parsedTo; } // If we encountered a newline before the column is filled, // then we linebreak at the newline and consider this line @@ -5889,8 +5181,7 @@ namespace Catch { // the right one) size_t newLineLength = maxLineLength; while(newLineLength > 0 && !isBoundary(current_line, m_lineStart + newLineLength)) { --newLineLength; } - while(newLineLength > 0 && - isWhitespace(current_line[m_lineStart + newLineLength - 1])) { --newLineLength; } + while(newLineLength > 0 && isWhitespace(current_line[m_lineStart + newLineLength - 1])) { --newLineLength; } // If we found one, then that is where we linebreak if(newLineLength > 0) { m_lineLength = newLineLength; } @@ -5903,13 +5194,11 @@ namespace Catch { } size_t Column::const_iterator::indentSize() const { - auto initial = - m_lineStart == 0 ? m_column.m_initialIndent : std::string::npos; + auto initial = m_lineStart == 0 ? m_column.m_initialIndent : std::string::npos; return initial == std::string::npos ? m_column.m_indent : initial; } - std::string Column::const_iterator::addIndentAndSuffix(size_t position, - size_t length) const { + std::string Column::const_iterator::addIndentAndSuffix(size_t position, size_t length) const { std::string ret; const auto desired_indent = indentSize(); ret.reserve(desired_indent + length + m_addHyphen); @@ -5923,8 +5212,7 @@ namespace Catch { Column::const_iterator::const_iterator(Column const& column) : m_column(column) { assert(m_column.m_width > m_column.m_indent); - assert(m_column.m_initialIndent == std::string::npos || - m_column.m_width > m_column.m_initialIndent); + assert(m_column.m_initialIndent == std::string::npos || m_column.m_width > m_column.m_initialIndent); calcLength(); if(m_lineLength == 0) { m_lineStart = m_column.m_string.size(); } } @@ -5938,10 +5226,7 @@ namespace Catch { m_lineStart += m_lineLength; std::string const& current_line = m_column.m_string; if(m_lineStart < current_line.size() && current_line[m_lineStart] == '\n') { m_lineStart += 1; } - else { - while(m_lineStart < current_line.size() && - isWhitespace(current_line[m_lineStart])) { ++m_lineStart; } - } + else { while(m_lineStart < current_line.size() && isWhitespace(current_line[m_lineStart])) { ++m_lineStart; } } if(m_lineStart != current_line.size()) { calcLength(); } return *this; @@ -5970,16 +5255,14 @@ namespace Catch { } Columns::iterator::iterator(Columns const& columns, EndTag) - : - m_columns(columns.m_columns) + : m_columns(columns.m_columns) , m_activeIterators(0) { m_iterators.reserve(m_columns.size()); for(auto const& col : m_columns) { m_iterators.push_back(col.end()); } } Columns::iterator::iterator(Columns const& columns) - : - m_columns(columns.m_columns) + : m_columns(columns.m_columns) , m_activeIterators(m_columns.size()) { m_iterators.reserve(m_columns.size()); for(auto const& col : m_columns) { m_iterators.push_back(col.begin()); } @@ -6059,8 +5342,7 @@ namespace Catch { } // end namespace Catch namespace Catch { - WildcardPattern::WildcardPattern(std::string const& pattern, - CaseSensitive caseSensitivity) + WildcardPattern::WildcardPattern(std::string const& pattern, CaseSensitive caseSensitivity) : m_caseSensitivity(caseSensitivity) , m_pattern(normaliseString(pattern)) { if(startsWith(m_pattern, '*')) { @@ -6083,8 +5365,7 @@ namespace Catch { return startsWith(normaliseString(str), m_pattern); case WildcardAtBothEnds: return contains(normaliseString(str), m_pattern); - default: - CATCH_INTERNAL_ERROR("Unknown enum"); + default: CATCH_INTERNAL_ERROR("Unknown enum"); } } @@ -6117,9 +5398,7 @@ namespace Catch { void hexEscapeChar(std::ostream& os, unsigned char c) { std::ios_base::fmtflags f(os.flags()); - os << "\\x" - << std::uppercase << std::hex << std::setfill('0') << std::setw(2) - << static_cast(c); + os << "\\x" << std::uppercase << std::hex << std::setfill('0') << std::setw(2) << static_cast(c); os.flags(f); } @@ -6128,19 +5407,9 @@ namespace Catch { bool shouldIndent(XmlFormatting fmt) { return !!(static_cast>(fmt & XmlFormatting::Indent)); } } // anonymous namespace - XmlFormatting operator |(XmlFormatting lhs, XmlFormatting rhs) { - return static_cast( - static_cast>(lhs) | - static_cast>(rhs) - ); - } + XmlFormatting operator |(XmlFormatting lhs, XmlFormatting rhs) { return static_cast(static_cast>(lhs) | static_cast>(rhs)); } - XmlFormatting operator &(XmlFormatting lhs, XmlFormatting rhs) { - return static_cast( - static_cast>(lhs) & - static_cast>(rhs) - ); - } + XmlFormatting operator &(XmlFormatting lhs, XmlFormatting rhs) { return static_cast(static_cast>(lhs) & static_cast>(rhs)); } XmlEncode::XmlEncode(StringRef str, ForWhat forWhat) : m_str(str) @@ -6193,8 +5462,7 @@ namespace Catch { // First check that this bytes is a valid lead byte: // This means that it is not encoded as 1111 1XXX // Or as 10XX XXXX - if(c < 0xC0 || - c >= 0xF8) { + if(c < 0xC0 || c >= 0xF8) { hexEscapeChar(os, c); break; } @@ -6220,12 +5488,9 @@ namespace Catch { // Wrong bit pattern of following bytes (!valid) || // Overlong encodings - (value < 0x80) || - (0x80 <= value && value < 0x800 && encBytes > 2) || - (0x800 < value && value < 0x10000 && encBytes > 3) || + (value < 0x80) || (0x80 <= value && value < 0x800 && encBytes > 2) || (0x800 < value && value < 0x10000 && encBytes > 3) || // Encoded value out of range - (value >= 0x110000) - ) { + (value >= 0x110000)) { hexEscapeChar(os, c); break; } @@ -6270,8 +5535,7 @@ namespace Catch { return *this; } - XmlWriter::ScopedElement& XmlWriter::ScopedElement::writeAttribute(StringRef name, - StringRef attribute) { + XmlWriter::ScopedElement& XmlWriter::ScopedElement::writeAttribute(StringRef name, StringRef attribute) { m_writer->writeAttribute(name, attribute); return *this; } @@ -6322,8 +5586,7 @@ namespace Catch { return *this; } - XmlWriter& XmlWriter::writeAttribute(StringRef name, - StringRef attribute) { + XmlWriter& XmlWriter::writeAttribute(StringRef name, StringRef attribute) { if(!name.empty() && !attribute.empty()) m_os << ' ' << name << "=\"" << XmlEncode(attribute, XmlEncode::ForAttributes) << '"'; return *this; } @@ -6333,8 +5596,7 @@ namespace Catch { return *this; } - XmlWriter& XmlWriter::writeAttribute(StringRef name, - char const* attribute) { + XmlWriter& XmlWriter::writeAttribute(StringRef name, char const* attribute) { writeAttribute(name, StringRef(attribute)); return *this; } @@ -6462,11 +5724,7 @@ namespace Catch { // But without the subtraction to allow for INFINITY in comparison bool marginComparison(double lhs, double rhs, double margin) { return (lhs + margin >= rhs) && (rhs + margin >= lhs); } - template void write(std::ostream& out, FloatingPoint num) { - out << std::scientific - << std::setprecision(std::numeric_limits::max_digits10 - 1) - << num; - } + template void write(std::ostream& out, FloatingPoint num) { out << std::scientific << std::setprecision(std::numeric_limits::max_digits10 - 1) << num; } } // end anonymous namespace namespace Matchers { @@ -6479,10 +5737,7 @@ namespace Catch { WithinAbsMatcher::WithinAbsMatcher(double target, double margin) : m_target{target} - , m_margin{margin} { - CATCH_ENFORCE(margin >= 0, "Invalid margin: " << margin << '.' - << " Margin has to be non-negative."); - } + , m_margin{margin} { CATCH_ENFORCE(margin >= 0, "Invalid margin: " << margin << '.' << " Margin has to be non-negative."); } // Performs equivalent check of std::fabs(lhs - rhs) <= margin // But without the subtraction to allow for INFINITY in comparison @@ -6494,12 +5749,8 @@ namespace Catch { : m_target{target} , m_ulps{ulps} , m_type{baseType} { - CATCH_ENFORCE(m_type == Detail::FloatingPointKind::Double - || m_ulps < (std::numeric_limits::max)(), - "Provided ULP is impossibly large for a float comparison."); - CATCH_ENFORCE(std::numeric_limits::is_iec559, - "WithinUlp matcher only supports platforms with " - "IEEE-754 compatible floating point representation"); + CATCH_ENFORCE(m_type == Detail::FloatingPointKind::Double || m_ulps < (std::numeric_limits::max)(), "Provided ULP is impossibly large for a float comparison."); + CATCH_ENFORCE(std::numeric_limits::is_iec559, "WithinUlp matcher only supports platforms with " "IEEE-754 compatible floating point representation"); } #if defined(__clang__) @@ -6514,8 +5765,7 @@ namespace Catch { return almostEqualUlps(static_cast(matchee), static_cast(m_target), m_ulps); case Detail::FloatingPointKind::Double: return almostEqualUlps(matchee, m_target, m_ulps); - default: - CATCH_INTERNAL_ERROR("Unknown Detail::FloatingPointKind value"); + default: CATCH_INTERNAL_ERROR("Unknown Detail::FloatingPointKind value"); } } @@ -6536,27 +5786,15 @@ namespace Catch { ret << " (["; if(m_type == Detail::FloatingPointKind::Double) { - write(ret, - step(m_target, - -std::numeric_limits::infinity(), - m_ulps)); + write(ret, step(m_target, -std::numeric_limits::infinity(), m_ulps)); ret << ", "; - write(ret, - step(m_target, - std::numeric_limits::infinity(), - m_ulps)); + write(ret, step(m_target, std::numeric_limits::infinity(), m_ulps)); } else { // We have to cast INFINITY to float because of MinGW, see #1782 - write(ret, - step(static_cast(m_target), - -std::numeric_limits::infinity(), - m_ulps)); + write(ret, step(static_cast(m_target), -std::numeric_limits::infinity(), m_ulps)); ret << ", "; - write(ret, - step(static_cast(m_target), - std::numeric_limits::infinity(), - m_ulps)); + write(ret, step(static_cast(m_target), std::numeric_limits::infinity(), m_ulps)); } ret << "])"; @@ -6564,8 +5802,7 @@ namespace Catch { } WithinRelMatcher::WithinRelMatcher(double target, double epsilon) - : - m_target(target) + : m_target(target) , m_epsilon(epsilon) { CATCH_ENFORCE(m_epsilon >= 0., "Relative comparison with epsilon < 0 does not make sense."); CATCH_ENFORCE(m_epsilon < 1., "Relative comparison with epsilon >= 1 does not make sense."); @@ -6573,8 +5810,7 @@ namespace Catch { bool WithinRelMatcher::match(double const& matchee) const { const auto relMargin = m_epsilon * (std::max)(std::fabs(matchee), std::fabs(m_target)); - return marginComparison(matchee, m_target, - std::isinf(relMargin) ? 0 : relMargin); + return marginComparison(matchee, m_target, std::isinf(relMargin) ? 0 : relMargin); } std::string WithinRelMatcher::describe() const { @@ -6637,17 +5873,9 @@ namespace Catch { : m_caseSensitivity(caseSensitivity) , m_str(adjustString(str)) {} - std::string CasedString::adjustString(std::string const& str) const { - return m_caseSensitivity == CaseSensitive::No - ? toLower(str) - : str; - } + std::string CasedString::adjustString(std::string const& str) const { return m_caseSensitivity == CaseSensitive::No ? toLower(str) : str; } - StringRef CasedString::caseSensitivitySuffix() const { - return m_caseSensitivity == CaseSensitive::Yes - ? StringRef() - : " (case insensitive)"_sr; - } + StringRef CasedString::caseSensitivitySuffix() const { return m_caseSensitivity == CaseSensitive::Yes ? StringRef() : " (case insensitive)"_sr; } StringMatcherBase::StringMatcherBase(StringRef operation, CasedString const& comparator) : m_comparator(comparator) @@ -6655,8 +5883,7 @@ namespace Catch { std::string StringMatcherBase::describe() const { std::string description; - description.reserve(5 + m_operation.size() + m_comparator.m_str.size() + - m_comparator.caseSensitivitySuffix().size()); + description.reserve(5 + m_operation.size() + m_comparator.m_str.size() + m_comparator.caseSensitivitySuffix().size()); description += m_operation; description += ": \""; description += m_comparator.m_str; @@ -6769,8 +5996,7 @@ namespace Catch { namespace Catch { ReporterBase::ReporterBase(ReporterConfig&& config) - : - IEventListener(config.fullConfig()) + : IEventListener(config.fullConfig()) , m_wrapped_stream(CATCH_MOVE(config).takeStream()) , m_stream(m_wrapped_stream->stream()) , m_colour(makeColourImpl(config.colourMode(), m_wrapped_stream.get())) @@ -6778,19 +6004,11 @@ namespace Catch { ReporterBase::~ReporterBase() = default; - void ReporterBase::listReporters( - std::vector const& descriptions) { defaultListReporters(m_stream, descriptions, m_config->verbosity()); } + void ReporterBase::listReporters(std::vector const& descriptions) { defaultListReporters(m_stream, descriptions, m_config->verbosity()); } - void ReporterBase::listListeners( - std::vector const& descriptions) { defaultListListeners(m_stream, descriptions); } + void ReporterBase::listListeners(std::vector const& descriptions) { defaultListListeners(m_stream, descriptions); } - void ReporterBase::listTests(std::vector const& tests) { - defaultListTests(m_stream, - m_colour.get(), - tests, - m_config->hasTestFilters(), - m_config->verbosity()); - } + void ReporterBase::listTests(std::vector const& tests) { defaultListTests(m_stream, m_colour.get(), tests, m_config->hasTestFilters(), m_config->verbosity()); } void ReporterBase::listTags(std::vector const& tags) { defaultListTags(m_stream, tags, m_config->hasTestFilters()); } } // namespace Catch @@ -6894,10 +6112,7 @@ namespace Catch { } private: - void printSourceInfo() const { - stream << colourImpl->guardColour(Colour::FileName) - << result.getSourceInfo() << ':'; - } + void printSourceInfo() const { stream << colourImpl->guardColour(Colour::FileName) << result.getSourceInfo() << ':'; } void printResultType(Colour::Code colour, StringRef passOrFail) const { if(!passOrFail.empty()) { @@ -6940,8 +6155,7 @@ namespace Catch { const auto itEnd = messages.cend(); const auto N = static_cast(itEnd - itMessage); - stream << colourImpl->guardColour(colour) << " with " - << pluralise(N, "message"_sr) << ':'; + stream << colourImpl->guardColour(colour) << " with " << pluralise(N, "message"_sr) << ':'; while(itMessage != itEnd) { // If this assertion is a warning ignore any INFO messages @@ -6969,12 +6183,7 @@ namespace Catch { void CompactReporter::noMatchingTestCases(StringRef unmatchedSpec) { m_stream << "No test cases matched '" << unmatchedSpec << "'\n"; } void CompactReporter::testRunStarting(TestRunInfo const&) { - if(m_config->testSpec().hasFilters()) { - m_stream << m_colour->guardColour(Colour::BrightYellow) - << "Filters: " - << m_config->testSpec() - << '\n'; - } + if(m_config->testSpec().hasFilters()) { m_stream << m_colour->guardColour(Colour::BrightYellow) << "Filters: " << m_config->testSpec() << '\n'; } m_stream << "RNG seed: " << getSeed() << '\n'; } @@ -7127,20 +6336,12 @@ namespace Catch { private: void printResultType() const { if(!passOrFail.empty()) { stream << colourImpl->guardColour(colour) << passOrFail << ":\n"; } } - void printOriginalExpression() const { - if(result.hasExpression()) { - stream << colourImpl->guardColour(Colour::OriginalExpression) - << " " << result.getExpressionInMacro() << '\n'; - } - } + void printOriginalExpression() const { if(result.hasExpression()) { stream << colourImpl->guardColour(Colour::OriginalExpression) << " " << result.getExpressionInMacro() << '\n'; } } void printReconstructedExpression() const { if(result.hasExpandedExpression()) { stream << "with expansion:\n"; - stream << colourImpl->guardColour(Colour::ReconstructedExpression) - << TextFlow::Column(result.getExpandedExpression()) - .indent(2) - << '\n'; + stream << colourImpl->guardColour(Colour::ReconstructedExpression) << TextFlow::Column(result.getExpandedExpression()).indent(2) << '\n'; } } @@ -7152,10 +6353,7 @@ namespace Catch { } } - void printSourceInfo() const { - stream << colourImpl->guardColour(Colour::FileName) - << result.getSourceInfo() << ": "; - } + void printSourceInfo() const { stream << colourImpl->guardColour(Colour::FileName) << result.getSourceInfo() << ": "; } std::ostream& stream; AssertionStats const& stats; @@ -7316,9 +6514,7 @@ namespace Catch { tp.m_currentColumn++; auto colInfo = tp.m_columnInfos[tp.m_currentColumn]; - auto padding = (strSize + 1 < colInfo.width) - ? std::string(colInfo.width - (strSize + 1), ' ') - : std::string(); + auto padding = (strSize + 1 < colInfo.width) ? std::string(colInfo.width - (strSize + 1), ' ') : std::string(); if(colInfo.justification == Justification::Left) tp.m_os << colStr << padding << ' '; else tp.m_os << padding << colStr << ' '; return tp; @@ -7334,27 +6530,11 @@ namespace Catch { }; ConsoleReporter::ConsoleReporter(ReporterConfig&& config) - : - StreamingReporterBase(CATCH_MOVE(config)) - , m_tablePrinter(Detail::make_unique(m_stream, - [&config]() -> std::vector { - if(config.fullConfig()->benchmarkNoAnalysis()) { - return { - {"benchmark name", CATCH_CONFIG_CONSOLE_WIDTH - 43, Justification::Left}, - {" samples", 14, Justification::Right}, - {" iterations", 14, Justification::Right}, - {" mean", 14, Justification::Right} - }; - } - else { - return { - {"benchmark name", CATCH_CONFIG_CONSOLE_WIDTH - 43, Justification::Left}, - {"samples mean std dev", 14, Justification::Right}, - {"iterations low mean low std dev", 14, Justification::Right}, - {"estimated high mean high std dev", 14, Justification::Right} - }; - } - }())) {} + : StreamingReporterBase(CATCH_MOVE(config)) + , m_tablePrinter(Detail::make_unique(m_stream, [&config]() -> std::vector { + if(config.fullConfig()->benchmarkNoAnalysis()) { return {{"benchmark name", CATCH_CONFIG_CONSOLE_WIDTH - 43, Justification::Left}, {" samples", 14, Justification::Right}, {" iterations", 14, Justification::Right}, {" mean", 14, Justification::Right}}; } + else { return {{"benchmark name", CATCH_CONFIG_CONSOLE_WIDTH - 43, Justification::Left}, {"samples mean std dev", 14, Justification::Right}, {"iterations low mean low std dev", 14, Justification::Right}, {"estimated high mean high std dev", 14, Justification::Right}}; } + }())) {} ConsoleReporter::~ConsoleReporter() = default; @@ -7392,8 +6572,7 @@ namespace Catch { m_tablePrinter->close(); if(_sectionStats.missingAssertions) { lazyPrint(); - auto guard = - m_colour->guardColour(Colour::ResultError).engage(m_stream); + auto guard = m_colour->guardColour(Colour::ResultError).engage(m_stream); if(m_sectionStack.size() > 1) m_stream << "\nNo assertions in section"; else m_stream << "\nNo assertions in test case"; m_stream << " '" << _sectionStats.sectionInfo.name << "'\n\n" << std::flush; @@ -7407,8 +6586,7 @@ namespace Catch { void ConsoleReporter::benchmarkPreparing(StringRef name) { lazyPrintWithoutClosingBenchmarkTable(); - auto nameCol = TextFlow::Column(static_cast(name)) - .width(m_tablePrinter->columnInfos()[0].width - 2); + auto nameCol = TextFlow::Column(static_cast(name)).width(m_tablePrinter->columnInfos()[0].width - 2); bool firstLine = true; for(auto line : nameCol) { @@ -7420,29 +6598,18 @@ namespace Catch { } void ConsoleReporter::benchmarkStarting(BenchmarkInfo const& info) { - (*m_tablePrinter) << info.samples << ColumnBreak() - << info.iterations << ColumnBreak(); + (*m_tablePrinter) << info.samples << ColumnBreak() << info.iterations << ColumnBreak(); if(!m_config->benchmarkNoAnalysis()) (*m_tablePrinter) << Duration(info.estimatedDuration) << ColumnBreak(); } void ConsoleReporter::benchmarkEnded(BenchmarkStats<> const& stats) { if(m_config->benchmarkNoAnalysis()) { (*m_tablePrinter) << Duration(stats.mean.point.count()) << ColumnBreak(); } - else { - (*m_tablePrinter) << ColumnBreak() - << Duration(stats.mean.point.count()) << ColumnBreak() - << Duration(stats.mean.lower_bound.count()) << ColumnBreak() - << Duration(stats.mean.upper_bound.count()) << ColumnBreak() << ColumnBreak() - << Duration(stats.standardDeviation.point.count()) << ColumnBreak() - << Duration(stats.standardDeviation.lower_bound.count()) << ColumnBreak() - << Duration(stats.standardDeviation.upper_bound.count()) << ColumnBreak() << ColumnBreak() << ColumnBreak() << ColumnBreak() << ColumnBreak(); - } + else { (*m_tablePrinter) << ColumnBreak() << Duration(stats.mean.point.count()) << ColumnBreak() << Duration(stats.mean.lower_bound.count()) << ColumnBreak() << Duration(stats.mean.upper_bound.count()) << ColumnBreak() << ColumnBreak() << Duration(stats.standardDeviation.point.count()) << ColumnBreak() << Duration(stats.standardDeviation.lower_bound.count()) << ColumnBreak() << Duration(stats.standardDeviation.upper_bound.count()) << ColumnBreak() << ColumnBreak() << ColumnBreak() << ColumnBreak() << ColumnBreak(); } } void ConsoleReporter::benchmarkFailed(StringRef error) { auto guard = m_colour->guardColour(Colour::Red).engage(m_stream); - (*m_tablePrinter) - << "Benchmark failed (" << error << ')' - << ColumnBreak() << RowBreak(); + (*m_tablePrinter) << "Benchmark failed (" << error << ')' << ColumnBreak() << RowBreak(); } void ConsoleReporter::testCaseEnded(TestCaseStats const& _testCaseStats) { @@ -7460,10 +6627,7 @@ namespace Catch { void ConsoleReporter::testRunStarting(TestRunInfo const& _testInfo) { StreamingReporterBase::testRunStarting(_testInfo); - if(m_config->testSpec().hasFilters()) { - m_stream << m_colour->guardColour(Colour::BrightYellow) << "Filters: " - << m_config->testSpec() << '\n'; - } + if(m_config->testSpec().hasFilters()) { m_stream << m_colour->guardColour(Colour::BrightYellow) << "Filters: " << m_config->testSpec() << '\n'; } m_stream << "Randomness seeded to: " << getSeed() << '\n'; } @@ -7481,12 +6645,7 @@ namespace Catch { } void ConsoleReporter::lazyPrintRunInfo() { - m_stream << '\n' - << lineOfChars('~') << '\n' - << m_colour->guardColour(Colour::SecondaryText) - << currentTestRunInfo.name << " is a Catch2 v" << libraryVersion() - << " host application.\n" - << "Run with -? for options\n\n"; + m_stream << '\n' << lineOfChars('~') << '\n' << m_colour->guardColour(Colour::SecondaryText) << currentTestRunInfo.name << " is a Catch2 v" << libraryVersion() << " host application.\n" << "Run with -? for options\n\n"; m_testRunInfoPrinted = true; } @@ -7498,18 +6657,14 @@ namespace Catch { if(m_sectionStack.size() > 1) { auto guard = m_colour->guardColour(Colour::Headers).engage(m_stream); - auto - it = m_sectionStack.begin() + 1, // Skip first section (test case) - itEnd = m_sectionStack.end(); + auto it = m_sectionStack.begin() + 1, // Skip first section (test case) + itEnd = m_sectionStack.end(); for(; it != itEnd; ++it) printHeaderString(it->name, 2); } SourceLineInfo lineInfo = m_sectionStack.back().lineInfo; - m_stream << lineOfChars('-') << '\n' - << m_colour->guardColour(Colour::FileName) << lineInfo << '\n' - << lineOfChars('.') << "\n\n" - << std::flush; + m_stream << lineOfChars('-') << '\n' << m_colour->guardColour(Colour::FileName) << lineInfo << '\n' << lineOfChars('.') << "\n\n" << std::flush; } void ConsoleReporter::printClosedHeader(std::string const& _name) { @@ -7549,10 +6704,7 @@ namespace Catch { std::size_t idx = _string.find(": "); if(idx != std::string::npos && idx < CATCH_CONFIG_CONSOLE_WIDTH / 4) { idx += 2; } else { idx = 0; } - m_stream << TextFlow::Column(_string) - .indent(indent + idx) - .initialIndent(indent) - << '\n'; + m_stream << TextFlow::Column(_string).indent(indent + idx).initialIndent(indent) << '\n'; } void ConsoleReporter::printTotalsDivider(Totals const& totals) { @@ -7564,25 +6716,12 @@ namespace Catch { while(failedRatio + failedButOkRatio + passedRatio + skippedRatio < CATCH_CONFIG_CONSOLE_WIDTH - 1) findMax(failedRatio, failedButOkRatio, passedRatio, skippedRatio)++; while(failedRatio + failedButOkRatio + passedRatio > CATCH_CONFIG_CONSOLE_WIDTH - 1) findMax(failedRatio, failedButOkRatio, passedRatio, skippedRatio)--; - m_stream << m_colour->guardColour(Colour::Error) - << std::string(failedRatio, '=') - << m_colour->guardColour(Colour::ResultExpectedFailure) - << std::string(failedButOkRatio, '='); - if(totals.testCases.allPassed()) { - m_stream << m_colour->guardColour(Colour::ResultSuccess) - << std::string(passedRatio, '='); - } - else { - m_stream << m_colour->guardColour(Colour::Success) - << std::string(passedRatio, '='); - } - m_stream << m_colour->guardColour(Colour::Skip) - << std::string(skippedRatio, '='); - } - else { - m_stream << m_colour->guardColour(Colour::Warning) - << std::string(CATCH_CONFIG_CONSOLE_WIDTH - 1, '='); + m_stream << m_colour->guardColour(Colour::Error) << std::string(failedRatio, '=') << m_colour->guardColour(Colour::ResultExpectedFailure) << std::string(failedButOkRatio, '='); + if(totals.testCases.allPassed()) { m_stream << m_colour->guardColour(Colour::ResultSuccess) << std::string(passedRatio, '='); } + else { m_stream << m_colour->guardColour(Colour::Success) << std::string(passedRatio, '='); } + m_stream << m_colour->guardColour(Colour::Skip) << std::string(skippedRatio, '='); } + else { m_stream << m_colour->guardColour(Colour::Warning) << std::string(CATCH_CONFIG_CONSOLE_WIDTH - 1, '='); } m_stream << '\n'; } } // end namespace Catch @@ -7605,16 +6744,9 @@ namespace Catch { : m_other(other) {} BySectionInfo(BySectionInfo const& other) - : - m_other(other.m_other) {} - - bool operator()( - Detail::unique_ptr const& - node) const { - return ( - (node->stats.sectionInfo.name == m_other.name) && - (node->stats.sectionInfo.lineInfo == m_other.lineInfo)); - } + : m_other(other.m_other) {} + + bool operator()(Detail::unique_ptr const& node) const { return ((node->stats.sectionInfo.name == m_other.name) && (node->stats.sectionInfo.lineInfo == m_other.lineInfo)); } void operator=(BySectionInfo const&) = delete; @@ -7624,15 +6756,11 @@ namespace Catch { } // namespace namespace Detail { - AssertionOrBenchmarkResult::AssertionOrBenchmarkResult( - AssertionStats const& assertion) - : - m_assertion(assertion) {} + AssertionOrBenchmarkResult::AssertionOrBenchmarkResult(AssertionStats const& assertion) + : m_assertion(assertion) {} - AssertionOrBenchmarkResult::AssertionOrBenchmarkResult( - BenchmarkStats<> const& benchmark) - : - m_benchmark(benchmark) {} + AssertionOrBenchmarkResult::AssertionOrBenchmarkResult(BenchmarkStats<> const& benchmark) + : m_benchmark(benchmark) {} bool AssertionOrBenchmarkResult::isAssertion() const { return m_assertion.some(); } @@ -7660,20 +6788,14 @@ namespace Catch { SectionStats incompleteStats(SectionInfo(sectionInfo), Counts(), 0, false); SectionNode* node; if(m_sectionStack.empty()) { - if(!m_rootSection) { - m_rootSection = - Detail::make_unique(incompleteStats); - } + if(!m_rootSection) { m_rootSection = Detail::make_unique(incompleteStats); } node = m_rootSection.get(); } else { SectionNode& parentNode = *m_sectionStack.back(); - auto it = std::find_if(parentNode.childSections.begin(), - parentNode.childSections.end(), - BySectionInfo(sectionInfo)); + auto it = std::find_if(parentNode.childSections.begin(), parentNode.childSections.end(), BySectionInfo(sectionInfo)); if(it == parentNode.childSections.end()) { - auto newNode = - Detail::make_unique(incompleteStats); + auto newNode = Detail::make_unique(incompleteStats); node = newNode.get(); parentNode.childSections.push_back(CATCH_MOVE(newNode)); } @@ -7684,24 +6806,15 @@ namespace Catch { m_sectionStack.push_back(node); } - void CumulativeReporterBase::assertionEnded( - AssertionStats const& assertionStats) { + void CumulativeReporterBase::assertionEnded(AssertionStats const& assertionStats) { assert(!m_sectionStack.empty()); // AssertionResult holds a pointer to a temporary DecomposedExpression, // which getExpandedExpression() calls to build the expression string. // Our section stack copy of the assertionResult will likely outlive the // temporary, so it must be expanded or discarded now to avoid calling // a destroyed object later. - if(m_shouldStoreFailedAssertions && - !assertionStats.assertionResult.isOk()) { - static_cast( - assertionStats.assertionResult.getExpandedExpression()); - } - if(m_shouldStoreSuccesfulAssertions && - assertionStats.assertionResult.isOk()) { - static_cast( - assertionStats.assertionResult.getExpandedExpression()); - } + if(m_shouldStoreFailedAssertions && !assertionStats.assertionResult.isOk()) { static_cast(assertionStats.assertionResult.getExpandedExpression()); } + if(m_shouldStoreSuccesfulAssertions && assertionStats.assertionResult.isOk()) { static_cast(assertionStats.assertionResult.getExpandedExpression()); } SectionNode& sectionNode = *m_sectionStack.back(); sectionNode.assertionsAndBenchmarks.emplace_back(assertionStats); } @@ -7713,8 +6826,7 @@ namespace Catch { m_sectionStack.pop_back(); } - void CumulativeReporterBase::testCaseEnded( - TestCaseStats const& testCaseStats) { + void CumulativeReporterBase::testCaseEnded(TestCaseStats const& testCaseStats) { auto node = Detail::make_unique(testCaseStats); assert(m_sectionStack.size() == 0); node->children.push_back(CATCH_MOVE(m_rootSection)); @@ -7732,12 +6844,7 @@ namespace Catch { testRunEndedCumulative(); } - bool CumulativeReporterBase::SectionNode::hasAnyAssertions() const { - return std::any_of( - assertionsAndBenchmarks.begin(), - assertionsAndBenchmarks.end(), - [](Detail::AssertionOrBenchmarkResult const& res) { return res.isAssertion(); }); - } + bool CumulativeReporterBase::SectionNode::hasAnyAssertions() const { return std::any_of(assertionsAndBenchmarks.begin(), assertionsAndBenchmarks.end(), [](Detail::AssertionOrBenchmarkResult const& res) { return res.isAssertion(); }); } } // end namespace Catch namespace Catch { @@ -7755,11 +6862,9 @@ namespace Catch { void EventListenerBase::assertionEnded(AssertionStats const&) {} - void EventListenerBase::listReporters( - std::vector const&) {} + void EventListenerBase::listReporters(std::vector const&) {} - void EventListenerBase::listListeners( - std::vector const&) {} + void EventListenerBase::listListeners(std::vector const&) {} void EventListenerBase::listTests(std::vector const&) {} @@ -7796,8 +6901,7 @@ namespace Catch { namespace Catch { namespace { - void listTestNamesOnly(std::ostream& out, - std::vector const& tests) { + void listTestNamesOnly(std::ostream& out, std::vector const& tests) { for(auto const& test : tests) { auto const& testCaseInfo = test.getTestCaseInfo(); @@ -7824,8 +6928,7 @@ namespace Catch { // Save previous errno, to prevent sprintf from overwriting it ErrnoGuard guard; #ifdef _MSC_VER - size_t printedLength = static_cast( - sprintf_s(buffer, "%.3f", duration)); + size_t printedLength = static_cast(sprintf_s(buffer, "%.3f", duration)); #else size_t printedLength = static_cast( std::snprintf( buffer, maxDoubleSize, "%.3f", duration ) ); @@ -7863,73 +6966,30 @@ namespace Catch { return out; } - void defaultListReporters(std::ostream& out, - std::vector const& descriptions, - Verbosity verbosity) { + void defaultListReporters(std::ostream& out, std::vector const& descriptions, Verbosity verbosity) { out << "Available reporters:\n"; - const auto maxNameLen = - std::max_element(descriptions.begin(), - descriptions.end(), - [](ReporterDescription const& lhs, - ReporterDescription const& rhs) { - return lhs.name.size() < rhs.name.size(); - }) - ->name.size(); + const auto maxNameLen = std::max_element(descriptions.begin(), descriptions.end(), [](ReporterDescription const& lhs, ReporterDescription const& rhs) { return lhs.name.size() < rhs.name.size(); })->name.size(); for(auto const& desc : descriptions) { - if(verbosity == Verbosity::Quiet) { - out << TextFlow::Column(desc.name) - .indent(2) - .width(5 + maxNameLen) - << '\n'; - } - else { - out << TextFlow::Column(desc.name + ':') - .indent(2) - .width(5 + maxNameLen) + - TextFlow::Column(desc.description) - .initialIndent(0) - .indent(2) - .width(CATCH_CONFIG_CONSOLE_WIDTH - maxNameLen - 8) - << '\n'; - } + if(verbosity == Verbosity::Quiet) { out << TextFlow::Column(desc.name).indent(2).width(5 + maxNameLen) << '\n'; } + else { out << TextFlow::Column(desc.name + ':').indent(2).width(5 + maxNameLen) + TextFlow::Column(desc.description).initialIndent(0).indent(2).width(CATCH_CONFIG_CONSOLE_WIDTH - maxNameLen - 8) << '\n'; } } out << '\n' << std::flush; } - void defaultListListeners(std::ostream& out, - std::vector const& descriptions) { + void defaultListListeners(std::ostream& out, std::vector const& descriptions) { out << "Registered listeners:\n"; if(descriptions.empty()) { return; } - const auto maxNameLen = - std::max_element(descriptions.begin(), - descriptions.end(), - [](ListenerDescription const& lhs, - ListenerDescription const& rhs) { - return lhs.name.size() < rhs.name.size(); - }) - ->name.size(); + const auto maxNameLen = std::max_element(descriptions.begin(), descriptions.end(), [](ListenerDescription const& lhs, ListenerDescription const& rhs) { return lhs.name.size() < rhs.name.size(); })->name.size(); - for(auto const& desc : descriptions) { - out << TextFlow::Column(static_cast(desc.name) + - ':') - .indent(2) - .width(maxNameLen + 5) + - TextFlow::Column(desc.description) - .initialIndent(0) - .indent(2) - .width(CATCH_CONFIG_CONSOLE_WIDTH - maxNameLen - 8) - << '\n'; - } + for(auto const& desc : descriptions) { out << TextFlow::Column(static_cast(desc.name) + ':').indent(2).width(maxNameLen + 5) + TextFlow::Column(desc.description).initialIndent(0).indent(2).width(CATCH_CONFIG_CONSOLE_WIDTH - maxNameLen - 8) << '\n'; } out << '\n' << std::flush; } - void defaultListTags(std::ostream& out, - std::vector const& tags, - bool isFiltered) { + void defaultListTags(std::ostream& out, std::vector const& tags, bool isFiltered) { if(isFiltered) { out << "Tags for matching test cases:\n"; } else { out << "All available tags:\n"; } @@ -7937,10 +6997,7 @@ namespace Catch { ReusableStringStream rss; rss << " " << std::setw(2) << tagCount.count << " "; auto str = rss.str(); - auto wrapper = TextFlow::Column(tagCount.all()) - .initialIndent(0) - .indent(str.size()) - .width(CATCH_CONFIG_CONSOLE_WIDTH - 10); + auto wrapper = TextFlow::Column(tagCount.all()).initialIndent(0).indent(str.size()).width(CATCH_CONFIG_CONSOLE_WIDTH - 10); out << str << wrapper << '\n'; } out << pluralise(tags.size(), "tag"_sr) << "\n\n" << std::flush; @@ -7960,15 +7017,12 @@ namespace Catch { for(auto const& test : tests) { auto const& testCaseInfo = test.getTestCaseInfo(); - Colour::Code colour = testCaseInfo.isHidden() - ? Colour::SecondaryText - : Colour::None; + Colour::Code colour = testCaseInfo.isHidden() ? Colour::SecondaryText : Colour::None; auto colourGuard = streamColour->guardColour(colour).engage(out); out << TextFlow::Column(testCaseInfo.name).indent(2) << '\n'; if(verbosity >= Verbosity::High) { out << TextFlow::Column(Catch::Detail::stringify(testCaseInfo.lineInfo)).indent(4) << '\n'; } - if(!testCaseInfo.tags.empty() && - verbosity > Verbosity::Quiet) { out << TextFlow::Column(testCaseInfo.tagsAsString()).indent(6) << '\n'; } + if(!testCaseInfo.tags.empty() && verbosity > Verbosity::Quiet) { out << TextFlow::Column(testCaseInfo.tagsAsString()).indent(6) << '\n'; } } if(isFiltered) { out << pluralise(tests.size(), "matching test case"_sr); } @@ -7980,8 +7034,7 @@ namespace Catch { class SummaryColumn { public: SummaryColumn(std::string suffix, Colour::Code colour) - : - m_suffix(CATCH_MOVE(suffix)) + : m_suffix(CATCH_MOVE(suffix)) , m_colour(colour) {} SummaryColumn&& addRow(std::uint64_t count) && { @@ -8007,73 +7060,43 @@ namespace Catch { std::vector m_rows; }; - void printSummaryRow(std::ostream& stream, - ColourImpl& colour, - StringRef label, - std::vector const& cols, - std::size_t row) { + void printSummaryRow(std::ostream& stream, ColourImpl& colour, StringRef label, std::vector const& cols, std::size_t row) { for(auto const& col : cols) { auto const& value = col.getRow(row); auto const& suffix = col.getSuffix(); if(suffix.empty()) { stream << label << ": "; if(value != "0") { stream << value; } - else { - stream << colour.guardColour(Colour::Warning) - << "- none -"; - } - } - else if(value != "0") { - stream << colour.guardColour(Colour::LightGrey) << " | " - << colour.guardColour(col.getColour()) << value - << ' ' << suffix; + else { stream << colour.guardColour(Colour::Warning) << "- none -"; } } + else if(value != "0") { stream << colour.guardColour(Colour::LightGrey) << " | " << colour.guardColour(col.getColour()) << value << ' ' << suffix; } } stream << '\n'; } } // namespace - void printTestRunTotals(std::ostream& stream, - ColourImpl& streamColour, - Totals const& totals) { + void printTestRunTotals(std::ostream& stream, ColourImpl& streamColour, Totals const& totals) { if(totals.testCases.total() == 0) { - stream << streamColour.guardColour(Colour::Warning) - << "No tests ran\n"; + stream << streamColour.guardColour(Colour::Warning) << "No tests ran\n"; return; } if(totals.assertions.total() > 0 && totals.testCases.allPassed()) { - stream << streamColour.guardColour(Colour::ResultSuccess) - << "All tests passed"; - stream << " (" - << pluralise(totals.assertions.passed, "assertion"_sr) - << " in " - << pluralise(totals.testCases.passed, "test case"_sr) - << ')' << '\n'; + stream << streamColour.guardColour(Colour::ResultSuccess) << "All tests passed"; + stream << " (" << pluralise(totals.assertions.passed, "assertion"_sr) << " in " << pluralise(totals.testCases.passed, "test case"_sr) << ')' << '\n'; return; } std::vector columns; // Don't include "skipped assertions" in total count - const auto totalAssertionCount = - totals.assertions.total() - totals.assertions.skipped; - columns.push_back(SummaryColumn("", Colour::None) - .addRow(totals.testCases.total()) - .addRow(totalAssertionCount)); - columns.push_back(SummaryColumn("passed", Colour::Success) - .addRow(totals.testCases.passed) - .addRow(totals.assertions.passed)); - columns.push_back(SummaryColumn("failed", Colour::ResultError) - .addRow(totals.testCases.failed) - .addRow(totals.assertions.failed)); - columns.push_back(SummaryColumn("skipped", Colour::Skip) - .addRow(totals.testCases.skipped) - // Don't print "skipped assertions" - .addRow(0)); - columns.push_back( - SummaryColumn("failed as expected", Colour::ResultExpectedFailure) - .addRow(totals.testCases.failedButOk) - .addRow(totals.assertions.failedButOk)); + const auto totalAssertionCount = totals.assertions.total() - totals.assertions.skipped; + columns.push_back(SummaryColumn("", Colour::None).addRow(totals.testCases.total()).addRow(totalAssertionCount)); + columns.push_back(SummaryColumn("passed", Colour::Success).addRow(totals.testCases.passed).addRow(totals.assertions.passed)); + columns.push_back(SummaryColumn("failed", Colour::ResultError).addRow(totals.testCases.failed).addRow(totals.assertions.failed)); + columns.push_back(SummaryColumn("skipped", Colour::Skip).addRow(totals.testCases.skipped) + // Don't print "skipped assertions" + .addRow(0)); + columns.push_back(SummaryColumn("failed as expected", Colour::ResultExpectedFailure).addRow(totals.testCases.failedButOk).addRow(totals.assertions.failedButOk)); printSummaryRow(stream, streamColour, "test cases"_sr, columns, 0); printSummaryRow(stream, streamColour, "assertions"_sr, columns, 1); } @@ -8111,17 +7134,8 @@ namespace Catch { } std::string fileNameTag(std::vector const& tags) { - auto it = std::find_if(begin(tags), - end(tags), - [](Tag const& tag) { - return tag.original.size() > 0 - && tag.original[0] == '#'; - }); - if(it != tags.end()) { - return static_cast( - it->original.substr(1, it->original.size() - 1) - ); - } + auto it = std::find_if(begin(tags), end(tags), [](Tag const& tag) { return tag.original.size() > 0 && tag.original[0] == '#'; }); + if(it != tags.end()) { return static_cast(it->original.substr(1, it->original.size() - 1)); } return std::string(); } @@ -8200,14 +7214,8 @@ namespace Catch { // Write properties { auto properties = xml.scopedElement("properties"); - xml.scopedElement("property") - .writeAttribute("name"_sr, "random-seed"_sr) - .writeAttribute("value"_sr, m_config->rngSeed()); - if(m_config->testSpec().hasFilters()) { - xml.scopedElement("property") - .writeAttribute("name"_sr, "filters"_sr) - .writeAttribute("value"_sr, m_config->testSpec()); - } + xml.scopedElement("property").writeAttribute("name"_sr, "random-seed"_sr).writeAttribute("value"_sr, m_config->rngSeed()); + if(m_config->testSpec().hasFilters()) { xml.scopedElement("property").writeAttribute("name"_sr, "filters"_sr).writeAttribute("value"_sr, m_config->testSpec()); } } // Write test cases @@ -8225,8 +7233,7 @@ namespace Catch { assert(testCaseNode.children.size() == 1); SectionNode const& rootSection = *testCaseNode.children.front(); - std::string className = - static_cast(stats.testInfo->className); + std::string className = static_cast(stats.testInfo->className); if(className.empty()) { className = fileNameTag(stats.testInfo->tags); @@ -8240,16 +7247,11 @@ namespace Catch { writeSection(className, "", rootSection, stats.testInfo->okToFail()); } - void JunitReporter::writeSection(std::string const& className, - std::string const& rootName, - SectionNode const& sectionNode, - bool testOkToFail) { + void JunitReporter::writeSection(std::string const& className, std::string const& rootName, SectionNode const& sectionNode, bool testOkToFail) { std::string name = trim(sectionNode.stats.sectionInfo.name); if(!rootName.empty()) name = rootName + '/' + name; - if(sectionNode.hasAnyAssertions() - || !sectionNode.stdOut.empty() - || !sectionNode.stdErr.empty()) { + if(sectionNode.hasAnyAssertions() || !sectionNode.stdOut.empty() || !sectionNode.stdErr.empty()) { XmlWriter::ScopedElement e = xml.scopedElement("testcase"); if(className.empty()) { xml.writeAttribute("classname"_sr, name); @@ -8266,10 +7268,7 @@ namespace Catch { // events and write those out appropriately. xml.writeAttribute("status"_sr, "run"_sr); - if(sectionNode.stats.assertions.failedButOk) { - xml.scopedElement("skipped") - .writeAttribute("message", "TEST_CASE tagged with !mayfail"); - } + if(sectionNode.stats.assertions.failedButOk) { xml.scopedElement("skipped").writeAttribute("message", "TEST_CASE tagged with !mayfail"); } writeAssertions(sectionNode); @@ -8285,8 +7284,7 @@ namespace Catch { void JunitReporter::writeAssertion(AssertionStats const& stats) { AssertionResult const& result = stats.assertionResult; - if(!result.isOk() || - result.getResultType() == ResultWas::ExplicitSkip) { + if(!result.isOk() || result.getResultType() == ResultWas::ExplicitSkip) { std::string elementName; switch(result.getResultType()) { case ResultWas::ThrewException: @@ -8345,10 +7343,8 @@ namespace Catch { namespace Catch { void MultiReporter::updatePreferences(IEventListener const& reporterish) { - m_preferences.shouldRedirectStdOut |= - reporterish.getPreferences().shouldRedirectStdOut; - m_preferences.shouldReportAllAssertions |= - reporterish.getPreferences().shouldReportAllAssertions; + m_preferences.shouldRedirectStdOut |= reporterish.getPreferences().shouldRedirectStdOut; + m_preferences.shouldReportAllAssertions |= reporterish.getPreferences().shouldReportAllAssertions; } void MultiReporter::addListener(IEventListenerPtr&& listener) { @@ -8390,30 +7386,22 @@ namespace Catch { void MultiReporter::testCaseStarting(TestCaseInfo const& testInfo) { for(auto& reporterish : m_reporterLikes) { reporterish->testCaseStarting(testInfo); } } - void MultiReporter::testCasePartialStarting(TestCaseInfo const& testInfo, - uint64_t partNumber) { for(auto& reporterish : m_reporterLikes) { reporterish->testCasePartialStarting(testInfo, partNumber); } } + void MultiReporter::testCasePartialStarting(TestCaseInfo const& testInfo, uint64_t partNumber) { for(auto& reporterish : m_reporterLikes) { reporterish->testCasePartialStarting(testInfo, partNumber); } } void MultiReporter::sectionStarting(SectionInfo const& sectionInfo) { for(auto& reporterish : m_reporterLikes) { reporterish->sectionStarting(sectionInfo); } } void MultiReporter::assertionStarting(AssertionInfo const& assertionInfo) { for(auto& reporterish : m_reporterLikes) { reporterish->assertionStarting(assertionInfo); } } void MultiReporter::assertionEnded(AssertionStats const& assertionStats) { - const bool reportByDefault = - assertionStats.assertionResult.getResultType() != ResultWas::Ok || - m_config->includeSuccessfulResults(); + const bool reportByDefault = assertionStats.assertionResult.getResultType() != ResultWas::Ok || m_config->includeSuccessfulResults(); - for(auto& reporterish : m_reporterLikes) { - if(reportByDefault || - reporterish->getPreferences().shouldReportAllAssertions) { reporterish->assertionEnded(assertionStats); } - } + for(auto& reporterish : m_reporterLikes) { if(reportByDefault || reporterish->getPreferences().shouldReportAllAssertions) { reporterish->assertionEnded(assertionStats); } } } void MultiReporter::sectionEnded(SectionStats const& sectionStats) { for(auto& reporterish : m_reporterLikes) { reporterish->sectionEnded(sectionStats); } } - void MultiReporter::testCasePartialEnded(TestCaseStats const& testStats, - uint64_t partNumber) { - if(m_preferences.shouldRedirectStdOut && - m_haveNoncapturingReporters) { + void MultiReporter::testCasePartialEnded(TestCaseStats const& testStats, uint64_t partNumber) { + if(m_preferences.shouldRedirectStdOut && m_haveNoncapturingReporters) { if(!testStats.stdOut.empty()) { Catch::cout() << testStats.stdOut << std::flush; } if(!testStats.stdErr.empty()) { Catch::cerr() << testStats.stdErr << std::flush; } } @@ -8429,8 +7417,7 @@ namespace Catch { void MultiReporter::listReporters(std::vector const& descriptions) { for(auto& reporterish : m_reporterLikes) { reporterish->listReporters(descriptions); } } - void MultiReporter::listListeners( - std::vector const& descriptions) { for(auto& reporterish : m_reporterLikes) { reporterish->listListeners(descriptions); } } + void MultiReporter::listListeners(std::vector const& descriptions) { for(auto& reporterish : m_reporterLikes) { reporterish->listListeners(descriptions); } } void MultiReporter::listTests(std::vector const& tests) { for(auto& reporterish : m_reporterLikes) { reporterish->listTests(tests); } } @@ -8439,13 +7426,8 @@ namespace Catch { namespace Catch { namespace Detail { - void registerReporterImpl(std::string const& name, - IReporterFactoryPtr reporterPtr) { - CATCH_TRY { - getMutableRegistryHub().registerReporter( - name, CATCH_MOVE(reporterPtr)); - } - CATCH_CATCH_ALL { + void registerReporterImpl(std::string const& name, IReporterFactoryPtr reporterPtr) { + CATCH_TRY { getMutableRegistryHub().registerReporter(name, CATCH_MOVE(reporterPtr)); } CATCH_CATCH_ALL { // Do not throw when constructing global objects, instead // register the exception to be processed later getMutableRegistryHub().registerStartupException(); @@ -8462,11 +7444,7 @@ namespace Catch { namespace { std::string createMetadataString(IConfig const& config) { ReusableStringStream sstr; - if(config.testSpec().hasFilters()) { - sstr << "filters='" - << config.testSpec() - << "' "; - } + if(config.testSpec().hasFilters()) { sstr << "filters='" << config.testSpec() << "' "; } sstr << "rng-seed=" << config.rngSeed(); return sstr.str(); } @@ -8483,10 +7461,7 @@ namespace Catch { void SonarQubeReporter::writeRun(TestRunNode const& runNode) { std::map> testsPerFile; - for(auto const& child : runNode.children) { - testsPerFile[child->value.testInfo->lineInfo.file].push_back( - child.get()); - } + for(auto const& child : runNode.children) { testsPerFile[child->value.testInfo->lineInfo.file].push_back(child.get()); } for(auto const& kv : testsPerFile) { writeTestFile(kv.first, kv.second); } } @@ -8510,9 +7485,7 @@ namespace Catch { std::string name = trim(sectionNode.stats.sectionInfo.name); if(!rootName.empty()) name = rootName + '/' + name; - if(sectionNode.hasAnyAssertions() - || !sectionNode.stdOut.empty() - || !sectionNode.stdErr.empty()) { + if(sectionNode.hasAnyAssertions() || !sectionNode.stdOut.empty() || !sectionNode.stdErr.empty()) { XmlWriter::ScopedElement e = xml.scopedElement("testCase"); xml.writeAttribute("name"_sr, name); xml.writeAttribute("duration"_sr, static_cast(sectionNode.stats.durationInSeconds * 1000)); @@ -8527,8 +7500,7 @@ namespace Catch { void SonarQubeReporter::writeAssertion(AssertionStats const& stats, bool okToFail) { AssertionResult const& result = stats.assertionResult; - if(!result.isOk() || - result.getResultType() == ResultWas::ExplicitSkip) { + if(!result.isOk() || result.getResultType() == ResultWas::ExplicitSkip) { std::string elementName; if(okToFail) { elementName = "skipped"; } else { @@ -8691,8 +7663,7 @@ namespace Catch { void printExpressionWas() { if(result.hasExpression()) { stream << ';'; - stream << colourImpl->guardColour(tapDimColour) - << " expression was:"; + stream << colourImpl->guardColour(tapDimColour) << " expression was:"; printOriginalExpression(); } } @@ -8723,8 +7694,7 @@ namespace Catch { std::vector::const_iterator itEnd = messages.end(); const std::size_t N = static_cast(itEnd - itMessage); - stream << colourImpl->guardColour(colour) << " with " - << pluralise(N, "message"_sr) << ':'; + stream << colourImpl->guardColour(colour) << " with " << pluralise(N, "message"_sr) << ':'; for(; itMessage != itEnd;) { // If this assertion is a warning ignore any INFO messages @@ -8782,9 +7752,7 @@ namespace Catch { std::size_t i = _string.find(": "); if(i != std::string::npos) i += 2; else i = 0; - os << TextFlow::Column(_string) - .indent(indent + i) - .initialIndent(indent) << '\n'; + os << TextFlow::Column(_string).indent(indent + i).initialIndent(indent) << '\n'; } std::string escape(StringRef str) { @@ -8801,20 +7769,13 @@ namespace Catch { TeamCityReporter::~TeamCityReporter() {} - void TeamCityReporter::testRunStarting(TestRunInfo const& runInfo) { - m_stream << "##teamcity[testSuiteStarted name='" << escape(runInfo.name) - << "']\n"; - } + void TeamCityReporter::testRunStarting(TestRunInfo const& runInfo) { m_stream << "##teamcity[testSuiteStarted name='" << escape(runInfo.name) << "']\n"; } - void TeamCityReporter::testRunEnded(TestRunStats const& runStats) { - m_stream << "##teamcity[testSuiteFinished name='" - << escape(runStats.runInfo.name) << "']\n"; - } + void TeamCityReporter::testRunEnded(TestRunStats const& runStats) { m_stream << "##teamcity[testSuiteFinished name='" << escape(runStats.runInfo.name) << "']\n"; } void TeamCityReporter::assertionEnded(AssertionStats const& assertionStats) { AssertionResult const& result = assertionStats.assertionResult; - if(!result.isOk() || - result.getResultType() == ResultWas::ExplicitSkip) { + if(!result.isOk() || result.getResultType() == ResultWas::ExplicitSkip) { ReusableStringStream msg; if(!m_headerPrintedForThisSection) printSectionHeader(msg.get()); m_headerPrintedForThisSection = true; @@ -8844,24 +7805,17 @@ namespace Catch { // We shouldn't get here because of the isOk() test case ResultWas::Ok: case ResultWas::Info: - case ResultWas::Warning: - CATCH_ERROR("Internal error in TeamCity reporter"); + case ResultWas::Warning: CATCH_ERROR("Internal error in TeamCity reporter"); // These cases are here to prevent compiler warnings case ResultWas::Unknown: case ResultWas::FailureBit: - case ResultWas::Exception: - CATCH_ERROR("Not implemented"); + case ResultWas::Exception: CATCH_ERROR("Not implemented"); } if(assertionStats.infoMessages.size() == 1) msg << " with message:"; if(assertionStats.infoMessages.size() > 1) msg << " with messages:"; for(auto const& messageInfo : assertionStats.infoMessages) msg << "\n \"" << messageInfo.message << '"'; - if(result.hasExpression()) { - msg << - "\n " << result.getExpressionInMacro() << "\n" - "with expansion:\n" - " " << result.getExpandedExpression() << '\n'; - } + if(result.hasExpression()) { msg << "\n " << result.getExpressionInMacro() << "\n" "with expansion:\n" " " << result.getExpandedExpression() << '\n'; } if(result.getResultType() == ResultWas::ExplicitSkip) { m_stream << "##teamcity[testIgnored"; } else if(currentTestCaseInfo->okToFail()) { @@ -8869,8 +7823,7 @@ namespace Catch { m_stream << "##teamcity[testIgnored"; } else { m_stream << "##teamcity[testFailed"; } - m_stream << " name='" << escape(currentTestCaseInfo->name) << '\'' - << " message='" << escape(msg.str()) << '\'' << "]\n"; + m_stream << " name='" << escape(currentTestCaseInfo->name) << '\'' << " message='" << escape(msg.str()) << '\'' << "]\n"; } m_stream.flush(); } @@ -8878,25 +7831,16 @@ namespace Catch { void TeamCityReporter::testCaseStarting(TestCaseInfo const& testInfo) { m_testTimer.start(); StreamingReporterBase::testCaseStarting(testInfo); - m_stream << "##teamcity[testStarted name='" - << escape(testInfo.name) << "']\n"; + m_stream << "##teamcity[testStarted name='" << escape(testInfo.name) << "']\n"; m_stream.flush(); } void TeamCityReporter::testCaseEnded(TestCaseStats const& testCaseStats) { StreamingReporterBase::testCaseEnded(testCaseStats); auto const& testCaseInfo = *testCaseStats.testInfo; - if(!testCaseStats.stdOut.empty()) - m_stream << "##teamcity[testStdOut name='" - << escape(testCaseInfo.name) - << "' out='" << escape(testCaseStats.stdOut) << "']\n"; - if(!testCaseStats.stdErr.empty()) - m_stream << "##teamcity[testStdErr name='" - << escape(testCaseInfo.name) - << "' out='" << escape(testCaseStats.stdErr) << "']\n"; - m_stream << "##teamcity[testFinished name='" - << escape(testCaseInfo.name) << "' duration='" - << m_testTimer.getElapsedMilliseconds() << "']\n"; + if(!testCaseStats.stdOut.empty()) m_stream << "##teamcity[testStdOut name='" << escape(testCaseInfo.name) << "' out='" << escape(testCaseStats.stdOut) << "']\n"; + if(!testCaseStats.stdErr.empty()) m_stream << "##teamcity[testStdErr name='" << escape(testCaseInfo.name) << "' out='" << escape(testCaseStats.stdErr) << "']\n"; + m_stream << "##teamcity[testFinished name='" << escape(testCaseInfo.name) << "' duration='" << m_testTimer.getElapsedMilliseconds() << "']\n"; m_stream.flush(); } @@ -8906,9 +7850,8 @@ namespace Catch { if(m_sectionStack.size() > 1) { os << lineOfChars('-') << '\n'; - std::vector::const_iterator - it = m_sectionStack.begin() + 1, // Skip first section (test case) - itEnd = m_sectionStack.end(); + std::vector::const_iterator it = m_sectionStack.begin() + 1, // Skip first section (test case) + itEnd = m_sectionStack.end(); for(; it != itEnd; ++it) printHeaderString(os, it->name); os << lineOfChars('-') << '\n'; } @@ -8941,29 +7884,19 @@ namespace Catch { std::string XmlReporter::getStylesheetRef() const { return std::string(); } - void XmlReporter::writeSourceInfo(SourceLineInfo const& sourceInfo) { - m_xml - .writeAttribute("filename"_sr, sourceInfo.file) - .writeAttribute("line"_sr, sourceInfo.line); - } + void XmlReporter::writeSourceInfo(SourceLineInfo const& sourceInfo) { m_xml.writeAttribute("filename"_sr, sourceInfo.file).writeAttribute("line"_sr, sourceInfo.line); } void XmlReporter::testRunStarting(TestRunInfo const& testInfo) { StreamingReporterBase::testRunStarting(testInfo); std::string stylesheetRef = getStylesheetRef(); if(!stylesheetRef.empty()) m_xml.writeStylesheetRef(stylesheetRef); - m_xml.startElement("Catch2TestRun") - .writeAttribute("name"_sr, m_config->name()) - .writeAttribute("rng-seed"_sr, m_config->rngSeed()) - .writeAttribute("xml-format-version"_sr, 3) - .writeAttribute("catch2-version"_sr, libraryVersion()); + m_xml.startElement("Catch2TestRun").writeAttribute("name"_sr, m_config->name()).writeAttribute("rng-seed"_sr, m_config->rngSeed()).writeAttribute("xml-format-version"_sr, 3).writeAttribute("catch2-version"_sr, libraryVersion()); if(m_config->testSpec().hasFilters()) { m_xml.writeAttribute("filters"_sr, m_config->testSpec()); } } void XmlReporter::testCaseStarting(TestCaseInfo const& testInfo) { StreamingReporterBase::testCaseStarting(testInfo); - m_xml.startElement("TestCase") - .writeAttribute("name"_sr, trim(StringRef(testInfo.name))) - .writeAttribute("tags"_sr, testInfo.tagsAsString()); + m_xml.startElement("TestCase").writeAttribute("name"_sr, trim(StringRef(testInfo.name))).writeAttribute("tags"_sr, testInfo.tagsAsString()); writeSourceInfo(testInfo.lineInfo); @@ -8974,8 +7907,7 @@ namespace Catch { void XmlReporter::sectionStarting(SectionInfo const& sectionInfo) { StreamingReporterBase::sectionStarting(sectionInfo); if(m_sectionDepth++ > 0) { - m_xml.startElement("Section") - .writeAttribute("name"_sr, trim(StringRef(sectionInfo.name))); + m_xml.startElement("Section").writeAttribute("name"_sr, trim(StringRef(sectionInfo.name))); writeSourceInfo(sectionInfo.lineInfo); m_xml.ensureTagClosed(); } @@ -9005,21 +7937,16 @@ namespace Catch { } // Drop out if result was successful but we're not printing them. - if(!includeResults && result.getResultType() != ResultWas::Warning && - result.getResultType() != ResultWas::ExplicitSkip) { return; } + if(!includeResults && result.getResultType() != ResultWas::Warning && result.getResultType() != ResultWas::ExplicitSkip) { return; } // Print the expression if there is one. if(result.hasExpression()) { - m_xml.startElement("Expression") - .writeAttribute("success"_sr, result.succeeded()) - .writeAttribute("type"_sr, result.getTestMacroName()); + m_xml.startElement("Expression").writeAttribute("success"_sr, result.succeeded()).writeAttribute("type"_sr, result.getTestMacroName()); writeSourceInfo(result.getSourceInfo()); - m_xml.scopedElement("Original") - .writeText(result.getExpression()); - m_xml.scopedElement("Expanded") - .writeText(result.getExpandedExpression()); + m_xml.scopedElement("Original").writeText(result.getExpression()); + m_xml.scopedElement("Expanded").writeText(result.getExpandedExpression()); } // And... Print a result applicable to each result type. @@ -9037,8 +7964,7 @@ namespace Catch { m_xml.endElement(); break; case ResultWas::Info: - m_xml.scopedElement("Info") - .writeText(result.getMessage()); + m_xml.scopedElement("Info").writeText(result.getMessage()); break; case ResultWas::Warning: // Warning will already have been written @@ -9094,59 +8020,27 @@ namespace Catch { void XmlReporter::testRunEnded(TestRunStats const& testRunStats) { StreamingReporterBase::testRunEnded(testRunStats); - m_xml.scopedElement("OverallResults") - .writeAttribute("successes"_sr, testRunStats.totals.assertions.passed) - .writeAttribute("failures"_sr, testRunStats.totals.assertions.failed) - .writeAttribute("expectedFailures"_sr, testRunStats.totals.assertions.failedButOk) - .writeAttribute("skips"_sr, testRunStats.totals.assertions.skipped); - m_xml.scopedElement("OverallResultsCases") - .writeAttribute("successes"_sr, testRunStats.totals.testCases.passed) - .writeAttribute("failures"_sr, testRunStats.totals.testCases.failed) - .writeAttribute("expectedFailures"_sr, testRunStats.totals.testCases.failedButOk) - .writeAttribute("skips"_sr, testRunStats.totals.testCases.skipped); + m_xml.scopedElement("OverallResults").writeAttribute("successes"_sr, testRunStats.totals.assertions.passed).writeAttribute("failures"_sr, testRunStats.totals.assertions.failed).writeAttribute("expectedFailures"_sr, testRunStats.totals.assertions.failedButOk).writeAttribute("skips"_sr, testRunStats.totals.assertions.skipped); + m_xml.scopedElement("OverallResultsCases").writeAttribute("successes"_sr, testRunStats.totals.testCases.passed).writeAttribute("failures"_sr, testRunStats.totals.testCases.failed).writeAttribute("expectedFailures"_sr, testRunStats.totals.testCases.failedButOk).writeAttribute("skips"_sr, testRunStats.totals.testCases.skipped); m_xml.endElement(); } - void XmlReporter::benchmarkPreparing(StringRef name) { - m_xml.startElement("BenchmarkResults") - .writeAttribute("name"_sr, name); - } + void XmlReporter::benchmarkPreparing(StringRef name) { m_xml.startElement("BenchmarkResults").writeAttribute("name"_sr, name); } - void XmlReporter::benchmarkStarting(BenchmarkInfo const& info) { - m_xml.writeAttribute("samples"_sr, info.samples) - .writeAttribute("resamples"_sr, info.resamples) - .writeAttribute("iterations"_sr, info.iterations) - .writeAttribute("clockResolution"_sr, info.clockResolution) - .writeAttribute("estimatedDuration"_sr, info.estimatedDuration) - .writeComment("All values in nano seconds"_sr); - } + void XmlReporter::benchmarkStarting(BenchmarkInfo const& info) { m_xml.writeAttribute("samples"_sr, info.samples).writeAttribute("resamples"_sr, info.resamples).writeAttribute("iterations"_sr, info.iterations).writeAttribute("clockResolution"_sr, info.clockResolution).writeAttribute("estimatedDuration"_sr, info.estimatedDuration).writeComment("All values in nano seconds"_sr); } void XmlReporter::benchmarkEnded(BenchmarkStats<> const& benchmarkStats) { - m_xml.startElement("mean") - .writeAttribute("value"_sr, benchmarkStats.mean.point.count()) - .writeAttribute("lowerBound"_sr, benchmarkStats.mean.lower_bound.count()) - .writeAttribute("upperBound"_sr, benchmarkStats.mean.upper_bound.count()) - .writeAttribute("ci"_sr, benchmarkStats.mean.confidence_interval); + m_xml.startElement("mean").writeAttribute("value"_sr, benchmarkStats.mean.point.count()).writeAttribute("lowerBound"_sr, benchmarkStats.mean.lower_bound.count()).writeAttribute("upperBound"_sr, benchmarkStats.mean.upper_bound.count()).writeAttribute("ci"_sr, benchmarkStats.mean.confidence_interval); m_xml.endElement(); - m_xml.startElement("standardDeviation") - .writeAttribute("value"_sr, benchmarkStats.standardDeviation.point.count()) - .writeAttribute("lowerBound"_sr, benchmarkStats.standardDeviation.lower_bound.count()) - .writeAttribute("upperBound"_sr, benchmarkStats.standardDeviation.upper_bound.count()) - .writeAttribute("ci"_sr, benchmarkStats.standardDeviation.confidence_interval); + m_xml.startElement("standardDeviation").writeAttribute("value"_sr, benchmarkStats.standardDeviation.point.count()).writeAttribute("lowerBound"_sr, benchmarkStats.standardDeviation.lower_bound.count()).writeAttribute("upperBound"_sr, benchmarkStats.standardDeviation.upper_bound.count()).writeAttribute("ci"_sr, benchmarkStats.standardDeviation.confidence_interval); m_xml.endElement(); - m_xml.startElement("outliers") - .writeAttribute("variance"_sr, benchmarkStats.outlierVariance) - .writeAttribute("lowMild"_sr, benchmarkStats.outliers.low_mild) - .writeAttribute("lowSevere"_sr, benchmarkStats.outliers.low_severe) - .writeAttribute("highMild"_sr, benchmarkStats.outliers.high_mild) - .writeAttribute("highSevere"_sr, benchmarkStats.outliers.high_severe); + m_xml.startElement("outliers").writeAttribute("variance"_sr, benchmarkStats.outlierVariance).writeAttribute("lowMild"_sr, benchmarkStats.outliers.low_mild).writeAttribute("lowSevere"_sr, benchmarkStats.outliers.low_severe).writeAttribute("highMild"_sr, benchmarkStats.outliers.high_mild).writeAttribute("highSevere"_sr, benchmarkStats.outliers.high_severe); m_xml.endElement(); m_xml.endElement(); } void XmlReporter::benchmarkFailed(StringRef error) { - m_xml.scopedElement("failed"). - writeAttribute("message"_sr, error); + m_xml.scopedElement("failed").writeAttribute("message"_sr, error); m_xml.endElement(); } @@ -9154,12 +8048,8 @@ namespace Catch { auto outerTag = m_xml.scopedElement("AvailableReporters"); for(auto const& reporter : descriptions) { auto inner = m_xml.scopedElement("Reporter"); - m_xml.startElement("Name", XmlFormatting::Indent) - .writeText(reporter.name, XmlFormatting::None) - .endElement(XmlFormatting::Newline); - m_xml.startElement("Description", XmlFormatting::Indent) - .writeText(reporter.description, XmlFormatting::None) - .endElement(XmlFormatting::Newline); + m_xml.startElement("Name", XmlFormatting::Indent).writeText(reporter.name, XmlFormatting::None).endElement(XmlFormatting::Newline); + m_xml.startElement("Description", XmlFormatting::Indent).writeText(reporter.description, XmlFormatting::None).endElement(XmlFormatting::Newline); } } @@ -9167,12 +8057,8 @@ namespace Catch { auto outerTag = m_xml.scopedElement("RegisteredListeners"); for(auto const& listener : descriptions) { auto inner = m_xml.scopedElement("Listener"); - m_xml.startElement("Name", XmlFormatting::Indent) - .writeText(listener.name, XmlFormatting::None) - .endElement(XmlFormatting::Newline); - m_xml.startElement("Description", XmlFormatting::Indent) - .writeText(listener.description, XmlFormatting::None) - .endElement(XmlFormatting::Newline); + m_xml.startElement("Name", XmlFormatting::Indent).writeText(listener.name, XmlFormatting::None).endElement(XmlFormatting::Newline); + m_xml.startElement("Description", XmlFormatting::Indent).writeText(listener.description, XmlFormatting::None).endElement(XmlFormatting::Newline); } } @@ -9181,23 +8067,13 @@ namespace Catch { for(auto const& test : tests) { auto innerTag = m_xml.scopedElement("TestCase"); auto const& testInfo = test.getTestCaseInfo(); - m_xml.startElement("Name", XmlFormatting::Indent) - .writeText(testInfo.name, XmlFormatting::None) - .endElement(XmlFormatting::Newline); - m_xml.startElement("ClassName", XmlFormatting::Indent) - .writeText(testInfo.className, XmlFormatting::None) - .endElement(XmlFormatting::Newline); - m_xml.startElement("Tags", XmlFormatting::Indent) - .writeText(testInfo.tagsAsString(), XmlFormatting::None) - .endElement(XmlFormatting::Newline); + m_xml.startElement("Name", XmlFormatting::Indent).writeText(testInfo.name, XmlFormatting::None).endElement(XmlFormatting::Newline); + m_xml.startElement("ClassName", XmlFormatting::Indent).writeText(testInfo.className, XmlFormatting::None).endElement(XmlFormatting::Newline); + m_xml.startElement("Tags", XmlFormatting::Indent).writeText(testInfo.tagsAsString(), XmlFormatting::None).endElement(XmlFormatting::Newline); auto sourceTag = m_xml.scopedElement("SourceInfo"); - m_xml.startElement("File", XmlFormatting::Indent) - .writeText(testInfo.lineInfo.file, XmlFormatting::None) - .endElement(XmlFormatting::Newline); - m_xml.startElement("Line", XmlFormatting::Indent) - .writeText(std::to_string(testInfo.lineInfo.line), XmlFormatting::None) - .endElement(XmlFormatting::Newline); + m_xml.startElement("File", XmlFormatting::Indent).writeText(testInfo.lineInfo.file, XmlFormatting::None).endElement(XmlFormatting::Newline); + m_xml.startElement("Line", XmlFormatting::Indent).writeText(std::to_string(testInfo.lineInfo.line), XmlFormatting::None).endElement(XmlFormatting::Newline); } } @@ -9205,15 +8081,9 @@ namespace Catch { auto outerTag = m_xml.scopedElement("TagsFromMatchingTests"); for(auto const& tag : tags) { auto innerTag = m_xml.scopedElement("Tag"); - m_xml.startElement("Count", XmlFormatting::Indent) - .writeText(std::to_string(tag.count), XmlFormatting::None) - .endElement(XmlFormatting::Newline); + m_xml.startElement("Count", XmlFormatting::Indent).writeText(std::to_string(tag.count), XmlFormatting::None).endElement(XmlFormatting::Newline); auto aliasTag = m_xml.scopedElement("Aliases"); - for(auto const& alias : tag.spellings) { - m_xml.startElement("Alias", XmlFormatting::Indent) - .writeText(alias, XmlFormatting::None) - .endElement(XmlFormatting::Newline); - } + for(auto const& alias : tag.spellings) { m_xml.startElement("Alias", XmlFormatting::Indent).writeText(alias, XmlFormatting::None).endElement(XmlFormatting::Newline); } } } } // end namespace Catch diff --git a/Include/ensmallen/ensmallen.hpp b/Include/ensmallen/ensmallen.hpp index a1338e819..bacc21026 100644 --- a/Include/ensmallen/ensmallen.hpp +++ b/Include/ensmallen/ensmallen.hpp @@ -97,6 +97,8 @@ #include "ensmallen_bits/aug_lagrangian/aug_lagrangian.hpp" #include "ensmallen_bits/bigbatch_sgd/bigbatch_sgd.hpp" #include "ensmallen_bits/cmaes/cmaes.hpp" +#include "ensmallen_bits/cmaes/active_cmaes.hpp" +#include "ensmallen_bits/cd/cd.hpp" #include "ensmallen_bits/cne/cne.hpp" #include "ensmallen_bits/de/de.hpp" #include "ensmallen_bits/eve/eve.hpp" @@ -118,7 +120,6 @@ #include "ensmallen_bits/sa/sa.hpp" #include "ensmallen_bits/sarah/sarah.hpp" -#include "ensmallen_bits/scd/scd.hpp" #include "ensmallen_bits/sdp/sdp.hpp" #include "ensmallen_bits/sdp/lrsdp.hpp" #include "ensmallen_bits/sdp/primal_dual.hpp" diff --git a/Include/ensmallen/ensmallen_bits/scd/scd.hpp b/Include/ensmallen/ensmallen_bits/cd/cd.hpp similarity index 84% rename from Include/ensmallen/ensmallen_bits/scd/scd.hpp rename to Include/ensmallen/ensmallen_bits/cd/cd.hpp index 1d0562d8e..062a210bc 100644 --- a/Include/ensmallen/ensmallen_bits/scd/scd.hpp +++ b/Include/ensmallen/ensmallen_bits/cd/cd.hpp @@ -1,16 +1,16 @@ /** - * @file scd.hpp + * @file cd.hpp * @author Shikhar Bhardwaj * - * Stochastic Coordinate Descent (SCD). + * Coordinate Descent (CD). * * ensmallen is free software; you may redistribute it and/or modify it under * the terms of the 3-clause BSD license. You should have received a copy of * the 3-clause BSD license along with ensmallen. If not, see * http://www.opensource.org/licenses/BSD-3-Clause for more information. */ -#ifndef ENSMALLEN_SCD_SCD_HPP -#define ENSMALLEN_SCD_SCD_HPP +#ifndef ENSMALLEN_CD_CD_HPP +#define ENSMALLEN_CD_CD_HPP #include "descent_policies/cyclic_descent.hpp" #include "descent_policies/random_descent.hpp" @@ -42,7 +42,7 @@ namespace ens { * } * @endcode * - * SCD can optimize partially differentiable functions. For more details, see + * CD can optimize partially differentiable functions. For more details, see * the documentation on function types included with this distribution or on the * ensmallen website. * @@ -50,11 +50,11 @@ namespace ens { * coordinate for descent is selected. */ template -class SCD +class CD { public: /** - * Construct the SCD optimizer with the given function and parameters. The + * Construct the CD optimizer with the given function and parameters. The * default value here are not necessarily good for every problem, so it is * suggested that the values used are tailored for the task at hand. The * maximum number of iterations refers to the maximum number of "descents" @@ -70,11 +70,11 @@ class SCD * @param descentPolicy The policy to use for picking up the coordinate to * descend on. */ - SCD(const double stepSize = 0.01, - const size_t maxIterations = 100000, - const double tolerance = 1e-5, - const size_t updateInterval = 1e3, - const DescentPolicyType descentPolicy = DescentPolicyType()); + CD(const double stepSize = 0.01, + const size_t maxIterations = 100000, + const double tolerance = 1e-5, + const size_t updateInterval = 1e3, + const DescentPolicyType descentPolicy = DescentPolicyType()); /** * Optimize the given function using stochastic coordinate descent. The @@ -158,6 +158,24 @@ class SCD } // namespace ens // Include implementation. -#include "scd_impl.hpp" +#include "cd_impl.hpp" + +namespace ens { + +/** + * Backwards-compatibility alias; this can be removed after ensmallen 3.10.0. + * The history here is that CD was originally named SCD, but that is an + * inaccurate name because this is not a stochastic technique; thus, it was + * renamed SCD. + */ +template +using SCD = CD; + +// Convenience typedefs. +using RandomCD = CD; +using GreedyCD = CD; +using CyclicCD = CD; + +} // namespace ens #endif diff --git a/Include/ensmallen/ensmallen_bits/scd/scd_impl.hpp b/Include/ensmallen/ensmallen_bits/cd/cd_impl.hpp similarity index 88% rename from Include/ensmallen/ensmallen_bits/scd/scd_impl.hpp rename to Include/ensmallen/ensmallen_bits/cd/cd_impl.hpp index eec0672af..f7d860a54 100644 --- a/Include/ensmallen/ensmallen_bits/scd/scd_impl.hpp +++ b/Include/ensmallen/ensmallen_bits/cd/cd_impl.hpp @@ -1,26 +1,26 @@ /** - * @file scd_impl.hpp + * @file cd_impl.hpp * @author Shikhar Bhardwaj * - * Implementation of stochastic coordinate descent. + * Implementation of coordinate descent. * * ensmallen is free software; you may redistribute it and/or modify it under * the terms of the 3-clause BSD license. You should have received a copy of * the 3-clause BSD license along with ensmallen. If not, see * http://www.opensource.org/licenses/BSD-3-Clause for more information. */ -#ifndef ENSMALLEN_SCD_SCD_IMPL_HPP -#define ENSMALLEN_SCD_SCD_IMPL_HPP +#ifndef ENSMALLEN_CD_CD_IMPL_HPP +#define ENSMALLEN_CD_CD_IMPL_HPP // In case it hasn't been included yet. -#include "scd.hpp" +#include "cd.hpp" #include namespace ens { template -SCD::SCD( +CD::CD( const double stepSize, const size_t maxIterations, const double tolerance, @@ -41,7 +41,7 @@ template typename std::enable_if::value, typename MatType::elem_type>::type -SCD::Optimize( +CD::Optimize( ResolvableFunctionType& function, MatType& iterateIn, CallbackTypes&&... callbacks) @@ -94,12 +94,12 @@ SCD::Optimize( overallObjective, callbacks...); // Output current objective function. - Info << "SCD: iteration " << i << ", objective " << overallObjective + Info << "CD: iteration " << i << ", objective " << overallObjective << "." << std::endl; if (std::isnan(overallObjective) || std::isinf(overallObjective)) { - Warn << "SCD: converged to " << overallObjective << "; terminating" + Warn << "CD: converged to " << overallObjective << "; terminating" << " with failure. Try a smaller step size?" << std::endl; Callback::EndOptimization(*this, function, iterate, callbacks...); @@ -108,7 +108,7 @@ SCD::Optimize( if (std::abs(lastObjective - overallObjective) < tolerance) { - Info << "SCD: minimized within tolerance " << tolerance << "; " + Info << "CD: minimized within tolerance " << tolerance << "; " << "terminating optimization." << std::endl; Callback::EndOptimization(*this, function, iterate, callbacks...); @@ -119,7 +119,7 @@ SCD::Optimize( } } - Info << "SCD: maximum iterations (" << maxIterations << ") reached; " + Info << "CD: maximum iterations (" << maxIterations << ") reached; " << "terminating optimization." << std::endl; // Calculate and return final objective. diff --git a/Include/ensmallen/ensmallen_bits/scd/descent_policies/cyclic_descent.hpp b/Include/ensmallen/ensmallen_bits/cd/descent_policies/cyclic_descent.hpp similarity index 100% rename from Include/ensmallen/ensmallen_bits/scd/descent_policies/cyclic_descent.hpp rename to Include/ensmallen/ensmallen_bits/cd/descent_policies/cyclic_descent.hpp diff --git a/Include/ensmallen/ensmallen_bits/scd/descent_policies/greedy_descent.hpp b/Include/ensmallen/ensmallen_bits/cd/descent_policies/greedy_descent.hpp similarity index 100% rename from Include/ensmallen/ensmallen_bits/scd/descent_policies/greedy_descent.hpp rename to Include/ensmallen/ensmallen_bits/cd/descent_policies/greedy_descent.hpp diff --git a/Include/ensmallen/ensmallen_bits/scd/descent_policies/random_descent.hpp b/Include/ensmallen/ensmallen_bits/cd/descent_policies/random_descent.hpp similarity index 100% rename from Include/ensmallen/ensmallen_bits/scd/descent_policies/random_descent.hpp rename to Include/ensmallen/ensmallen_bits/cd/descent_policies/random_descent.hpp diff --git a/Include/ensmallen/ensmallen_bits/cmaes/active_cmaes.hpp b/Include/ensmallen/ensmallen_bits/cmaes/active_cmaes.hpp new file mode 100644 index 000000000..1edec07c2 --- /dev/null +++ b/Include/ensmallen/ensmallen_bits/cmaes/active_cmaes.hpp @@ -0,0 +1,219 @@ +/** + * @file active_cmaes.hpp + * @author Marcus Edel + * @author Suvarsha Chennareddy + * + * Definition of the Active Covariance Matrix Adaptation Evolution Strategy + * as proposed by G.A Jastrebski and D.V Arnold in "Improving Evolution + * Strategies through Active Covariance Matrix Adaptation". + * + * ensmallen is free software; you may redistribute it and/or modify it under + * the terms of the 3-clause BSD license. You should have received a copy of + * the 3-clause BSD license along with ensmallen. If not, see + * http://www.opensource.org/licenses/BSD-3-Clause for more information. + */ +#ifndef ENSMALLEN_CMAES_ACTIVE_CMAES_HPP +#define ENSMALLEN_CMAES_ACTIVE_CMAES_HPP + +#include "full_selection.hpp" +#include "random_selection.hpp" +#include "transformation_policies/empty_transformation.hpp" +#include "transformation_policies/boundary_box_constraint.hpp" + +namespace ens { + +/** + * Active CMA-ES is a variant of the stochastic search algorithm + * CMA-ES - Covariance Matrix Adaptation Evolution Strategy. + * Active CMA-ES actively reduces the uncertainty in unfavourable directions by + * exploiting the information about bad mutations in the covariance matrix + * update step. This isn't for the purpose of accelerating progress, but + * instead for speeding up the adaptation of the covariance matrix (which, in + * turn, will lead to faster progress). + * + * For more information, please refer to: + * + * @code + * @INPROCEEDINGS{1688662, + * author={Jastrebski, G.A. and Arnold, D.V.}, + * booktitle={2006 IEEE International Conference on Evolutionary + Computation}, + * title={Improving Evolution Strategies through Active Covariance + Matrix Adaptation}, + * year={2006}, + * volume={}, + * number={}, + * pages={2814-2821}, + * doi={10.1109/CEC.2006.1688662}} + * @endcode + * + * Active CMA-ES can optimize separable functions. For more details, see the + * documentation on function types included with this distribution or on the + * ensmallen website. + * + * @tparam SelectionPolicy The selection strategy used for the evaluation step. + * @tparam TransformationPolicy The transformation strategy used to + * map decision variables to the desired domain during fitness evaluation + * and termination. Use EmptyTransformation if the domain isn't bounded. + */ +template> +class ActiveCMAES +{ + public: + /** + * Construct the Active CMA-ES optimizer with the given function and parameters. The + * defaults here are not necessarily good for the given problem, so it is + * suggested that the values used be tailored to the task at hand. The + * maximum number of iterations refers to the maximum number of points that + * are processed (i.e., one iteration equals one point; one iteration does not + * equal one pass over the dataset). + * + * @param lambda The population size (0 use the default size). + * @param transformationPolicy Instantiated transformation policy used to + * map the coordinates to the desired domain. + * @param batchSize Batch size to use for the objective calculation. + * @param maxIterations Maximum number of iterations allowed (0 means no + * limit). + * @param tolerance Maximum absolute tolerance to terminate algorithm. + * @param selectionPolicy Instantiated selection policy used to calculate the + * objective. + * @param stepSize Starting sigma/step size (will be modified). + */ + ActiveCMAES( + const size_t lambda = 0, + const TransformationPolicyType& + transformationPolicy = TransformationPolicyType(), + const size_t batchSize = 32, + const size_t maxIterations = 1000, + const double tolerance = 1e-5, + const SelectionPolicyType& selectionPolicy = SelectionPolicyType(), + double stepSize = 0); + + /** + * Construct the Active CMA-ES optimizer with the given function and parameters + * (including lower and upper bounds). The defaults here are not necessarily + * good for the given problem, so it is suggested that the values used be + * tailored to the task at hand. The maximum number of iterations refers to + * the maximum number of points that are processed (i.e., one iteration + * equals one point; one iteration does not equal one pass over the dataset). + * + * @param lambda The population size(0 use the default size). + * @param lowerBound Lower bound of decision variables. + * @param upperBound Upper bound of decision variables. + * @param batchSize Batch size to use for the objective calculation. + * @param maxIterations Maximum number of iterations allowed(0 means no + limit). + * @param tolerance Maximum absolute tolerance to terminate algorithm. + * @param selectionPolicy Instantiated selection policy used to calculate the + * objective. + * @param stepSize Starting sigma/step size (will be modified). + */ + ActiveCMAES( + const size_t lambda = 0, + const double lowerBound = -10, + const double upperBound = 10, + const size_t batchSize = 32, + const size_t maxIterations = 1000, + const double tolerance = 1e-5, + const SelectionPolicyType& selectionPolicy = SelectionPolicyType(), + double stepSize = 0); + + /** + * Optimize the given function using Active CMA-ES. The given starting point will be + * modified to store the finishing point of the algorithm, and the final + * objective value is returned. + * + * @tparam SeparableFunctionType Type of the function to be optimized. + * @tparam MatType Type of matrix to optimize. + * @tparam CallbackTypes Types of callback functions. + * @param function Function to optimize. + * @param iterate Starting point (will be modified). + * @param callbacks Callback functions. + * @return Objective value of the final point. + */ + template + typename MatType::elem_type Optimize( + SeparableFunctionType& function, + MatType& iterate, + CallbackTypes&&... callbacks); + + //! Get the population size. + size_t PopulationSize() const { return lambda; } + //! Modify the population size. + size_t& PopulationSize() { return lambda; } + + //! Get the batch size. + size_t BatchSize() const { return batchSize; } + //! Modify the batch size. + size_t& BatchSize() { return batchSize; } + + //! Get the maximum number of iterations (0 indicates no limit). + size_t MaxIterations() const { return maxIterations; } + //! Modify the maximum number of iterations (0 indicates no limit). + size_t& MaxIterations() { return maxIterations; } + + //! Get the tolerance for termination. + double Tolerance() const { return tolerance; } + //! Modify the tolerance for termination. + double& Tolerance() { return tolerance; } + + //! Get the selection policy. + const SelectionPolicyType& SelectionPolicy() const { return selectionPolicy; } + //! Modify the selection policy. + SelectionPolicyType& SelectionPolicy() { return selectionPolicy; } + + //! Get the transformation policy. + const TransformationPolicyType& TransformationPolicy() const + { return transformationPolicy; } + //! Modify the transformation policy. + TransformationPolicyType& TransformationPolicy() + { return transformationPolicy; } + + //! Get the step size. + double StepSize() const + { return stepSize; } + //! Modify the step size. + double& StepSize() + { return stepSize; } + + private: + //! Population size. + size_t lambda; + + //! The batch size for processing. + size_t batchSize; + + //! The maximum number of allowed iterations. + size_t maxIterations; + + //! The tolerance for termination. + double tolerance; + + //! The selection policy used to calculate the objective. + SelectionPolicyType selectionPolicy; + + //! The transformationPolicy used to map coordinates to the suitable domain + //! while evaluating fitness. This mapping is also done after optimization + //! has completed. + TransformationPolicyType transformationPolicy; + + //! The step size. + double stepSize; +}; + +/** + * Convenient typedef for Active CMAES approximation. + */ +template, + typename SelectionPolicyType = RandomSelection> +using ApproxActiveCMAES = ActiveCMAES; + +} // namespace ens + +// Include implementation. +#include "active_cmaes_impl.hpp" + +#endif diff --git a/Include/ensmallen/ensmallen_bits/cmaes/active_cmaes_impl.hpp b/Include/ensmallen/ensmallen_bits/cmaes/active_cmaes_impl.hpp new file mode 100644 index 000000000..8975038dd --- /dev/null +++ b/Include/ensmallen/ensmallen_bits/cmaes/active_cmaes_impl.hpp @@ -0,0 +1,367 @@ +/** + * @file active_cmaes_impl.hpp + * @author Marcus Edel + * @author Suvarsha Chennareddy + * + * Implementation of the Active Covariance Matrix Adaptation Evolution Strategy + * as proposed by G.A Jastrebski and D.V Arnold in "Improving Evolution + * Strategies through Active Covariance Matrix Adaptation". + * + * ensmallen is free software; you may redistribute it and/or modify it under + * the terms of the 3-clause BSD license. You should have received a copy of + * the 3-clause BSD license along with ensmallen. If not, see + * http://www.opensource.org/licenses/BSD-3-Clause for more information. + */ +#ifndef ENSMALLEN_CMAES_ACTIVE_CMAES_IMPL_HPP +#define ENSMALLEN_CMAES_ACTIVE_CMAES_IMPL_HPP + +// In case it hasn't been included yet. +#include "active_cmaes.hpp" + +#include "not_empty_transformation.hpp" +#include + +namespace ens { + +template +ActiveCMAES::ActiveCMAES( + const size_t lambda, + const TransformationPolicyType& + transformationPolicy, + const size_t batchSize, + const size_t maxIterations, + const double tolerance, + const SelectionPolicyType& selectionPolicy, + double stepSizeIn) : + lambda(lambda), + batchSize(batchSize), + maxIterations(maxIterations), + tolerance(tolerance), + selectionPolicy(selectionPolicy), + transformationPolicy(transformationPolicy), + stepSize(stepSizeIn) +{ /* Nothing to do. */ } + +template +ActiveCMAES::ActiveCMAES( + const size_t lambda, + const double lowerBound, + const double upperBound, + const size_t batchSize, + const size_t maxIterations, + const double tolerance, + const SelectionPolicyType& selectionPolicy, + double stepSizeIn) : + lambda(lambda), + batchSize(batchSize), + maxIterations(maxIterations), + tolerance(tolerance), + selectionPolicy(selectionPolicy), + stepSize(stepSizeIn) +{ + Warn << "This is a deprecated constructor and will be removed in a " + "future version of ensmallen" << std::endl; + NotEmptyTransformation> d; + d.Assign(transformationPolicy, lowerBound, upperBound); +} + +//! Optimize the function (minimize). +template +template +typename MatType::elem_type ActiveCMAES::Optimize( + SeparableFunctionType& function, + MatType& iterateIn, + CallbackTypes&&... callbacks) +{ + // Convenience typedefs. + typedef typename MatType::elem_type ElemType; + typedef typename MatTypeTraits::BaseMatType BaseMatType; + + // Make sure that we have the methods that we need. Long name... + traits::CheckArbitrarySeparableFunctionTypeAPI< + SeparableFunctionType, BaseMatType>(); + RequireDenseFloatingPointType(); + + BaseMatType& iterate = (BaseMatType&) iterateIn; + + // Find the number of functions to use. + const size_t numFunctions = function.NumFunctions(); + + // Population size. + if (lambda == 0) + lambda = (4 + std::round(3 * std::log(iterate.n_elem))) * 10; + + // Parent number. + const size_t mu = std::round(lambda / 4); + + // Recombination weight (w = 1 / (parent number)). + const ElemType w = 1.0 / mu; + + // Number of effective solutions. + const ElemType muEffective = mu; + + // Step size control parameters. + BaseMatType sigma(2, 1); // sigma is vector-shaped. + if (stepSize == 0) + sigma(0) = transformationPolicy.InitialStepSize(); + else + sigma(0) = stepSize; + + const ElemType cs = 4.0 / (iterate.n_elem + 4); + const ElemType ds = 1 + cs; + const ElemType enn = std::sqrt(iterate.n_elem) * (1.0 - 1.0 / + (4.0 * iterate.n_elem) + 1.0 / (21 * std::pow(iterate.n_elem, 2))); + + // Covariance update parameters. Cumulation for distribution. + const ElemType cc = cs; + const ElemType ccov = 2.0 / std::pow((iterate.n_elem + std::sqrt(2)), 2); + const ElemType beta = (4.0 * mu - 2.0) / (std::pow((iterate.n_elem + 12), 2) + + 4 * mu); + + std::vector mPosition(2, BaseMatType(iterate.n_rows, + iterate.n_cols)); + mPosition[0] = iterate; + + BaseMatType step(iterate.n_rows, iterate.n_cols); + step.zeros(); + + BaseMatType transformedIterate = transformationPolicy.Transform(iterate); + + // Calculate the first objective function. + ElemType currentObjective = 0; + for (size_t f = 0; f < numFunctions; f += batchSize) + { + const size_t effectiveBatchSize = std::min(batchSize, numFunctions - f); + const ElemType objective = function.Evaluate(transformedIterate, f, + effectiveBatchSize); + currentObjective += objective; + + Callback::Evaluate(*this, function, transformedIterate, objective, + callbacks...); + } + + ElemType overallObjective = currentObjective; + ElemType lastObjective = std::numeric_limits::max(); + + // Population parameters. + std::vector pStep(lambda, BaseMatType(iterate.n_rows, + iterate.n_cols)); + std::vector pPosition(lambda, BaseMatType(iterate.n_rows, + iterate.n_cols)); + BaseMatType pObjective(lambda, 1); // pObjective is vector-shaped. + std::vector ps(2, BaseMatType(iterate.n_rows, iterate.n_cols)); + ps[0].zeros(); + ps[1].zeros(); + std::vector pc = ps; + std::vector C(2, BaseMatType(iterate.n_elem, iterate.n_elem)); + C[0].eye(); + + // Covariance matrix parameters. + arma::Col eigval; + BaseMatType eigvec; + BaseMatType eigvalZero(iterate.n_elem, 1); // eigvalZero is vector-shaped. + eigvalZero.zeros(); + + // The current visitation order (sorted by population objectives). + arma::uvec idx = arma::linspace(0, lambda - 1, lambda); + + // Controls early termination of the optimization process. + bool terminate = false; + + // Now iterate! + terminate |= Callback::BeginOptimization(*this, function, + transformedIterate, callbacks...); + + size_t idx0, idx1; + + // The number of generations to wait after the minimum loss has + // been reached or no improvement has been made before terminating. + size_t patience = 10 + (30 * iterate.n_elem / lambda) + 1; + size_t steps = 0; + + for (size_t i = 1; (i != maxIterations) && !terminate; ++i) + { + // To keep track of where we are. + idx0 = (i - 1) % 2; + idx1 = i % 2; + + // Perform Cholesky decomposition. If the matrix is not positive definite, + // add a small value and try again. + BaseMatType covLower; + while (!arma::chol(covLower, C[idx0], "lower")) + C[idx0].diag() += std::numeric_limits::epsilon(); + + arma::eig_sym(eigval, eigvec, C[idx0]); + + for (size_t j = 0; j < lambda; ++j) + { + if (iterate.n_rows > iterate.n_cols) + { + pStep[idx(j)] = covLower * + arma::randn(iterate.n_rows, iterate.n_cols); + } + else + { + pStep[idx(j)] = arma::randn(iterate.n_rows, iterate.n_cols) + * covLower.t(); + } + + pPosition[idx(j)] = mPosition[idx0] + sigma(idx0) * pStep[idx(j)]; + + // Calculate the objective function. + pObjective(idx(j)) = selectionPolicy.Select(function, batchSize, + transformationPolicy.Transform(pPosition[idx(j)]), callbacks...); + } + + // Sort population. + idx = arma::sort_index(pObjective); + + step = w * pStep[idx(0)]; + for (size_t j = 1; j < mu; ++j) + step += w * pStep[idx(j)]; + + mPosition[idx1] = mPosition[idx0] + sigma(idx0) * step; + + // Calculate the objective function. + currentObjective = selectionPolicy.Select(function, batchSize, + transformationPolicy.Transform(mPosition[idx1]), callbacks...); + + // Update best parameters. + if (currentObjective < overallObjective) + { + overallObjective = currentObjective; + iterate = mPosition[idx1]; + + transformedIterate = transformationPolicy.Transform(iterate); + terminate |= Callback::StepTaken(*this, function, + transformedIterate, callbacks...); + } + + // Update Step Size. + if (iterate.n_rows > iterate.n_cols) + { + ps[idx1] = (1 - cs) * ps[idx0] + std::sqrt( + cs * (2 - cs) * muEffective) * + eigvec * diagmat(1 / eigval) * eigvec.t() * step; + } + else + { + ps[idx1] = (1 - cs) * ps[idx0] + std::sqrt( + cs * (2 - cs) * muEffective) * step * + eigvec * diagmat(1 / eigval) * eigvec.t(); + } + + const ElemType psNorm = arma::norm(ps[idx1]); + sigma(idx1) = sigma(idx0) * std::exp(cs / ds * (psNorm / enn - 1)); + + if (std::isnan(sigma(idx1)) || sigma(idx1) > 1e14) + { + Warn << "The step size diverged to " << sigma(idx1) << "; " + << "terminating with failure. Try a smaller step size?" << std::endl; + + iterate = transformationPolicy.Transform(iterate); + + Callback::EndOptimization(*this, function, iterate, callbacks...); + return overallObjective; + } + + pc[idx1] = (1 - cc) * pc[idx0] + std::sqrt(cc * (2 - cc) * + muEffective) * step; + + if (iterate.n_rows > iterate.n_cols) + { + C[idx1] = (1 - ccov) * C[idx0] + ccov * + (pc[idx1] * pc[idx1].t()); + + for (size_t j = 0; j < mu; ++j) + { + C[idx1] = C[idx1] + beta * w * + pStep[idx(j)] * pStep[idx(j)].t(); + } + + for (size_t j = lambda - mu; j < lambda; ++j) + { + C[idx1] = C[idx1] - beta * w * + pStep[idx(j)] * pStep[idx(j)].t(); + } + } + else + { + C[idx1] = (1 - ccov) * C[idx0] + ccov * + (pc[idx1].t() * pc[idx1]); + + for (size_t j = 0; j < mu; ++j) + { + C[idx1] = C[idx1] + beta * w * + pStep[idx(j)].t() * pStep[idx(j)]; + } + + for (size_t j = lambda - mu; j < lambda; ++j) + { + C[idx1] = C[idx1] - beta * w * + pStep[idx(j)].t() * pStep[idx(j)]; + } + } + + arma::eig_sym(eigval, eigvec, C[idx1]); + const arma::uvec negativeEigval = arma::find(eigval < 0, 1); + if (!negativeEigval.is_empty()) + { + if (negativeEigval(0) == 0) + { + C[idx1].zeros(); + } + else + { + C[idx1] = eigvec.cols(0, negativeEigval(0) - 1) * + arma::diagmat(eigval.subvec(0, negativeEigval(0) - 1)) * + eigvec.cols(0, negativeEigval(0) - 1).t(); + } + } + + // Output current objective function. + Info << "Active CMA-ES: iteration " << i << ", objective " << overallObjective + << "." << std::endl; + + if (std::isnan(overallObjective) || std::isinf(overallObjective)) + { + Warn << "Active CMA-ES: converged to " << overallObjective << "; " + << "terminating with failure. Try a smaller step size?" << std::endl; + + iterate = transformationPolicy.Transform(iterate); + Callback::EndOptimization(*this, function, iterate, callbacks...); + return overallObjective; + } + + if (std::abs(lastObjective - overallObjective) < tolerance) + { + if (steps > patience) + { + Info << "Active CMA-ES: minimized within tolerance " << tolerance << "; " + << "terminating optimization." << std::endl; + + iterate = transformationPolicy.Transform(iterate); + Callback::EndOptimization(*this, function, iterate, callbacks...); + return overallObjective; + } + } + else + { + steps = 0; + } + + steps++; + lastObjective = overallObjective; + } + + iterate = transformationPolicy.Transform(iterate); + Callback::EndOptimization(*this, function, iterate, callbacks...); + return overallObjective; +} + +} // namespace ens + +#endif diff --git a/Include/ensmallen/ensmallen_bits/cmaes/cmaes.hpp b/Include/ensmallen/ensmallen_bits/cmaes/cmaes.hpp index 98500a44e..0ae323490 100644 --- a/Include/ensmallen/ensmallen_bits/cmaes/cmaes.hpp +++ b/Include/ensmallen/ensmallen_bits/cmaes/cmaes.hpp @@ -17,6 +17,8 @@ #include "full_selection.hpp" #include "random_selection.hpp" +#include "transformation_policies/empty_transformation.hpp" +#include "transformation_policies/boundary_box_constraint.hpp" namespace ens { @@ -46,8 +48,12 @@ namespace ens { * ensmallen website. * * @tparam SelectionPolicy The selection strategy used for the evaluation step. + * @tparam TransformationPolicy The transformation strategy used to + * map decision variables to the desired domain during fitness evaluation + * and termination. Use EmptyTransformation if the domain isn't bounded. */ -template +template> class CMAES { public: @@ -60,14 +66,43 @@ class CMAES * equal one pass over the dataset). * * @param lambda The population size (0 use the default size). - * @param lowerBound Lower bound of decision variables. - * @param upperBound Upper bound of decision variables. + * @param transformationPolicy Instantiated transformation policy used to + * map the coordinates to the desired domain. * @param batchSize Batch size to use for the objective calculation. * @param maxIterations Maximum number of iterations allowed (0 means no * limit). * @param tolerance Maximum absolute tolerance to terminate algorithm. * @param selectionPolicy Instantiated selection policy used to calculate the * objective. + * @param stepSize Starting sigma/step size (will be modified). + */ + CMAES(const size_t lambda = 0, + const TransformationPolicyType& + transformationPolicy = TransformationPolicyType(), + const size_t batchSize = 32, + const size_t maxIterations = 1000, + const double tolerance = 1e-5, + const SelectionPolicyType& selectionPolicy = SelectionPolicyType(), + double stepSize = 0); + + /** + * Construct the CMA-ES optimizer with the given function and parameters + * (including lower and upper bounds). The defaults here are not necessarily + * good for the given problem, so it is suggested that the values used be + * tailored to the task at hand. The maximum number of iterations refers to + * the maximum number of points that are processed (i.e., one iteration + * equals one point; one iteration does not equal one pass over the dataset). + * + * @param lambda The population size(0 use the default size). + * @param lowerBound Lower bound of decision variables. + * @param upperBound Upper bound of decision variables. + * @param batchSize Batch size to use for the objective calculation. + * @param maxIterations Maximum number of iterations allowed(0 means no + limit). + * @param tolerance Maximum absolute tolerance to terminate algorithm. + * @param selectionPolicy Instantiated selection policy used to calculate the + * objective. + * @param stepSize Starting sigma/step size (will be modified). */ CMAES(const size_t lambda = 0, const double lowerBound = -10, @@ -75,7 +110,8 @@ class CMAES const size_t batchSize = 32, const size_t maxIterations = 1000, const double tolerance = 1e-5, - const SelectionPolicyType& selectionPolicy = SelectionPolicyType()); + const SelectionPolicyType& selectionPolicy = SelectionPolicyType(), + double stepSize = 0); /** * Optimize the given function using CMA-ES. The given starting point will be @@ -91,27 +127,17 @@ class CMAES * @return Objective value of the final point. */ template - typename MatType::elem_type Optimize(SeparableFunctionType& function, - MatType& iterate, - CallbackTypes&&... callbacks); + typename MatType, + typename... CallbackTypes> + typename MatType::elem_type Optimize(SeparableFunctionType& function, + MatType& iterate, + CallbackTypes&&... callbacks); //! Get the population size. size_t PopulationSize() const { return lambda; } //! Modify the population size. size_t& PopulationSize() { return lambda; } - //! Get the lower bound of decision variables. - double LowerBound() const { return lowerBound; } - //! Modify the lower bound of decision variables. - double& LowerBound() { return lowerBound; } - - //! Get the upper bound of decision variables - double UpperBound() const { return upperBound; } - //! Modify the upper bound of decision variables - double& UpperBound() { return upperBound; } - //! Get the batch size. size_t BatchSize() const { return batchSize; } //! Modify the batch size. @@ -132,16 +158,24 @@ class CMAES //! Modify the selection policy. SelectionPolicyType& SelectionPolicy() { return selectionPolicy; } + //! Get the transformation policy. + const TransformationPolicyType& TransformationPolicy() const + { return transformationPolicy; } + //! Modify the transformation policy. + TransformationPolicyType& TransformationPolicy() + { return transformationPolicy; } + + //! Get the step size. + double StepSize() const + { return stepSize; } + //! Modify the step size. + double& StepSize() + { return stepSize; } + private: //! Population size. size_t lambda; - //! Lower bound of decision variables. - double lowerBound; - - //! Upper bound of decision variables - double upperBound; - //! The batch size for processing. size_t batchSize; @@ -153,13 +187,22 @@ class CMAES //! The selection policy used to calculate the objective. SelectionPolicyType selectionPolicy; + + //! The transformationPolicy used to map coordinates to the suitable domain + //! while evaluating fitness. This mapping is also done after optimization + //! has completed. + TransformationPolicyType transformationPolicy; + + //! The step size. + double stepSize; }; /** * Convenient typedef for CMAES approximation. */ -template -using ApproxCMAES = CMAES; +template, + typename SelectionPolicyType = RandomSelection> +using ApproxCMAES = CMAES; } // namespace ens diff --git a/Include/ensmallen/ensmallen_bits/cmaes/cmaes_impl.hpp b/Include/ensmallen/ensmallen_bits/cmaes/cmaes_impl.hpp index 90e047ae4..4d875ee38 100644 --- a/Include/ensmallen/ensmallen_bits/cmaes/cmaes_impl.hpp +++ b/Include/ensmallen/ensmallen_bits/cmaes/cmaes_impl.hpp @@ -18,33 +18,59 @@ // In case it hasn't been included yet. #include "cmaes.hpp" +#include "not_empty_transformation.hpp" #include namespace ens { -template -CMAES::CMAES(const size_t lambda, +template +CMAES::CMAES(const size_t lambda, + const TransformationPolicyType& + transformationPolicy, + const size_t batchSize, + const size_t maxIterations, + const double tolerance, + const SelectionPolicyType& selectionPolicy, + double stepSizeIn) : + lambda(lambda), + batchSize(batchSize), + maxIterations(maxIterations), + tolerance(tolerance), + selectionPolicy(selectionPolicy), + transformationPolicy(transformationPolicy), + stepSize(stepSizeIn) +{ /* Nothing to do. */ } + +template +CMAES::CMAES(const size_t lambda, const double lowerBound, const double upperBound, const size_t batchSize, const size_t maxIterations, const double tolerance, - const SelectionPolicyType& selectionPolicy) : + const SelectionPolicyType& selectionPolicy, + double stepSizeIn) : lambda(lambda), - lowerBound(lowerBound), - upperBound(upperBound), batchSize(batchSize), maxIterations(maxIterations), tolerance(tolerance), - selectionPolicy(selectionPolicy) -{ /* Nothing to do. */ } + selectionPolicy(selectionPolicy), + stepSize(stepSizeIn) +{ + Warn << "This is a deprecated constructor and will be removed in a " + "future version of ensmallen" << std::endl; + NotEmptyTransformation> d; + d.Assign(transformationPolicy, lowerBound, upperBound); +} + //! Optimize the function (minimize). -template +template template -typename MatType::elem_type CMAES::Optimize( +typename MatType::elem_type CMAES::Optimize( SeparableFunctionType& function, MatType& iterateIn, CallbackTypes&&... callbacks) @@ -78,7 +104,11 @@ typename MatType::elem_type CMAES::Optimize( // Step size control parameters. BaseMatType sigma(2, 1); // sigma is vector-shaped. - sigma(0) = 0.3 * (upperBound - lowerBound); + if (stepSize == 0) + sigma(0) = transformationPolicy.InitialStepSize(); + else + sigma(0) = stepSize; + const double cs = (muEffective + 2) / (iterate.n_elem + muEffective + 5); const double ds = 1 + cs + 2 * std::max(std::sqrt((muEffective - 1) / (iterate.n_elem + 1)) - 1, 0.0); @@ -99,22 +129,23 @@ typename MatType::elem_type CMAES::Optimize( std::vector mPosition(2, BaseMatType(iterate.n_rows, iterate.n_cols)); - mPosition[0] = lowerBound + arma::randu( - iterate.n_rows, iterate.n_cols) * (upperBound - lowerBound); + mPosition[0] = iterate; BaseMatType step(iterate.n_rows, iterate.n_cols); step.zeros(); + BaseMatType transformedIterate = transformationPolicy.Transform(iterate); + // Calculate the first objective function. ElemType currentObjective = 0; for (size_t f = 0; f < numFunctions; f += batchSize) { const size_t effectiveBatchSize = std::min(batchSize, numFunctions - f); - const ElemType objective = function.Evaluate(mPosition[0], f, + const ElemType objective = function.Evaluate(transformedIterate, f, effectiveBatchSize); currentObjective += objective; - Callback::Evaluate(*this, function, mPosition[0], objective, + Callback::Evaluate(*this, function, transformedIterate, objective, callbacks...); } @@ -147,9 +178,15 @@ typename MatType::elem_type CMAES::Optimize( bool terminate = false; // Now iterate! - terminate |= Callback::BeginOptimization(*this, function, iterate, - callbacks...); - for (size_t i = 1; i < maxIterations && !terminate; ++i) + terminate |= Callback::BeginOptimization(*this, function, + transformedIterate, callbacks...); + + // The number of generations to wait after the minimum loss has + // been reached or no improvement has been made before terminating. + size_t patience = 10 + (30 * iterate.n_elem / lambda) + 1; + size_t steps = 0; + + for (size_t i = 1; (i != maxIterations) && !terminate; ++i) { // To keep track of where we are. const size_t idx0 = (i - 1) % 2; @@ -161,24 +198,26 @@ typename MatType::elem_type CMAES::Optimize( while (!arma::chol(covLower, C[idx0], "lower")) C[idx0].diag() += std::numeric_limits::epsilon(); + arma::eig_sym(eigval, eigvec, C[idx0]); + for (size_t j = 0; j < lambda; ++j) { if (iterate.n_rows > iterate.n_cols) { pStep[idx(j)] = covLower * - arma::randn(iterate.n_rows, iterate.n_cols); + arma::randn(iterate.n_rows, iterate.n_cols); } else { pStep[idx(j)] = arma::randn(iterate.n_rows, iterate.n_cols) - * covLower; + * covLower.t(); } pPosition[idx(j)] = mPosition[idx0] + sigma(idx0) * pStep[idx(j)]; // Calculate the objective function. pObjective(idx(j)) = selectionPolicy.Select(function, batchSize, - pPosition[idx(j)], callbacks...); + transformationPolicy.Transform(pPosition[idx(j)]), callbacks...); } // Sort population. @@ -192,7 +231,7 @@ typename MatType::elem_type CMAES::Optimize( // Calculate the objective function. currentObjective = selectionPolicy.Select(function, batchSize, - mPosition[idx1], callbacks...); + transformationPolicy.Transform(mPosition[idx1]), callbacks...); // Update best parameters. if (currentObjective < overallObjective) @@ -200,23 +239,38 @@ typename MatType::elem_type CMAES::Optimize( overallObjective = currentObjective; iterate = mPosition[idx1]; - terminate |= Callback::StepTaken(*this, function, iterate, callbacks...); + transformedIterate = transformationPolicy.Transform(iterate); + terminate |= Callback::StepTaken(*this, function, + transformedIterate, callbacks...); } // Update Step Size. if (iterate.n_rows > iterate.n_cols) { ps[idx1] = (1 - cs) * ps[idx0] + std::sqrt( - cs * (2 - cs) * muEffective) * covLower.t() * step; + cs * (2 - cs) * muEffective) * + eigvec * diagmat(1 / eigval) * eigvec.t() * step; } else { ps[idx1] = (1 - cs) * ps[idx0] + std::sqrt( - cs * (2 - cs) * muEffective) * step * covLower.t(); + cs * (2 - cs) * muEffective) * step * + eigvec * diagmat(1 / eigval) * eigvec.t(); } const ElemType psNorm = arma::norm(ps[idx1]); - sigma(idx1) = sigma(idx0) * std::exp(cs / ds * ( psNorm / enn - 1)); + sigma(idx1) = sigma(idx0) * std::exp(cs / ds * (psNorm / enn - 1)); + + if (std::isnan(sigma(idx1)) || sigma(idx1) > 1e14) + { + Warn << "The step size diverged to " << sigma(idx1) << "; " + << "terminating with failure. Try a smaller step size?" << std::endl; + + iterate = transformationPolicy.Transform(iterate); + + Callback::EndOptimization(*this, function, iterate, callbacks...); + return overallObjective; + } // Update covariance matrix. if ((psNorm / sqrt(1 - std::pow(1 - cs, 2 * i))) < h) @@ -242,12 +296,12 @@ typename MatType::elem_type CMAES::Optimize( if (iterate.n_rows > iterate.n_cols) { C[idx1] = (1 - c1 - cmu) * C[idx0] + c1 * (pc[idx1] * - pc[idx1].t() + (cc * (2 - cc)) * C[idx0]); + pc[idx1].t() + (cc * (2 - cc)) * C[idx0]); } else { C[idx1] = (1 - c1 - cmu) * C[idx0] + c1 * - (pc[idx1].t() * pc[idx1] + (cc * (2 - cc)) * C[idx0]); + (pc[idx1].t() * pc[idx1] + (cc * (2 - cc)) * C[idx0]); } } @@ -256,7 +310,7 @@ typename MatType::elem_type CMAES::Optimize( for (size_t j = 0; j < mu; ++j) { C[idx1] = C[idx1] + cmu * w(j) * - pStep[idx(j)] * pStep[idx(j)].t(); + pStep[idx(j)] * pStep[idx(j)].t(); } } else @@ -264,7 +318,7 @@ typename MatType::elem_type CMAES::Optimize( for (size_t j = 0; j < mu; ++j) { C[idx1] = C[idx1] + cmu * w(j) * - pStep[idx(j)].t() * pStep[idx(j)]; + pStep[idx(j)].t() * pStep[idx(j)]; } } @@ -279,36 +333,46 @@ typename MatType::elem_type CMAES::Optimize( else { C[idx1] = eigvec.cols(0, negativeEigval(0) - 1) * - arma::diagmat(eigval.subvec(0, negativeEigval(0) - 1)) * - eigvec.cols(0, negativeEigval(0) - 1).t(); + arma::diagmat(eigval.subvec(0, negativeEigval(0) - 1)) * + eigvec.cols(0, negativeEigval(0) - 1).t(); } } // Output current objective function. Info << "CMA-ES: iteration " << i << ", objective " << overallObjective - << "." << std::endl; + << "." << std::endl; if (std::isnan(overallObjective) || std::isinf(overallObjective)) { Warn << "CMA-ES: converged to " << overallObjective << "; " - << "terminating with failure. Try a smaller step size?" << std::endl; + << "terminating with failure. Try a smaller step size?" << std::endl; + iterate = transformationPolicy.Transform(iterate); Callback::EndOptimization(*this, function, iterate, callbacks...); return overallObjective; } if (std::abs(lastObjective - overallObjective) < tolerance) { - Info << "CMA-ES: minimized within tolerance " << tolerance << "; " + if (steps > patience) { + Info << "CMA-ES: minimized within tolerance " << tolerance << "; " << "terminating optimization." << std::endl; - Callback::EndOptimization(*this, function, iterate, callbacks...); - return overallObjective; + iterate = transformationPolicy.Transform(iterate); + Callback::EndOptimization(*this, function, iterate, callbacks...); + return overallObjective; + } + } + else { + steps = 0; } + steps++; + lastObjective = overallObjective; } + iterate = transformationPolicy.Transform(iterate); Callback::EndOptimization(*this, function, iterate, callbacks...); return overallObjective; } diff --git a/Include/ensmallen/ensmallen_bits/cmaes/not_empty_transformation.hpp b/Include/ensmallen/ensmallen_bits/cmaes/not_empty_transformation.hpp new file mode 100644 index 000000000..cdf18c10d --- /dev/null +++ b/Include/ensmallen/ensmallen_bits/cmaes/not_empty_transformation.hpp @@ -0,0 +1,36 @@ +/** + * @file not_empty_transformation.hpp + * @author Suvarsha Chennareddy + * + * Check whether TransformationPolicyType is EmptyTransformation. + * + * ensmallen is free software; you may redistribute it and/or modify it under + * the terms of the 3-clause BSD license. You should have received a copy of + * the 3-clause BSD license along with ensmallen. If not, see + * http://www.opensource.org/licenses/BSD-3-Clause for more information. + */ +#ifndef NOT_EMPTY_TRANSFORMATION +#define NOT_EMPTY_TRANSFORMATION + + /* + This partial specialization is used to throw an exception when the + TransformationPolicyType is EmptyTransformation and call a + constructor with parameters 'lowerBound' and 'upperBound' otherwise. + This shall be removed when the deprecated constructor is removed in + the next major version of ensmallen. + */ +template +struct NotEmptyTransformation : std::true_type { + void Assign(T1& obj, double lowerBound, double upperBound) { + obj = T1(lowerBound, upperBound); + } +}; + +template class T, typename... A, typename... B> +struct NotEmptyTransformation, T> : std::false_type { + void Assign(T& obj, double lowerBound, double upperBound) { + throw std::logic_error("TransformationPolicyType is EmptyTransformation"); + } +}; + +#endif \ No newline at end of file diff --git a/Include/ensmallen/ensmallen_bits/cmaes/transformation_policies/boundary_box_constraint.hpp b/Include/ensmallen/ensmallen_bits/cmaes/transformation_policies/boundary_box_constraint.hpp new file mode 100644 index 000000000..bc8f937ae --- /dev/null +++ b/Include/ensmallen/ensmallen_bits/cmaes/transformation_policies/boundary_box_constraint.hpp @@ -0,0 +1,162 @@ +/** + * @file boundary_box_constraint.hpp + * @author Suvarsha Chennareddy + * + * Boundary Box Transformation. + * + * + * ensmallen is free software; you may redistribute it and/or modify it under + * the terms of the 3-clause BSD license. You should have received a copy of + * the 3-clause BSD license along with ensmallen. If not, see + * http://www.opensource.org/licenses/BSD-3-Clause for more information. + */ +#ifndef ENSMALLEN_CMAES_BOUNDARY_BOX_TRANSFORMATION_HPP +#define ENSMALLEN_CMAES_BOUNDARY_BOX_TRANSFORMATION_HPP + +namespace ens { + +/** + * More often than not, coordinates must be bounded by some constraints. + * In a particular case, the domain of a specific function is restricted + * by boundaries. + * The implemented transformation transforms given coordinates into a region + * bounded by the given lower and upper bounds (a box). First, the + * coordinates are shifted into a feasible preimage bounded by lowerBound - al + * and upperBound + au where al and au and calculated internally. + * These shifted coordinates are then transformed into coordinates bounded by + * lower_bound and upper_bound. It is an identity transformation in between + * the lower and upper bounds. + * + * For more information, check the original implementation in C by N. Hansen: + * https://github.com/CMA-ES/c-cmaes/blob/master/src/boundary_transformation.c + * + * @tparam MatType The matrix type of the coordinates and bounds. + */ +template +class BoundaryBoxConstraint +{ +public: + + /** + * Construct the boundary box constraint policy. + */ + BoundaryBoxConstraint() + { /* Nothing to do. */ } + + /** + * Construct the boundary box constraint policy. + * + * @param lowerBound The lower bound of the coordinates. + * @param upperBound The upper bound of the coordinates. + */ + BoundaryBoxConstraint(const MatType& lowerBound, + const MatType& upperBound) : + lowerBound(lowerBound), + upperBound(upperBound) + {} + + /** + * Construct the boundary box constraint policy. + * + * @param lowerBound The lower bound (for every dimension) of the coordinates. + * @param upperBound The upper bound (for every dimension) of the coordinates. + */ + BoundaryBoxConstraint(const typename MatType::elem_type lowerBound, + const typename MatType::elem_type upperBound) : + lowerBound({ (typename MatType::elem_type) lowerBound }), + upperBound({ (typename MatType::elem_type) upperBound }) + {} + + /** + * Map the given coordinates to the range + * [lowerBound, upperBound] + * + * @param x Given coordinates. + * @return Transformed coordinates. + */ + MatType Transform(const MatType& x) + { + typedef typename MatType::elem_type ElemType; + double diff, al, au, xlow, xup, r; + size_t Bi, Bj; + MatType y = x; + for (size_t i = 0; i < x.n_rows; i++) + { + Bi = (i < lowerBound.n_rows) ? i : (lowerBound.n_rows - 1); + for (size_t j = 0; j < x.n_cols; j++) + { + Bj = (j < lowerBound.n_cols) ? j : (lowerBound.n_cols - 1); + + diff = (upperBound(Bi, Bj) - lowerBound(Bi, Bj)) / 2.0; + al = std::min(diff, (1 + std::abs(lowerBound(Bi, Bj))) / 20.0); + au = std::min(diff, (1 + std::abs(upperBound(Bi, Bj))) / 20.0); + xlow = lowerBound(Bi, Bj) - 2 * al - diff; + xup = upperBound(Bi, Bj) + 2 * au + diff; + r = 2 * (2 * diff + al + au); + + // Shift y into feasible pre-image. + if (y(i, j) < xlow) + { + y(i,j) += (ElemType)(r * (1 + (int)((xlow - y(i, j)) / r))); + } + if (y(i, j) > xup) + { + y(i, j) -= (ElemType)(r * (1 + (int)((y(i, j) - xup) / r))); + } + if (y(i, j) < lowerBound(Bi, Bj) - al) + { + y(i, j) += (ElemType)(2 * (lowerBound(Bi, Bj) - al - y(i, j))); + } + if (y(i, j) > upperBound(Bi, Bj) + au) + { + y(i, j) -= (ElemType)(2 * (y(i, j) - upperBound(Bi, Bj) - au)); + } + + // Boundary transformation. + if (y(i, j) < lowerBound(Bi, Bj) + al) + { + y(i, j) = (ElemType)(lowerBound(Bi, Bj) + + (y(i, j) - (lowerBound(Bi, Bj) - al)) * + (y(i, j) - (lowerBound(Bi, Bj) - al)) / 4.0 / al); + } + else if (y(i,j) > upperBound(Bi,Bj) - au) + { + y(i, j) = (ElemType)(upperBound(Bi, Bj) - + (y(i, j) - (upperBound(Bi, Bj) + au)) * + (y(i, j) - (upperBound(Bi, Bj) + au)) / 4.0 / au); + } + } + } + + return y; + } + + /** + * Return a suitable initial step size. + * + * @return initial step size. + */ + typename MatType::elem_type InitialStepSize() + { return 0.3 * (upperBound - lowerBound).min(); } + + //! Get the lower bound of decision variables. + MatType LowerBound() const { return lowerBound; } + //! Modify the lower bound of decision variables. + MatType& LowerBound() { return lowerBound; } + + //! Get the upper bound of decision variables. + MatType UpperBound() const { return upperBound; } + //! Modify the upper bound of decision variables. + MatType& UpperBound() { return upperBound; } + +private: + //! Lower bound of decision variables. + MatType lowerBound; + + //! Upper bound of decision variables. + MatType upperBound; +}; + +} // namespace ens + +#endif diff --git a/Include/ensmallen/ensmallen_bits/cmaes/transformation_policies/empty_transformation.hpp b/Include/ensmallen/ensmallen_bits/cmaes/transformation_policies/empty_transformation.hpp new file mode 100644 index 000000000..eb8618116 --- /dev/null +++ b/Include/ensmallen/ensmallen_bits/cmaes/transformation_policies/empty_transformation.hpp @@ -0,0 +1,47 @@ +/** + * @file empty_transformation.hpp + * @author Suvarsha Chennareddy + * + * Empty Transformation, can also be called an Indentity Transformation. + * + * ensmallen is free software; you may redistribute it and/or modify it under + * the terms of the 3-clause BSD license. You should have received a copy of + * the 3-clause BSD license along with ensmallen. If not, see + * http://www.opensource.org/licenses/BSD-3-Clause for more information. + */ +#ifndef ENSMALLEN_CMAES_EMPTY_TRANSFORMATION_HPP +#define ENSMALLEN_CMAES_EMPTY_TRANSFORMATION_HPP + +namespace ens { + +/** + * This is an empty transformation. As the name indicates, it does + * not do anything. It is essentially an identity + * transformation and is meant to be used when there are no + * sorts of constraints on the coordinates. + * + * @tparam MatType The matrix type of the coordinates. + */ +template +class EmptyTransformation +{ + public: + /** + * Transforms coordinates to themselves (effectively no transformation). + * + * @param x Input coordinates. + * @return Transformed coordinates (the coordinates themselves). + */ + MatType Transform(const MatType& x) { return x; } + + /** + * Return a suitable initial step size. + * + * @return initial step size. + */ + typename MatType::elem_type InitialStepSize() { return 1; } +}; + +} // namespace ens + +#endif diff --git a/Include/ensmallen/ensmallen_bits/config.hpp b/Include/ensmallen/ensmallen_bits/config.hpp index a58af4303..4ed04c440 100644 --- a/Include/ensmallen/ensmallen_bits/config.hpp +++ b/Include/ensmallen/ensmallen_bits/config.hpp @@ -71,3 +71,9 @@ #else #define ens_deprecated #endif + +// undefine conflicting macros +#if defined(As) + #pragma message ("WARNING: undefined conflicting 'As' macro") + #undef As +#endif diff --git a/Include/ensmallen/ensmallen_bits/ens_version.hpp b/Include/ensmallen/ensmallen_bits/ens_version.hpp index 185ed3f6c..640f8fb0c 100644 --- a/Include/ensmallen/ensmallen_bits/ens_version.hpp +++ b/Include/ensmallen/ensmallen_bits/ens_version.hpp @@ -16,16 +16,16 @@ // The minor version is two digits so regular numerical comparisons of versions // work right. The first minor version of a release is always 10. #define ENS_VERSION_MINOR 19 -#define ENS_VERSION_PATCH 0 +#define ENS_VERSION_PATCH 1 // If this is a release candidate, it will be reflected in the version name // (i.e. the version name will be "RC1", "RC2", etc.). Otherwise the version // name will typically be a seemingly arbitrary set of words that does not // contain the capitalized string "RC". #define ENS_VERSION_NAME "Eight Ball Deluxe" // Incorporate the date the version was released. -#define ENS_VERSION_YEAR "2022" -#define ENS_VERSION_MONTH "04" -#define ENS_VERSION_DAY "06" +#define ENS_VERSION_YEAR "2023" +#define ENS_VERSION_MONTH "01" +#define ENS_VERSION_DAY "30" namespace ens { diff --git a/Include/ensmallen/ensmallen_bits/lbfgs/lbfgs_impl.hpp b/Include/ensmallen/ensmallen_bits/lbfgs/lbfgs_impl.hpp index 28c15524c..d7444bfbd 100644 --- a/Include/ensmallen/ensmallen_bits/lbfgs/lbfgs_impl.hpp +++ b/Include/ensmallen/ensmallen_bits/lbfgs/lbfgs_impl.hpp @@ -86,11 +86,17 @@ double L_BFGS::ChooseScalingFactor(const size_t iterationNum, // Get s and y matrices once instead of multiple times. const arma::Mat& sMat = s.slice(previousPos); const arma::Mat& yMat = y.slice(previousPos); - scalingFactor = dot(sMat, yMat) / dot(yMat, yMat); + + const CubeElemType tmp = arma::dot(yMat, yMat); + const CubeElemType denom = (tmp != CubeElemType(0)) ? tmp : CubeElemType(1); + + scalingFactor = arma::dot(sMat, yMat) / denom; } else { - scalingFactor = 1.0 / sqrt(dot(gradient, gradient)); + const CubeElemType tmp = arma::norm(gradient, "fro"); + + scalingFactor = (tmp != CubeElemType(0)) ? (1.0 / tmp) : 1.0; } return scalingFactor; @@ -129,11 +135,17 @@ void L_BFGS::SearchDirection(const MatType& gradient, for (size_t i = iterationNum; i != limit; i--) { int translatedPosition = (i + (numBasis - 1)) % numBasis; - rho[iterationNum - i] = 1.0 / arma::dot(y.slice(translatedPosition), - s.slice(translatedPosition)); - alpha[iterationNum - i] = rho[iterationNum - i] * - arma::dot(s.slice(translatedPosition), searchDirection); - searchDirection -= alpha[iterationNum - i] * y.slice(translatedPosition); + + const arma::Mat& sMat = s.slice(translatedPosition); + const arma::Mat& yMat = y.slice(translatedPosition); + + const CubeElemType tmp = arma::dot(yMat, sMat); + + rho[iterationNum - i] = (tmp != CubeElemType(0)) ? (1.0 / tmp) : CubeElemType(1); + + alpha[iterationNum - i] = rho[iterationNum - i] * arma::dot(sMat, searchDirection); + + searchDirection -= alpha[iterationNum - i] * yMat; } searchDirection *= scalingFactor; @@ -218,7 +230,8 @@ bool L_BFGS::LineSearch(FunctionType& function, arma::dot(gradient, searchDirection); // If it is not a descent direction, just report failure. - if (initialSearchDirectionDotGradient > 0.0) + if ( (initialSearchDirectionDotGradient > 0.0) + || (std::isfinite(initialSearchDirectionDotGradient) == false) ) { Warn << "L-BFGS line search direction is not a descent direction " << "(terminating)!" << std::endl; @@ -250,6 +263,12 @@ bool L_BFGS::LineSearch(FunctionType& function, newIterateTmp += stepSize * searchDirection; functionValue = function.EvaluateWithGradient(newIterateTmp, gradient); + if (std::isnan(functionValue)) + { + Warn << "L-BFGS objective value is NaN (terminating)!" << std::endl; + return false; + } + terminate |= Callback::EvaluateWithGradient(*this, function, newIterateTmp, functionValue, gradient, callbacks...); @@ -391,6 +410,7 @@ L_BFGS::Optimize(FunctionType& function, // // But don't do this on the first iteration to ensure we always take at // least one descent step. + // TODO: to speed this up, investigate use of arma::norm2est() in Armadillo 12.4 if (arma::norm(gradient, 2) < minGradientNorm) { Info << "L-BFGS gradient norm too small (terminating successfully)." @@ -416,6 +436,13 @@ L_BFGS::Optimize(FunctionType& function, break; } + if (std::isfinite(scalingFactor) == false) + { + Warn << "L-BFGS scaling factor is not finite. Stopping optimization." + << std::endl; + break; + } + // Build an approximation to the Hessian and choose the search // direction for the current iteration. SearchDirection(gradient, itNum, scalingFactor, s, y, searchDirection); diff --git a/Include/ensmallen/ensmallen_bits/nsga2/nsga2_impl.hpp b/Include/ensmallen/ensmallen_bits/nsga2/nsga2_impl.hpp index d28e69c5a..acfb736d4 100644 --- a/Include/ensmallen/ensmallen_bits/nsga2/nsga2_impl.hpp +++ b/Include/ensmallen/ensmallen_bits/nsga2/nsga2_impl.hpp @@ -423,9 +423,9 @@ inline bool NSGA2::Dominates( //! Assign crowding distance to the population. template inline void NSGA2::CrowdingDistanceAssignment( - const std::vector& front, - std::vector>& calculatedObjectives, - std::vector& crowdingDistance) + const std::vector& front, + std::vector>& calculatedObjectives, + std::vector& crowdingDistance) { // Convenience typedefs. typedef typename MatType::elem_type ElemType; diff --git a/Include/ensmallen/ensmallen_bits/problems/zdt/zdt4_function.hpp b/Include/ensmallen/ensmallen_bits/problems/zdt/zdt4_function.hpp index b7d77f06d..fad2ba912 100644 --- a/Include/ensmallen/ensmallen_bits/problems/zdt/zdt4_function.hpp +++ b/Include/ensmallen/ensmallen_bits/problems/zdt/zdt4_function.hpp @@ -83,7 +83,7 @@ namespace test { 10. * arma::cos(4 * arma::datum::pi * truncatedCoords)); ElemType g = 1. + 10. * static_cast(numVariables - 1) + sum; ElemType objectiveRatio = objectives(0) / g; - objectives(1) = g * (1. - std::sqrt(objectiveRatio)); + objectives(1) = g * (1. - std::sqrt(objectiveRatio)); return objectives; } @@ -157,4 +157,4 @@ namespace test { }; } //namespace test } //namespace ens -#endif \ No newline at end of file +#endif diff --git a/Include/fmt/src/format.cc b/Include/fmt/src/format.cc index 391d3a248..422f7f94e 100644 --- a/Include/fmt/src/format.cc +++ b/Include/fmt/src/format.cc @@ -8,36 +8,29 @@ #include "fmt/format-inl.h" FMT_BEGIN_NAMESPACE -namespace detail { - -template FMT_API auto dragonbox::to_decimal(float x) noexcept - -> dragonbox::decimal_fp; -template FMT_API auto dragonbox::to_decimal(double x) noexcept - -> dragonbox::decimal_fp; + namespace detail { + template FMT_API auto dragonbox::to_decimal(float x) noexcept -> dragonbox::decimal_fp; + template FMT_API auto dragonbox::to_decimal(double x) noexcept -> dragonbox::decimal_fp; #ifndef FMT_STATIC_THOUSANDS_SEPARATOR -template FMT_API locale_ref::locale_ref(const std::locale& loc); -template FMT_API auto locale_ref::get() const -> std::locale; + template FMT_API locale_ref::locale_ref(const std::locale& loc); + template FMT_API auto locale_ref::get() const -> std::locale; #endif -// Explicit instantiations for char. - -template FMT_API auto thousands_sep_impl(locale_ref) - -> thousands_sep_result; -template FMT_API auto decimal_point_impl(locale_ref) -> char; + // Explicit instantiations for char. -template FMT_API void buffer::append(const char*, const char*); + template FMT_API auto thousands_sep_impl(locale_ref) -> thousands_sep_result; + template FMT_API auto decimal_point_impl(locale_ref) -> char; -template FMT_API void vformat_to(buffer&, string_view, - typename vformat_args<>::type, locale_ref); + template FMT_API void buffer::append(const char*, const char*); -// Explicit instantiations for wchar_t. + template FMT_API void vformat_to(buffer&, string_view, typename vformat_args<>::type, locale_ref); -template FMT_API auto thousands_sep_impl(locale_ref) - -> thousands_sep_result; -template FMT_API auto decimal_point_impl(locale_ref) -> wchar_t; + // Explicit instantiations for wchar_t. -template FMT_API void buffer::append(const wchar_t*, const wchar_t*); + template FMT_API auto thousands_sep_impl(locale_ref) -> thousands_sep_result; + template FMT_API auto decimal_point_impl(locale_ref) -> wchar_t; -} // namespace detail + template FMT_API void buffer::append(const wchar_t*, const wchar_t*); + } // namespace detail FMT_END_NAMESPACE diff --git a/Include/whereami/whereami.c b/Include/whereami/whereami.c index 797e692a7..500407732 100644 --- a/Include/whereami/whereami.c +++ b/Include/whereami/whereami.c @@ -128,11 +128,9 @@ static int WAI_PREFIX(getModulePath_)(HMODULE module, char* out, int capacity, i return ok ? length : -1; } -WAI_NOINLINE WAI_FUNCSPEC -int WAI_PREFIX(getExecutablePath)(char* out, int capacity, int* dirname_length) { return WAI_PREFIX(getModulePath_)(NULL, out, capacity, dirname_length); } +WAI_NOINLINE WAI_FUNCSPEC int WAI_PREFIX(getExecutablePath)(char* out, int capacity, int* dirname_length) { return WAI_PREFIX(getModulePath_)(NULL, out, capacity, dirname_length); } -WAI_NOINLINE WAI_FUNCSPEC -int WAI_PREFIX(getModulePath)(char* out, int capacity, int* dirname_length) { +WAI_NOINLINE WAI_FUNCSPEC int WAI_PREFIX(getModulePath)(char* out, int capacity, int* dirname_length) { HMODULE module; int length = -1; diff --git a/Libs/linux/libopenblas.a b/Libs/linux/libopenblas.a index a6a5c71c9..153ab4f41 100644 Binary files a/Libs/linux/libopenblas.a and b/Libs/linux/libopenblas.a differ diff --git a/Libs/mac/libopenblas.0.dylib b/Libs/mac/libopenblas.0.dylib index 67d02815a..a6ac80a80 120000 --- a/Libs/mac/libopenblas.0.dylib +++ b/Libs/mac/libopenblas.0.dylib @@ -1 +1 @@ -libopenblasp-r0.3.21.dylib \ No newline at end of file +libopenblasp-r0.3.24.dylib \ No newline at end of file diff --git a/Libs/mac/libopenblas.dylib b/Libs/mac/libopenblas.dylib index 67d02815a..a6ac80a80 120000 --- a/Libs/mac/libopenblas.dylib +++ b/Libs/mac/libopenblas.dylib @@ -1 +1 @@ -libopenblasp-r0.3.21.dylib \ No newline at end of file +libopenblasp-r0.3.24.dylib \ No newline at end of file diff --git a/Libs/mac/libopenblasp-r0.3.21.dylib b/Libs/mac/libopenblasp-r0.3.24.dylib similarity index 90% rename from Libs/mac/libopenblasp-r0.3.21.dylib rename to Libs/mac/libopenblasp-r0.3.24.dylib index 3b0f80c49..26e3fb42b 100755 Binary files a/Libs/mac/libopenblasp-r0.3.21.dylib and b/Libs/mac/libopenblasp-r0.3.24.dylib differ diff --git a/Libs/win/libopenblas.dll b/Libs/win/libopenblas.dll index 3ed334988..0d2dbea07 100644 Binary files a/Libs/win/libopenblas.dll and b/Libs/win/libopenblas.dll differ diff --git a/Libs/win/libopenblas.lib b/Libs/win/libopenblas.lib index 41ee1f7df..d010824f6 100644 Binary files a/Libs/win/libopenblas.lib and b/Libs/win/libopenblas.lib differ diff --git a/Load/Amplitude/Amplitude b/Load/Amplitude/Amplitude index 185ef1e6f..c01b1b754 100644 --- a/Load/Amplitude/Amplitude +++ b/Load/Amplitude/Amplitude @@ -1,8 +1,8 @@ #include "Amplitude.h" -#include "CustomAmplitude.h" #include "Combine.h" #include "Constant.h" #include "Cosine.h" +#include "CustomAmplitude.h" #include "Decay.h" #include "Linear.h" #include "Modulated.h" @@ -10,4 +10,4 @@ #include "Ramp.h" #include "Sine.h" #include "Tabular.h" -#include "TabularSpline.h" \ No newline at end of file +#include "TabularSpline.h" diff --git a/Load/Amplitude/CMakeLists.txt b/Load/Amplitude/CMakeLists.txt index 81faf27bd..8761893cc 100644 --- a/Load/Amplitude/CMakeLists.txt +++ b/Load/Amplitude/CMakeLists.txt @@ -12,4 +12,4 @@ target_sources(${PROJECT_NAME} PRIVATE Tabular.cpp TabularSpline.cpp NZStrongMotion.cpp - ) +) diff --git a/Load/Amplitude/Decay.h b/Load/Amplitude/Decay.h index 594be1e9a..dd4e4ad89 100644 --- a/Load/Amplitude/Decay.h +++ b/Load/Amplitude/Decay.h @@ -35,10 +35,8 @@ class Decay final : public Amplitude { const double A, TD; public: - Decay(unsigned, - double, - double, - unsigned // step tag + Decay( + unsigned, double, double, unsigned // step tag ); double get_amplitude(double) override; diff --git a/Load/Amplitude/Modulated.h b/Load/Amplitude/Modulated.h index cdd586d7b..a3c2733de 100644 --- a/Load/Amplitude/Modulated.h +++ b/Load/Amplitude/Modulated.h @@ -39,10 +39,11 @@ class Modulated final : public Amplitude { const std::vector freq; public: - Modulated(unsigned, // tag - double, // amplitude - std::vector&&, // frequency - unsigned = 0 // step tag + Modulated( + unsigned, // tag + double, // amplitude + std::vector&&, // frequency + unsigned = 0 // step tag ); double get_amplitude(double) override; diff --git a/Load/BodyForce.h b/Load/BodyForce.h index 67b291144..f2a1a7b07 100644 --- a/Load/BodyForce.h +++ b/Load/BodyForce.h @@ -35,19 +35,21 @@ class BodyForce : public Load { public: - BodyForce(unsigned, // tag - unsigned, // start step tag - double, // magnitude - uvec&&, // element tags - unsigned, // dof tag - unsigned // amplitude tag + BodyForce( + unsigned, // tag + unsigned, // start step tag + double, // magnitude + uvec&&, // element tags + unsigned, // dof tag + unsigned // amplitude tag ); - BodyForce(unsigned, // tag - unsigned, // start step tag - double, // magnitude - uvec&&, // element tags - uvec&&, // dof tags - unsigned = 0 // amplitude tag + BodyForce( + unsigned, // tag + unsigned, // start step tag + double, // magnitude + uvec&&, // element tags + uvec&&, // dof tags + unsigned = 0 // amplitude tag ); int process(const shared_ptr&) override; diff --git a/Load/CMakeLists.txt b/Load/CMakeLists.txt index c707828f9..a8f7422a3 100644 --- a/Load/CMakeLists.txt +++ b/Load/CMakeLists.txt @@ -9,7 +9,8 @@ target_sources(${PROJECT_NAME} PRIVATE NodalAcceleration.cpp NodalDisplacement.cpp NodalForce.cpp + ReferenceForce.cpp SupportMotion.cpp - ) +) add_subdirectory(Amplitude) diff --git a/Load/GroupBodyForce.h b/Load/GroupBodyForce.h index 8053a0e2e..67f703b15 100644 --- a/Load/GroupBodyForce.h +++ b/Load/GroupBodyForce.h @@ -35,19 +35,21 @@ class GroupBodyForce final : protected GroupLoad, public BodyForce { public: - GroupBodyForce(unsigned, // tag - unsigned, // start step tag - double, // magnitude - uvec&&, // element tags - unsigned, // dof tag - unsigned // amplitude tag + GroupBodyForce( + unsigned, // tag + unsigned, // start step tag + double, // magnitude + uvec&&, // element tags + unsigned, // dof tag + unsigned // amplitude tag ); - GroupBodyForce(unsigned, // tag - unsigned, // start step tag - double, // magnitude - uvec&&, // element tags - uvec&&, // dof tags - unsigned = 0 // amplitude tag + GroupBodyForce( + unsigned, // tag + unsigned, // start step tag + double, // magnitude + uvec&&, // element tags + uvec&&, // dof tags + unsigned = 0 // amplitude tag ); int initialize(const shared_ptr&) override; diff --git a/Load/GroupNodalDisplacement.h b/Load/GroupNodalDisplacement.h index ca31dee22..1823b67bc 100644 --- a/Load/GroupNodalDisplacement.h +++ b/Load/GroupNodalDisplacement.h @@ -35,19 +35,21 @@ class GroupNodalDisplacement final : protected GroupLoad, public NodalDisplacement { public: - GroupNodalDisplacement(unsigned, // tag - unsigned, // step tag - double, // magnitude - uvec&&, // group tags - unsigned, // dof tag - unsigned // amplitude tag + GroupNodalDisplacement( + unsigned, // tag + unsigned, // step tag + double, // magnitude + uvec&&, // group tags + unsigned, // dof tag + unsigned // amplitude tag ); - GroupNodalDisplacement(unsigned, // tag - unsigned, // step tag - double, // magnitude - uvec&&, // group tags - uvec&&, // dof tags - unsigned = 0 // amplitude tag + GroupNodalDisplacement( + unsigned, // tag + unsigned, // step tag + double, // magnitude + uvec&&, // group tags + uvec&&, // dof tags + unsigned = 0 // amplitude tag ); int initialize(const shared_ptr&) override; diff --git a/Load/GroupNodalForce.h b/Load/GroupNodalForce.h index 68726dd9d..b5f745c3f 100644 --- a/Load/GroupNodalForce.h +++ b/Load/GroupNodalForce.h @@ -35,19 +35,21 @@ class GroupNodalForce final : protected GroupLoad, public NodalForce { public: - GroupNodalForce(unsigned, // tag - unsigned, // start step tag - double, // magnitude - uvec&&, // group tags - unsigned, // dof tag - unsigned // amplitude tag + GroupNodalForce( + unsigned, // tag + unsigned, // start step tag + double, // magnitude + uvec&&, // group tags + unsigned, // dof tag + unsigned // amplitude tag ); - GroupNodalForce(unsigned, // tag - unsigned, // start step tag - double, // magnitude - uvec&&, // group tags - uvec&&, // dof tags - unsigned = 0 // amplitude tag + GroupNodalForce( + unsigned, // tag + unsigned, // start step tag + double, // magnitude + uvec&&, // group tags + uvec&&, // dof tags + unsigned = 0 // amplitude tag ); int initialize(const shared_ptr&) override; diff --git a/Load/LineUDL.h b/Load/LineUDL.h index 3cac38356..af24369f7 100644 --- a/Load/LineUDL.h +++ b/Load/LineUDL.h @@ -38,13 +38,14 @@ class LineUDL : public Load { const uword dimension; public: - LineUDL(unsigned, // tag - unsigned, // start step tag - double, // magnitude - uvec&&, // node tags - unsigned, // dof tag - unsigned, // amplitude tag - uword // dimension + LineUDL( + unsigned, // tag + unsigned, // start step tag + double, // magnitude + uvec&&, // node tags + unsigned, // dof tag + unsigned, // amplitude tag + uword // dimension ); int initialize(const shared_ptr&) override; @@ -52,12 +53,13 @@ class LineUDL : public Load { class LineUDL2D final : public LineUDL { public: - LineUDL2D(unsigned, // tag - unsigned, // start step tag - double, // magnitude - uvec&&, // node tags - unsigned, // dof tag - unsigned // amplitude tag + LineUDL2D( + unsigned, // tag + unsigned, // start step tag + double, // magnitude + uvec&&, // node tags + unsigned, // dof tag + unsigned // amplitude tag ); int process(const shared_ptr&) override; @@ -65,12 +67,13 @@ class LineUDL2D final : public LineUDL { class LineUDL3D final : public LineUDL { public: - LineUDL3D(unsigned, // tag - unsigned, // start step tag - double, // magnitude - uvec&&, // node tags - unsigned, // dof tag - unsigned // amplitude tag + LineUDL3D( + unsigned, // tag + unsigned, // start step tag + double, // magnitude + uvec&&, // node tags + unsigned, // dof tag + unsigned // amplitude tag ); int process(const shared_ptr&) override; diff --git a/Load/Load b/Load/Load index d757476d5..6bdbe070f 100644 --- a/Load/Load +++ b/Load/Load @@ -9,4 +9,5 @@ #include "NodalAcceleration.h" #include "NodalDisplacement.h" #include "NodalForce.h" -#include "SupportMotion.h" \ No newline at end of file +#include "ReferenceForce.h" +#include "SupportMotion.h" diff --git a/Load/Load.cpp b/Load/Load.cpp index adce2804d..306446482 100644 --- a/Load/Load.cpp +++ b/Load/Load.cpp @@ -33,6 +33,8 @@ const vec& Load::get_trial_load() const { return trial_load; } const vec& Load::get_trial_settlement() const { return trial_settlement; } +const sp_vec& Load::get_reference_load() const { return reference_load; } + void set_load_multiplier(const double M) { Load::multiplier = M; } GroupLoad::GroupLoad(uvec&& N) diff --git a/Load/Load.h b/Load/Load.h index bdb228002..c8e10163e 100644 --- a/Load/Load.h +++ b/Load/Load.h @@ -44,16 +44,18 @@ class Load : public ConditionalModifier { vec trial_load; vec trial_settlement; + sp_vec reference_load; friend void set_load_multiplier(double); public: - Load(unsigned, // tag - unsigned, // step tag - unsigned, // amplitude tag - uvec&&, // node tag - uvec&&, // dof tag - double // nominal magnitude + Load( + unsigned, // tag + unsigned, // step tag + unsigned, // amplitude tag + uvec&&, // node tag + uvec&&, // dof tag + double // nominal magnitude ); Load(const Load&) = delete; // copy forbidden Load(Load&&) = delete; // move forbidden @@ -67,6 +69,7 @@ class Load : public ConditionalModifier { [[nodiscard]] const vec& get_trial_load() const; [[nodiscard]] const vec& get_trial_settlement() const; + [[nodiscard]] const sp_vec& get_reference_load() const; }; void set_load_multiplier(double); diff --git a/Load/LoadParser.cpp b/Load/LoadParser.cpp index 86b228b93..da7372ab8 100644 --- a/Load/LoadParser.cpp +++ b/Load/LoadParser.cpp @@ -117,6 +117,37 @@ void new_cload(unique_ptr& return_obj, istringstream& command, const bool flag ? return_obj = make_unique(load_id, 0, magnitude, uvec(node_tag), dof_id, amplitude_id) : return_obj = make_unique(load_id, 0, magnitude, uvec(node_tag), dof_id, amplitude_id); } +void new_refload(unique_ptr& return_obj, istringstream& command) { + unsigned load_id; + if(!get_input(command, load_id)) { + suanpan_error("A valid tag is required.\n"); + return; + } + + if(unsigned amplitude_id; !get_input(command, amplitude_id)) { + suanpan_error("A valid amplitude tag is required.\n"); + return; + } + + double magnitude; + if(!get_input(command, magnitude)) { + suanpan_error("A valid load magnitude is required.\n"); + return; + } + + unsigned dof_id; + if(!get_input(command, dof_id)) { + suanpan_error("A valid dof identifier is required.\n"); + return; + } + + unsigned node; + vector node_tag; + while(get_input(command, node)) node_tag.push_back(node); + + return_obj = make_unique(load_id, 0, magnitude, uvec(node_tag), dof_id); +} + void new_lineudl(unique_ptr& return_obj, istringstream& command, const unsigned dimension) { unsigned load_id; if(!get_input(command, load_id)) { @@ -332,16 +363,17 @@ int create_new_load(const shared_ptr& domain, istringstream& command if(is_equal(load_id, "Acceleration")) new_acceleration(new_load, command); else if(is_equal(load_id, "BodyForce")) new_bodyforce(new_load, command, false); - else if(is_equal(load_id, "GroupBodyForce")) new_bodyforce(new_load, command, true); else if(is_equal(load_id, "Cload")) new_cload(new_load, command, false); + else if(is_equal(load_id, "Disp") || is_equal(load_id, "Displacement") || is_equal(load_id, "DispLoad")) new_displacement(new_load, command, false); + else if(is_equal(load_id, "GroupBodyForce")) new_bodyforce(new_load, command, true); else if(is_equal(load_id, "GroupCload")) new_cload(new_load, command, true); + else if(is_equal(load_id, "GroupDisp") || is_equal(load_id, "GroupDisplacement") || is_equal(load_id, "GroupDispLoad")) new_displacement(new_load, command, true); else if(is_equal(load_id, "LineUDL2D")) new_lineudl(new_load, command, 2); else if(is_equal(load_id, "LineUDL3D")) new_lineudl(new_load, command, 3); - else if(is_equal(load_id, "Disp") || is_equal(load_id, "Displacement") || is_equal(load_id, "DispLoad")) new_displacement(new_load, command, false); - else if(is_equal(load_id, "GroupDisp") || is_equal(load_id, "GroupDisplacement") || is_equal(load_id, "GroupDispLoad")) new_displacement(new_load, command, true); + else if(is_equal(load_id, "ReferenceLoad") || is_equal(load_id, "RefLoad") || is_equal(load_id, "RefForce")) new_refload(new_load, command); + else if(is_equal(load_id, "SupportAcceleration")) new_supportmotion(new_load, command, 2); else if(is_equal(load_id, "SupportDisplacement")) new_supportmotion(new_load, command, 0); else if(is_equal(load_id, "SupportVelocity")) new_supportmotion(new_load, command, 1); - else if(is_equal(load_id, "SupportAcceleration")) new_supportmotion(new_load, command, 2); else load::object(new_load, domain, load_id, command); if(new_load != nullptr) new_load->set_start_step(domain->get_current_step_tag()); diff --git a/Load/NodalAcceleration.h b/Load/NodalAcceleration.h index 86546ccd8..db27e5ccb 100644 --- a/Load/NodalAcceleration.h +++ b/Load/NodalAcceleration.h @@ -35,24 +35,27 @@ class NodalAcceleration final : public Load { public: - NodalAcceleration(unsigned, // tag - unsigned, // step tag - double, // magnitude - unsigned, // dof tag - unsigned // amplitude tag + NodalAcceleration( + unsigned, // tag + unsigned, // step tag + double, // magnitude + unsigned, // dof tag + unsigned // amplitude tag ); - NodalAcceleration(unsigned, // tag - unsigned, // step tag - double, // magnitude - uvec&&, // dof tags - unsigned = 0 // amplitude tag + NodalAcceleration( + unsigned, // tag + unsigned, // step tag + double, // magnitude + uvec&&, // dof tags + unsigned = 0 // amplitude tag ); - NodalAcceleration(unsigned, // tag - unsigned, // step tag - double, // magnitude - uvec&&, // node tags - unsigned, // dof tag - unsigned = 0 // amplitude tag + NodalAcceleration( + unsigned, // tag + unsigned, // step tag + double, // magnitude + uvec&&, // node tags + unsigned, // dof tag + unsigned = 0 // amplitude tag ); int process(const shared_ptr&) override; diff --git a/Load/NodalDisplacement.cpp b/Load/NodalDisplacement.cpp index 7b4da074d..0ebef9854 100644 --- a/Load/NodalDisplacement.cpp +++ b/Load/NodalDisplacement.cpp @@ -35,11 +35,13 @@ int NodalDisplacement::initialize(const shared_ptr& D) { } int NodalDisplacement::process(const shared_ptr& D) { - const auto& W = D->get_factory(); + if(!encoding.empty()) { + const auto& W = D->get_factory(); - trial_settlement.zeros(W->get_size()); + trial_settlement.zeros(W->get_size()); - trial_settlement(encoding).fill(pattern * magnitude->get_amplitude(W->get_trial_time())); + trial_settlement(encoding).fill(pattern * magnitude->get_amplitude(W->get_trial_time())); + } return SUANPAN_SUCCESS; } diff --git a/Load/NodalDisplacement.h b/Load/NodalDisplacement.h index 183e1f71e..adcf53a8c 100644 --- a/Load/NodalDisplacement.h +++ b/Load/NodalDisplacement.h @@ -38,19 +38,21 @@ class NodalDisplacement : public Load { uvec encoding; public: - NodalDisplacement(unsigned, // tag - unsigned, // step tag - double, // magnitude - uvec&&, // node tags - unsigned, // dof tag - unsigned // amplitude tag + NodalDisplacement( + unsigned, // tag + unsigned, // step tag + double, // magnitude + uvec&&, // node tags + unsigned, // dof tag + unsigned // amplitude tag ); - NodalDisplacement(unsigned, // tag - unsigned, // step tag - double, // magnitude - uvec&&, // node tags - uvec&&, // dof tags - unsigned = 0 // amplitude tag + NodalDisplacement( + unsigned, // tag + unsigned, // step tag + double, // magnitude + uvec&&, // node tags + uvec&&, // dof tags + unsigned = 0 // amplitude tag ); int initialize(const shared_ptr&) override; diff --git a/Load/NodalForce.h b/Load/NodalForce.h index 3c2f06787..1bf59b0dd 100644 --- a/Load/NodalForce.h +++ b/Load/NodalForce.h @@ -35,19 +35,21 @@ class NodalForce : public Load { public: - NodalForce(unsigned, // tag - unsigned, // start step tag - double, // magnitude - uvec&&, // node tags - unsigned, // dof tag - unsigned // amplitude tag + NodalForce( + unsigned, // tag + unsigned, // start step tag + double, // magnitude + uvec&&, // node tags + unsigned, // dof tag + unsigned // amplitude tag ); - NodalForce(unsigned, // tag - unsigned, // start step tag - double, // magnitude - uvec&&, // node tags - uvec&&, // dof tags - unsigned = 0 // amplitude tag + NodalForce( + unsigned, // tag + unsigned, // start step tag + double, // magnitude + uvec&&, // node tags + uvec&&, // dof tags + unsigned = 0 // amplitude tag ); int process(const shared_ptr&) override; diff --git a/Load/ReferenceForce.cpp b/Load/ReferenceForce.cpp new file mode 100644 index 000000000..89868f496 --- /dev/null +++ b/Load/ReferenceForce.cpp @@ -0,0 +1,33 @@ +/******************************************************************************* + * Copyright (C) 2017-2023 Theodore Chang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + ******************************************************************************/ + +#include "ReferenceForce.h" +#include +#include + +ReferenceForce::ReferenceForce(const unsigned T, const unsigned S, const double L, uvec&& N, const unsigned D) + : Load(T, S, 0, std::forward(N), uvec{D}, L) {} + +int ReferenceForce::process(const shared_ptr& D) { + const auto& W = D->get_factory(); + + reference_load.zeros(W->get_size()); + + for(const auto I : get_nodal_active_dof(D)) reference_load(I) = pattern; + + return SUANPAN_SUCCESS; +} diff --git a/Load/ReferenceForce.h b/Load/ReferenceForce.h new file mode 100644 index 000000000..ca6fe5a1a --- /dev/null +++ b/Load/ReferenceForce.h @@ -0,0 +1,51 @@ +/******************************************************************************* + * Copyright (C) 2017-2023 Theodore Chang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + ******************************************************************************/ +/** + * @class ReferenceForce + * @brief A ReferenceForce class. + * + * The ReferenceForce class is in charge of handling concentrated reference load. + * + * @author tlc + * @date 23/10/2023 + * @version 0.1.0 + * @file ReferenceForce.h + * @addtogroup Load + * @{ + */ + +#ifndef REFERENCEFORCE_H +#define REFERENCEFORCE_H + +#include + +class ReferenceForce final : public Load { +public: + ReferenceForce( + unsigned, // tag + unsigned, // start step tag + double, // magnitude + uvec&&, // node tags + unsigned // dof tag + ); + + int process(const shared_ptr&) override; +}; + +#endif + +//! @} diff --git a/Load/SupportMotion.h b/Load/SupportMotion.h index 57f36f37c..4af1677fc 100644 --- a/Load/SupportMotion.h +++ b/Load/SupportMotion.h @@ -38,19 +38,21 @@ class SupportMotion : public Load { uvec encoding; public: - SupportMotion(unsigned, // tag - unsigned, // step tag - double, // magnitude - uvec&&, // node tags - unsigned, // dof tag - unsigned // amplitude tag + SupportMotion( + unsigned, // tag + unsigned, // step tag + double, // magnitude + uvec&&, // node tags + unsigned, // dof tag + unsigned // amplitude tag ); - SupportMotion(unsigned, // tag - unsigned, // step tag - double, // magnitude - uvec&&, // node tags - uvec&&, // dof tags - unsigned = 0 // amplitude tag + SupportMotion( + unsigned, // tag + unsigned, // step tag + double, // magnitude + uvec&&, // node tags + uvec&&, // dof tags + unsigned = 0 // amplitude tag ); int initialize(const shared_ptr&) override; diff --git a/MSVC/suanPan/suanPan/suanPan.vcxproj b/MSVC/suanPan/suanPan/suanPan.vcxproj index 1ecf1d3d7..b2dd951e3 100644 --- a/MSVC/suanPan/suanPan/suanPan.vcxproj +++ b/MSVC/suanPan/suanPan/suanPan.vcxproj @@ -156,6 +156,7 @@ + @@ -163,7 +164,9 @@ + + @@ -211,7 +214,8 @@ - + + @@ -249,6 +253,8 @@ + + @@ -289,17 +295,20 @@ + + - + + - + @@ -349,7 +358,6 @@ - @@ -410,7 +418,11 @@ + + + + @@ -431,13 +443,14 @@ + - + @@ -447,7 +460,7 @@ - + @@ -470,6 +483,9 @@ + + + @@ -597,6 +613,7 @@ + @@ -632,7 +649,9 @@ + + @@ -682,7 +701,8 @@ - + + @@ -720,6 +740,8 @@ + + @@ -758,18 +780,21 @@ + + - + + - + @@ -819,7 +844,6 @@ - @@ -880,7 +904,11 @@ + + + + @@ -901,14 +929,14 @@ - + - + @@ -918,7 +946,7 @@ - + @@ -941,6 +969,9 @@ + + + @@ -992,6 +1023,7 @@ + diff --git a/MSVC/suanPan/suanPan/suanPan.vcxproj.filters b/MSVC/suanPan/suanPan/suanPan.vcxproj.filters index e332f9e49..13a388cd8 100644 --- a/MSVC/suanPan/suanPan/suanPan.vcxproj.filters +++ b/MSVC/suanPan/suanPan/suanPan.vcxproj.filters @@ -205,6 +205,15 @@ {da04bede-12e0-4fa7-8e1b-963193f71e72} + + {d1a891ce-e723-4078-9baa-cc286f7d6728} + + + {7169039f-88b8-4a06-9c1c-41a9875fce28} + + + {383bbae7-39ee-40f6-875e-a61aba9726da} + @@ -603,7 +612,7 @@ Material\Material1D\Degradation - + Material\Material1D\Degradation @@ -744,9 +753,6 @@ Material\Material2D\Wrapper - - Material\Material2D - Material\Material2D @@ -948,7 +954,7 @@ Section\Section1D - + Section\Section2D @@ -978,7 +984,7 @@ Section\Section2D - + Section\Section3D @@ -1399,7 +1405,7 @@ UnitTest - + Element\Modifier @@ -1477,7 +1483,7 @@ Material\Material3D\vonMises - + Material\Material1D\Degradation @@ -1519,6 +1525,57 @@ Material\Material3D\Hoffman + + Material\Material1D\Degradation + + + Material\Material1D\Concrete + + + Element\Utility + + + Element\Beam + + + Element\Utility + + + Element\Beam + + + Section\SectionOS + + + Section + + + Section\SectionOS + + + Material\MaterialOS + + + Material\MaterialOS + + + Section\SectionOS + + + Material\Material3D\Wrapper + + + Material\MaterialOS\Wrapper + + + Element\Modifier + + + Load + + + Domain\Group + @@ -1971,7 +2028,7 @@ Material\Material1D\Degradation - + Material\Material1D\Degradation @@ -2112,9 +2169,6 @@ Material\Material2D\Wrapper - - Material\Material2D - Material\Material2D @@ -2289,9 +2343,6 @@ Recorder - - Section - Section @@ -2319,7 +2370,7 @@ Section\Section1D - + Section\Section2D @@ -2367,7 +2418,7 @@ Section\Section3D - + Section\Section3D @@ -2776,7 +2827,7 @@ Toolbox - + Element\Modifier @@ -2854,7 +2905,7 @@ Material\Material3D\vonMises - + Material\Material1D\Degradation @@ -2905,6 +2956,60 @@ Material\Material3D\Hoffman + + Material\Material1D\Degradation + + + Material\Material1D\Concrete + + + Element\Utility + + + Element\Beam + + + Element\Utility + + + Element\Beam + + + Section\SectionOS + + + Section + + + Section\SectionOS + + + Material\MaterialOS + + + Material\MaterialOS + + + Section\SectionOS + + + Material\Material3D\Wrapper + + + Material\MaterialOS\Wrapper + + + Element\Modifier + + + Toolbox + + + Load + + + Domain\Group + diff --git a/MSVC/suanPan/suanPan/suanPan.vcxproj.user b/MSVC/suanPan/suanPan/suanPan.vcxproj.user index 51ec00ab4..a0ec12856 100644 --- a/MSVC/suanPan/suanPan/suanPan.vcxproj.user +++ b/MSVC/suanPan/suanPan/suanPan.vcxproj.user @@ -4,8 +4,8 @@ false - -f lis - ..\..\..\Example\Solver + -f ConcreteK4 + ..\..\..\Example\Material WindowsLocalDebugger diff --git a/Material/CMakeLists.txt b/Material/CMakeLists.txt index 8a965982d..4a6714621 100644 --- a/Material/CMakeLists.txt +++ b/Material/CMakeLists.txt @@ -7,6 +7,7 @@ set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/../Libs) include(Material1D/CMakeLists.txt) include(Material2D/CMakeLists.txt) include(Material3D/CMakeLists.txt) +include(MaterialOS/CMakeLists.txt) include(Special/CMakeLists.txt) add_library(${PROJECT_NAME} STATIC @@ -18,5 +19,6 @@ add_library(${PROJECT_NAME} STATIC ${M1D} ${M2D} ${M3D} + ${MOS} ${MS} - ) +) diff --git a/Material/ExternalMaterial.h b/Material/ExternalMaterial.h index fb338e5d1..abfd95762 100644 --- a/Material/ExternalMaterial.h +++ b/Material/ExternalMaterial.h @@ -65,9 +65,10 @@ class ExternalMaterial final : public Material { ExternalMaterialData data; public: - ExternalMaterial(unsigned, // unique material tag - std::vector&&, // parameter pool - void* // handler pointer + ExternalMaterial( + unsigned, // unique material tag + std::vector&&, // parameter pool + void* // handler pointer ); ExternalMaterial(const ExternalMaterial&); ExternalMaterial(ExternalMaterial&&) noexcept = delete; diff --git a/Material/Material b/Material/Material index a75e4ea6c..1d1915da0 100644 --- a/Material/Material +++ b/Material/Material @@ -1,6 +1,5 @@ #include "Material1D/Material1D" #include "Material2D/Material2D" #include "Material3D/Material3D" +#include "MaterialOS/MaterialOS" #include "Special/Special" - -#include "Material.h" diff --git a/Material/Material.cpp b/Material/Material.cpp index 845eda86f..e2cda1745 100644 --- a/Material/Material.cpp +++ b/Material/Material.cpp @@ -16,13 +16,20 @@ ******************************************************************************/ #include "Material.h" -#include "Domain/DomainBase.h" +#include +#include Material::Material(const unsigned T, const MaterialType MT, const double D) - : DataMaterial{1E-14, fabs(D), MT, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}} - , DataCoupleMaterial{-1., {}, {}, {}, {}, {}, {}, {}, {}, {}} + : DataMaterial{fabs(D), MT} + , DataCoupleMaterial{} , Tag(T) {} +double Material::get_density() const { return density; } + +MaterialType Material::get_material_type() const { return material_type; } + +PlaneType Material::get_plane_type() const { return plane_type; } + int Material::initialize_base(const shared_ptr&) { if(initialized) return SUANPAN_SUCCESS; @@ -63,13 +70,11 @@ bool Material::is_symmetric() const { return symmetric; } bool Material::is_support_couple() const { return support_couple; } -void Material::set_characteristic_length(const double L) { characteristic_length = std::max(datum::eps, L); } +void Material::set_characteristic_length(const double L) const { access::rw(characteristic_length) = std::max(datum::eps, L); } double Material::get_characteristic_length() const { return characteristic_length; } -MaterialType Material::get_material_type() const { return material_type; } - -double Material::get_parameter(const ParameterType T) const { return T == ParameterType::DENSITY ? density : 0.; } +double Material::get_parameter(ParameterType) const { return 0.; } const vec& Material::get_trial_strain() { return trial_strain; } @@ -285,7 +290,16 @@ int Material::reset_couple_status() { return SUANPAN_SUCCESS; } -std::vector Material::record(const OutputType) { return {}; } +std::vector Material::record(const OutputType P) { + if(P == OutputType::S) return {current_stress}; + if(P == OutputType::E) return {current_strain}; + if(P == OutputType::EE) return {solve(initial_stiffness, current_stress)}; + if(P == OutputType::PE) return {current_strain - solve(initial_stiffness, current_stress)}; + if(P == OutputType::HIST) return {current_history}; + if(P == OutputType::YF) return {vec{any(current_history > 0.) ? 1. : 0.}}; + + return {}; +} void ConstantStiffness(DataMaterial* M) { M->current_stiffness = mat(M->initial_stiffness.memptr(), M->initial_stiffness.n_rows, M->initial_stiffness.n_cols, false, true); @@ -356,23 +370,3 @@ void PureWrapper(Material* M) { unique_ptr suanpan::make_copy(const shared_ptr& P) { return nullptr == P ? nullptr : P->get_copy(); } unique_ptr suanpan::make_copy(const unique_ptr& P) { return nullptr == P ? nullptr : P->get_copy(); } - -/** - * \brief This function checks if the corresponding material model exists, if yes make a copy and ensure all initialisations succeed, in case of any errors, it returns nullptr. - * \param D global storage domain - * \param T material tag - * \return local copy of material object - */ -unique_ptr suanpan::initialized_material_copy(const shared_ptr& D, const uword T) { - if(!D->find(T)) return nullptr; - - auto copy = D->get(T)->get_copy(); - - if(copy->is_initialized()) return copy; - - if(SUANPAN_SUCCESS != copy->initialize_base(D) || SUANPAN_SUCCESS != copy->initialize(D)) return nullptr; - - copy->set_initialized(true); - - return copy; -} diff --git a/Material/Material.h b/Material/Material.h index d2b95f232..8757f2368 100644 --- a/Material/Material.h +++ b/Material/Material.h @@ -29,80 +29,89 @@ #define MATERIAL_H #include -#include
+#include "ParameterType.h" enum class MaterialType : unsigned { D0 = 0, D1 = 1, D2 = 3, D3 = 6, - DS = 10 + DS = 10, + OS = 3 +}; + +enum class PlaneType : unsigned { + S = 1, + E = 2, + A = 3, + N = 0 }; class DomainBase; enum class OutputType; struct DataCoupleMaterial { - double characteristic_length = -1.; - - vec current_curvature; - vec current_couple_stress; + vec current_curvature{}; + vec current_couple_stress{}; - vec trial_curvature; - vec trial_couple_stress; + vec trial_curvature{}; + vec trial_couple_stress{}; - vec incre_curvature; - vec incre_couple_stress; + vec incre_curvature{}; + vec incre_couple_stress{}; - mat initial_couple_stiffness; // stiffness matrix - mat current_couple_stiffness; // stiffness matrix - mat trial_couple_stiffness; // stiffness matrix + mat initial_couple_stiffness{}; // stiffness matrix + mat current_couple_stiffness{}; // stiffness matrix + mat trial_couple_stiffness{}; // stiffness matrix }; struct DataMaterial { - const double tolerance = 1E-14; const double density = 0.; const MaterialType material_type = MaterialType::D0; + const PlaneType plane_type = PlaneType::N; - vec current_strain; // current status - vec current_strain_rate; // current status - vec current_strain_acc; // current status - vec current_stress; // current status - // vec current_stress_rate; // current status - - vec trial_strain; // trial status - vec trial_strain_rate; // trial status - vec trial_strain_acc; // trial status - vec trial_stress; // trial status - // vec trial_stress_rate; // trial status - - vec incre_strain; // incremental status - vec incre_strain_rate; // incremental status - vec incre_strain_acc; // incremental status - vec incre_stress; // incremental status - // vec incre_stress_rate; // incremental status - - vec initial_history; // initial status - vec current_history; // current status - vec trial_history; // trial status - - mat initial_stiffness; // stiffness matrix - mat current_stiffness; // stiffness matrix - mat trial_stiffness; // stiffness matrix - - mat initial_damping; // damping matrix - mat current_damping; // damping matrix - mat trial_damping; // damping matrix - - mat initial_inertial; // inertial matrix - mat current_inertial; // inertial matrix - mat trial_inertial; // inertial matrix + const double tolerance = 1E-14; + const double characteristic_length = -1.; + + vec current_strain{}; // current status + vec current_strain_rate{}; // current status + vec current_strain_acc{}; // current status + vec current_stress{}; // current status + // vec current_stress_rate{}; // current status + + vec trial_strain{}; // trial status + vec trial_strain_rate{}; // trial status + vec trial_strain_acc{}; // trial status + vec trial_stress{}; // trial status + // vec trial_stress_rate{}; // trial status + + vec incre_strain{}; // incremental status + vec incre_strain_rate{}; // incremental status + vec incre_strain_acc{}; // incremental status + vec incre_stress{}; // incremental status + // vec incre_stress_rate{}; // incremental status + + vec initial_history{}; // initial status + vec current_history{}; // current status + vec trial_history{}; // trial status + + mat initial_stiffness{}; // stiffness matrix + mat current_stiffness{}; // stiffness matrix + mat trial_stiffness{}; // stiffness matrix + + mat initial_damping{}; // damping matrix + mat current_damping{}; // damping matrix + mat trial_damping{}; // damping matrix + + mat initial_inertial{}; // inertial matrix + mat current_inertial{}; // inertial matrix + mat trial_inertial{}; // inertial matrix }; class Material : protected DataMaterial, protected DataCoupleMaterial, public Tag { const bool initialized = false; const bool symmetric = false; - const bool support_couple = false; + const bool support_couple = false; // indicate if the material supports couple stress theory friend void ConstantStiffness(DataMaterial*); friend void ConstantDamping(DataMaterial*); @@ -111,9 +120,10 @@ class Material : protected DataMaterial, protected DataCoupleMaterial, public Ta friend void PureWrapper(Material*); public: - explicit Material(unsigned = 0, // tag - MaterialType = MaterialType::D0, // material type - double = 0. // density + explicit Material( + unsigned = 0, // tag + MaterialType = MaterialType::D0, // material type + double = 0. // density ); Material(const Material&) = default; Material(Material&&) = delete; // move forbidden @@ -122,6 +132,10 @@ class Material : protected DataMaterial, protected DataCoupleMaterial, public Ta ~Material() override = default; + [[nodiscard]] double get_density() const; + [[nodiscard]] MaterialType get_material_type() const; + [[nodiscard]] PlaneType get_plane_type() const; + int initialize_base(const shared_ptr&); virtual int initialize(const shared_ptr&) = 0; @@ -137,11 +151,9 @@ class Material : protected DataMaterial, protected DataCoupleMaterial, public Ta [[nodiscard]] bool is_symmetric() const; [[nodiscard]] bool is_support_couple() const; - void set_characteristic_length(double); + void set_characteristic_length(double) const; [[nodiscard]] double get_characteristic_length() const; - [[nodiscard]] MaterialType get_material_type() const; - [[nodiscard]] virtual double get_parameter(ParameterType) const; virtual const vec& get_trial_strain(); @@ -221,7 +233,6 @@ class Material : protected DataMaterial, protected DataCoupleMaterial, public Ta namespace suanpan { unique_ptr make_copy(const shared_ptr&); unique_ptr make_copy(const unique_ptr&); - unique_ptr initialized_material_copy(const shared_ptr&, uword); } // namespace suanpan #endif diff --git a/Material/Material1D/CMakeLists.txt b/Material/Material1D/CMakeLists.txt index 5e7c409fa..0d3f2a4ad 100644 --- a/Material/Material1D/CMakeLists.txt +++ b/Material/Material1D/CMakeLists.txt @@ -3,10 +3,12 @@ set(M1D Material1D/Concrete/ConcreteExp.cpp Material1D/Concrete/ConcreteTable.cpp Material1D/Concrete/ConcreteTsai.cpp - Material1D/Degradation/CustomDegradation.cpp + Material1D/Concrete/NonlinearK4.cpp + Material1D/Degradation/CustomStrainDegradation.cpp + Material1D/Degradation/CustomStressDegradation.cpp Material1D/Degradation/Degradation.cpp Material1D/Degradation/Dhakal.cpp - Material1D/Degradation/TrilinearDegradation.cpp + Material1D/Degradation/TrilinearStrainDegradation.cpp Material1D/Elastic/AsymmElastic1D.cpp Material1D/Elastic/BilinearElastic1D.cpp Material1D/Elastic/CustomElastic1D.cpp @@ -56,4 +58,4 @@ set(M1D Material1D/Wrapper/Parallel.cpp Material1D/Wrapper/Sequential.cpp Material1D/Wrapper/Uniaxial.cpp - ) +) diff --git a/Material/Material1D/Concrete/ConcreteCM.cpp b/Material/Material1D/Concrete/ConcreteCM.cpp index 49bea0939..dd5937c72 100644 --- a/Material/Material1D/Concrete/ConcreteCM.cpp +++ b/Material/Material1D/Concrete/ConcreteCM.cpp @@ -322,8 +322,7 @@ int ConcreteCM::initialize(const shared_ptr&) { unique_ptr ConcreteCM::get_copy() { return make_unique(*this); } double ConcreteCM::get_parameter(const ParameterType P) const { - if(ParameterType::DENSITY == P) return density; - if(ParameterType::ELASTICMODULUS == P || ParameterType::YOUNGSMODULUS == P || ParameterType::E == P) return initial_stiffness(0); + if(ParameterType::ELASTICMODULUS == P) return elastic_modulus; if(ParameterType::PEAKSTRAIN == P) return c_strain; if(ParameterType::CRACKSTRAIN == P) return t_strain; return 0.; @@ -332,7 +331,7 @@ double ConcreteCM::get_parameter(const ParameterType P) const { int ConcreteCM::update_trial_status(const vec& n_strain) { incre_strain = (trial_strain = n_strain) - current_strain; - if(fabs(incre_strain(0)) <= 1E-15) return SUANPAN_SUCCESS; + if(fabs(incre_strain(0)) <= datum::eps) return SUANPAN_SUCCESS; trial_load_status = current_load_status; trial_history = current_history; diff --git a/Material/Material1D/Concrete/ConcreteCM.h b/Material/Material1D/Concrete/ConcreteCM.h index 9bc91c178..feffecfa5 100644 --- a/Material/Material1D/Concrete/ConcreteCM.h +++ b/Material/Material1D/Concrete/ConcreteCM.h @@ -73,16 +73,17 @@ class ConcreteCM final : public Material1D { void update_connect(); public: - ConcreteCM(unsigned, // tag - double, // elastic modulus - double, // peak stress in negative - double, // crack stress in positive - double, // NC - double, // NT - double = -2E-3, // peak strain in negative - double = 1E-4, // crack strain in positive - bool = false, // if to use linear transition - double = 0. // density + ConcreteCM( + unsigned, // tag + double, // elastic modulus + double, // peak stress in negative + double, // crack stress in positive + double, // NC + double, // NT + double = -2E-3, // peak strain in negative + double = 1E-4, // crack strain in positive + bool = false, // if to use linear transition + double = 0. // density ); int initialize(const shared_ptr&) override; diff --git a/Material/Material1D/Concrete/ConcreteExp.cpp b/Material/Material1D/Concrete/ConcreteExp.cpp index 0bf3686bc..8160fed51 100644 --- a/Material/Material1D/Concrete/ConcreteExp.cpp +++ b/Material/Material1D/Concrete/ConcreteExp.cpp @@ -42,13 +42,13 @@ podarray ConcreteExp::compute_compression_backbone(const double n_strain if(n_strain * elastic_modulus >= f_c) return response; - auto counter = 0; - double exp_term, jacobian; auto stress = .25 * f_c / a_c * pow(1. + a_c, 2.); + auto counter = 0u; + auto ref_error = 1.; while(true) { - if(++counter == max_iteration) { + if(max_iteration == ++counter) { suanpan_error("Cannot converge within {} iterations.\n", max_iteration); return response; } @@ -57,9 +57,10 @@ podarray ConcreteExp::compute_compression_backbone(const double n_strain const auto residual = (1. + a_c - a_c * exp_term) * exp_term - stress / f_c; jacobian = b_c / elastic_modulus * (2. * a_c * exp_term - 1. - a_c) * exp_term - 1. / f_c; const auto incre = residual / jacobian; - - suanpan_debug("Local compression iteration error: {:.5E}.\n", fabs(incre)); - if(fabs(incre) < tolerance) break; + const auto error = fabs(incre); + if(1u == counter) ref_error = error; + suanpan_debug("Local compression iteration error: {:.5E}.\n", error); + if(error < tolerance * ref_error || (fabs(residual) < tolerance && counter > 5u)) break; stress -= incre; } @@ -77,13 +78,13 @@ podarray ConcreteExp::compute_tension_backbone(const double n_strain) co if(n_strain * elastic_modulus <= f_t) return response; - auto counter = 0; - double exp_term, jacobian; auto stress = f_t; + auto counter = 0u; + auto ref_error = 1.; while(true) { - if(++counter == max_iteration) { + if(max_iteration == ++counter) { suanpan_error("Cannot converge within {} iterations.\n", max_iteration); return response; } @@ -92,9 +93,10 @@ podarray ConcreteExp::compute_tension_backbone(const double n_strain) co const auto residual = (1. + a_t - a_t * exp_term) * exp_term - stress / f_t; jacobian = b_t / elastic_modulus * (1. + a_t - 2. * a_t * exp_term) * exp_term - 1. / f_t; const auto incre = residual / jacobian; - - suanpan_debug("Local tension iteration error: {:.5E}.\n", fabs(incre)); - if(fabs(incre) < tolerance) break; + const auto error = fabs(incre); + if(1u == counter) ref_error = error; + suanpan_debug("Local tension iteration error: {:.5E}.\n", error); + if(error < tolerance * ref_error || (fabs(residual) < tolerance && counter > 5u)) break; stress -= incre; } @@ -111,7 +113,7 @@ double ConcreteExp::compute_tension_residual(const double reverse_t_strain, cons ConcreteExp::ConcreteExp(const unsigned T, const double E, const double FT, const double AT, const double GT, const double FC, const double AC, const double GC, const double M, const double R) : DataConcreteExp{E, fabs(FT), -fabs(FC) * 4. * AC * pow(1. + AC, -2.), AT, AC, fabs(FT) / GT * (1. + .5 * AT), fabs(FC) * 4. * AC * pow(1. + AC, -2.) / GC * (1. + .5 * AC)} - , SimpleHysteresis(T, M, R) { access::rw(tolerance) = 1E-13; } + , SimpleHysteresis(T, M, R) {} int ConcreteExp::initialize(const shared_ptr&) { trial_stiffness = current_stiffness = initial_stiffness = elastic_modulus; @@ -120,8 +122,7 @@ int ConcreteExp::initialize(const shared_ptr&) { } double ConcreteExp::get_parameter(const ParameterType P) const { - if(ParameterType::DENSITY == P) return density; - if(ParameterType::ELASTICMODULUS == P || ParameterType::YOUNGSMODULUS == P || ParameterType::E == P) return elastic_modulus; + if(ParameterType::ELASTICMODULUS == P) return elastic_modulus; if(ParameterType::PEAKSTRAIN == P) return f_c / elastic_modulus; if(ParameterType::CRACKSTRAIN == P) return f_t / elastic_modulus; return 0.; diff --git a/Material/Material1D/Concrete/ConcreteExp.h b/Material/Material1D/Concrete/ConcreteExp.h index 8e3b6e74d..dc4636af1 100644 --- a/Material/Material1D/Concrete/ConcreteExp.h +++ b/Material/Material1D/Concrete/ConcreteExp.h @@ -36,8 +36,8 @@ struct DataConcreteExp { const double f_t, f_c, a_t, a_c, b_t, b_c; }; -class ConcreteExp final : DataConcreteExp, public SimpleHysteresis { - static constexpr unsigned max_iteration = 20; +class ConcreteExp final : protected DataConcreteExp, public SimpleHysteresis { + static constexpr unsigned max_iteration = 20u; [[nodiscard]] podarray compute_compression_initial_reverse() const override; [[nodiscard]] podarray compute_tension_initial_reverse() const override; @@ -47,16 +47,17 @@ class ConcreteExp final : DataConcreteExp, public SimpleHysteresis { [[nodiscard]] double compute_tension_residual(double, double) const override; public: - ConcreteExp(unsigned, // tag - double, // elastic modulus - double, // f_t - double, // a_t - double, // g_t - double, // f_c - double, // a_c - double, // g_c - double, // middle point - double = 0. // density + ConcreteExp( + unsigned, // tag + double, // elastic modulus + double, // f_t + double, // a_t + double, // g_t + double, // f_c + double, // a_c + double, // g_c + double, // middle point + double = 0. // density ); int initialize(const shared_ptr&) override; diff --git a/Material/Material1D/Concrete/ConcreteTable.cpp b/Material/Material1D/Concrete/ConcreteTable.cpp index 1f0e04ca6..c67dafe1e 100644 --- a/Material/Material1D/Concrete/ConcreteTable.cpp +++ b/Material/Material1D/Concrete/ConcreteTable.cpp @@ -105,8 +105,7 @@ int ConcreteTable::initialize(const shared_ptr&) { } double ConcreteTable::get_parameter(const ParameterType P) const { - if(ParameterType::DENSITY == P) return density; - if(ParameterType::ELASTICMODULUS == P || ParameterType::YOUNGSMODULUS == P || ParameterType::E == P) return initial_stiffness(0); + if(ParameterType::ELASTICMODULUS == P) return initial_stiffness(0); if(ParameterType::PEAKSTRAIN == P) return compute_compression_initial_reverse()(0); if(ParameterType::CRACKSTRAIN == P) return compute_tension_initial_reverse()(0); return 0.; diff --git a/Material/Material1D/Concrete/ConcreteTable.h b/Material/Material1D/Concrete/ConcreteTable.h index 6fa25d001..b7a7940af 100644 --- a/Material/Material1D/Concrete/ConcreteTable.h +++ b/Material/Material1D/Concrete/ConcreteTable.h @@ -44,11 +44,12 @@ class ConcreteTable final : public SimpleHysteresis { [[nodiscard]] double compute_tension_residual(double, double) const override; public: - ConcreteTable(unsigned, // tag - mat&&, // compression table - mat&&, // tension table - double, // middle point - double = 0. // density + ConcreteTable( + unsigned, // tag + mat&&, // compression table + mat&&, // tension table + double, // middle point + double = 0. // density ); int initialize(const shared_ptr&) override; diff --git a/Material/Material1D/Concrete/ConcreteTsai.cpp b/Material/Material1D/Concrete/ConcreteTsai.cpp index 0302d5287..91da4535c 100644 --- a/Material/Material1D/Concrete/ConcreteTsai.cpp +++ b/Material/Material1D/Concrete/ConcreteTsai.cpp @@ -86,8 +86,7 @@ int ConcreteTsai::initialize(const shared_ptr&) { } double ConcreteTsai::get_parameter(const ParameterType P) const { - if(ParameterType::DENSITY == P) return density; - if(ParameterType::ELASTICMODULUS == P || ParameterType::YOUNGSMODULUS == P || ParameterType::E == P) return initial_stiffness(0); + if(ParameterType::ELASTICMODULUS == P) return initial_stiffness(0); if(ParameterType::PEAKSTRAIN == P) return c_strain; if(ParameterType::CRACKSTRAIN == P) return t_strain; return 0.; diff --git a/Material/Material1D/Concrete/ConcreteTsai.h b/Material/Material1D/Concrete/ConcreteTsai.h index 77ab14812..293a067f7 100644 --- a/Material/Material1D/Concrete/ConcreteTsai.h +++ b/Material/Material1D/Concrete/ConcreteTsai.h @@ -43,27 +43,29 @@ class ConcreteTsai final : public SimpleHysteresis { [[nodiscard]] double compute_tension_residual(double, double) const override; public: - ConcreteTsai(unsigned, // tag - double, // peak stress in negative - double, // crack stress in positive - double, // MC - double, // NC - double, // MT - double, // NT - double, // middle point - double, // peak strain in negative - double, // crack strain in positive - double = 0. // density + ConcreteTsai( + unsigned, // tag + double, // peak stress in negative + double, // crack stress in positive + double, // MC + double, // NC + double, // MT + double, // NT + double, // middle point + double, // peak strain in negative + double, // crack strain in positive + double = 0. // density ); - ConcreteTsai(unsigned, // tag - double, // peak stress in negative - double, // crack stress in positive - double, // M - double, // N - double, // middle point - double, // peak strain in negative - double, // crack strain in positive - double = 0. // density + ConcreteTsai( + unsigned, // tag + double, // peak stress in negative + double, // crack stress in positive + double, // M + double, // N + double, // middle point + double, // peak strain in negative + double, // crack strain in positive + double = 0. // density ); int initialize(const shared_ptr&) override; diff --git a/Material/Material1D/Concrete/NonlinearK4.cpp b/Material/Material1D/Concrete/NonlinearK4.cpp new file mode 100644 index 000000000..b1aad0dc6 --- /dev/null +++ b/Material/Material1D/Concrete/NonlinearK4.cpp @@ -0,0 +1,201 @@ +/******************************************************************************* + * Copyright (C) 2017-2023 Theodore Chang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + ******************************************************************************/ + +#include "NonlinearK4.h" +#include + +int NonlinearK4::compute_plasticity(double& k) { + auto& plastic_strain = trial_history(0); + + const auto sign_sigma = suanpan::sign(trial_stress(0)); + + const auto backbone_handle = sign_sigma > 0. ? std::mem_fn(&NonlinearK4::compute_tension_backbone) : std::mem_fn(&NonlinearK4::compute_compression_backbone); + const auto damage_handle = sign_sigma > 0. ? std::mem_fn(&NonlinearK4::compute_tension_damage) : std::mem_fn(&NonlinearK4::compute_compression_damage); + + auto counter = 0u; + auto ref_error = 1.; + while(true) { + if(max_iteration == ++counter) { + suanpan_error("Cannot converge within {} iterations.\n", max_iteration); + return SUANPAN_FAIL; + } + + const auto backbone = backbone_handle(this, k); + const auto residual = fabs(trial_stress(0)) - backbone(0); + + if(1u == counter && residual <= 0.) { + if(apply_damage) { + const auto damage = damage_handle(this, k); + const auto damage_factor = 1. - damage(0); + + trial_stress *= damage_factor; + trial_stiffness *= damage_factor; + } + + return SUANPAN_SUCCESS; + } + + const auto jacobian = elastic_modulus + backbone(1); + const auto incre = residual / jacobian; + const auto error = fabs(incre); + if(1u == counter) ref_error = error; + suanpan_debug("Local plasticity iteration error: {:.5E}.\n", error); + if(error < tolerance * ref_error || (fabs(residual) < tolerance && counter > 5u)) { + const auto dgamma = elastic_modulus / jacobian; + trial_stiffness -= dgamma * elastic_modulus; + + if(apply_damage) { + const auto damage = damage_handle(this, k); + const auto damage_factor = 1. - damage(0); + + trial_stiffness *= damage_factor; + trial_stiffness -= trial_stress * damage(1) * dgamma; + + trial_stress *= damage_factor; + } + + return SUANPAN_SUCCESS; + } + + const auto incre_ep = incre * sign_sigma; + + k += incre; + plastic_strain += incre_ep; + trial_stress -= elastic_modulus * incre_ep; + } +} + +void NonlinearK4::compute_crack_close_branch() { + auto& plastic_strain = trial_history(0); + const auto& kt = trial_history(1); + auto& kk = trial_history(3); + + const auto jacobian = elastic_modulus + hardening_k; + + // account for entering + const auto net_strain = fabs(incre_strain(0)) - std::max(0., current_stress(0)) / elastic_modulus; + const auto dgamma = elastic_modulus / jacobian; + auto incre = net_strain * dgamma; + + // physically, the tension plastic strain is the crack opening, closing the crack should not exceed the opening + // ensure the crack plastic strain is bounded by the tension plastic strain + if(incre > kt - kk) incre = kt - kk; + else trial_stiffness -= dgamma * elastic_modulus; // otherwise, the stiffness is degraded during the closing phase + + const auto incre_ep = incre * suanpan::sign(trial_stress(0)); + + kk += incre; + plastic_strain += incre_ep; + trial_stress -= elastic_modulus * incre_ep; +} + +NonlinearK4::NonlinearK4(const unsigned T, const double E, const double H, const double R, const bool FD, const bool FC) + : DataNonlinearK4{fabs(E), std::min(1., std::max(fabs(H), 1E-4)) * fabs(E)} + , Material1D(T, R) + , apply_damage(FD) + , apply_crack_closing(FC) {} + +int NonlinearK4::initialize(const shared_ptr&) { + trial_stiffness = current_stiffness = initial_stiffness = elastic_modulus; + + initialize_history(4); + + return SUANPAN_SUCCESS; +} + +double NonlinearK4::get_parameter(const ParameterType P) const { + if(ParameterType::ELASTICMODULUS == P) return elastic_modulus; + return 0.; +} + +int NonlinearK4::update_trial_status(const vec& t_strain) { + incre_strain = (trial_strain = t_strain) - current_strain; + + if(fabs(incre_strain(0)) <= datum::eps) return SUANPAN_SUCCESS; + + trial_history = current_history; + const auto& plastic_strain = trial_history(0); + auto& kt = trial_history(1); + auto& kc = trial_history(2); + const auto& current_kt = current_history(1); + const auto& current_kk = current_history(3); + + trial_stress = (trial_stiffness = elastic_modulus) * (trial_strain - plastic_strain); + + if(apply_crack_closing && trial_stress(0) < 0. && incre_strain(0) < 0. && current_kt > current_kk) compute_crack_close_branch(); + + return compute_plasticity(trial_stress(0) > 0. ? kt : kc); +} + +int NonlinearK4::clear_status() { + current_strain.zeros(); + current_stress.zeros(); + current_history = initial_history; + current_stiffness = initial_stiffness; + return reset_status(); +} + +int NonlinearK4::commit_status() { + current_strain = trial_strain; + current_stress = trial_stress; + current_history = trial_history; + current_stiffness = trial_stiffness; + return SUANPAN_SUCCESS; +} + +int NonlinearK4::reset_status() { + trial_strain = current_strain; + trial_stress = current_stress; + trial_history = current_history; + trial_stiffness = current_stiffness; + return SUANPAN_SUCCESS; +} + +void NonlinearK4::print() { + suanpan_info("A concrete model. doi: 10.1061/(ASCE)ST.1943-541X.000259\n"); + Material1D::print(); +} + +vec2 ConcreteK4::compute_tension_backbone(const double k) const { return vec2{f_t + hardening_t * k, hardening_t}; } + +vec2 ConcreteK4::compute_compression_backbone(const double k) const { + if(k < k_peak) return vec2{f_y + hardening_c * k, hardening_c}; + + return vec2{f_c + hardening_d * (k - k_peak), hardening_d}; +} + +vec2 ConcreteK4::compute_tension_damage(const double k) const { + const auto e_t = f_t / zeta_t; + const auto factor = exp(-k / e_t); + return vec2{1. - factor, factor / e_t}; +} + +vec2 ConcreteK4::compute_compression_damage(double k) const { + if(k < k_peak) return vec2{0., 0.}; + + k -= k_peak; + + const auto e_c = f_c / zeta_c; + const auto factor = exp(-k / e_c); + return vec2{1. - factor, factor / e_c}; +} + +ConcreteK4::ConcreteK4(const unsigned T, const double E, const double H, vec&& P, const double R, const bool FD, const bool FC) + : DataConcreteK4{fabs(E * P(0)), fabs(E * P(1)), perturb(fabs(P(2))), fabs(P(3)), fabs(P(4)), fabs(P(3) * P(5)), fabs(E * P(6)), fabs(E * P(7))} + , NonlinearK4(T, E, H, R, FD, FC) {} + +unique_ptr ConcreteK4::get_copy() { return make_unique(*this); } diff --git a/Material/Material1D/Concrete/NonlinearK4.h b/Material/Material1D/Concrete/NonlinearK4.h new file mode 100644 index 000000000..1d06f2140 --- /dev/null +++ b/Material/Material1D/Concrete/NonlinearK4.h @@ -0,0 +1,105 @@ +/******************************************************************************* + * Copyright (C) 2017-2023 Theodore Chang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + ******************************************************************************/ +/** + * @class NonlinearK4 + * @brief A ConcreteK4 material class. + * + * @author tlc + * @date 05/09/2023 + * @version 0.1.0 + * @file NonlinearK4.h + * @addtogroup Material-1D + * @{ + */ + +#ifndef NONLINEARK4_H +#define NONLINEARK4_H + +#include + +struct DataNonlinearK4 { + const double elastic_modulus, hardening_k; +}; + +class NonlinearK4 : protected DataNonlinearK4, public Material1D { + static constexpr unsigned max_iteration = 20u; + + const bool apply_damage = true, apply_crack_closing = true; + + [[nodiscard]] virtual vec2 compute_tension_backbone(double) const = 0; + [[nodiscard]] virtual vec2 compute_compression_backbone(double) const = 0; + + [[nodiscard]] virtual vec2 compute_tension_damage(double) const = 0; + [[nodiscard]] virtual vec2 compute_compression_damage(double) const = 0; + + int compute_plasticity(double&); + void compute_crack_close_branch(); + +public: + NonlinearK4( + unsigned, // tag + double, // elastic modulus + double, // hardening parameter + double, // density + bool, // apply damage + bool // apply crack closing + ); + + int initialize(const shared_ptr&) override; + + [[nodiscard]] double get_parameter(ParameterType) const override; + + int update_trial_status(const vec&) override; + + int clear_status() override; + int commit_status() override; + int reset_status() override; + + void print() override; +}; + +struct DataConcreteK4 { + const double hardening_t, hardening_d; + const double f_t, f_c, k_peak, f_y; + const double zeta_t, zeta_c; + const double hardening_c = (f_c - f_y) / k_peak; +}; + +class ConcreteK4 final : protected DataConcreteK4, public NonlinearK4 { + [[nodiscard]] vec2 compute_tension_backbone(double) const override; + [[nodiscard]] vec2 compute_compression_backbone(double) const override; + + [[nodiscard]] vec2 compute_tension_damage(double) const override; + [[nodiscard]] vec2 compute_compression_damage(double) const override; + +public: + ConcreteK4( + unsigned, // tag + double, // elastic modulus + double, // hardening parameter + vec&&, // parameters + double = 0., // density + bool = true, // apply damage + bool = true // apply crack closing + ); + + unique_ptr get_copy() override; +}; + +#endif + +//! @} diff --git a/Material/Material1D/Degradation/CustomDegradation.cpp b/Material/Material1D/Degradation/CustomDegradation.cpp deleted file mode 100644 index c79b9dc24..000000000 --- a/Material/Material1D/Degradation/CustomDegradation.cpp +++ /dev/null @@ -1,49 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2017-2023 Theodore Chang - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - ******************************************************************************/ - -#include "CustomDegradation.h" -#include - -podarray CustomDegradation::compute_degradation(const double t_strain) const { - auto response = podarray(2); - const auto t_response = expression->evaluate(t_strain); - for(auto I = 0llu; I < t_response.n_elem; ++I) response(I) = t_response(I); - - return response; -} - -CustomDegradation::CustomDegradation(const unsigned T, const unsigned MT, const unsigned ET) - : Degradation(T, MT) - , expression_tag(ET) {} - -int CustomDegradation::initialize(const shared_ptr& D) { - if(!D->find_expression(expression_tag)) { - suanpan_error("Cannot find the assigned expression with tag {}.\n", expression_tag); - return SUANPAN_FAIL; - } - - expression = D->get_expression(expression_tag); - - if(expression->input_size() != 1 || expression->output_size() != 2) { - suanpan_error("The assigned expression {} does not provide two outputs.\n", expression_tag); - return SUANPAN_FAIL; - } - - return Degradation::initialize(D); -} - -unique_ptr CustomDegradation::get_copy() { return make_unique(*this); } diff --git a/Material/Material1D/Degradation/CustomStrainDegradation.cpp b/Material/Material1D/Degradation/CustomStrainDegradation.cpp new file mode 100644 index 000000000..5190c767a --- /dev/null +++ b/Material/Material1D/Degradation/CustomStrainDegradation.cpp @@ -0,0 +1,61 @@ +/******************************************************************************* + * Copyright (C) 2017-2023 Theodore Chang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + ******************************************************************************/ + +#include "CustomStrainDegradation.h" +#include + +vec CustomStrainDegradation::compute_positive_degradation(const double t_strain) const { return positive_expression->evaluate(t_strain); } + +vec CustomStrainDegradation::compute_negative_degradation(const double t_strain) const { + if(positive_expression_tag != negative_expression_tag) return negative_expression->evaluate(t_strain); + + auto response = positive_expression->evaluate(fabs(t_strain)); + response(1) = -response(1); + return response; +} + +CustomStrainDegradation::CustomStrainDegradation(const unsigned T, const unsigned MT, const unsigned PET, const unsigned NET) + : StrainDegradation(T, MT) + , positive_expression_tag(PET) + , negative_expression_tag(NET) {} + +int CustomStrainDegradation::initialize(const shared_ptr& D) { + if(!D->find_expression(positive_expression_tag)) { + suanpan_error("Cannot find the assigned expression with tag {}.\n", positive_expression_tag); + return SUANPAN_FAIL; + } + if(!D->find_expression(negative_expression_tag)) { + suanpan_error("Cannot find the assigned expression with tag {}.\n", negative_expression_tag); + return SUANPAN_FAIL; + } + + positive_expression = D->get_expression(positive_expression_tag); + if(positive_expression->input_size() != 1 || positive_expression->output_size() != 2) { + suanpan_error("The assigned expression {} does not provide two outputs.\n", positive_expression_tag); + return SUANPAN_FAIL; + } + + negative_expression = D->get_expression(negative_expression_tag); + if(negative_expression->input_size() != 1 || negative_expression->output_size() != 2) { + suanpan_error("The assigned expression {} does not provide two outputs.\n", negative_expression_tag); + return SUANPAN_FAIL; + } + + return StrainDegradation::initialize(D); +} + +unique_ptr CustomStrainDegradation::get_copy() { return make_unique(*this); } diff --git a/Material/Material1D/Degradation/CustomDegradation.h b/Material/Material1D/Degradation/CustomStrainDegradation.h similarity index 62% rename from Material/Material1D/Degradation/CustomDegradation.h rename to Material/Material1D/Degradation/CustomStrainDegradation.h index 5d9659a7d..37459c486 100644 --- a/Material/Material1D/Degradation/CustomDegradation.h +++ b/Material/Material1D/Degradation/CustomStrainDegradation.h @@ -15,35 +15,38 @@ * along with this program. If not, see . ******************************************************************************/ /** - * @class CustomDegradation - * @brief The CustomDegradation class. + * @class CustomStrainDegradation + * @brief The CustomStrainDegradation class. * * @author tlc * @date 24/01/2023 * @version 0.1.0 - * @file CustomDegradation.h + * @file CustomStrainDegradation.h * @addtogroup Material-1D * @{ */ -#ifndef CUSTOMDEGRADATION_H -#define CUSTOMDEGRADATION_H +#ifndef CUSTOMSTRAINDEGRADATION_H +#define CUSTOMSTRAINDEGRADATION_H #include "Degradation.h" #include #include -class CustomDegradation final : public Degradation { - const unsigned expression_tag; +class CustomStrainDegradation final : public StrainDegradation { + const unsigned positive_expression_tag, negative_expression_tag; - ResourceHolder expression; + ResourceHolder positive_expression, negative_expression; - [[nodiscard]] podarray compute_degradation(double) const override; + [[nodiscard]] vec compute_positive_degradation(double) const override; + [[nodiscard]] vec compute_negative_degradation(double) const override; public: - CustomDegradation(unsigned, // unique tag - unsigned, // material tag - unsigned // expression tag + CustomStrainDegradation( + unsigned, // unique tag + unsigned, // material tag + unsigned, // expression tag + unsigned // expression tag ); int initialize(const shared_ptr&) override; diff --git a/Material/Material1D/Degradation/CustomStressDegradation.cpp b/Material/Material1D/Degradation/CustomStressDegradation.cpp new file mode 100644 index 000000000..28573adb5 --- /dev/null +++ b/Material/Material1D/Degradation/CustomStressDegradation.cpp @@ -0,0 +1,61 @@ +/******************************************************************************* + * Copyright (C) 2017-2023 Theodore Chang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + ******************************************************************************/ + +#include "CustomStressDegradation.h" +#include + +vec CustomStressDegradation::compute_positive_degradation(const double t_stress) const { return positive_expression->evaluate(t_stress); } + +vec CustomStressDegradation::compute_negative_degradation(const double t_stress) const { + if(positive_expression_tag != negative_expression_tag) return negative_expression->evaluate(t_stress); + + auto response = positive_expression->evaluate(fabs(t_stress)); + response(1) = -response(1); + return response; +} + +CustomStressDegradation::CustomStressDegradation(const unsigned T, const unsigned MT, const unsigned PET, const unsigned NET) + : StressDegradation(T, MT) + , positive_expression_tag(PET) + , negative_expression_tag(NET) {} + +int CustomStressDegradation::initialize(const shared_ptr& D) { + if(!D->find_expression(positive_expression_tag)) { + suanpan_error("Cannot find the assigned expression with tag {}.\n", positive_expression_tag); + return SUANPAN_FAIL; + } + if(!D->find_expression(negative_expression_tag)) { + suanpan_error("Cannot find the assigned expression with tag {}.\n", negative_expression_tag); + return SUANPAN_FAIL; + } + + positive_expression = D->get_expression(positive_expression_tag); + if(positive_expression->input_size() != 1 || positive_expression->output_size() != 2) { + suanpan_error("The assigned expression {} does not provide two outputs.\n", positive_expression_tag); + return SUANPAN_FAIL; + } + + negative_expression = D->get_expression(negative_expression_tag); + if(negative_expression->input_size() != 1 || negative_expression->output_size() != 2) { + suanpan_error("The assigned expression {} does not provide two outputs.\n", negative_expression_tag); + return SUANPAN_FAIL; + } + + return StressDegradation::initialize(D); +} + +unique_ptr CustomStressDegradation::get_copy() { return make_unique(*this); } diff --git a/Material/Material1D/Degradation/CustomStressDegradation.h b/Material/Material1D/Degradation/CustomStressDegradation.h new file mode 100644 index 000000000..c7d9a96a4 --- /dev/null +++ b/Material/Material1D/Degradation/CustomStressDegradation.h @@ -0,0 +1,59 @@ +/******************************************************************************* + * Copyright (C) 2017-2023 Theodore Chang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + ******************************************************************************/ +/** + * @class CustomStressDegradation + * @brief The CustomStressDegradation class. + * + * @author tlc + * @date 02/09/2023 + * @version 0.1.0 + * @file CustomStressDegradation.h + * @addtogroup Material-1D + * @{ + */ + +#ifndef CUSTOMSTRESSDEGRADATION_H +#define CUSTOMSTRESSDEGRADATION_H + +#include "Degradation.h" +#include +#include + +class CustomStressDegradation final : public StressDegradation { + const unsigned positive_expression_tag, negative_expression_tag; + + ResourceHolder positive_expression, negative_expression; + + [[nodiscard]] vec compute_positive_degradation(double) const override; + [[nodiscard]] vec compute_negative_degradation(double) const override; + +public: + CustomStressDegradation( + unsigned, // unique tag + unsigned, // material tag + unsigned, // expression tag + unsigned // expression tag + ); + + int initialize(const shared_ptr&) override; + + unique_ptr get_copy() override; +}; + +#endif + +//! @} diff --git a/Material/Material1D/Degradation/Degradation.cpp b/Material/Material1D/Degradation/Degradation.cpp index 264d812f8..4dfb260e3 100644 --- a/Material/Material1D/Degradation/Degradation.cpp +++ b/Material/Material1D/Degradation/Degradation.cpp @@ -17,6 +17,7 @@ #include "Degradation.h" #include +#include Degradation::Degradation(const unsigned T, const unsigned MT) : Material1D(T, 0.) @@ -28,13 +29,13 @@ Degradation::Degradation(const Degradation& old_obj) , base(suanpan::make_copy(old_obj.base)) {} int Degradation::initialize(const shared_ptr& D) { - base = suanpan::initialized_material_copy(D, mat_tag); + base = D->initialized_material_copy(mat_tag); if(nullptr == base) return SUANPAN_FAIL; - access::rw(density) = base->get_parameter(ParameterType::DENSITY); + access::rw(density) = base->get_density(); - const auto degrade = compute_degradation(0.); + const auto degrade = compute_positive_degradation(0.); const auto& d = degrade(0); trial_stiffness = current_stiffness = initial_stiffness = d * base->get_initial_stiffness(); @@ -42,34 +43,18 @@ int Degradation::initialize(const shared_ptr& D) { return SUANPAN_SUCCESS; } -int Degradation::update_trial_status(const vec& t_strain) { - trial_strain = t_strain; - - const auto code = base->update_trial_status(t_strain); - - if(SUANPAN_SUCCESS == code) { - const auto degrade = compute_degradation(t_strain(0)); - const auto& d = degrade(0); - const auto& dd = degrade(1); - - trial_stress = d * base->get_trial_stress(); - - trial_stiffness = d * base->get_trial_stiffness() + dd * base->get_trial_stress(); - } - - return code; -} - int Degradation::clear_status() { - current_strain.zeros(); - current_stress.zeros(); - current_stiffness = initial_stiffness; + trial_strain = current_strain.zeros(); + trial_stress = current_stress.zeros(); + trial_history = current_history = initial_history; + trial_stiffness = current_stiffness = initial_stiffness; return base->clear_status(); } int Degradation::commit_status() { current_strain = trial_strain; current_stress = trial_stress; + current_history = trial_history; current_stiffness = trial_stiffness; return base->commit_status(); } @@ -77,6 +62,139 @@ int Degradation::commit_status() { int Degradation::reset_status() { trial_strain = current_strain; trial_stress = current_stress; + trial_history = current_history; trial_stiffness = current_stiffness; return base->reset_status(); } + +int StrainDegradation::initialize(const shared_ptr& D) { + initialize_history(2); + + return Degradation::initialize(D); +} + +int StrainDegradation::update_trial_status(const vec& t_strain) { + if(SUANPAN_SUCCESS != base->update_trial_status(trial_strain = t_strain)) return SUANPAN_FAIL; + + trial_stress = base->get_trial_stress(); + + trial_history = current_history; + auto& max_strain = trial_history(0); + auto& min_strain = trial_history(1); + + if(trial_stress(0) > 0.) + // tension + if(trial_strain(0) > max_strain) { + max_strain = trial_strain(0); + const auto degradation = compute_positive_degradation(max_strain); + const auto& d = degradation(0); + const auto& dd = degradation(1); + + trial_stress = d * base->get_trial_stress(); + + trial_stiffness = d * base->get_trial_stiffness() + dd * base->get_trial_stress(); + } + else { + const auto degrade = compute_positive_degradation(max_strain); + const auto& d = degrade(0); + + trial_stress = d * base->get_trial_stress(); + + trial_stiffness = d * base->get_trial_stiffness(); + } + else + // compression + if(trial_strain(0) < min_strain) { + min_strain = trial_strain(0); + const auto degradation = compute_negative_degradation(min_strain); + const auto& d = degradation(0); + const auto& dd = degradation(1); + + trial_stress = d * base->get_trial_stress(); + + trial_stiffness = d * base->get_trial_stiffness() + dd * base->get_trial_stress(); + } + else { + const auto degrade = compute_negative_degradation(min_strain); + const auto& d = degrade(0); + + trial_stress = d * base->get_trial_stress(); + + trial_stiffness = d * base->get_trial_stiffness(); + } + + return SUANPAN_SUCCESS; +} + +vector StrainDegradation::record(const OutputType P) { + if(OutputType::DT == P) return {vec{compute_positive_degradation(current_history(0))(0)}}; + if(OutputType::DC == P) return {vec{compute_negative_degradation(current_history(1))(0)}}; + + return Degradation::record(P); +} + +int StressDegradation::initialize(const shared_ptr& D) { + initialize_history(2); + + return Degradation::initialize(D); +} + +int StressDegradation::update_trial_status(const vec& t_strain) { + if(SUANPAN_SUCCESS != base->update_trial_status(trial_strain = t_strain)) return SUANPAN_FAIL; + + trial_stress = base->get_trial_stress(); + + trial_history = current_history; + auto& max_stress = trial_history(0); + auto& min_stress = trial_history(1); + + if(trial_stress(0) > 0.) + // tension + if(trial_stress(0) > max_stress) { + max_stress = trial_stress(0); + const auto degradation = compute_positive_degradation(max_stress); + const auto& d = degradation(0); + const auto& dd = degradation(1); + + trial_stress = d * base->get_trial_stress(); + + trial_stiffness = (d + dd * base->get_trial_stress()) * base->get_trial_stiffness(); + } + else { + const auto degradation = compute_positive_degradation(max_stress); + const auto& d = degradation(0); + + trial_stress = d * base->get_trial_stress(); + + trial_stiffness = d * base->get_trial_stiffness(); + } + else + // compression + if(trial_stress(0) < min_stress) { + min_stress = trial_stress(0); + const auto degradation = compute_negative_degradation(min_stress); + const auto& d = degradation(0); + const auto& dd = degradation(1); + + trial_stress = d * base->get_trial_stress(); + + trial_stiffness = (d + dd * base->get_trial_stress()) * base->get_trial_stiffness(); + } + else { + const auto degradation = compute_negative_degradation(min_stress); + const auto& d = degradation(0); + + trial_stress = d * base->get_trial_stress(); + + trial_stiffness = d * base->get_trial_stiffness(); + } + + return SUANPAN_SUCCESS; +} + +vector StressDegradation::record(const OutputType P) { + if(OutputType::DT == P) return {vec{compute_positive_degradation(current_history(0))(0)}}; + if(OutputType::DC == P) return {vec{compute_negative_degradation(current_history(1))(0)}}; + + return Degradation::record(P); +} diff --git a/Material/Material1D/Degradation/Degradation.h b/Material/Material1D/Degradation/Degradation.h index eae413dc6..cea4fe3f9 100644 --- a/Material/Material1D/Degradation/Degradation.h +++ b/Material/Material1D/Degradation/Degradation.h @@ -34,13 +34,16 @@ class Degradation : public Material1D { const unsigned mat_tag; +protected: unique_ptr base; - [[nodiscard]] virtual podarray compute_degradation(double) const = 0; + [[nodiscard]] virtual vec compute_positive_degradation(double) const = 0; // positive region + [[nodiscard]] virtual vec compute_negative_degradation(double) const = 0; // negative region public: - Degradation(unsigned, // tag - unsigned // material tag + Degradation( + unsigned, // tag + unsigned // material tag ); Degradation(const Degradation&); Degradation(Degradation&&) noexcept = delete; @@ -50,13 +53,33 @@ class Degradation : public Material1D { int initialize(const shared_ptr&) override; - int update_trial_status(const vec&) override; - int clear_status() override; int commit_status() override; int reset_status() override; }; +class StrainDegradation : public Degradation { +public: + using Degradation::Degradation; + + int initialize(const shared_ptr&) override; + + int update_trial_status(const vec&) override; + + vector record(OutputType) override; +}; + +class StressDegradation : public Degradation { +public: + using Degradation::Degradation; + + int initialize(const shared_ptr&) override; + + int update_trial_status(const vec&) override; + + vector record(OutputType) override; +}; + #endif //! @} diff --git a/Material/Material1D/Degradation/Dhakal.cpp b/Material/Material1D/Degradation/Dhakal.cpp index 47610aee3..e5be63a17 100644 --- a/Material/Material1D/Degradation/Dhakal.cpp +++ b/Material/Material1D/Degradation/Dhakal.cpp @@ -17,8 +17,12 @@ #include "Dhakal.h" -podarray Dhakal::compute_degradation(const double t_strain) const { - podarray damage(2); +vec Dhakal::compute_positive_degradation(double) const { return {1., 0.}; } + +vec Dhakal::compute_negative_degradation(double t_strain) const { + vec damage(2); + + t_strain = -fabs(t_strain); if(t_strain < final_strain) { damage(0) = .2; @@ -42,6 +46,6 @@ podarray Dhakal::compute_degradation(const double t_strain) const { Dhakal::Dhakal(const unsigned T, const unsigned MT, const double EY, const double PP) : DataDhakal{-fabs(EY), -fabs(EY) * std::max(55. - 2.3 * fabs(PP), 7.), std::min(1., std::max(1.1 - .016 * fabs(PP), .2))} - , Degradation(T, MT) {} + , StrainDegradation(T, MT) {} unique_ptr Dhakal::get_copy() { return make_unique(*this); } diff --git a/Material/Material1D/Degradation/Dhakal.h b/Material/Material1D/Degradation/Dhakal.h index f4021852e..40a2d893e 100644 --- a/Material/Material1D/Degradation/Dhakal.h +++ b/Material/Material1D/Degradation/Dhakal.h @@ -37,14 +37,16 @@ struct DataDhakal { const double final_strain = (inter_factor - .2) * 50. * yield_strain + inter_strain; }; -class Dhakal final : DataDhakal, public Degradation { - [[nodiscard]] podarray compute_degradation(double) const override; +class Dhakal final : protected DataDhakal, public StrainDegradation { + [[nodiscard]] vec compute_positive_degradation(double) const override; + [[nodiscard]] vec compute_negative_degradation(double) const override; public: - Dhakal(unsigned, // unique tag - unsigned, // material tag - double, // yield strain - double // parameter + Dhakal( + unsigned, // unique tag + unsigned, // material tag + double, // yield strain + double // parameter ); unique_ptr get_copy() override; diff --git a/Material/Material1D/Degradation/TrilinearDegradation.cpp b/Material/Material1D/Degradation/TrilinearStrainDegradation.cpp similarity index 61% rename from Material/Material1D/Degradation/TrilinearDegradation.cpp rename to Material/Material1D/Degradation/TrilinearStrainDegradation.cpp index ff8a710e5..145e99e4a 100644 --- a/Material/Material1D/Degradation/TrilinearDegradation.cpp +++ b/Material/Material1D/Degradation/TrilinearStrainDegradation.cpp @@ -15,10 +15,10 @@ * along with this program. If not, see . ******************************************************************************/ -#include "TrilinearDegradation.h" +#include "TrilinearStrainDegradation.h" -podarray TrilinearDegradation::compute_degradation(const double t_strain) const { - podarray damage(2); +vec TrilinearStrainDegradation::compute_positive_degradation(const double t_strain) const { + vec damage(2); if(const auto abs_e = fabs(t_strain); abs_e > e_strain) { damage(0) = e_damage; @@ -36,8 +36,14 @@ podarray TrilinearDegradation::compute_degradation(const double t_strain return damage; } -TrilinearDegradation::TrilinearDegradation(const unsigned T, const unsigned MT, const double SE, const double EE, const double ED) - : DataTrilinearDegradation{fabs(SE), fabs(EE), fabs(ED)} - , Degradation(T, MT) {} +vec TrilinearStrainDegradation::compute_negative_degradation(const double t_strain) const { + auto response = compute_positive_degradation(fabs(t_strain)); + response(1) = -response(1); + return response; +} + +TrilinearStrainDegradation::TrilinearStrainDegradation(const unsigned T, const unsigned MT, const double SE, const double EE, const double ED) + : DataTrilinearStrainDegradation{fabs(SE), fabs(EE), fabs(ED)} + , StrainDegradation(T, MT) {} -unique_ptr TrilinearDegradation::get_copy() { return make_unique(*this); } +unique_ptr TrilinearStrainDegradation::get_copy() { return make_unique(*this); } diff --git a/Material/Material1D/Degradation/TrilinearDegradation.h b/Material/Material1D/Degradation/TrilinearStrainDegradation.h similarity index 63% rename from Material/Material1D/Degradation/TrilinearDegradation.h rename to Material/Material1D/Degradation/TrilinearStrainDegradation.h index 92bb8a99e..3c804ea3b 100644 --- a/Material/Material1D/Degradation/TrilinearDegradation.h +++ b/Material/Material1D/Degradation/TrilinearStrainDegradation.h @@ -15,38 +15,40 @@ * along with this program. If not, see . ******************************************************************************/ /** - * @class TrilinearDegradation - * @brief The TrilinearDegradation class. + * @class TrilinearStrainDegradation + * @brief The TrilinearStrainDegradation class. * * @author tlc * @date 11/05/2019 * @version 0.1.0 - * @file TrilinearDegradation.h + * @file TrilinearStrainDegradation.h * @addtogroup Material-1D * @{ */ -#ifndef TRILINEARDEGRADATION_H -#define TRILINEARDEGRADATION_H +#ifndef TRILINEARSTRAINDEGRADATION_H +#define TRILINEARSTRAINDEGRADATION_H #include "Degradation.h" -struct DataTrilinearDegradation { +struct DataTrilinearStrainDegradation { const double s_strain; const double e_strain; const double e_damage; const double slope = (1. - e_damage) / (s_strain - e_strain); }; -class TrilinearDegradation final : DataTrilinearDegradation, public Degradation { - [[nodiscard]] podarray compute_degradation(double) const override; +class TrilinearStrainDegradation final : protected DataTrilinearStrainDegradation, public StrainDegradation { + [[nodiscard]] vec compute_positive_degradation(double) const override; + [[nodiscard]] vec compute_negative_degradation(double) const override; public: - TrilinearDegradation(unsigned, // unique tag - unsigned, // material tag - double, // start strain - double, // end strain - double // end level + TrilinearStrainDegradation( + unsigned, // unique tag + unsigned, // material tag + double, // start strain + double, // end strain + double // end level ); unique_ptr get_copy() override; diff --git a/Material/Material1D/Elastic/AsymmElastic1D.h b/Material/Material1D/Elastic/AsymmElastic1D.h index 46728d7fb..e6336cf1f 100644 --- a/Material/Material1D/Elastic/AsymmElastic1D.h +++ b/Material/Material1D/Elastic/AsymmElastic1D.h @@ -34,12 +34,13 @@ struct DataAsymmElastic1D { const double c_elastic_modulus; }; -class AsymmElastic1D final : DataAsymmElastic1D, public Material1D { +class AsymmElastic1D final : protected DataAsymmElastic1D, public Material1D { public: - AsymmElastic1D(unsigned, // tag - double, // tension elastic modulus - double, // compression elastic modulus - double = 0. // density + AsymmElastic1D( + unsigned, // tag + double, // tension elastic modulus + double, // compression elastic modulus + double = 0. // density ); int initialize(const shared_ptr&) override; diff --git a/Material/Material1D/Elastic/BilinearElastic1D.h b/Material/Material1D/Elastic/BilinearElastic1D.h index afd11444d..f2bbac5ce 100644 --- a/Material/Material1D/Elastic/BilinearElastic1D.h +++ b/Material/Material1D/Elastic/BilinearElastic1D.h @@ -37,16 +37,17 @@ struct DataBilinearElastic1D { const double radius; // radius }; -class BilinearElastic1D final : DataBilinearElastic1D, public Material1D { +class BilinearElastic1D final : protected DataBilinearElastic1D, public Material1D { const double yield_strain = yield_stress / elastic_modulus; public: - BilinearElastic1D(unsigned, // tag - double, // elastic modulus - double, // initial yield stress - double, // hardening ratio - double, // radius - double // density + BilinearElastic1D( + unsigned, // tag + double, // elastic modulus + double, // initial yield stress + double, // hardening ratio + double, // radius + double // density ); int initialize(const shared_ptr&) override; diff --git a/Material/Material1D/Elastic/CustomElastic1D.h b/Material/Material1D/Elastic/CustomElastic1D.h index b61bceaa6..655477db0 100644 --- a/Material/Material1D/Elastic/CustomElastic1D.h +++ b/Material/Material1D/Elastic/CustomElastic1D.h @@ -37,9 +37,10 @@ class CustomElastic1D final : public Material1D { ResourceHolder expression; public: - CustomElastic1D(unsigned, // tag - unsigned, // expression tag - double = 0. // density + CustomElastic1D( + unsigned, // tag + unsigned, // expression tag + double = 0. // density ); int initialize(const shared_ptr&) override; diff --git a/Material/Material1D/Elastic/Elastic1D.h b/Material/Material1D/Elastic/Elastic1D.h index 2efca2cf7..7337b9455 100644 --- a/Material/Material1D/Elastic/Elastic1D.h +++ b/Material/Material1D/Elastic/Elastic1D.h @@ -33,11 +33,12 @@ struct DataElastic1D { const double elastic_modulus; // elastic modulus }; -class Elastic1D final : DataElastic1D, public Material1D { +class Elastic1D final : protected DataElastic1D, public Material1D { public: - Elastic1D(unsigned, // tag - double, // elastic modulus - double = 0. // density + Elastic1D( + unsigned, // tag + double, // elastic modulus + double = 0. // density ); int initialize(const shared_ptr&) override; diff --git a/Material/Material1D/Elastic/MultilinearElastic1D.h b/Material/Material1D/Elastic/MultilinearElastic1D.h index 670d2ab73..471f17247 100644 --- a/Material/Material1D/Elastic/MultilinearElastic1D.h +++ b/Material/Material1D/Elastic/MultilinearElastic1D.h @@ -34,11 +34,12 @@ struct DataMultilinearElastic1D { const mat backbone; }; -class MultilinearElastic1D final : DataMultilinearElastic1D, public Material1D { +class MultilinearElastic1D final : protected DataMultilinearElastic1D, public Material1D { public: - MultilinearElastic1D(unsigned, // tag - mat&&, // backbone - double = 0. // density + MultilinearElastic1D( + unsigned, // tag + mat&&, // backbone + double = 0. // density ); int initialize(const shared_ptr&) override; diff --git a/Material/Material1D/Elastic/PolyElastic1D.h b/Material/Material1D/Elastic/PolyElastic1D.h index 95fadcf97..a14abf6b2 100644 --- a/Material/Material1D/Elastic/PolyElastic1D.h +++ b/Material/Material1D/Elastic/PolyElastic1D.h @@ -34,11 +34,12 @@ struct DataPolyElastic1D { const vec pool; }; -class PolyElastic1D final : DataPolyElastic1D, public Material1D { +class PolyElastic1D final : protected DataPolyElastic1D, public Material1D { public: - PolyElastic1D(unsigned, // tag - vec&&, // parameters - double = 0. // density + PolyElastic1D( + unsigned, // tag + vec&&, // parameters + double = 0. // density ); int initialize(const shared_ptr&) override; diff --git a/Material/Material1D/Elastic/Sinh1D.h b/Material/Material1D/Elastic/Sinh1D.h index c3b35928b..332b02f35 100644 --- a/Material/Material1D/Elastic/Sinh1D.h +++ b/Material/Material1D/Elastic/Sinh1D.h @@ -33,11 +33,12 @@ struct DataSinh1D { const double elastic_modulus; // elastic modulus }; -class Sinh1D final : DataSinh1D, public Material1D { +class Sinh1D final : protected DataSinh1D, public Material1D { public: - Sinh1D(unsigned, // tag - double, // elastic modulus - double = 0. // density + Sinh1D( + unsigned, // tag + double, // elastic modulus + double = 0. // density ); int initialize(const shared_ptr&) override; diff --git a/Material/Material1D/Elastic/Tanh1D.h b/Material/Material1D/Elastic/Tanh1D.h index cb13d8b43..fbad74d49 100644 --- a/Material/Material1D/Elastic/Tanh1D.h +++ b/Material/Material1D/Elastic/Tanh1D.h @@ -33,11 +33,12 @@ struct DataTanh1D { const double elastic_modulus; // elastic modulus }; -class Tanh1D final : DataTanh1D, public Material1D { +class Tanh1D final : protected DataTanh1D, public Material1D { public: - Tanh1D(unsigned, // tag - double, // elastic modulus - double = 0. // density + Tanh1D( + unsigned, // tag + double, // elastic modulus + double = 0. // density ); int initialize(const shared_ptr&) override; diff --git a/Material/Material1D/Hysteresis/AFC.cpp b/Material/Material1D/Hysteresis/AFC.cpp index 745514732..e37b3adbe 100644 --- a/Material/Material1D/Hysteresis/AFC.cpp +++ b/Material/Material1D/Hysteresis/AFC.cpp @@ -92,7 +92,7 @@ int AFC::update_trial_status(const vec& t_strain) { const auto& i_strain = incre_strain(0); - if(fabs(i_strain) <= tolerance) return SUANPAN_SUCCESS; + if(fabs(i_strain) <= datum::eps) return SUANPAN_SUCCESS; trial_history = current_history; auto& load_sign = trial_history(0); diff --git a/Material/Material1D/Hysteresis/AFC.h b/Material/Material1D/Hysteresis/AFC.h index d9626c398..c6c485d47 100644 --- a/Material/Material1D/Hysteresis/AFC.h +++ b/Material/Material1D/Hysteresis/AFC.h @@ -44,12 +44,13 @@ struct DataAFC { const double c_yield_strain = c_yield_stress / elastic_modulus; }; -class AFC final : DataAFC, public Material1D { +class AFC final : protected DataAFC, public Material1D { static podarray compute_transition(double, double, double, double, double, double, double); void compute_degradation(double, double); public: - AFC(unsigned, // unique tag + AFC( + unsigned, // unique tag double, // elastic modulus double, // tension yield stress double, // tension hardening modulus diff --git a/Material/Material1D/Hysteresis/BWBN.cpp b/Material/Material1D/Hysteresis/BWBN.cpp index 641b6b7bb..97961c457 100644 --- a/Material/Material1D/Hysteresis/BWBN.cpp +++ b/Material/Material1D/Hysteresis/BWBN.cpp @@ -45,7 +45,8 @@ int BWBN::update_trial_status(const vec& t_strain) { auto& e = trial_history(1); // energy auto incre = .5 * n_strain; - unsigned counter = 0; + auto counter = 0u; + auto ref_error = 1.; while(true) { if(max_iteration == ++counter) { suanpan_error("Cannot converge within {} iterations.\n", max_iteration); @@ -99,10 +100,10 @@ int BWBN::update_trial_status(const vec& t_strain) { const auto jacobian = eta + (z - current_z) * petapz + (ptpz - papz * n_strain) * h + (t_term - a * n_strain) * phpz; const auto error = fabs(incre = -residual / jacobian); - + if(1u == counter) ref_error = error; suanpan_debug("Local iteration error: {:.5E}.\n", error); - if(error <= tolerance) { + if(error < tolerance * ref_error || (fabs(residual) < tolerance && counter > 5u)) { trial_stress = modulus_a * trial_strain + modulus_b * z; const auto pepn = .5 * modulus_c * (z + current_z); diff --git a/Material/Material1D/Hysteresis/BWBN.h b/Material/Material1D/Hysteresis/BWBN.h index 3ae754dc6..2d16d0f58 100644 --- a/Material/Material1D/Hysteresis/BWBN.h +++ b/Material/Material1D/Hysteresis/BWBN.h @@ -37,8 +37,8 @@ struct DataBWBN { const vec pool; }; -class BWBN final : DataBWBN, public Material1D { - static constexpr unsigned max_iteration = 20; +class BWBN final : protected DataBWBN, public Material1D { + static constexpr unsigned max_iteration = 20u; const double& elastic_modulus = pool(0); const double& yield_stress = pool(1); @@ -63,9 +63,10 @@ class BWBN final : DataBWBN, public Material1D { const double yield_strain = yield_stress / elastic_modulus; public: - BWBN(unsigned, // tag - vec&&, // parameter - double // density + BWBN( + unsigned, // tag + vec&&, // parameter + double // density ); int initialize(const shared_ptr&) override; diff --git a/Material/Material1D/Hysteresis/BilinearOO.h b/Material/Material1D/Hysteresis/BilinearOO.h index 4815cc0a8..d862de811 100644 --- a/Material/Material1D/Hysteresis/BilinearOO.h +++ b/Material/Material1D/Hysteresis/BilinearOO.h @@ -39,7 +39,7 @@ struct DataBilinearOO { const double c_hardening; }; -class BilinearOO final : DataBilinearOO, public OriginOriented { +class BilinearOO final : protected DataBilinearOO, public OriginOriented { const double t_stress = elastic_modulus * t_strain; const double c_stress = elastic_modulus * c_strain; @@ -47,13 +47,14 @@ class BilinearOO final : DataBilinearOO, public OriginOriented { [[nodiscard]] podarray compute_compression_backbone(double) const override; public: - BilinearOO(int, // tag - double, // elastic modulus - double, // tension yield strain - double, // tension hardening ratio - double, // compression yield strain - double, // compression hardening ratio - double // density + BilinearOO( + int, // tag + double, // elastic modulus + double, // tension yield strain + double, // tension hardening ratio + double, // compression yield strain + double, // compression hardening ratio + double // density ); int initialize(const shared_ptr&) override; diff --git a/Material/Material1D/Hysteresis/BilinearPO.h b/Material/Material1D/Hysteresis/BilinearPO.h index ea3cbe5bd..c61d8b5e9 100644 --- a/Material/Material1D/Hysteresis/BilinearPO.h +++ b/Material/Material1D/Hysteresis/BilinearPO.h @@ -39,7 +39,7 @@ struct DataBilinearPO { const double c_hardening; }; -class BilinearPO final : DataBilinearPO, public PeakOriented { +class BilinearPO final : protected DataBilinearPO, public PeakOriented { const double t_stress = elastic_modulus * t_strain; const double c_stress = elastic_modulus * c_strain; @@ -49,13 +49,14 @@ class BilinearPO final : DataBilinearPO, public PeakOriented { [[nodiscard]] podarray compute_compression_backbone(double) const override; public: - BilinearPO(int, // tag - double, // elastic modulus - double, // tension yield strain - double, // tension hardening ratio - double, // compression yield strain - double, // compression hardening ratio - double // density + BilinearPO( + int, // tag + double, // elastic modulus + double, // tension yield strain + double, // tension hardening ratio + double, // compression yield strain + double, // compression hardening ratio + double // density ); int initialize(const shared_ptr&) override; diff --git a/Material/Material1D/Hysteresis/BoucWen.cpp b/Material/Material1D/Hysteresis/BoucWen.cpp index b9f79a07e..6070cb859 100644 --- a/Material/Material1D/Hysteresis/BoucWen.cpp +++ b/Material/Material1D/Hysteresis/BoucWen.cpp @@ -43,7 +43,8 @@ int BoucWen::update_trial_status(const vec& t_strain) { auto& z = trial_history(0); // z auto incre = .5 * n_strain; - unsigned counter = 0; + auto counter = 0u; + auto ref_error = 1.; while(true) { if(max_iteration == ++counter) { suanpan_error("Cannot converge within {} iterations.\n", max_iteration); @@ -59,10 +60,10 @@ int BoucWen::update_trial_status(const vec& t_strain) { const auto jacobian = z + n * t_term; const auto error = fabs(incre = -residual * z / jacobian); - + if(1u == counter) ref_error = error; suanpan_debug("Local iteration error: {:.5E}.\n", error); - if(error <= tolerance) { + if(error < tolerance * ref_error || (fabs(residual) < tolerance && counter > 5u)) { trial_stress = modulus_a * trial_strain + modulus_b * z; trial_stiffness = modulus_a + modulus_b / yield_strain * (1. - p_term) * z / jacobian; diff --git a/Material/Material1D/Hysteresis/BoucWen.h b/Material/Material1D/Hysteresis/BoucWen.h index 70eb5acc9..167c5bc52 100644 --- a/Material/Material1D/Hysteresis/BoucWen.h +++ b/Material/Material1D/Hysteresis/BoucWen.h @@ -41,8 +41,8 @@ struct DataBoucWen { const double n; }; -class BoucWen final : DataBoucWen, public Material1D { - static constexpr unsigned max_iteration = 20; +class BoucWen final : protected DataBoucWen, public Material1D { + static constexpr unsigned max_iteration = 20u; const double modulus_a = hardening * elastic_modulus; const double modulus_b = yield_stress - hardening * yield_stress; @@ -50,8 +50,9 @@ class BoucWen final : DataBoucWen, public Material1D { const double gamma = 1. - beta; public: - BoucWen(unsigned, // tag - vec&& // parameter + BoucWen( + unsigned, // tag + vec&& // parameter ); int initialize(const shared_ptr&) override; diff --git a/Material/Material1D/Hysteresis/CoulombFriction.h b/Material/Material1D/Hysteresis/CoulombFriction.h index 26b54bf2f..a29dc8f36 100644 --- a/Material/Material1D/Hysteresis/CoulombFriction.h +++ b/Material/Material1D/Hysteresis/CoulombFriction.h @@ -36,11 +36,12 @@ struct DataCoulombFriction { const double factor; }; -class CoulombFriction final : DataCoulombFriction, public Material1D { +class CoulombFriction final : protected DataCoulombFriction, public Material1D { public: - CoulombFriction(unsigned, // tag - double, // maximum friction force - double // factor + CoulombFriction( + unsigned, // tag + double, // maximum friction force + double // factor ); int initialize(const shared_ptr&) override; diff --git a/Material/Material1D/Hysteresis/Flag.h b/Material/Material1D/Hysteresis/Flag.h index 2f3dcdd65..3c1e5d2c3 100644 --- a/Material/Material1D/Hysteresis/Flag.h +++ b/Material/Material1D/Hysteresis/Flag.h @@ -47,7 +47,7 @@ struct DataFlag { const double c_residual_strain = c_residual_stress / elastic_modulus; }; -class Flag final : DataFlag, public Material1D { +class Flag final : protected DataFlag, public Material1D { enum class Status { NONE, TLOAD, @@ -61,22 +61,24 @@ class Flag final : DataFlag, public Material1D { Status trial_status = Status::NONE, current_status = Status::NONE; public: - Flag(unsigned, // tag - double, // elastic modulus - double, // tension initial yield stress - double, // tension residual stress - double, // tension hardening ratio - double, // compression initial yield stress - double, // compression residual stress - double, // compression hardening ratio - double // density + Flag( + unsigned, // tag + double, // elastic modulus + double, // tension initial yield stress + double, // tension residual stress + double, // tension hardening ratio + double, // compression initial yield stress + double, // compression residual stress + double, // compression hardening ratio + double // density ); - Flag(unsigned, // tag - double, // elastic modulus - double, // initial yield stress - double, // residual stress - double, // hardening ratio - double // density + Flag( + unsigned, // tag + double, // elastic modulus + double, // initial yield stress + double, // residual stress + double, // hardening ratio + double // density ); int initialize(const shared_ptr&) override; diff --git a/Material/Material1D/Hysteresis/Gap01.h b/Material/Material1D/Hysteresis/Gap01.h index aa2a886dc..17562ef7f 100644 --- a/Material/Material1D/Hysteresis/Gap01.h +++ b/Material/Material1D/Hysteresis/Gap01.h @@ -41,13 +41,14 @@ struct DataGap01 { const double gap_strain; }; -class Gap01 final : DataGap01, public Material1D { +class Gap01 final : protected DataGap01, public Material1D { public: - Gap01(unsigned, // tag - double, // elastic modulus - double, // yield stress - double = 0., // gap strain - double = 0. // density + Gap01( + unsigned, // tag + double, // elastic modulus + double, // yield stress + double = 0., // gap strain + double = 0. // density ); int initialize(const shared_ptr&) override; diff --git a/Material/Material1D/Hysteresis/MPF.h b/Material/Material1D/Hysteresis/MPF.h index 980fb5f33..297ed68f2 100644 --- a/Material/Material1D/Hysteresis/MPF.h +++ b/Material/Material1D/Hysteresis/MPF.h @@ -47,9 +47,10 @@ struct DataMPF { const double yield_strain = yield_stress / elastic_modulus; // yield strain }; -class MPF final : DataMPF, public Material1D { +class MPF final : protected DataMPF, public Material1D { public: - MPF(unsigned, // tag + MPF( + unsigned, // tag double, // elastic modulus double, // yield stress double = .05, // hardening ratio diff --git a/Material/Material1D/Hysteresis/MultilinearOO.h b/Material/Material1D/Hysteresis/MultilinearOO.h index 151e6ab07..df4e13cc9 100644 --- a/Material/Material1D/Hysteresis/MultilinearOO.h +++ b/Material/Material1D/Hysteresis/MultilinearOO.h @@ -35,7 +35,7 @@ struct DataMultilinearOO { const mat c_backbone; }; -class MultilinearOO final : DataMultilinearOO, public OriginOriented { +class MultilinearOO final : protected DataMultilinearOO, public OriginOriented { [[nodiscard]] podarray compute_tension_backbone(double) const override; [[nodiscard]] podarray compute_compression_backbone(double) const override; diff --git a/Material/Material1D/Hysteresis/MultilinearPO.h b/Material/Material1D/Hysteresis/MultilinearPO.h index e9f18768b..9bb614d71 100644 --- a/Material/Material1D/Hysteresis/MultilinearPO.h +++ b/Material/Material1D/Hysteresis/MultilinearPO.h @@ -35,7 +35,7 @@ struct DataMultilinearPO { const mat c_backbone; }; -class MultilinearPO final : DataMultilinearPO, public PeakOriented { +class MultilinearPO final : protected DataMultilinearPO, public PeakOriented { [[nodiscard]] podarray compute_tension_initial_reverse() const override; [[nodiscard]] podarray compute_compression_initial_reverse() const override; [[nodiscard]] podarray compute_tension_backbone(double) const override; diff --git a/Material/Material1D/Hysteresis/RambergOsgood.cpp b/Material/Material1D/Hysteresis/RambergOsgood.cpp index fb8bd3ffe..0dde4351c 100644 --- a/Material/Material1D/Hysteresis/RambergOsgood.cpp +++ b/Material/Material1D/Hysteresis/RambergOsgood.cpp @@ -62,14 +62,24 @@ int RambergOsgood::update_trial_status(const vec& t_strain) { auto norm_stress = fabs(current_stress(0) - reverse_stress); - unsigned counter = 0; + auto counter = 0u; + auto ref_error = 1.; while(true) { + if(max_iteration == ++counter) { + suanpan_error("Cannot converge within {} iterations.\n", max_iteration); + return SUANPAN_FAIL; + } + const auto pow_b = offset * pow(norm_stress, nm); + const auto residual = norm_stress * (pow_a + pow_b) - elastic_predictor * pow_a; const auto jacobian = pow_a + n * pow_b; - const auto incre = (norm_stress * (pow_a + pow_b) - elastic_predictor * pow_a) / jacobian; - const auto error = fabs(incre) / yield_stress; + const auto incre = residual / jacobian; + + const auto error = fabs(incre); + if(1u == counter) ref_error = error; suanpan_debug("Local iteration error: {:.5E}.\n", error); - if(error <= tolerance || max_iteration == ++counter) { + + if(error < tolerance * ref_error || (fabs(residual) < tolerance && counter > 5u)) { trial_stress = load_sign * norm_stress + reverse_stress; trial_stiffness = elastic_modulus * pow_a / jacobian; return SUANPAN_SUCCESS; diff --git a/Material/Material1D/Hysteresis/RambergOsgood.h b/Material/Material1D/Hysteresis/RambergOsgood.h index fd81da77a..4c986e944 100644 --- a/Material/Material1D/Hysteresis/RambergOsgood.h +++ b/Material/Material1D/Hysteresis/RambergOsgood.h @@ -36,18 +36,19 @@ struct DataRambergOsgood { const double offset, n; }; -class RambergOsgood final : DataRambergOsgood, public Material1D { - static constexpr unsigned max_iteration = 10; +class RambergOsgood final : protected DataRambergOsgood, public Material1D { + static constexpr unsigned max_iteration = 20u; const double nm = n - 1.; public: - RambergOsgood(unsigned, // tag - double, // elastic modulus - double, // yield stress - double = 1., // offset - double = 20., // n - double = 0. // density + RambergOsgood( + unsigned, // tag + double, // elastic modulus + double, // yield stress + double = 1., // offset + double = 20., // n + double = 0. // density ); int initialize(const shared_ptr&) override; diff --git a/Material/Material1D/Hysteresis/SimpleHysteresis.h b/Material/Material1D/Hysteresis/SimpleHysteresis.h index 37c8419aa..d2349ff0d 100644 --- a/Material/Material1D/Hysteresis/SimpleHysteresis.h +++ b/Material/Material1D/Hysteresis/SimpleHysteresis.h @@ -67,9 +67,10 @@ class SimpleHysteresis : protected DataSimpleHysteresis, public Material1D { [[nodiscard]] podarray compute_tension_inner(double) const; public: - SimpleHysteresis(unsigned, // tag - double, // middle point - double = 0. // density + SimpleHysteresis( + unsigned, // tag + double, // middle point + double = 0. // density ); int update_trial_status(const vec&) override; diff --git a/Material/Material1D/Hysteresis/SlipLock.cpp b/Material/Material1D/Hysteresis/SlipLock.cpp index 8fd783a2b..98f5dfbfb 100644 --- a/Material/Material1D/Hysteresis/SlipLock.cpp +++ b/Material/Material1D/Hysteresis/SlipLock.cpp @@ -37,21 +37,27 @@ int SlipLock::update_trial_status(const vec& t_strain) { trial_stress = current_stress; - unsigned counter = 0; - while(++counter < max_iteration) { + auto counter = 0u; + auto ref_error = 1.; + while(true) { + if(max_iteration == ++counter) { + suanpan_error("Cannot converge within {} iterations.\n", max_iteration); + return SUANPAN_FAIL; + } + const auto norm_stress = fabs(trial_stress(0) / yield_stress); - const auto tmp_a = pow(norm_stress, R0) + 1.; - const auto tmp_b = (1. - hardening_ratio) * pow(tmp_a, -1. / R0); + const auto tmp_a = pow(norm_stress, ini_r) + 1.; + const auto tmp_b = (1. - hardening_ratio) * pow(tmp_a, -1. / ini_r); trial_stiffness = elastic_modulus * tmp_a / (hardening_ratio * tmp_a + tmp_b); - const auto error = trial_strain(0) - trial_stress(0) / elastic_modulus * (hardening_ratio + tmp_b); - suanpan_debug("Local iteration error: {:.5E}.\n", fabs(error)); - if(fabs(error) <= tolerance) return SUANPAN_SUCCESS; - trial_stress += error * trial_stiffness; + const auto incre = trial_strain(0) - trial_stress(0) / elastic_modulus * (hardening_ratio + tmp_b); + const auto error = fabs(incre); + if(1u == counter) ref_error = error; + suanpan_debug("Local iteration error: {:.5E}.\n", error); + const auto incre_s = incre * trial_stiffness(0); + if(error < tolerance * ref_error || (fabs(incre_s) < tolerance && counter > 5u)) return SUANPAN_SUCCESS; + trial_stress += incre_s; if(!suanpan::approx_equal(sign(trial_stress(0)), sign(trial_strain(0)))) trial_stress = 0.; } - - suanpan_error("Cannot converge within {} iterations.\n", max_iteration); - return SUANPAN_FAIL; } int SlipLock::clear_status() { diff --git a/Material/Material1D/Hysteresis/SlipLock.h b/Material/Material1D/Hysteresis/SlipLock.h index 0249b08c6..7a65d4750 100644 --- a/Material/Material1D/Hysteresis/SlipLock.h +++ b/Material/Material1D/Hysteresis/SlipLock.h @@ -39,20 +39,21 @@ struct DataSlipLock { const double elastic_modulus; // elastic modulus const double hardening_ratio; // hardening ratio const double yield_strain; // yield stress - const double R0; // model parameters + const double ini_r; // model parameters }; -class SlipLock final : DataSlipLock, public Material1D { - static constexpr unsigned max_iteration = 20; +class SlipLock final : protected DataSlipLock, public Material1D { + static constexpr unsigned max_iteration = 20u; const double yield_stress = yield_strain * elastic_modulus; // yield strain public: - SlipLock(unsigned, // tag - double, // elastic modulus - double, // yield strain - double = .05, // hardening ratio - double = 20., // R0 - double = 0. // density + SlipLock( + unsigned, // tag + double, // elastic modulus + double, // yield strain + double = .05, // hardening ratio + double = 20., // R0 + double = 0. // density ); int initialize(const shared_ptr&) override; diff --git a/Material/Material1D/Hysteresis/SteelBRB.cpp b/Material/Material1D/Hysteresis/SteelBRB.cpp index 835bdb77b..ad7166b80 100644 --- a/Material/Material1D/Hysteresis/SteelBRB.cpp +++ b/Material/Material1D/Hysteresis/SteelBRB.cpp @@ -71,7 +71,8 @@ int SteelBRB::update_trial_status(const vec& t_strain) { const auto compute_stress = tension_flag ? std::mem_fn(&SteelBRB::compute_t_yield_stress) : std::mem_fn(&SteelBRB::compute_c_yield_stress); auto incre = .5 * incre_strain(0), incre_plastic_strain = 0.; - auto counter = 0; + auto counter = 0u; + auto ref_error = 1.; while(true) { if(max_iteration == ++counter) { suanpan_error("Cannot converge within {} iterations.\n", max_iteration); @@ -92,10 +93,10 @@ int SteelBRB::update_trial_status(const vec& t_strain) { residual += incre_plastic_strain; const auto error = fabs(incre = -residual / jacobian); - + if(1u == counter) ref_error = error; suanpan_debug("Local iteration error: {:.5E}.\n", error); - if(error <= tolerance) { + if(error < tolerance * ref_error || (fabs(residual) < tolerance && counter > 5u)) { trial_stiffness *= 1. - (pow_term + incre_strain(0) * elastic_modulus * exponent * pow_term / numerator) / jacobian; return SUANPAN_SUCCESS; diff --git a/Material/Material1D/Hysteresis/SteelBRB.h b/Material/Material1D/Hysteresis/SteelBRB.h index 7f7c7d1f3..4ae6f2e86 100644 --- a/Material/Material1D/Hysteresis/SteelBRB.h +++ b/Material/Material1D/Hysteresis/SteelBRB.h @@ -45,8 +45,8 @@ struct DataSteelBRB { const double c_exponent = .4; }; -class SteelBRB final : DataSteelBRB, public Material1D { - static constexpr unsigned max_iteration = 20; +class SteelBRB final : protected DataSteelBRB, public Material1D { + static constexpr unsigned max_iteration = 20u; const double s_modulus = -elastic_modulus - plastic_modulus; const double c_const = (c_saturated_stress - yield_stress) / c_scalar; @@ -56,8 +56,9 @@ class SteelBRB final : DataSteelBRB, public Material1D { [[nodiscard]] vec compute_c_yield_stress(double) const; public: - SteelBRB(unsigned, // tag - vec&& // parameter + SteelBRB( + unsigned, // tag + vec&& // parameter ); int initialize(const shared_ptr&) override; diff --git a/Material/Material1D/Hysteresis/Trivial.h b/Material/Material1D/Hysteresis/Trivial.h index afaa207d6..ea57452bb 100644 --- a/Material/Material1D/Hysteresis/Trivial.h +++ b/Material/Material1D/Hysteresis/Trivial.h @@ -35,7 +35,8 @@ class Trivial final : public Material1D { public: - explicit Trivial(unsigned // tag + explicit Trivial( + unsigned // tag ); int initialize(const shared_ptr&) override; diff --git a/Material/Material1D/Material1D b/Material/Material1D/Material1D index 8863979a4..46451e8bf 100644 --- a/Material/Material1D/Material1D +++ b/Material/Material1D/Material1D @@ -2,10 +2,12 @@ #include "Concrete/ConcreteExp.h" #include "Concrete/ConcreteTable.h" #include "Concrete/ConcreteTsai.h" -#include "Degradation/CustomDegradation.h" +#include "Concrete/NonlinearK4.h" +#include "Degradation/CustomStrainDegradation.h" +#include "Degradation/CustomStressDegradation.h" #include "Degradation/Degradation.h" #include "Degradation/Dhakal.h" -#include "Degradation/TrilinearDegradation.h" +#include "Degradation/TrilinearStrainDegradation.h" #include "Elastic/AsymmElastic1D.h" #include "Elastic/BilinearElastic1D.h" #include "Elastic/CustomElastic1D.h" @@ -54,4 +56,4 @@ #include "vonMises/VAFCRP1D.h" #include "Wrapper/Parallel.h" #include "Wrapper/Sequential.h" -#include "Wrapper/Uniaxial.h" \ No newline at end of file +#include "Wrapper/Uniaxial.h" diff --git a/Material/Material1D/Material1D.cpp b/Material/Material1D/Material1D.cpp index 908888356..3e5f759bc 100644 --- a/Material/Material1D/Material1D.cpp +++ b/Material/Material1D/Material1D.cpp @@ -17,36 +17,15 @@ #include "Material1D.h" #include -#include Material1D::Material1D(const unsigned T, const double D) : Material(T, MaterialType::D1, D) { set_symmetric(true); } -const mat& Material1D::get_trial_stiffness() { - // for exact zero case do not modify as the material may have no stiffness - // for other cases using secant stiffness first - // if still very small keep stiffness as a nonzero small number - if(trial_stiffness(0) != 0. && fabs(trial_stiffness(0)) < 1E-8) { - if(const auto denominator = trial_strain(0) - current_strain(0); fabs(denominator) > 1E-10) if(const auto secant_stiffness = (trial_stress(0) - current_stress(0)) / denominator; fabs(secant_stiffness) < fabs(trial_stiffness(0))) trial_stiffness = secant_stiffness; - if(fabs(trial_stiffness(0)) < 1E-8) { - const auto stiffness_sign = suanpan::sign(trial_stiffness(0)); - trial_stiffness(0) = (stiffness_sign == 0. ? 1. : stiffness_sign) * 1E-8; - } - } - - return trial_stiffness; -} - vector Material1D::record(const OutputType P) { - vector data; - - if(P == OutputType::S || P == OutputType::S11) data.emplace_back(current_stress); - else if(P == OutputType::E || P == OutputType::E11) data.emplace_back(current_strain); - else if(P == OutputType::EE) data.emplace_back(current_stress / initial_stiffness); - else if(P == OutputType::PE) data.emplace_back(current_strain - current_stress / initial_stiffness); - else if(P == OutputType::HIST) data.emplace_back(current_history); + if(P == OutputType::S11) return {current_stress}; + if(P == OutputType::E11) return {current_strain}; - return data; + return Material::record(P); } void Material1D::print() { diff --git a/Material/Material1D/Material1D.h b/Material/Material1D/Material1D.h index db376672b..902302790 100644 --- a/Material/Material1D/Material1D.h +++ b/Material/Material1D/Material1D.h @@ -35,12 +35,11 @@ using std::vector; class Material1D : public Material { public: - Material1D(unsigned, // tag - double // density + Material1D( + unsigned, // tag + double // density ); - const mat& get_trial_stiffness() override; - vector record(OutputType) override; void print() override; diff --git a/Material/Material1D/Viscosity/BilinearViscosity.h b/Material/Material1D/Viscosity/BilinearViscosity.h index 5b5316b0e..76b2b3039 100644 --- a/Material/Material1D/Viscosity/BilinearViscosity.h +++ b/Material/Material1D/Viscosity/BilinearViscosity.h @@ -36,7 +36,7 @@ struct DataBilinearViscosity { const double hardening; }; -class BilinearViscosity final : DataBilinearViscosity, public NonlinearViscosity { +class BilinearViscosity final : protected DataBilinearViscosity, public NonlinearViscosity { const double yield_strain = yield_stress / damping; [[nodiscard]] double compute_du(double, double) const override; @@ -44,10 +44,11 @@ class BilinearViscosity final : DataBilinearViscosity, public NonlinearViscosity [[nodiscard]] double compute_damping_coefficient(double, double) const override; public: - BilinearViscosity(unsigned, // tag - double, // damping - double, // yield stress - double // hardening ratio + BilinearViscosity( + unsigned, // tag + double, // damping + double, // yield stress + double // hardening ratio ); unique_ptr get_copy() override; diff --git a/Material/Material1D/Viscosity/CustomViscosity.h b/Material/Material1D/Viscosity/CustomViscosity.h index 0fafc907f..5586a75b3 100644 --- a/Material/Material1D/Viscosity/CustomViscosity.h +++ b/Material/Material1D/Viscosity/CustomViscosity.h @@ -42,8 +42,9 @@ class CustomViscosity final : public NonlinearViscosity { ResourceHolder expression; public: - CustomViscosity(unsigned, // tag - unsigned // expression tag + CustomViscosity( + unsigned, // tag + unsigned // expression tag ); int initialize(const shared_ptr&) override; diff --git a/Material/Material1D/Viscosity/Kelvin.cpp b/Material/Material1D/Viscosity/Kelvin.cpp index cc60d6fa9..7b2032429 100644 --- a/Material/Material1D/Viscosity/Kelvin.cpp +++ b/Material/Material1D/Viscosity/Kelvin.cpp @@ -25,8 +25,8 @@ Kelvin::Kelvin(const unsigned T, const unsigned DT, const unsigned ST) , spring_tag(ST) {} int Kelvin::initialize(const shared_ptr& D) { - damper = suanpan::initialized_material_copy(D, damper_tag); - spring = suanpan::initialized_material_copy(D, spring_tag); + damper = D->initialized_material_copy(damper_tag); + spring = D->initialized_material_copy(spring_tag); if(nullptr == damper || nullptr == spring) return SUANPAN_FAIL; @@ -92,17 +92,17 @@ int Kelvin::reset_status() { } vector Kelvin::record(const OutputType P) { - vector data; - - if(OutputType::SD == P || OutputType::SS == P || OutputType::S == P) data.emplace_back(current_stress); - else if(OutputType::ED == P) data.emplace_back(damper->get_current_strain()); - else if(OutputType::VD == P) data.emplace_back(damper->get_current_strain_rate()); - else if(OutputType::ES == P) data.emplace_back(spring->get_current_strain()); - else if(OutputType::VS == P) data.emplace_back(spring->get_current_strain_rate()); - else if(OutputType::E == P) data.emplace_back(current_strain); - else if(OutputType::V == P) data.emplace_back(current_strain_rate); - - return data; + if(OutputType::S == P) return {current_stress}; + if(OutputType::E == P) return {current_strain}; + if(OutputType::V == P) return {current_strain_rate}; + if(OutputType::SD == P) return {damper->get_current_stress()}; + if(OutputType::ED == P) return {damper->get_current_strain()}; + if(OutputType::VD == P) return {damper->get_current_strain_rate()}; + if(OutputType::SS == P) return {spring->get_current_stress()}; + if(OutputType::ES == P) return {spring->get_current_strain()}; + if(OutputType::VS == P) return {spring->get_current_strain_rate()}; + + return {}; } void Kelvin::print() { diff --git a/Material/Material1D/Viscosity/Kelvin.h b/Material/Material1D/Viscosity/Kelvin.h index 83dfb97dc..fb1c0dc9d 100644 --- a/Material/Material1D/Viscosity/Kelvin.h +++ b/Material/Material1D/Viscosity/Kelvin.h @@ -37,9 +37,10 @@ class Kelvin final : public Material1D { ResourceHolder damper, spring; public: - Kelvin(unsigned, // tag - unsigned, // damper tag - unsigned // spring tag + Kelvin( + unsigned, // tag + unsigned, // damper tag + unsigned // spring tag ); int initialize(const shared_ptr&) override; diff --git a/Material/Material1D/Viscosity/Maxwell.cpp b/Material/Material1D/Viscosity/Maxwell.cpp index 7ae602cff..a1eda528e 100644 --- a/Material/Material1D/Viscosity/Maxwell.cpp +++ b/Material/Material1D/Viscosity/Maxwell.cpp @@ -26,11 +26,11 @@ Maxwell::Maxwell(const unsigned T, const unsigned DT, const unsigned ST, const b , spring_tag(ST) , proceed(PC) , use_matrix(UM) - , beta(std::min(std::max(0., std::fabs(BT)), 1.)) { access::rw(tolerance) = 1E-12; } + , beta(std::min(std::max(0., std::fabs(BT)), 1.)) { access::rw(tolerance) = 5E-13; } int Maxwell::initialize(const shared_ptr& D) { - damper = suanpan::initialized_material_copy(D, damper_tag); - spring = suanpan::initialized_material_copy(D, spring_tag); + damper = D->initialized_material_copy(damper_tag); + spring = D->initialized_material_copy(spring_tag); if(nullptr == damper || nullptr == spring) return SUANPAN_FAIL; @@ -70,9 +70,9 @@ int Maxwell::update_trial_status(const vec& t_strain, const vec& t_strain_rate) vec solution(3, fill::zeros); - counter = 0; + counter = 0u; - if(double error, ref_error = 1.; use_matrix) { + if(double error, ref_error = 1., ref_residual = 1.; use_matrix) { mat inv_jacobian(3, 3); inv_jacobian(0, 2) = -factor_a; @@ -92,9 +92,13 @@ int Maxwell::update_trial_status(const vec& t_strain, const vec& t_strain_rate) const vec incre = inv_jacobian * residual / (factor_a * (K1 + K2) + K3); - if(1 == counter) ref_error = std::max(1., norm(residual)); - suanpan_debug("Local iteration error: {:.5E}.\n", error = norm(residual) / ref_error); - if(norm(incre) <= tolerance && error <= tolerance) break; + error = inf_norm(incre); + if(1u == counter) { + ref_error = error; + ref_residual = inf_norm(residual); + } + suanpan_debug("Local iteration error: {:.5E}.\n", error); + if(error < tolerance * ref_error || inf_norm(residual) < tolerance * ref_residual) break; solution += incre; spring->update_incre_status(solution(0)); damper->update_incre_status(solution(1), solution(2)); @@ -108,9 +112,13 @@ int Maxwell::update_trial_status(const vec& t_strain, const vec& t_strain_rate) const auto residual = residual_a * K2 - residual_c + residual_b / factor_a * K3; const auto jacobian = K1 + K2 + K3 / factor_a; const auto incre = residual / jacobian; - if(1 == counter) ref_error = std::max(1., fabs(residual)); - suanpan_debug("Local iteration error: {:.5E}.\n", error = fabs(residual) / ref_error); - if(fabs(incre) <= tolerance && error <= tolerance) break; + error = fabs(incre); + if(1u == counter) { + ref_error = error; + ref_residual = fabs(residual); + } + suanpan_debug("Local iteration error: {:.5E}.\n", error); + if(error < tolerance * ref_error || fabs(residual) < tolerance * ref_residual) break; solution(0) += incre; solution(1) += residual_a - incre; solution(2) += (residual_b - incre) / factor_a; @@ -166,18 +174,16 @@ int Maxwell::reset_status() { } vector Maxwell::record(const OutputType P) { - vector data; - - if(OutputType::SD == P || OutputType::SS == P || OutputType::S == P) data.emplace_back(current_stress); - else if(OutputType::ED == P) data.emplace_back(damper->get_current_strain()); - else if(OutputType::VD == P) data.emplace_back(damper->get_current_strain_rate()); - else if(OutputType::ES == P) data.emplace_back(spring->get_current_strain()); - else if(OutputType::VS == P) data.emplace_back(current_strain_rate - damper->get_current_strain_rate()); - else if(OutputType::E == P) data.emplace_back(current_strain); - else if(OutputType::V == P) data.emplace_back(current_strain_rate); - else if(OutputType::LITR == P) data.emplace_back(vec{static_cast(counter)}); - - return data; + if(OutputType::SD == P || OutputType::SS == P || OutputType::S == P) return {current_stress}; + if(OutputType::ED == P) return {damper->get_current_strain()}; + if(OutputType::VD == P) return {damper->get_current_strain_rate()}; + if(OutputType::ES == P) return {spring->get_current_strain()}; + if(OutputType::VS == P) return {current_strain_rate - damper->get_current_strain_rate()}; + if(OutputType::E == P) return {current_strain}; + if(OutputType::V == P) return {current_strain_rate}; + if(OutputType::LITR == P) return {vec{static_cast(counter)}}; + + return {}; } void Maxwell::print() { diff --git a/Material/Material1D/Viscosity/Maxwell.h b/Material/Material1D/Viscosity/Maxwell.h index b039bb451..6343aea89 100644 --- a/Material/Material1D/Viscosity/Maxwell.h +++ b/Material/Material1D/Viscosity/Maxwell.h @@ -32,7 +32,7 @@ #include class Maxwell final : public Material1D { - static constexpr unsigned max_iteration = 20; + static constexpr unsigned max_iteration = 20u; const double* incre_time = nullptr; @@ -47,12 +47,13 @@ class Maxwell final : public Material1D { ResourceHolder damper, spring; public: - Maxwell(unsigned, // tag - unsigned, // damper tag - unsigned, // spring tag - bool = false, // if to use matrix - unsigned = 0, // if to process when fails to converge - double = 0. // beta + Maxwell( + unsigned, // tag + unsigned, // damper tag + unsigned, // spring tag + bool = false, // if to use matrix + unsigned = 0, // if to process when fails to converge + double = 0. // beta ); int initialize(const shared_ptr&) override; diff --git a/Material/Material1D/Viscosity/NonlinearViscosity.cpp b/Material/Material1D/Viscosity/NonlinearViscosity.cpp index 134d669f1..ba7432d85 100644 --- a/Material/Material1D/Viscosity/NonlinearViscosity.cpp +++ b/Material/Material1D/Viscosity/NonlinearViscosity.cpp @@ -41,7 +41,7 @@ int NonlinearViscosity::update_trial_status(const vec& t_strain, const vec& t_st incre_strain = (trial_strain = t_strain) - current_strain; incre_strain_rate = (trial_strain_rate = t_strain_rate) - current_strain_rate; - if(norm(incre_strain) + norm(incre_strain_rate) <= 1E-14) return SUANPAN_SUCCESS; + if(norm(incre_strain) + norm(incre_strain_rate) <= datum::eps) return SUANPAN_SUCCESS; const auto &u = trial_strain(0), &v = trial_strain_rate(0); @@ -102,13 +102,11 @@ int NonlinearViscosity::reset_status() { } vector NonlinearViscosity::record(const OutputType P) { - vector data; + if(OutputType::S == P) return {current_stress}; + if(OutputType::E == P || OutputType::ED == P) return {current_strain}; + if(OutputType::V == P || OutputType::VD == P) return {current_strain_rate}; - if(OutputType::S == P) data.emplace_back(current_stress); - else if(OutputType::E == P || OutputType::ED == P) data.emplace_back(current_strain); - else if(OutputType::V == P || OutputType::VD == P) data.emplace_back(current_strain_rate); - - return data; + return {}; } void NonlinearViscosity::print() { diff --git a/Material/Material1D/Viscosity/NonlinearViscosity.h b/Material/Material1D/Viscosity/NonlinearViscosity.h index 785bfe1b3..3b4f71a60 100644 --- a/Material/Material1D/Viscosity/NonlinearViscosity.h +++ b/Material/Material1D/Viscosity/NonlinearViscosity.h @@ -37,7 +37,7 @@ struct DataNonlinearViscosity { const double limit; }; -class NonlinearViscosity : DataNonlinearViscosity, public Material1D { +class NonlinearViscosity : protected DataNonlinearViscosity, public Material1D { const double a = (.5 * alpha - .5) * pow(limit, alpha - 3.); const double b = (1.5 - .5 * alpha) * pow(limit, alpha - 1.); @@ -46,9 +46,10 @@ class NonlinearViscosity : DataNonlinearViscosity, public Material1D { [[nodiscard]] virtual double compute_damping_coefficient(double, double) const = 0; public: - NonlinearViscosity(unsigned, // tag - double, // alpha - double // cut-off + NonlinearViscosity( + unsigned, // tag + double, // alpha + double // cut-off ); int initialize(const shared_ptr&) override; diff --git a/Material/Material1D/Viscosity/Nonviscous01.cpp b/Material/Material1D/Viscosity/Nonviscous01.cpp index eace1c744..f4c653302 100644 --- a/Material/Material1D/Viscosity/Nonviscous01.cpp +++ b/Material/Material1D/Viscosity/Nonviscous01.cpp @@ -92,12 +92,9 @@ int Nonviscous01::reset_status() { } vector Nonviscous01::record(const OutputType P) { - vector data; + if(OutputType::V == P) return {current_strain_rate}; - if(OutputType::S == P) data.emplace_back(current_stress); - else if(OutputType::V == P || OutputType::VD == P) data.emplace_back(current_strain_rate); - - return data; + return Material1D::record(P); } void Nonviscous01::print() { diff --git a/Material/Material1D/Viscosity/Nonviscous01.h b/Material/Material1D/Viscosity/Nonviscous01.h index 62ea3df1e..3dfb3b454 100644 --- a/Material/Material1D/Viscosity/Nonviscous01.h +++ b/Material/Material1D/Viscosity/Nonviscous01.h @@ -34,7 +34,7 @@ struct DataNonviscous01 { const cx_vec m, s; }; -class Nonviscous01 final : DataNonviscous01, public Material1D { +class Nonviscous01 final : protected DataNonviscous01, public Material1D { const double* incre_time = nullptr; cx_vec complex_damping; @@ -43,9 +43,10 @@ class Nonviscous01 final : DataNonviscous01, public Material1D { cx_vec s_para, m_para; public: - Nonviscous01(unsigned, // tag - cx_vec&&, // m - cx_vec&& // s + Nonviscous01( + unsigned, // tag + cx_vec&&, // m + cx_vec&& // s ); int initialize(const shared_ptr&) override; diff --git a/Material/Material1D/Viscosity/Viscosity01.h b/Material/Material1D/Viscosity/Viscosity01.h index 8d9be9e21..77d368ab0 100644 --- a/Material/Material1D/Viscosity/Viscosity01.h +++ b/Material/Material1D/Viscosity/Viscosity01.h @@ -34,16 +34,17 @@ struct DataViscosity01 { const double damping; }; -class Viscosity01 final : DataViscosity01, public NonlinearViscosity { +class Viscosity01 final : protected DataViscosity01, public NonlinearViscosity { [[nodiscard]] double compute_du(double, double) const override; [[nodiscard]] double compute_dv(double, double) const override; [[nodiscard]] double compute_damping_coefficient(double, double) const override; public: - Viscosity01(unsigned, // tag - double, // alpha - double, // damp coefficient - double // cut-off + Viscosity01( + unsigned, // tag + double, // alpha + double, // damp coefficient + double // cut-off ); unique_ptr get_copy() override; diff --git a/Material/Material1D/Viscosity/Viscosity02.h b/Material/Material1D/Viscosity/Viscosity02.h index 4f47fca35..f7c967057 100644 --- a/Material/Material1D/Viscosity/Viscosity02.h +++ b/Material/Material1D/Viscosity/Viscosity02.h @@ -35,21 +35,22 @@ struct DataViscosity02 { const double gap_a, gap_b; }; -class Viscosity02 final : DataViscosity02, public NonlinearViscosity { +class Viscosity02 final : protected DataViscosity02, public NonlinearViscosity { [[nodiscard]] double compute_du(double, double) const override; [[nodiscard]] double compute_dv(double, double) const override; [[nodiscard]] double compute_damping_coefficient(double, double) const override; public: - Viscosity02(unsigned, // tag - double, // alpha - double, // damp_a - double, // damp_b - double, // damp_c - double, // damp_d - double, // gap_a - double, // gap_b - double // cut-off + Viscosity02( + unsigned, // tag + double, // alpha + double, // damp_a + double, // damp_b + double, // damp_c + double, // damp_d + double, // gap_a + double, // gap_b + double // cut-off ); unique_ptr get_copy() override; diff --git a/Material/Material1D/Wrapper/Parallel.cpp b/Material/Material1D/Wrapper/Parallel.cpp index 3c4552eb2..a9feb21c9 100644 --- a/Material/Material1D/Wrapper/Parallel.cpp +++ b/Material/Material1D/Wrapper/Parallel.cpp @@ -23,15 +23,17 @@ Parallel::Parallel(const unsigned T, uvec&& MT) , mat_tag(std::forward(MT)) {} int Parallel::initialize(const shared_ptr& D) { + auto& t_density = access::rw(density); + t_density = 0.; mat_pool.clear(); mat_pool.reserve(mat_tag.n_elem); for(const auto I : mat_tag) { - mat_pool.emplace_back(suanpan::initialized_material_copy(D, I)); + mat_pool.emplace_back(D->initialized_material_copy(I)); if(nullptr == mat_pool.back() || mat_pool.back()->get_material_type() != MaterialType::D1) { suanpan_error("A valid 1D host material is required.\n"); return SUANPAN_FAIL; } - access::rw(density) += mat_pool.back()->get_parameter(ParameterType::DENSITY); + t_density += mat_pool.back()->get_density(); } initial_stiffness.zeros(1); @@ -84,10 +86,8 @@ int Parallel::update_trial_status(const vec& t_strain, const vec& t_strain_rate) } int Parallel::clear_status() { - current_strain.zeros(); - trial_strain.zeros(); - current_stress.zeros(); - trial_stress.zeros(); + trial_strain = current_strain.zeros(); + trial_stress = current_stress.zeros(); trial_stiffness = current_stiffness = initial_stiffness; auto code = 0; for(const auto& I : mat_pool) code += I->clear_status(); diff --git a/Material/Material1D/Wrapper/Parallel.h b/Material/Material1D/Wrapper/Parallel.h index 57d6dee1a..06c66a223 100644 --- a/Material/Material1D/Wrapper/Parallel.h +++ b/Material/Material1D/Wrapper/Parallel.h @@ -38,11 +38,13 @@ class Parallel final : public Material1D { const uvec mat_tag; + vector> mat_pool; public: - Parallel(unsigned, // tag - uvec&& // material tag pool + Parallel( + unsigned, // tag + uvec&& // material tag pool ); int initialize(const shared_ptr&) override; diff --git a/Material/Material1D/Wrapper/Sequential.cpp b/Material/Material1D/Wrapper/Sequential.cpp index 7f7a542ea..c68fd6c92 100644 --- a/Material/Material1D/Wrapper/Sequential.cpp +++ b/Material/Material1D/Wrapper/Sequential.cpp @@ -18,23 +18,23 @@ #include "Sequential.h" #include -constexpr unsigned Sequential::max_iteration = 20; - Sequential::Sequential(const unsigned T, uvec&& MT) : Material1D(T, 0.) , mat_size(MT.n_elem - 1) , mat_tag(std::forward(MT)) {} int Sequential::initialize(const shared_ptr& D) { + auto& t_density = access::rw(density); + t_density = 0.; mat_pool.clear(); mat_pool.reserve(mat_tag.n_elem); for(const auto I : mat_tag) { - mat_pool.emplace_back(suanpan::initialized_material_copy(D, I)); + mat_pool.emplace_back(D->initialized_material_copy(I)); if(nullptr == mat_pool.back() || mat_pool.back()->get_material_type() != MaterialType::D1) { suanpan_error("A valid 1D host material is required.\n"); return SUANPAN_FAIL; } - access::rw(density) += mat_pool.back()->get_parameter(ParameterType::DENSITY); + t_density += mat_pool.back()->get_density(); } jacobian.zeros(mat_tag.n_elem, mat_tag.n_elem); @@ -54,8 +54,14 @@ int Sequential::update_trial_status(const vec& t_strain) { if(fabs(incre_strain(0)) <= datum::eps) return SUANPAN_SUCCESS; - unsigned counter = 0; - while(++counter < max_iteration) { + auto counter = 0u; + auto ref_error = 1.; + while(true) { + if(max_iteration == ++counter) { + suanpan_error("Cannot converge within {} iterations.\n", max_iteration); + return SUANPAN_FAIL; + } + vec residual(mat_tag.n_elem, fill::zeros); residual(0) = trial_strain(0) - mat_pool.front()->get_trial_strain().at(0) - mat_pool.back()->get_trial_strain().at(0); residual(1) = mat_pool.front()->get_trial_stress().at(0); @@ -73,16 +79,12 @@ int Sequential::update_trial_status(const vec& t_strain) { const vec i_strain = solve(jacobian, residual); - for(size_t I = 0; I < mat_pool.size(); ++I) mat_pool[I]->update_trial_status(mat_pool[I]->get_trial_strain() + i_strain[I]); - - const auto error = norm(i_strain); + const auto error = inf_norm(i_strain); + if(1u == counter) ref_error = error; suanpan_debug("Local iteration error: {:.5E}.\n", error); - if(error <= tolerance) break; - } + if(error < tolerance * ref_error || (inf_norm(residual) < tolerance && counter > 5u)) break; - if(max_iteration == counter) { - suanpan_error("Cannot converge within {} iterations.\n", max_iteration); - return SUANPAN_FAIL; + for(size_t I = 0; I < mat_pool.size(); ++I) mat_pool[I]->update_trial_status(mat_pool[I]->get_trial_strain() + i_strain[I]); } trial_stress = mat_pool.front()->get_trial_stress(); @@ -96,10 +98,8 @@ int Sequential::update_trial_status(const vec& t_strain) { } int Sequential::clear_status() { - current_strain.zeros(); - trial_strain.zeros(); - current_stress.zeros(); - trial_stress.zeros(); + trial_strain = current_strain.zeros(); + trial_stress = current_stress.zeros(); trial_stiffness = current_stiffness = initial_stiffness; auto code = 0; for(const auto& I : mat_pool) code += I->clear_status(); diff --git a/Material/Material1D/Wrapper/Sequential.h b/Material/Material1D/Wrapper/Sequential.h index c54ea62a4..bf4b85d06 100644 --- a/Material/Material1D/Wrapper/Sequential.h +++ b/Material/Material1D/Wrapper/Sequential.h @@ -37,7 +37,7 @@ #include class Sequential final : public Material1D { - static const unsigned max_iteration; + static constexpr unsigned max_iteration = 20u; const uword mat_size; const uvec mat_tag; @@ -45,8 +45,9 @@ class Sequential final : public Material1D { mat jacobian; public: - Sequential(unsigned, // tag - uvec&& // material tag pool + Sequential( + unsigned, // tag + uvec&& // material tag pool ); int initialize(const shared_ptr&) override; diff --git a/Material/Material1D/Wrapper/Uniaxial.cpp b/Material/Material1D/Wrapper/Uniaxial.cpp index a38ae0488..e4f440f47 100644 --- a/Material/Material1D/Wrapper/Uniaxial.cpp +++ b/Material/Material1D/Wrapper/Uniaxial.cpp @@ -16,107 +16,12 @@ ******************************************************************************/ #include "Uniaxial.h" -#include - -const uvec Uniaxial::F1{0}; -const uvec Uniaxial::F2{1, 2, 3, 4, 5}; - -mat Uniaxial::form_stiffness(const mat& full_stiffness) { return full_stiffness(F1, F1) - full_stiffness(F1, F2) * solve(full_stiffness(F2, F2), full_stiffness(F2, F1)); } Uniaxial::Uniaxial(const unsigned T, const unsigned BT, const unsigned MI) - : Material1D(T, 0.) - , base_tag(BT) - , max_iteration(MI) {} - -int Uniaxial::initialize(const shared_ptr& D) { - base = suanpan::initialized_material_copy(D, base_tag); - - if(nullptr == base || base->get_material_type() != MaterialType::D3) { - suanpan_error("A valid 3D host material is required.\n"); - return SUANPAN_FAIL; - } - - trial_full_strain = current_full_strain.zeros(6); - - current_stiffness = trial_stiffness = initial_stiffness = form_stiffness(base->get_initial_stiffness()); - - return SUANPAN_SUCCESS; -} - -double Uniaxial::get_parameter(const ParameterType P) const { return base->get_parameter(P); } + : StressWrapper(T, BT, MI, uvec{0}, uvec{1, 2, 3, 4, 5}, MaterialType::D1) {} unique_ptr Uniaxial::get_copy() { return make_unique(*this); } -int Uniaxial::update_trial_status(const vec& t_strain) { - auto& t_stress = base->get_trial_stress(); - auto& t_stiffness = base->get_trial_stiffness(); - - incre_strain = t_strain - trial_strain; - - if(fabs(incre_strain(0)) <= datum::eps) return SUANPAN_SUCCESS; - - trial_full_strain(F1) = trial_strain = t_strain; - - if(1 == max_iteration) { - trial_full_strain(F2) -= solve(t_stiffness(F2, F2), t_stress(F2) + t_stiffness(F2, F1) * incre_strain); - - if(base->update_trial_status(trial_full_strain) != SUANPAN_SUCCESS) return SUANPAN_FAIL; - - trial_stress = t_stress(F1) - t_stiffness(F1, F2) * solve(t_stiffness(F2, F2), t_stress(F2)); - } - else { - unsigned counter = 0; - - while(++counter < max_iteration) { - if(base->update_trial_status(trial_full_strain) != SUANPAN_SUCCESS) return SUANPAN_FAIL; - trial_full_strain(F2) -= solve(t_stiffness(F2, F2), t_stress(F2)); - const auto error = norm(t_stress(F2)); - suanpan_debug("Local iteration error: {:.5E}.\n", error); - if(error <= tolerance) break; - } - - if(max_iteration == counter) { - suanpan_error("Cannot converge within {} iterations.\n", max_iteration); - return SUANPAN_FAIL; - } - - trial_stress = t_stress(F1); - } - - trial_stiffness = form_stiffness(t_stiffness); - - return SUANPAN_SUCCESS; -} - -int Uniaxial::clear_status() { - current_full_strain.zeros(6); - trial_full_strain.zeros(6); - current_strain.zeros(); - trial_strain.zeros(); - current_stress.zeros(); - trial_stress.zeros(); - trial_stiffness = current_stiffness = initial_stiffness; - return base->clear_status(); -} - -int Uniaxial::commit_status() { - current_full_strain = trial_full_strain; - current_strain = trial_strain; - current_stress = trial_stress; - current_stiffness = trial_stiffness; - return base->commit_status(); -} - -int Uniaxial::reset_status() { - trial_full_strain = current_full_strain; - trial_strain = current_strain; - trial_stress = current_stress; - trial_stiffness = current_stiffness; - return base->reset_status(); -} - -vector Uniaxial::record(const OutputType P) { return base->record(P); } - void Uniaxial::print() { suanpan_info("A uniaxial wrapper.\n"); suanpan_info("Strain:", current_strain); diff --git a/Material/Material1D/Wrapper/Uniaxial.h b/Material/Material1D/Wrapper/Uniaxial.h index e993e8690..7b33cd73a 100644 --- a/Material/Material1D/Wrapper/Uniaxial.h +++ b/Material/Material1D/Wrapper/Uniaxial.h @@ -21,49 +21,25 @@ * @date 22/01/2019 * @version 0.1.0 * @file Uniaxial.h - * @addtogroup Material-2D + * @addtogroup Material-1D * @{ */ #ifndef UNIAXIAL_H #define UNIAXIAL_H -#include -#include - -class Uniaxial final : public Material1D { - static const uvec F1, F2; - - const unsigned base_tag; - - const unsigned max_iteration; - - ResourceHolder base; - - vec trial_full_strain, current_full_strain; - - static mat form_stiffness(const mat&); +#include +class Uniaxial final : public StressWrapper { public: - Uniaxial(unsigned, // tag - unsigned, // 3D material tag - unsigned = 1 // max iteration + Uniaxial( + unsigned, // tag + unsigned, // 3D material tag + unsigned // max iteration ); - int initialize(const shared_ptr&) override; - - [[nodiscard]] double get_parameter(ParameterType) const override; - unique_ptr get_copy() override; - int update_trial_status(const vec&) override; - - int clear_status() override; - int commit_status() override; - int reset_status() override; - - vector record(OutputType) override; - void print() override; }; diff --git a/Material/Material1D/vonMises/ArmstrongFrederick1D.cpp b/Material/Material1D/vonMises/ArmstrongFrederick1D.cpp index fac832eb1..442994fe2 100644 --- a/Material/Material1D/vonMises/ArmstrongFrederick1D.cpp +++ b/Material/Material1D/vonMises/ArmstrongFrederick1D.cpp @@ -20,7 +20,7 @@ ArmstrongFrederick1D::ArmstrongFrederick1D(const unsigned T, const double E, const double Y, const double S, const double H, const double M, vec&& A, vec&& B, const double R) : DataArmstrongFrederick1D{E, Y, S, H, M, std::forward(A), std::forward(B)} - , Material1D(T, R) { access::rw(tolerance) = 1E-15; } + , Material1D(T, R) {} int ArmstrongFrederick1D::initialize(const shared_ptr&) { trial_stiffness = current_stiffness = initial_stiffness = elastic_modulus; @@ -33,15 +33,14 @@ int ArmstrongFrederick1D::initialize(const shared_ptr&) { unique_ptr ArmstrongFrederick1D::get_copy() { return make_unique(*this); } double ArmstrongFrederick1D::get_parameter(const ParameterType P) const { - if(ParameterType::DENSITY == P) return density; - if(ParameterType::ELASTICMODULUS == P || ParameterType::YOUNGSMODULUS == P || ParameterType::E == P) return elastic_modulus; + if(ParameterType::ELASTICMODULUS == P) return elastic_modulus; return 0.; } int ArmstrongFrederick1D::update_trial_status(const vec& t_strain) { incre_strain = (trial_strain = t_strain) - current_strain; - if(norm(incre_strain) <= tolerance) return SUANPAN_SUCCESS; + if(norm(incre_strain) <= datum::eps) return SUANPAN_SUCCESS; trial_stress = current_stress + (trial_stiffness = initial_stiffness) * incre_strain; @@ -55,7 +54,8 @@ int ArmstrongFrederick1D::update_trial_status(const vec& t_strain) { auto gamma = 0.; double xi, jacobian; - unsigned counter = 0; + auto counter = 0u; + auto ref_error = 1.; while(true) { if(max_iteration == ++counter) { suanpan_error("Cannot converge within {} iterations.\n", max_iteration); @@ -69,7 +69,7 @@ int ArmstrongFrederick1D::update_trial_status(const vec& t_strain) { if(k < 0.) k = dk = 0.; auto sum_a = 0., sum_b = 0.; - for(unsigned I = 0; I < size; ++I) { + for(auto I = 0u; I < size; ++I) { const auto denom = 1. + b(I) * gamma; sum_a += trial_history(I) / denom; sum_b += a(I) / denom; @@ -79,24 +79,26 @@ int ArmstrongFrederick1D::update_trial_status(const vec& t_strain) { jacobian = -elastic_modulus - dk; - if(xi > 0.) for(unsigned I = 0; I < size; ++I) jacobian += (b(I) * trial_history(I) - a(I)) * pow(1. + b(I) * gamma, -2.); - else for(unsigned I = 0; I < size; ++I) jacobian -= (b(I) * trial_history(I) + a(I)) * pow(1. + b(I) * gamma, -2.); + if(xi > 0.) for(auto I = 0u; I < size; ++I) jacobian += (b(I) * trial_history(I) - a(I)) * pow(1. + b(I) * gamma, -2.); + else for(auto I = 0u; I < size; ++I) jacobian -= (b(I) * trial_history(I) + a(I)) * pow(1. + b(I) * gamma, -2.); const auto incre = yield_func / jacobian; - suanpan_debug("Local iteration error: {:.5E}.\n", fabs(incre)); - if(fabs(incre) <= tolerance) break; + const auto error = fabs(incre); + if(1u == counter) ref_error = error; + suanpan_debug("Local iteration error: {:.5E}.\n", error); + if(error < tolerance * ref_error || ((fabs(yield_func) < tolerance || error < datum::eps) && counter > 5u)) break; gamma -= incre; p -= incre; } if(xi > 0.) { - for(unsigned I = 0; I < size; ++I) trial_history(I) = (trial_history(I) + a(I) * gamma) / (1. + b(I) * gamma); + for(auto I = 0u; I < size; ++I) trial_history(I) = (trial_history(I) + a(I) * gamma) / (1. + b(I) * gamma); trial_stress -= elastic_modulus * gamma; } else { - for(unsigned I = 0; I < size; ++I) trial_history(I) = (trial_history(I) - a(I) * gamma) / (1. + b(I) * gamma); + for(auto I = 0u; I < size; ++I) trial_history(I) = (trial_history(I) - a(I) * gamma) / (1. + b(I) * gamma); trial_stress += elastic_modulus * gamma; } @@ -130,12 +132,6 @@ int ArmstrongFrederick1D::reset_status() { return SUANPAN_SUCCESS; } -vector ArmstrongFrederick1D::record(const OutputType P) { - if(P == OutputType::PEEQ) return {vec{current_history(size)}}; - - return Material1D::record(P); -} - void ArmstrongFrederick1D::print() { suanpan_info("A uniaxial nonlinear hardening model using Armstrong-Frederick kinematic hardening rule.\n"); Material1D::print(); diff --git a/Material/Material1D/vonMises/ArmstrongFrederick1D.h b/Material/Material1D/vonMises/ArmstrongFrederick1D.h index e2825cd40..f197acb9f 100644 --- a/Material/Material1D/vonMises/ArmstrongFrederick1D.h +++ b/Material/Material1D/vonMises/ArmstrongFrederick1D.h @@ -47,21 +47,22 @@ struct DataArmstrongFrederick1D { const vec a, b; }; -class ArmstrongFrederick1D final : DataArmstrongFrederick1D, public Material1D { - static constexpr unsigned max_iteration = 20; +class ArmstrongFrederick1D final : protected DataArmstrongFrederick1D, public Material1D { + static constexpr unsigned max_iteration = 20u; const unsigned size = static_cast(a.size()); public: - ArmstrongFrederick1D(unsigned, // tag - double, // elastic modulus - double, // yield stress - double, // saturated stress - double, // linear hardening modulus - double, // m - vec&&, // a - vec&&, // b - double = 0. // density + ArmstrongFrederick1D( + unsigned, // tag + double, // elastic modulus + double, // yield stress + double, // saturated stress + double, // linear hardening modulus + double, // m + vec&&, // a + vec&&, // b + double = 0. // density ); int initialize(const shared_ptr&) override; @@ -76,8 +77,6 @@ class ArmstrongFrederick1D final : DataArmstrongFrederick1D, public Material1D { int commit_status() override; int reset_status() override; - vector record(OutputType) override; - void print() override; }; diff --git a/Material/Material1D/vonMises/Bilinear1D.h b/Material/Material1D/vonMises/Bilinear1D.h index 01cb84c4a..2a9ab6582 100644 --- a/Material/Material1D/vonMises/Bilinear1D.h +++ b/Material/Material1D/vonMises/Bilinear1D.h @@ -38,14 +38,15 @@ struct DataBilinear1D { const double kinematic_modulus; }; -class Bilinear1D final : DataBilinear1D, public Material1D { +class Bilinear1D final : protected DataBilinear1D, public Material1D { public: - Bilinear1D(unsigned, // tag - double, // elastic modulus - double, // initial yield stress - double = .05, // hardening ratio - double = 1., // isotropic/kinematic hardening factor - double = 0. // density + Bilinear1D( + unsigned, // tag + double, // elastic modulus + double, // initial yield stress + double = .05, // hardening ratio + double = 1., // isotropic/kinematic hardening factor + double = 0. // density ); int initialize(const shared_ptr&) override; diff --git a/Material/Material1D/vonMises/BilinearMises1D.h b/Material/Material1D/vonMises/BilinearMises1D.h index 322e6942c..1b8cc389e 100644 --- a/Material/Material1D/vonMises/BilinearMises1D.h +++ b/Material/Material1D/vonMises/BilinearMises1D.h @@ -35,18 +35,19 @@ struct DataBilinearMises1D { const double isotropic_modulus; }; -class BilinearMises1D final : DataBilinearMises1D, public NonlinearMises1D { +class BilinearMises1D final : protected DataBilinearMises1D, public NonlinearMises1D { [[nodiscard]] double compute_k(double) const override; [[nodiscard]] double compute_dk(double) const override; [[nodiscard]] double compute_h(double) const override; [[nodiscard]] double compute_dh(double) const override; public: - BilinearMises1D(unsigned, // tag - double, // elastic modulus - double, // initial yield stress - double, // hardening ratio - double = 0. // density + BilinearMises1D( + unsigned, // tag + double, // elastic modulus + double, // initial yield stress + double, // hardening ratio + double = 0. // density ); unique_ptr get_copy() override; diff --git a/Material/Material1D/vonMises/CustomGurson1D.h b/Material/Material1D/vonMises/CustomGurson1D.h index d4e0cf701..2a7dbc03e 100644 --- a/Material/Material1D/vonMises/CustomGurson1D.h +++ b/Material/Material1D/vonMises/CustomGurson1D.h @@ -41,16 +41,17 @@ class CustomGurson1D final : public NonlinearGurson1D { [[nodiscard]] vec compute_hardening(double) const override; public: - CustomGurson1D(unsigned, // tag - unsigned, // expression tag - double, // elastic modulus - double, // poisson's ratio - double, // q1 - double, // q2 - double, // fn - double, // sn - double, // en - double = 0. // density + CustomGurson1D( + unsigned, // tag + unsigned, // expression tag + double, // elastic modulus + double, // poisson's ratio + double, // q1 + double, // q2 + double, // fn + double, // sn + double, // en + double = 0. // density ); int initialize(const shared_ptr&) override; diff --git a/Material/Material1D/vonMises/CustomMises1D.h b/Material/Material1D/vonMises/CustomMises1D.h index 43d5bc78e..e343e5a6c 100644 --- a/Material/Material1D/vonMises/CustomMises1D.h +++ b/Material/Material1D/vonMises/CustomMises1D.h @@ -43,11 +43,12 @@ class CustomMises1D final : public NonlinearMises1D { ResourceHolder k_expression, h_expression; public: - CustomMises1D(unsigned, // tag - double, // elastic modulus - unsigned, // isotropic hardening function - unsigned, // kinematic hardening function - double = 0. // density + CustomMises1D( + unsigned, // tag + double, // elastic modulus + unsigned, // isotropic hardening function + unsigned, // kinematic hardening function + double = 0. // density ); int initialize(const shared_ptr&) override; diff --git a/Material/Material1D/vonMises/ExpGurson1D.cpp b/Material/Material1D/vonMises/ExpGurson1D.cpp index 7a7c1dd04..c1e3ba4fa 100644 --- a/Material/Material1D/vonMises/ExpGurson1D.cpp +++ b/Material/Material1D/vonMises/ExpGurson1D.cpp @@ -17,8 +17,6 @@ #include "ExpGurson1D.h" -constexpr unsigned ExpGurson1D::max_iteration = 20; - ExpGurson1D::ExpGurson1D(const unsigned T, const double E, const double V, const double YS, const double N, const double Q1, const double Q2, const double FN, const double SN, const double EN, const double R) : DataExpGurson1D{fabs(YS), std::min(1., N)} , NonlinearGurson1D(T, E, V, Q1, Q2, FN, SN, EN, R) {} @@ -27,7 +25,8 @@ vec ExpGurson1D::compute_hardening(const double plastic_strain) const { auto k = 1.; double pow_term; - unsigned counter = 0; + auto counter = 0u; + auto ref_error = 1.; while(true) { if(max_iteration == ++counter) { suanpan_error("Cannot converge within {} iterations.\n", max_iteration); @@ -37,8 +36,12 @@ vec ExpGurson1D::compute_hardening(const double plastic_strain) const { const auto tmp_term = k + para_c * plastic_strain; pow_term = pow(tmp_term, n - 1.); - const auto incre = (k - pow_term * tmp_term) / (1. - n * pow_term); - if(fabs(incre) <= tolerance) break; + const auto residual = k - pow_term * tmp_term; + const auto incre = residual / (1. - n * pow_term); + const auto error = fabs(incre); + if(1u == counter) ref_error = error; + suanpan_debug("Local iteration error: {:.5E}.\n", error); + if(error <= tolerance * ref_error || (fabs(residual) < tolerance && counter > 5u)) break; k -= incre; } diff --git a/Material/Material1D/vonMises/ExpGurson1D.h b/Material/Material1D/vonMises/ExpGurson1D.h index 1b6107859..4e859ce76 100644 --- a/Material/Material1D/vonMises/ExpGurson1D.h +++ b/Material/Material1D/vonMises/ExpGurson1D.h @@ -35,25 +35,26 @@ struct DataExpGurson1D { const double yield_stress, n; }; -class ExpGurson1D final : DataExpGurson1D, public NonlinearGurson1D { - static const unsigned max_iteration; +class ExpGurson1D final : protected DataExpGurson1D, public NonlinearGurson1D { + static constexpr unsigned max_iteration = 20u; const double para_c = 3. * elastic_modulus / (2. + 2. * poissons_ratio) / yield_stress; [[nodiscard]] vec compute_hardening(double) const override; public: - ExpGurson1D(unsigned, // tag - double, // elastic modulus - double, // poisson's ratio - double, // yield stress - double, // n - double, // q1 - double, // q2 - double, // fn - double, // sn - double, // en - double = 0. // density + ExpGurson1D( + unsigned, // tag + double, // elastic modulus + double, // poisson's ratio + double, // yield stress + double, // n + double, // q1 + double, // q2 + double, // fn + double, // sn + double, // en + double = 0. // density ); unique_ptr get_copy() override; diff --git a/Material/Material1D/vonMises/ExpMises1D.h b/Material/Material1D/vonMises/ExpMises1D.h index 216048d9d..2c88d9b7a 100644 --- a/Material/Material1D/vonMises/ExpMises1D.h +++ b/Material/Material1D/vonMises/ExpMises1D.h @@ -35,20 +35,21 @@ struct DataExpMises1D { const double a, b, c; }; -class ExpMises1D final : DataExpMises1D, public NonlinearMises1D { +class ExpMises1D final : protected DataExpMises1D, public NonlinearMises1D { [[nodiscard]] double compute_k(double) const override; [[nodiscard]] double compute_dk(double) const override; [[nodiscard]] double compute_h(double) const override; [[nodiscard]] double compute_dh(double) const override; public: - explicit ExpMises1D(unsigned, // tag - double, // elastic modulus - double, // initial yield stress - double, // a - double, // b - double, // c - double = 0. // density + explicit ExpMises1D( + unsigned, // tag + double, // elastic modulus + double, // initial yield stress + double, // a + double, // b + double, // c + double = 0. // density ); unique_ptr get_copy() override; diff --git a/Material/Material1D/vonMises/MultilinearMises1D.h b/Material/Material1D/vonMises/MultilinearMises1D.h index 95dab2742..fd1c3b636 100644 --- a/Material/Material1D/vonMises/MultilinearMises1D.h +++ b/Material/Material1D/vonMises/MultilinearMises1D.h @@ -34,17 +34,18 @@ struct DataMultilinearMises1D { const mat backbone; }; -class MultilinearMises1D final : DataMultilinearMises1D, public NonlinearMises1D { +class MultilinearMises1D final : protected DataMultilinearMises1D, public NonlinearMises1D { [[nodiscard]] double compute_k(double) const override; [[nodiscard]] double compute_dk(double) const override; [[nodiscard]] double compute_h(double) const override; [[nodiscard]] double compute_dh(double) const override; public: - MultilinearMises1D(unsigned, // tag - double, // elastic modulus - mat&&, // backbone - double = 0. // density + MultilinearMises1D( + unsigned, // tag + double, // elastic modulus + mat&&, // backbone + double = 0. // density ); unique_ptr get_copy() override; diff --git a/Material/Material1D/vonMises/NonlinearGurson1D.cpp b/Material/Material1D/vonMises/NonlinearGurson1D.cpp index 00f963d63..4a905202c 100644 --- a/Material/Material1D/vonMises/NonlinearGurson1D.cpp +++ b/Material/Material1D/vonMises/NonlinearGurson1D.cpp @@ -19,11 +19,9 @@ #include #include -constexpr unsigned NonlinearGurson1D::max_iteration = 20; - NonlinearGurson1D::NonlinearGurson1D(const unsigned T, const double E, const double V, const double Q1, const double Q2, const double FN, const double SN, const double EN, const double R) : DataNonlinearGurson1D{E, V, Q1, Q2, FN, SN, EN} - , Material1D(T, R) { access::rw(tolerance) = 1E-13; } + , Material1D(T, R) {} int NonlinearGurson1D::initialize(const shared_ptr&) { trial_stiffness = current_stiffness = initial_stiffness = elastic_modulus; @@ -33,18 +31,12 @@ int NonlinearGurson1D::initialize(const shared_ptr&) { return SUANPAN_SUCCESS; } -double NonlinearGurson1D::get_parameter(const ParameterType P) const { - if(ParameterType::DENSITY == P) return density; - if(ParameterType::ELASTICMODULUS == P || ParameterType::YOUNGSMODULUS == P || ParameterType::E == P) return elastic_modulus; - if(ParameterType::SHEARMODULUS == P || ParameterType::G == P) return elastic_modulus / (2. + 2. * poissons_ratio); - if(ParameterType::POISSONSRATIO == P) return poissons_ratio; - return 0.; -} +double NonlinearGurson1D::get_parameter(const ParameterType P) const { return material_property(elastic_modulus, poissons_ratio)(P); } int NonlinearGurson1D::update_trial_status(const vec& t_strain) { incre_strain = (trial_strain = t_strain) - current_strain; - if(norm(incre_strain) <= tolerance) return SUANPAN_SUCCESS; + if(norm(incre_strain) <= datum::eps) return SUANPAN_SUCCESS; trial_stress = current_stress + (trial_stiffness = initial_stiffness) * incre_strain; @@ -61,7 +53,8 @@ int NonlinearGurson1D::update_trial_status(const vec& t_strain) { vec incre, residual(4); auto gamma = 0.; - unsigned counter = 0; + auto counter = 0u; + auto ref_error = 1.; while(true) { if(max_iteration == ++counter) { suanpan_error("Cannot converge within {} iterations.\n", max_iteration); @@ -104,9 +97,10 @@ int NonlinearGurson1D::update_trial_status(const vec& t_strain) { if(!solve(incre, jacobian, residual)) return SUANPAN_FAIL; - const auto error = norm(residual); + const auto error = inf_norm(incre); + if(1u == counter) ref_error = error; suanpan_debug("Local iteration error: {:.5E}.\n", error); - if(error <= tolerance || norm(incre) <= tolerance) break; + if(error < tolerance * ref_error || (inf_norm(residual) < tolerance && counter > 5u)) break; gamma -= incre(0); pe -= incre(1); @@ -157,9 +151,7 @@ int NonlinearGurson1D::reset_status() { } vector NonlinearGurson1D::record(const OutputType P) { - if(P == OutputType::PEEQ) return {vec{current_history(0)}}; if(P == OutputType::VF) return {vec{current_history(1)}}; - if(P == OutputType::PE) return {vec{current_strain - current_stress / elastic_modulus}}; return Material1D::record(P); } diff --git a/Material/Material1D/vonMises/NonlinearGurson1D.h b/Material/Material1D/vonMises/NonlinearGurson1D.h index f064fb4fc..94a13a9bf 100644 --- a/Material/Material1D/vonMises/NonlinearGurson1D.h +++ b/Material/Material1D/vonMises/NonlinearGurson1D.h @@ -39,7 +39,7 @@ struct DataNonlinearGurson1D { }; class NonlinearGurson1D : protected DataNonlinearGurson1D, public Material1D { - static const unsigned max_iteration; + static constexpr unsigned max_iteration = 20u; const double bulk = elastic_modulus / (3. - 6. * poissons_ratio); // bulk modulus const double three_bulk = 3. * bulk; @@ -50,15 +50,16 @@ class NonlinearGurson1D : protected DataNonlinearGurson1D, public Material1D { [[nodiscard]] virtual vec compute_hardening(double) const = 0; public: - NonlinearGurson1D(unsigned, // tag - double, // elastic modulus - double, // poisson's ratio - double, // q1 - double, // q2 - double, // fn - double, // sn - double, // en - double = 0. // density + NonlinearGurson1D( + unsigned, // tag + double, // elastic modulus + double, // poisson's ratio + double, // q1 + double, // q2 + double, // fn + double, // sn + double, // en + double = 0. // density ); int initialize(const shared_ptr&) override; diff --git a/Material/Material1D/vonMises/NonlinearMises1D.cpp b/Material/Material1D/vonMises/NonlinearMises1D.cpp index 9d29a5ab3..adebdb380 100644 --- a/Material/Material1D/vonMises/NonlinearMises1D.cpp +++ b/Material/Material1D/vonMises/NonlinearMises1D.cpp @@ -43,11 +43,12 @@ int NonlinearMises1D::update_trial_status(const vec& t_strain) { const auto shifted_stress = trial_stress(0) - back_stress; const auto norm_shifted_stress = fabs(shifted_stress); - if(auto yield_func = norm_shifted_stress - std::max(0., compute_k(plastic_strain)); yield_func >= 0.) { + if(auto yield_func = norm_shifted_stress - std::max(0., compute_k(plastic_strain)); yield_func > 0.) { const auto current_h = compute_h(plastic_strain); auto gamma = 0., incre_h = 0.; double dkdh; auto counter = 0u; + auto ref_error = 1.; while(true) { if(max_iteration == ++counter) { suanpan_error("Cannot converge within {} iterations.\n", max_iteration); @@ -55,9 +56,10 @@ int NonlinearMises1D::update_trial_status(const vec& t_strain) { } const auto incre_gamma = yield_func / (elastic_modulus + (dkdh = compute_dk(plastic_strain) + compute_dh(plastic_strain))); - const auto abs_error = fabs(incre_gamma); - suanpan_debug("Local iteration error: {:.5E}.\n", abs_error); - if(abs_error <= tolerance) break; + const auto error = fabs(incre_gamma); + if(1u == counter) ref_error = error; + suanpan_debug("Local iteration error: {:.5E}.\n", error); + if(error < tolerance * ref_error || (fabs(yield_func) < tolerance && counter > 5u)) break; incre_h = compute_h(plastic_strain = current_history(0) + (gamma += incre_gamma)) - current_h; yield_func = norm_shifted_stress - elastic_modulus * gamma - std::max(0., compute_k(plastic_strain)) - incre_h; } diff --git a/Material/Material1D/vonMises/NonlinearMises1D.h b/Material/Material1D/vonMises/NonlinearMises1D.h index 0181f6cb3..25d463779 100644 --- a/Material/Material1D/vonMises/NonlinearMises1D.h +++ b/Material/Material1D/vonMises/NonlinearMises1D.h @@ -35,7 +35,7 @@ struct DataMises1D { }; class NonlinearMises1D : protected DataMises1D, public Material1D { - static constexpr unsigned max_iteration = 20; + static constexpr unsigned max_iteration = 20u; [[nodiscard]] virtual double compute_k(double) const = 0; [[nodiscard]] virtual double compute_dk(double) const = 0; @@ -43,9 +43,10 @@ class NonlinearMises1D : protected DataMises1D, public Material1D { [[nodiscard]] virtual double compute_dh(double) const = 0; public: - NonlinearMises1D(unsigned, // tag - double, // elastic modulus - double = 0. // density + NonlinearMises1D( + unsigned, // tag + double, // elastic modulus + double = 0. // density ); int initialize(const shared_ptr&) override; diff --git a/Material/Material1D/vonMises/VAFCRP1D.cpp b/Material/Material1D/vonMises/VAFCRP1D.cpp index 9aa6201aa..2fc76921b 100644 --- a/Material/Material1D/vonMises/VAFCRP1D.cpp +++ b/Material/Material1D/vonMises/VAFCRP1D.cpp @@ -39,8 +39,7 @@ int VAFCRP1D::initialize(const shared_ptr& D) { unique_ptr VAFCRP1D::get_copy() { return make_unique(*this); } double VAFCRP1D::get_parameter(const ParameterType P) const { - if(ParameterType::DENSITY == P) return density; - if(ParameterType::ELASTICMODULUS == P || ParameterType::YOUNGSMODULUS == P || ParameterType::E == P) return elastic_modulus; + if(ParameterType::ELASTICMODULUS == P) return elastic_modulus; return 0.; } @@ -55,7 +54,8 @@ int VAFCRP1D::update_trial_status(const vec& t_strain) { auto gamma = 0.; double xi, jacobian, exp_gamma; - unsigned counter = 0; + auto counter = 0u; + auto ref_error = 1.; while(true) { if(max_iteration == ++counter) { suanpan_error("Cannot converge within {} iterations.\n", max_iteration); @@ -69,7 +69,7 @@ int VAFCRP1D::update_trial_status(const vec& t_strain) { if(k < 0.) k = dk = 0.; auto sum_a = 0., sum_b = 0.; - for(unsigned I = 0; I < size; ++I) { + for(auto I = 0u; I < size; ++I) { const auto denom = 1. + b(I) * gamma; sum_a += trial_history(I) / denom; sum_b += a(I) / denom; @@ -81,24 +81,27 @@ int VAFCRP1D::update_trial_status(const vec& t_strain) { jacobian = -elastic_modulus - epsilon * mu * q / (*incre_time + mu * gamma); - if(xi > 0.) for(unsigned I = 0; I < size; ++I) jacobian += (b(I) * trial_history(I) - a(I)) * pow(1. + b(I) * gamma, -2.); - else for(unsigned I = 0; I < size; ++I) jacobian -= (b(I) * trial_history(I) + a(I)) * pow(1. + b(I) * gamma, -2.); + if(xi > 0.) for(auto I = 0u; I < size; ++I) jacobian += (b(I) * trial_history(I) - a(I)) * pow(1. + b(I) * gamma, -2.); + else for(auto I = 0u; I < size; ++I) jacobian -= (b(I) * trial_history(I) + a(I)) * pow(1. + b(I) * gamma, -2.); - const auto incre = (q * exp_gamma - k) / ((jacobian *= exp_gamma) -= dk); - suanpan_debug("Local iteration error: {:.5E}.\n", fabs(incre)); - if(fabs(incre) <= tolerance) break; + const auto residual = q * exp_gamma - k; + const auto incre = residual / ((jacobian *= exp_gamma) -= dk); + const auto error = fabs(incre); + if(1u == counter) ref_error = error; + suanpan_debug("Local iteration error: {:.5E}.\n", error); + if(error < tolerance * ref_error || (fabs(residual) < tolerance && counter > 5u)) break; gamma -= incre; p -= incre; } if(xi > 0.) { - for(unsigned I = 0; I < size; ++I) trial_history(I) = (trial_history(I) + a(I) * gamma) / (1. + b(I) * gamma); + for(auto I = 0u; I < size; ++I) trial_history(I) = (trial_history(I) + a(I) * gamma) / (1. + b(I) * gamma); trial_stress -= elastic_modulus * gamma; } else { - for(unsigned I = 0; I < size; ++I) trial_history(I) = (trial_history(I) - a(I) * gamma) / (1. + b(I) * gamma); + for(auto I = 0u; I < size; ++I) trial_history(I) = (trial_history(I) - a(I) * gamma) / (1. + b(I) * gamma); trial_stress += elastic_modulus * gamma; } @@ -132,12 +135,6 @@ int VAFCRP1D::reset_status() { return SUANPAN_SUCCESS; } -vector VAFCRP1D::record(const OutputType P) { - if(P == OutputType::PEEQ) return {vec{current_history(size)}}; - - return Material1D::record(P); -} - void VAFCRP1D::print() { suanpan_info("A uniaxial VAFCRP material model.\n"); Material1D::print(); diff --git a/Material/Material1D/vonMises/VAFCRP1D.h b/Material/Material1D/vonMises/VAFCRP1D.h index 9c08a1bd0..36b969c85 100644 --- a/Material/Material1D/vonMises/VAFCRP1D.h +++ b/Material/Material1D/vonMises/VAFCRP1D.h @@ -48,8 +48,8 @@ struct DataVAFCRP1D { const vec a, b; }; -class VAFCRP1D final : DataVAFCRP1D, public Material1D { - static constexpr unsigned max_iteration = 20; +class VAFCRP1D final : protected DataVAFCRP1D, public Material1D { + static constexpr unsigned max_iteration = 20u; static const double unit_time; const double* incre_time = nullptr; @@ -57,17 +57,18 @@ class VAFCRP1D final : DataVAFCRP1D, public Material1D { const unsigned size = static_cast(a.size()); public: - VAFCRP1D(unsigned, // tag - double, // elastic modulus - double, // yield stress - double, // saturated stress - double, // linear hardening modulus - double, // m - double, // mu - double, // epsilon - vec&&, // a - vec&&, // b - double = 0. // density + VAFCRP1D( + unsigned, // tag + double, // elastic modulus + double, // yield stress + double, // saturated stress + double, // linear hardening modulus + double, // m + double, // mu + double, // epsilon + vec&&, // a + vec&&, // b + double = 0. // density ); int initialize(const shared_ptr&) override; @@ -82,8 +83,6 @@ class VAFCRP1D final : DataVAFCRP1D, public Material1D { int commit_status() override; int reset_status() override; - vector record(OutputType) override; - void print() override; }; diff --git a/Material/Material2D/Bilinear2D.cpp b/Material/Material2D/Bilinear2D.cpp deleted file mode 100644 index f92bf3c3b..000000000 --- a/Material/Material2D/Bilinear2D.cpp +++ /dev/null @@ -1,145 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2017-2023 Theodore Chang - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - ******************************************************************************/ - -#include "Bilinear2D.h" -#include -#include - -const uvec Bilinear2D::F1{0, 1, 3}; -const uvec Bilinear2D::F2{2, 4, 5}; - -mat Bilinear2D::form_stiffness(const mat& full_stiffness) { return full_stiffness(F1, F1) - full_stiffness(F1, F2) * solve(full_stiffness(F2, F2), full_stiffness(F2, F1)); } - -Bilinear2D::Bilinear2D(const unsigned T, const double E, const double V, const double Y, const double H, const double B, const PlaneType M, const double D) - : Material2D(T, M, D) - , elastic_modulus(E) - , poissons_ratio(V) - , base(0, E, V, Y, H, B, D) { set_support_couple(true); } - -int Bilinear2D::initialize(const shared_ptr&) { - if(SUANPAN_SUCCESS != base.initialize_base(nullptr) || SUANPAN_SUCCESS != base.initialize(nullptr)) return SUANPAN_FAIL; - - trial_full_strain = current_full_strain.zeros(6); - - trial_stiffness = current_stiffness = initial_stiffness = form_stiffness(base.get_initial_stiffness()); - - return SUANPAN_SUCCESS; -} - -void Bilinear2D::initialize_couple(const shared_ptr&) { - if(characteristic_length < 0.) { - characteristic_length = 1.; - suanpan_warning("Characteristic length is set to unity.\n"); - } - - initial_couple_stiffness = 2. * characteristic_length * characteristic_length * elastic_modulus / (1. + poissons_ratio) * eye(2, 2); - - trial_curvature = current_curvature.zeros(2); - trial_couple_stress = current_couple_stress.zeros(2); - - ConstantCoupleStiffness(this); -} - -double Bilinear2D::get_parameter(const ParameterType T) const { - if(ParameterType::PLANETYPE == T) return static_cast(plane_type); - return base.get_parameter(T); -} - -unique_ptr Bilinear2D::get_copy() { return make_unique(*this); } - -int Bilinear2D::update_trial_status(const vec& t_strain) { - auto& t_stress = base.get_trial_stress(); - - if(auto& t_stiffness = base.get_trial_stiffness(); PlaneType::S == plane_type) { - incre_strain = t_strain - trial_strain; - trial_full_strain(F1) = trial_strain = t_strain; - - trial_full_strain(F2) -= solve(t_stiffness(F2, F2), t_stress(F2) + t_stiffness(F2, F1) * incre_strain); - - if(base.update_trial_status(trial_full_strain) != SUANPAN_SUCCESS) return SUANPAN_FAIL; - - trial_stiffness = form_stiffness(t_stiffness); - - trial_stress = t_stress(F1) - t_stiffness(F1, F2) * solve(t_stiffness(F2, F2), t_stress(F2)); - } - else { - trial_full_strain(F1) = trial_strain = t_strain; - - if(base.update_trial_status(trial_full_strain) != SUANPAN_SUCCESS) return SUANPAN_FAIL; - - trial_stress = t_stress(F1); - trial_stiffness = t_stiffness(F1, F1); - } - - return SUANPAN_SUCCESS; -} - -int Bilinear2D::clear_status() { - current_strain = trial_strain.zeros(); - current_stress = trial_stress.zeros(); - current_full_strain = trial_full_strain.zeros(); - trial_stiffness = current_stiffness = initial_stiffness; - - return base.clear_status(); -} - -int Bilinear2D::commit_status() { - current_strain = trial_strain; - current_stress = trial_stress; - current_full_strain = trial_full_strain; - current_stiffness = trial_stiffness; - - return base.commit_status(); -} - -int Bilinear2D::reset_status() { - trial_strain = current_strain; - trial_stress = current_stress; - trial_full_strain = current_full_strain; - trial_stiffness = current_stiffness; - - return base.reset_status(); -} - -void Bilinear2D::print() { - suanpan_info("A 2D bilinear plane {} material model.\n", plane_type == PlaneType::S ? "stress" : "strain"); - suanpan_info("Strain:", current_strain); - suanpan_info("Stress:", current_stress); -} - -vector Bilinear2D::record(const OutputType P) { - if(P == OutputType::PE) return {vec{current_strain - solve(initial_stiffness, current_stress)}}; - if(P == OutputType::PEP) return {transform::strain::principal(current_strain - solve(initial_stiffness, current_stress))}; - if(P == OutputType::MISES) { - vec trial_mises(1); - if(plane_type == PlaneType::S) trial_mises(0) = sqrt(current_stress(0) * current_stress(0) - current_stress(0) * current_stress(1) + current_stress(1) * current_stress(1) + 3. * current_stress(2) * current_stress(2)); - else if(plane_type == PlaneType::E) { - const auto sigma_33 = elastic_modulus * poissons_ratio / (1. + poissons_ratio) / (1. - 2. * poissons_ratio) * (current_strain(0) + current_strain(1)); - const auto sigma_mean = (current_stress(0) + current_stress(1) + sigma_33) / 3.; - const auto tmp_a = current_stress(0) - sigma_mean; - const auto tmp_b = current_stress(1) - sigma_mean; - const auto tmp_c = sigma_33 - sigma_mean; - trial_mises(0) = sqrt(1.5 * (tmp_a * tmp_a + tmp_b * tmp_b + tmp_c * tmp_c + 2. * current_stress(2) * current_stress(2))); - } - - return {trial_mises}; - } - if(P == OutputType::EEEQ) return {vec{sqrt(2. / 3.) * tensor::strain::norm(current_full_strain)}}; - if(P == OutputType::PEEQ) return base.record(P); - - return Material2D::record(P); -} diff --git a/Material/Material2D/CMakeLists.txt b/Material/Material2D/CMakeLists.txt index 7d5f09e12..6e0967ee6 100644 --- a/Material/Material2D/CMakeLists.txt +++ b/Material/Material2D/CMakeLists.txt @@ -1,5 +1,4 @@ set(M2D - Material2D/Bilinear2D.cpp Material2D/Concrete21.cpp Material2D/Concrete22.cpp Material2D/Elastic/AxisymmetricElastic.cpp @@ -11,4 +10,4 @@ set(M2D Material2D/Wrapper/PlaneStress.cpp Material2D/Wrapper/Rebar2D.cpp Material2D/Wrapper/Rotation2D.cpp - ) +) diff --git a/Material/Material2D/Concrete21.cpp b/Material/Material2D/Concrete21.cpp index 08ccc095d..89f072008 100644 --- a/Material/Material2D/Concrete21.cpp +++ b/Material/Material2D/Concrete21.cpp @@ -24,11 +24,11 @@ Concrete21::Concrete21(const unsigned T, const double CS, const double TS, const , concrete_major(0, CS, TS, MCC, NCC, MTT, NTT, MP, CE, TE, R) , concrete_minor(0, CS, TS, MCC, NCC, MTT, NTT, MP, CE, TE, R) {} -int Concrete21::initialize(const shared_ptr&) { - if(SUANPAN_SUCCESS != concrete_major.initialize_base(nullptr) || SUANPAN_SUCCESS != concrete_major.initialize(nullptr) || SUANPAN_SUCCESS != concrete_minor.initialize_base(nullptr) || SUANPAN_SUCCESS != concrete_minor.initialize(nullptr)) return SUANPAN_FAIL; +int Concrete21::initialize(const shared_ptr& D) { + if(SUANPAN_SUCCESS != concrete_major.initialize_base(D) || SUANPAN_SUCCESS != concrete_major.initialize(D) || SUANPAN_SUCCESS != concrete_minor.initialize_base(D) || SUANPAN_SUCCESS != concrete_minor.initialize(D)) return SUANPAN_FAIL; initial_stiffness.zeros(3, 3); - initial_stiffness(2, 2) = shear_modulus = .5 * (initial_stiffness(0, 0) = initial_stiffness(1, 1) = concrete_major.get_parameter(ParameterType::ELASTICMODULUS)); + initial_stiffness(2, 2) = shear_modulus = .5 * (initial_stiffness(0, 0) = initial_stiffness(1, 1) = concrete_major.get_initial_stiffness()(0)); trial_stiffness = current_stiffness = initial_stiffness; @@ -37,10 +37,7 @@ int Concrete21::initialize(const shared_ptr&) { unique_ptr Concrete21::get_copy() { return make_unique(*this); } -double Concrete21::get_parameter(const ParameterType P) const { - if(ParameterType::PLANETYPE == P) return static_cast(plane_type); - return concrete_major.get_parameter(P); -} +double Concrete21::get_parameter(const ParameterType P) const { return concrete_major.get_parameter(P); } int Concrete21::update_trial_status(const vec& t_strain) { incre_strain = (trial_strain = t_strain) - current_strain; diff --git a/Material/Material2D/Concrete21.h b/Material/Material2D/Concrete21.h index 644d89b10..c886f7d9c 100644 --- a/Material/Material2D/Concrete21.h +++ b/Material/Material2D/Concrete21.h @@ -18,7 +18,9 @@ * @class Concrete21 * @brief A Concrete21 material class. * - * For plain concrete. Only monotonic load is supported at moment. Cyclic behaviour does not converge in most cases. + * For plain concrete. + * Only monotonic load is supported at the moment. + * Cyclic behaviour does not converge in most cases. * * algorithm validated @ 05/02/2019 by tlc * @@ -42,17 +44,18 @@ class Concrete21 final : public Material2D { double shear_modulus = 0.; public: - Concrete21(unsigned, // tag - double, // peak stress in negative - double, // crack stress in positive - double, // MC - double, // NC - double, // MT - double, // NT - double, // middle point - double, // peak strain in negative - double, // crack strain in positive - double = 0. // density + Concrete21( + unsigned, // tag + double, // peak stress in negative + double, // crack stress in positive + double, // MC + double, // NC + double, // MT + double, // NT + double, // middle point + double, // peak strain in negative + double, // crack strain in positive + double = 0. // density ); int initialize(const shared_ptr&) override; diff --git a/Material/Material2D/Concrete22.cpp b/Material/Material2D/Concrete22.cpp index 532d187df..9e55c0b53 100644 --- a/Material/Material2D/Concrete22.cpp +++ b/Material/Material2D/Concrete22.cpp @@ -26,11 +26,11 @@ Concrete22::Concrete22(const unsigned T, const double CS, const double TS, const , shear_stress(SS) , shear_retention(SR) {} -int Concrete22::initialize(const shared_ptr&) { - if(SUANPAN_SUCCESS != concrete_major.initialize_base(nullptr) || SUANPAN_SUCCESS != concrete_major.initialize(nullptr) || SUANPAN_SUCCESS != concrete_minor.initialize_base(nullptr) || SUANPAN_SUCCESS != concrete_minor.initialize(nullptr)) return SUANPAN_FAIL; +int Concrete22::initialize(const shared_ptr& D) { + if(SUANPAN_SUCCESS != concrete_major.initialize_base(D) || SUANPAN_SUCCESS != concrete_major.initialize(D) || SUANPAN_SUCCESS != concrete_minor.initialize_base(D) || SUANPAN_SUCCESS != concrete_minor.initialize(D)) return SUANPAN_FAIL; initial_stiffness.zeros(3, 3); - initial_stiffness(2, 2) = shear_modulus = .5 * (initial_stiffness(0, 0) = initial_stiffness(1, 1) = concrete_major.get_parameter(ParameterType::ELASTICMODULUS)); + initial_stiffness(2, 2) = shear_modulus = .5 * (initial_stiffness(0, 0) = initial_stiffness(1, 1) = concrete_major.get_initial_stiffness()(0)); trial_stiffness = current_stiffness = initial_stiffness; @@ -43,10 +43,7 @@ int Concrete22::initialize(const shared_ptr&) { unique_ptr Concrete22::get_copy() { return make_unique(*this); } -double Concrete22::get_parameter(const ParameterType P) const { - if(ParameterType::PLANETYPE == P) return static_cast(plane_type); - return concrete_major.get_parameter(P); -} +double Concrete22::get_parameter(const ParameterType P) const { return concrete_major.get_parameter(P); } int Concrete22::update_trial_status(const vec& t_strain) { incre_strain = (trial_strain = t_strain) - current_strain; diff --git a/Material/Material2D/Concrete22.h b/Material/Material2D/Concrete22.h index 94e33b873..a74c0f3bd 100644 --- a/Material/Material2D/Concrete22.h +++ b/Material/Material2D/Concrete22.h @@ -40,19 +40,20 @@ class Concrete22 final : public Material2D { double shear_modulus = 0., shear_strain = 0.; public: - Concrete22(unsigned, // tag - double, // peak stress in negative - double, // crack stress in positive - double, // MC - double, // NC - double, // MT - double, // NT - double, // middle point - double, // peak strain in negative - double, // crack strain in positive - double, // shear stress - double, // shear retention - double = 0. // density + Concrete22( + unsigned, // tag + double, // peak stress in negative + double, // crack stress in positive + double, // MC + double, // NC + double, // MT + double, // NT + double, // middle point + double, // peak strain in negative + double, // crack strain in positive + double, // shear stress + double, // shear retention + double = 0. // density ); int initialize(const shared_ptr&) override; diff --git a/Material/Material2D/Elastic/AxisymmetricElastic.cpp b/Material/Material2D/Elastic/AxisymmetricElastic.cpp index fea9dee21..f8ad26b21 100644 --- a/Material/Material2D/Elastic/AxisymmetricElastic.cpp +++ b/Material/Material2D/Elastic/AxisymmetricElastic.cpp @@ -29,14 +29,7 @@ int AxisymmetricElastic::initialize(const shared_ptr&) { return SUANPAN_SUCCESS; } -double AxisymmetricElastic::get_parameter(const ParameterType P) const { - if(ParameterType::PLANETYPE == P) return static_cast(plane_type); - if(ParameterType::DENSITY == P) return density; - if(ParameterType::ELASTICMODULUS == P || ParameterType::YOUNGSMODULUS == P || ParameterType::E == P) return elastic_modulus; - if(ParameterType::SHEARMODULUS == P || ParameterType::G == P) return elastic_modulus / (2. + 2. * poissons_ratio); - if(ParameterType::POISSONSRATIO == P) return poissons_ratio; - return 0.; -} +double AxisymmetricElastic::get_parameter(const ParameterType P) const { return material_property(elastic_modulus, poissons_ratio)(P); } unique_ptr AxisymmetricElastic::get_copy() { return make_unique(*this); } diff --git a/Material/Material2D/Elastic/AxisymmetricElastic.h b/Material/Material2D/Elastic/AxisymmetricElastic.h index 3155ed264..11e0e8a09 100644 --- a/Material/Material2D/Elastic/AxisymmetricElastic.h +++ b/Material/Material2D/Elastic/AxisymmetricElastic.h @@ -35,10 +35,11 @@ class AxisymmetricElastic final : public Material2D { const double elastic_modulus; // elastic modulus const double poissons_ratio; // poissons ratio public: - AxisymmetricElastic(unsigned, // tag - double, // elastic modulus - double, // poissons ratio - double = 0 // density + AxisymmetricElastic( + unsigned, // tag + double, // elastic modulus + double, // poissons ratio + double = 0 // density ); int initialize(const shared_ptr&) override; diff --git a/Material/Material2D/Elastic/Elastic2D.cpp b/Material/Material2D/Elastic/Elastic2D.cpp index b3d2af983..07fc83bfa 100644 --- a/Material/Material2D/Elastic/Elastic2D.cpp +++ b/Material/Material2D/Elastic/Elastic2D.cpp @@ -41,7 +41,7 @@ int Elastic2D::initialize(const shared_ptr&) { void Elastic2D::initialize_couple(const shared_ptr&) { if(characteristic_length < 0.) { - characteristic_length = 1.; + access::rw(characteristic_length) = 1.; suanpan_warning("Characteristic length is set to unity.\n"); } @@ -53,15 +53,7 @@ void Elastic2D::initialize_couple(const shared_ptr&) { ConstantCoupleStiffness(this); } -double Elastic2D::get_parameter(const ParameterType P) const { - if(ParameterType::PLANETYPE == P) return static_cast(plane_type); - if(ParameterType::DENSITY == P) return density; - if(ParameterType::ELASTICMODULUS == P || ParameterType::YOUNGSMODULUS == P || ParameterType::E == P) return elastic_modulus; - if(ParameterType::SHEARMODULUS == P || ParameterType::G == P) return elastic_modulus / (2. + 2. * poissons_ratio); - if(ParameterType::BULKMODULUS == P) return elastic_modulus / (3. - 6. * poissons_ratio); - if(ParameterType::POISSONSRATIO == P) return poissons_ratio; - return 0.; -} +double Elastic2D::get_parameter(const ParameterType P) const { return material_property(elastic_modulus, poissons_ratio)(P); } unique_ptr Elastic2D::get_copy() { return make_unique(*this); } diff --git a/Material/Material2D/Elastic/Elastic2D.h b/Material/Material2D/Elastic/Elastic2D.h index ddb76edd6..a0df61ece 100644 --- a/Material/Material2D/Elastic/Elastic2D.h +++ b/Material/Material2D/Elastic/Elastic2D.h @@ -43,11 +43,13 @@ class Elastic2D final : public Material2D { const double elastic_modulus; // elastic modulus const double poissons_ratio; // poissons ratio public: - Elastic2D(unsigned, // tag - double, // elastic modulus - double, // poissons ratio - double = 0, // density - PlaneType = PlaneType::S); + Elastic2D( + unsigned, // tag + double, // elastic modulus + double, // poissons ratio + double = 0, // density + PlaneType = PlaneType::S + ); int initialize(const shared_ptr&) override; void initialize_couple(const shared_ptr&) override; diff --git a/Material/Material2D/Material2D b/Material/Material2D/Material2D index b9490190b..da7bf272a 100644 --- a/Material/Material2D/Material2D +++ b/Material/Material2D/Material2D @@ -1,4 +1,3 @@ -#include "Bilinear2D.h" #include "Concrete21.h" #include "Concrete22.h" #include "Elastic/AxisymmetricElastic.h" @@ -9,4 +8,4 @@ #include "Wrapper/PlaneStrain.h" #include "Wrapper/PlaneStress.h" #include "Wrapper/Rebar2D.h" -#include "Wrapper/Rotation2D.h" \ No newline at end of file +#include "Wrapper/Rotation2D.h" diff --git a/Material/Material2D/Material2D.cpp b/Material/Material2D/Material2D.cpp index d7122e6c3..6f41a8b44 100644 --- a/Material/Material2D/Material2D.cpp +++ b/Material/Material2D/Material2D.cpp @@ -20,22 +20,17 @@ #include Material2D::Material2D(const unsigned T, const PlaneType PT, const double R) - : Material(T, MaterialType::D2, R) - , plane_type(PT) {} + : Material(T, MaterialType::D2, R) { access::rw(plane_type) = PT; } vector Material2D::record(const OutputType P) { - vector data; + if(P == OutputType::SP) return {transform::stress::principal(current_stress)}; + if(P == OutputType::S11) return {vec{current_stress(0)}}; + if(P == OutputType::S22) return {vec{current_stress(1)}}; + if(P == OutputType::S12) return {vec{current_stress(2)}}; + if(P == OutputType::EP) return {transform::strain::principal(current_strain)}; + if(P == OutputType::E11) return {vec{current_strain(0)}}; + if(P == OutputType::E22) return {vec{current_strain(1)}}; + if(P == OutputType::E12) return {vec{current_strain(2)}}; - if(P == OutputType::S) data.emplace_back(current_stress); - else if(P == OutputType::SP) data.emplace_back(transform::stress::principal(current_stress)); - else if(P == OutputType::S11) data.emplace_back(vec{current_stress(0)}); - else if(P == OutputType::S22) data.emplace_back(vec{current_stress(1)}); - else if(P == OutputType::S12) data.emplace_back(vec{current_stress(2)}); - else if(P == OutputType::E) data.emplace_back(current_strain); - else if(P == OutputType::EP) data.emplace_back(transform::strain::principal(current_strain)); - else if(P == OutputType::E11) data.emplace_back(vec{current_strain(0)}); - else if(P == OutputType::E22) data.emplace_back(vec{current_strain(1)}); - else if(P == OutputType::E12) data.emplace_back(vec{current_strain(2)}); - - return data; + return Material::record(P); } diff --git a/Material/Material2D/Material2D.h b/Material/Material2D/Material2D.h index 359a589cc..45bc4700f 100644 --- a/Material/Material2D/Material2D.h +++ b/Material/Material2D/Material2D.h @@ -40,21 +40,12 @@ using std::vector; -enum class PlaneType : unsigned { - S = 1, - E = 2, - A = 3, - N = 0 -}; - class Material2D : public Material { -protected: - const PlaneType plane_type; - public: - Material2D(unsigned, // tag - PlaneType, // plane type - double // density + Material2D( + unsigned, // tag + PlaneType, // plane type + double // density ); vector record(OutputType) override; diff --git a/Material/Material2D/Wrapper/Axisymmetric.cpp b/Material/Material2D/Wrapper/Axisymmetric.cpp index 1a162b91e..f1f46bc4f 100644 --- a/Material/Material2D/Wrapper/Axisymmetric.cpp +++ b/Material/Material2D/Wrapper/Axisymmetric.cpp @@ -22,32 +22,30 @@ const uvec Axisymmetric::F{0, 1, 2, 3}; Axisymmetric::Axisymmetric(const unsigned T, const unsigned BT) : Material2D(T, PlaneType::A, 0.) - , base_tag(BT) - , full_strain(6, fill::zeros) {} + , base_tag(BT) {} int Axisymmetric::initialize(const shared_ptr& D) { - base = suanpan::initialized_material_copy(D, base_tag); + base = D->initialized_material_copy(base_tag); if(nullptr == base || base->get_material_type() != MaterialType::D3) { suanpan_error("A valid 3D host material is required.\n"); return SUANPAN_FAIL; } - access::rw(density) = base->get_parameter(ParameterType::DENSITY); + access::rw(density) = base->get_density(); current_stiffness = trial_stiffness = initial_stiffness = base->get_initial_stiffness()(F, F); return SUANPAN_SUCCESS; } -double Axisymmetric::get_parameter(const ParameterType P) const { - if(ParameterType::PLANETYPE == P) return static_cast(plane_type); - return base->get_parameter(P); -} +double Axisymmetric::get_parameter(const ParameterType P) const { return base->get_parameter(P); } unique_ptr Axisymmetric::get_copy() { return make_unique(*this); } int Axisymmetric::update_trial_status(const vec& t_strain) { + vec full_strain(6, fill::zeros); + full_strain(F) = trial_strain = t_strain; if(SUANPAN_SUCCESS != base->update_trial_status(full_strain)) return SUANPAN_FAIL; @@ -60,10 +58,8 @@ int Axisymmetric::update_trial_status(const vec& t_strain) { } int Axisymmetric::clear_status() { - current_strain.zeros(); - trial_strain.zeros(); - current_stress.zeros(); - trial_stress.zeros(); + trial_strain = current_strain.zeros(); + trial_stress = current_stress.zeros(); trial_stiffness = current_stiffness = initial_stiffness; return base->clear_status(); } diff --git a/Material/Material2D/Wrapper/Axisymmetric.h b/Material/Material2D/Wrapper/Axisymmetric.h index 98ea1ff54..964cc46fd 100644 --- a/Material/Material2D/Wrapper/Axisymmetric.h +++ b/Material/Material2D/Wrapper/Axisymmetric.h @@ -40,11 +40,10 @@ class Axisymmetric final : public Material2D { ResourceHolder base; - vec full_strain; - public: - Axisymmetric(unsigned, // tag - unsigned // 3D material tag + Axisymmetric( + unsigned, // tag + unsigned // 3D material tag ); int initialize(const shared_ptr&) override; diff --git a/Material/Material2D/Wrapper/Laminated.cpp b/Material/Material2D/Wrapper/Laminated.cpp index 5b67c3caa..0f98ae09d 100644 --- a/Material/Material2D/Wrapper/Laminated.cpp +++ b/Material/Material2D/Wrapper/Laminated.cpp @@ -23,16 +23,18 @@ Laminated::Laminated(const unsigned T, uvec&& MT) , mat_tag(std::forward(MT)) {} int Laminated::initialize(const shared_ptr& D) { + auto& t_density = access::rw(density); + t_density = 0.; initial_stiffness.zeros(3, 3); mat_pool.clear(); mat_pool.reserve(mat_tag.n_elem); for(const auto I : mat_tag) { - mat_pool.emplace_back(suanpan::initialized_material_copy(D, I)); + mat_pool.emplace_back(D->initialized_material_copy(I)); if(nullptr == mat_pool.back() || mat_pool.back()->get_material_type() != MaterialType::D2) { suanpan_error("A valid 2D host material is required.\n"); return SUANPAN_FAIL; } - access::rw(density) += mat_pool.back()->get_parameter(ParameterType::DENSITY); + t_density += mat_pool.back()->get_density(); initial_stiffness += mat_pool.back()->get_initial_stiffness(); } diff --git a/Material/Material2D/Wrapper/Laminated.h b/Material/Material2D/Wrapper/Laminated.h index 1e4bc410e..60a7c26e3 100644 --- a/Material/Material2D/Wrapper/Laminated.h +++ b/Material/Material2D/Wrapper/Laminated.h @@ -37,8 +37,9 @@ class Laminated final : public Material2D { std::vector> mat_pool; public: - Laminated(unsigned, // tag - uvec&& // mat tag + Laminated( + unsigned, // tag + uvec&& // mat tag ); int initialize(const shared_ptr&) override; diff --git a/Material/Material2D/Wrapper/PlaneStrain.cpp b/Material/Material2D/Wrapper/PlaneStrain.cpp index b0f9918b8..628c607f8 100644 --- a/Material/Material2D/Wrapper/PlaneStrain.cpp +++ b/Material/Material2D/Wrapper/PlaneStrain.cpp @@ -27,24 +27,21 @@ PlaneStrain::PlaneStrain(const unsigned T, const unsigned BT, const unsigned ST) , base_tag(BT) {} int PlaneStrain::initialize(const shared_ptr& D) { - base = suanpan::initialized_material_copy(D, base_tag); + base = D->initialized_material_copy(base_tag); if(nullptr == base || base->get_material_type() != MaterialType::D3) { suanpan_error("A valid 3D host material is required.\n"); return SUANPAN_FAIL; } - access::rw(density) = base->get_parameter(ParameterType::DENSITY); + access::rw(density) = base->get_density(); current_stiffness = trial_stiffness = initial_stiffness = base->get_initial_stiffness()(F, F); return SUANPAN_SUCCESS; } -double PlaneStrain::get_parameter(const ParameterType P) const { - if(ParameterType::PLANETYPE == P) return static_cast(plane_type); - return base->get_parameter(P); -} +double PlaneStrain::get_parameter(const ParameterType P) const { return base->get_parameter(P); } unique_ptr PlaneStrain::get_copy() { return make_unique(*this); } diff --git a/Material/Material2D/Wrapper/PlaneStrain.h b/Material/Material2D/Wrapper/PlaneStrain.h index a34e1df4d..d4210c1aa 100644 --- a/Material/Material2D/Wrapper/PlaneStrain.h +++ b/Material/Material2D/Wrapper/PlaneStrain.h @@ -41,9 +41,10 @@ class PlaneStrain final : public Material2D { ResourceHolder base; public: - PlaneStrain(unsigned, // tag - unsigned, // 3D material tag - unsigned // type + PlaneStrain( + unsigned, // tag + unsigned, // 3D material tag + unsigned // type ); int initialize(const shared_ptr&) override; diff --git a/Material/Material2D/Wrapper/PlaneStress.cpp b/Material/Material2D/Wrapper/PlaneStress.cpp index 89fc132b3..0b22eec9b 100644 --- a/Material/Material2D/Wrapper/PlaneStress.cpp +++ b/Material/Material2D/Wrapper/PlaneStress.cpp @@ -18,130 +18,11 @@ #include "PlaneStress.h" #include -const uvec PlaneStress::F1{0, 1, 3}; -const uvec PlaneStress::F2{2, 4, 5}; - -mat PlaneStress::form_stiffness(const mat& full_stiffness) { - const auto& A = full_stiffness(F1, F1); - const auto& U = full_stiffness(F1, F2); - const auto& C = full_stiffness(F2, F2); - const auto& V = full_stiffness(F2, F1); - - return A - U * solve(C, V); - - /* - const auto S = inv(A); - const auto VS = V * S; - - return inv(S * (eye(3, 3) - U * solve(VS * U - C, VS))); - */ -} - -PlaneStress::PlaneStress(const unsigned T, const unsigned BT, const unsigned MI, const bool FM) - : Material2D(T, PlaneType::S, 0.) - , base_tag(BT) - , max_iteration(MI) - , use_full_matrix(FM) { access::rw(tolerance) = 1E-12; } - -int PlaneStress::initialize(const shared_ptr& D) { - base = suanpan::initialized_material_copy(D, base_tag); - - if(nullptr == base || base->get_material_type() != MaterialType::D3) { - suanpan_error("A valid 3D host material is required.\n"); - return SUANPAN_FAIL; - } - - trial_full_strain = current_full_strain.zeros(6); - - current_stiffness = trial_stiffness = initial_stiffness = form_stiffness(base->get_initial_stiffness()); - - return SUANPAN_SUCCESS; -} - -double PlaneStress::get_parameter(const ParameterType P) const { - if(ParameterType::PLANETYPE == P) return static_cast(plane_type); - return base->get_parameter(P); -} +PlaneStress::PlaneStress(const unsigned T, const unsigned BT, const unsigned MI) + : StressWrapper(T, BT, MI, uvec{0, 1, 3}, uvec{2, 4, 5}, MaterialType::D2) { access::rw(plane_type) = PlaneType::S; } unique_ptr PlaneStress::get_copy() { return make_unique(*this); } -int PlaneStress::update_trial_status(const vec& t_strain) { - auto& t_stress = base->get_trial_stress(); - auto& t_stiffness = base->get_trial_stiffness(); - - if(norm(incre_strain = t_strain - trial_strain) <= datum::eps) return SUANPAN_SUCCESS; - - trial_full_strain(F1) = trial_strain = t_strain; - - if(1 != max_iteration) { - unsigned counter = 0; - - if(use_full_matrix) - while(++counter < max_iteration) { - if(SUANPAN_SUCCESS != base->update_trial_status(trial_full_strain)) return SUANPAN_FAIL; - trial_full_strain(F2) -= solve(t_stiffness(F2, F2), t_stress(F2)); - const auto error = norm(t_stress(F2)); - suanpan_debug("Local iteration error: {:.5E}.\n", error); - if(error < tolerance) break; - } - else - while(++counter < max_iteration) { - if(SUANPAN_SUCCESS != base->update_trial_status(trial_full_strain)) return SUANPAN_FAIL; - trial_full_strain(F2) -= t_stress(F2) / vec(t_stiffness.diag())(F2); - const auto error = norm(t_stress(F2)); - suanpan_debug("Local iteration error: {:.5E}.\n", error); - if(error < tolerance) break; - } - - if(counter == max_iteration) { - suanpan_error("Cannot converge within {} iterations.\n", max_iteration); - return SUANPAN_FAIL; - } - - trial_stress = t_stress(F1); - } - else { - trial_full_strain(F2) -= solve(t_stiffness(F2, F2), t_stress(F2) + t_stiffness(F2, F1) * incre_strain); - - if(SUANPAN_SUCCESS != base->update_trial_status(trial_full_strain)) return SUANPAN_FAIL; - - trial_stress = t_stress(F1) - t_stiffness(F1, F2) * solve(t_stiffness(F2, F2), t_stress(F2)); - } - - trial_stiffness = form_stiffness(t_stiffness); - - return SUANPAN_SUCCESS; -} - -int PlaneStress::clear_status() { - current_full_strain.zeros(); - trial_full_strain.zeros(); - current_strain.zeros(); - trial_strain.zeros(); - current_stress.zeros(); - trial_stress.zeros(); - trial_stiffness = current_stiffness = initial_stiffness; - return base->clear_status(); -} - -int PlaneStress::commit_status() { - current_full_strain = trial_full_strain; - current_strain = trial_strain; - current_stress = trial_stress; - current_stiffness = trial_stiffness; - return base->commit_status(); -} - -int PlaneStress::reset_status() { - trial_full_strain = current_full_strain; - trial_strain = current_strain; - trial_stress = current_stress; - trial_stiffness = current_stiffness; - return base->reset_status(); -} - -vector PlaneStress::record(const OutputType P) { return base->record(P); } - void PlaneStress::print() { suanpan_info("A plane stress wrapper.\n"); suanpan_info("Strain:", current_strain); diff --git a/Material/Material2D/Wrapper/PlaneStress.h b/Material/Material2D/Wrapper/PlaneStress.h index 73fd9498b..e167c35d7 100644 --- a/Material/Material2D/Wrapper/PlaneStress.h +++ b/Material/Material2D/Wrapper/PlaneStress.h @@ -28,44 +28,19 @@ #ifndef PLANESTRESS_H #define PLANESTRESS_H -#include +#include #include -class PlaneStress final : public Material2D { - static const uvec F1, F2; - - const unsigned base_tag; - - const unsigned max_iteration; - - const bool use_full_matrix; - - ResourceHolder base; - - vec trial_full_strain, current_full_strain; - - static mat form_stiffness(const mat&); - +class PlaneStress final : public StressWrapper { public: - PlaneStress(unsigned, // tag - unsigned, // 3D material tag - unsigned = 1, // max iteration - bool = false); - - int initialize(const shared_ptr&) override; - - [[nodiscard]] double get_parameter(ParameterType) const override; + PlaneStress( + unsigned, // tag + unsigned, // 3D material tag + unsigned // max iteration + ); unique_ptr get_copy() override; - int update_trial_status(const vec&) override; - - int clear_status() override; - int commit_status() override; - int reset_status() override; - - vector record(OutputType) override; - void print() override; }; diff --git a/Material/Material2D/Wrapper/Rebar2D.cpp b/Material/Material2D/Wrapper/Rebar2D.cpp index ce3aa86cd..8511d4a97 100644 --- a/Material/Material2D/Wrapper/Rebar2D.cpp +++ b/Material/Material2D/Wrapper/Rebar2D.cpp @@ -26,15 +26,15 @@ Rebar2D::Rebar2D(const unsigned T, const unsigned XT, const unsigned YT, const d , ratio_y(RY) {} int Rebar2D::initialize(const shared_ptr& D) { - rebar_x = suanpan::initialized_material_copy(D, tag_x); - rebar_y = suanpan::initialized_material_copy(D, tag_y); + rebar_x = D->initialized_material_copy(tag_x); + rebar_y = D->initialized_material_copy(tag_y); if(nullptr == rebar_x || nullptr == rebar_y || rebar_x->get_material_type() != MaterialType::D1 || rebar_y->get_material_type() != MaterialType::D1) { suanpan_error("A valid 1D host material is required.\n"); return SUANPAN_FAIL; } - access::rw(density) = ratio_x * rebar_x->get_parameter(ParameterType::DENSITY) + ratio_y * rebar_y->get_parameter(ParameterType::DENSITY); + access::rw(density) = ratio_x * rebar_x->get_density() + ratio_y * rebar_y->get_density(); initial_stiffness.zeros(3, 3); diff --git a/Material/Material2D/Wrapper/Rebar2D.h b/Material/Material2D/Wrapper/Rebar2D.h index 69d419dd6..f258c66ea 100644 --- a/Material/Material2D/Wrapper/Rebar2D.h +++ b/Material/Material2D/Wrapper/Rebar2D.h @@ -39,11 +39,12 @@ class Rebar2D final : public Material2D { ResourceHolder rebar_x, rebar_y; public: - Rebar2D(unsigned, // tag - unsigned, // material tag along x axis - unsigned, // material tag along y axis - double, // reinforcement ratio along x axis - double // reinforcement ratio along y axis + Rebar2D( + unsigned, // tag + unsigned, // material tag along x axis + unsigned, // material tag along y axis + double, // reinforcement ratio along x axis + double // reinforcement ratio along y axis ); int initialize(const shared_ptr&) override; diff --git a/Material/Material2D/Wrapper/Rotation2D.cpp b/Material/Material2D/Wrapper/Rotation2D.cpp index 4f97c0988..93b9bd466 100644 --- a/Material/Material2D/Wrapper/Rotation2D.cpp +++ b/Material/Material2D/Wrapper/Rotation2D.cpp @@ -25,14 +25,14 @@ Rotation2D::Rotation2D(const unsigned T, const unsigned MT, const double A) , trans_mat(transform::strain::trans(A)) {} int Rotation2D::initialize(const shared_ptr& D) { - mat_obj = suanpan::initialized_material_copy(D, mat_tag); + mat_obj = D->initialized_material_copy(mat_tag); if(nullptr == mat_obj || mat_obj->get_material_type() != MaterialType::D2) { suanpan_error("A valid 2D host material is required.\n"); return SUANPAN_FAIL; } - access::rw(density) = mat_obj->get_parameter(ParameterType::DENSITY); + access::rw(density) = mat_obj->get_density(); trial_stiffness = current_stiffness = initial_stiffness = trans_mat.t() * mat_obj->get_initial_stiffness() * trans_mat; diff --git a/Material/Material2D/Wrapper/Rotation2D.h b/Material/Material2D/Wrapper/Rotation2D.h index a43445c74..bfb6b6dc2 100644 --- a/Material/Material2D/Wrapper/Rotation2D.h +++ b/Material/Material2D/Wrapper/Rotation2D.h @@ -39,9 +39,10 @@ class Rotation2D final : public Material2D { mat trans_mat; public: - Rotation2D(unsigned, // tag - unsigned, // mat tag - double // Euler angle + Rotation2D( + unsigned, // tag + unsigned, // mat tag + double // Euler angle ); int initialize(const shared_ptr&) override; diff --git a/Material/Material3D/CMakeLists.txt b/Material/Material3D/CMakeLists.txt index 48943bdd4..133bc31cd 100644 --- a/Material/Material3D/CMakeLists.txt +++ b/Material/Material3D/CMakeLists.txt @@ -48,5 +48,6 @@ set(M3D Material3D/vonMises/VAFCRP.cpp Material3D/Wrapper/Rotation3D.cpp Material3D/Wrapper/Stacked.cpp + Material3D/Wrapper/StressWrapper.cpp Material3D/Wrapper/Substepping.cpp - ) +) diff --git a/Material/Material3D/Clay/CamClay/BilinearCC.h b/Material/Material3D/Clay/CamClay/BilinearCC.h index eecd401e7..86bd08450 100644 --- a/Material/Material3D/Clay/CamClay/BilinearCC.h +++ b/Material/Material3D/Clay/CamClay/BilinearCC.h @@ -37,20 +37,21 @@ struct DataBilinearCC { const double a, a_slope; }; -class BilinearCC final : DataBilinearCC, public NonlinearCamClay { +class BilinearCC final : protected DataBilinearCC, public NonlinearCamClay { [[nodiscard]] double compute_a(double) const override; [[nodiscard]] double compute_da(double) const override; public: - BilinearCC(unsigned, // tag - double, // elastic modulus - double, // poisson's ratio - double, // beta - double, // m - double, // pt - double, // a - double, // a_slope - double = 0. // density + BilinearCC( + unsigned, // tag + double, // elastic modulus + double, // poisson's ratio + double, // beta + double, // m + double, // pt + double, // a + double, // a_slope + double = 0. // density ); unique_ptr get_copy() override; diff --git a/Material/Material3D/Clay/CamClay/CustomCC.h b/Material/Material3D/Clay/CamClay/CustomCC.h index adff51105..22e3f3411 100644 --- a/Material/Material3D/Clay/CamClay/CustomCC.h +++ b/Material/Material3D/Clay/CamClay/CustomCC.h @@ -42,14 +42,15 @@ class CustomCC final : public NonlinearCamClay { ResourceHolder a_expression; public: - CustomCC(unsigned, // tag - double, // elastic modulus - double, // poisson's ratio - double, // beta - double, // m - double, // pt - unsigned, // expression tag - double = 0. // density + CustomCC( + unsigned, // tag + double, // elastic modulus + double, // poisson's ratio + double, // beta + double, // m + double, // pt + unsigned, // expression tag + double = 0. // density ); int initialize(const shared_ptr&) override; diff --git a/Material/Material3D/Clay/CamClay/ExpCC.h b/Material/Material3D/Clay/CamClay/ExpCC.h index e6105e2f9..330fa33be 100644 --- a/Material/Material3D/Clay/CamClay/ExpCC.h +++ b/Material/Material3D/Clay/CamClay/ExpCC.h @@ -38,22 +38,23 @@ struct DataExpCC { const double factor = (1. + e0) * (kappa - lambda); }; -class ExpCC final : DataExpCC, public NonlinearCamClay { +class ExpCC final : protected DataExpCC, public NonlinearCamClay { [[nodiscard]] double compute_a(double) const override; [[nodiscard]] double compute_da(double) const override; public: - ExpCC(unsigned, // tag - double, // elastic modulus - double, // poisson's ratio - double, // beta - double, // m - double, // pt - double, // a_0 - double, // e_0 - double, // lambda - double, // kappa - double = 0. // density + ExpCC( + unsigned, // tag + double, // elastic modulus + double, // poisson's ratio + double, // beta + double, // m + double, // pt + double, // a_0 + double, // e_0 + double, // lambda + double, // kappa + double = 0. // density ); unique_ptr get_copy() override; diff --git a/Material/Material3D/Clay/CamClay/NonlinearCamClay.cpp b/Material/Material3D/Clay/CamClay/NonlinearCamClay.cpp index 1faa64462..a36e39b62 100644 --- a/Material/Material3D/Clay/CamClay/NonlinearCamClay.cpp +++ b/Material/Material3D/Clay/CamClay/NonlinearCamClay.cpp @@ -33,14 +33,7 @@ int NonlinearCamClay::initialize(const shared_ptr&) { return SUANPAN_SUCCESS; } -double NonlinearCamClay::get_parameter(const ParameterType P) const { - if(ParameterType::DENSITY == P) return density; - if(ParameterType::ELASTICMODULUS == P || ParameterType::YOUNGSMODULUS == P || ParameterType::E == P) return elastic_modulus; - if(ParameterType::SHEARMODULUS == P || ParameterType::G == P) return elastic_modulus / (2. + 2. * poissons_ratio); - if(ParameterType::BULKMODULUS == P) return elastic_modulus / (3. - 6. * poissons_ratio); - if(ParameterType::POISSONSRATIO == P) return poissons_ratio; - return 0.; -} +double NonlinearCamClay::get_parameter(const ParameterType P) const { return material_property(elastic_modulus, poissons_ratio)(P); } int NonlinearCamClay::update_trial_status(const vec& t_strain) { incre_strain = (trial_strain = t_strain) - current_strain; @@ -57,12 +50,13 @@ int NonlinearCamClay::update_trial_status(const vec& t_strain) { const auto trial_q = sqrt_three_two * tensor::stress::norm(trial_s); const auto p = tensor::mean3(trial_stress); - auto gamma = 0., rel_error = 0.; + auto ini_f = 0., gamma = 0.; vec residual(2), incre; mat jacobian(2, 2); - unsigned counter = 0; + auto counter = 0u; + auto rel_error = 1.; while(true) { if(max_iteration == ++counter) { suanpan_error("Cannot converge within {} iterations.\n", max_iteration); @@ -80,7 +74,10 @@ int NonlinearCamClay::update_trial_status(const vec& t_strain) { residual(0) = rel_p * rel_p / square_b + square_qm - a * a; - if(1u == counter && residual(0) < 0.) return SUANPAN_SUCCESS; + if(1u == counter) { + if(residual(0) < 0.) return SUANPAN_SUCCESS; + ini_f = std::max(1., residual(0)); // yield function can be very large, use relative error instead + } residual(1) = incre_alpha - 2. * gamma / square_b * rel_p; @@ -91,10 +88,10 @@ int NonlinearCamClay::update_trial_status(const vec& t_strain) { if(!solve(incre, jacobian, residual, solve_opts::equilibrate)) return SUANPAN_FAIL; - auto error = norm(residual); - if(1u == counter) rel_error = std::max(1., error); - suanpan_debug("Local iteration error: {:.5E}.\n", error /= rel_error); - if(error <= tolerance || norm(incre) <= tolerance) { + const auto error = inf_norm(incre); + if(1u == counter) rel_error = error; + suanpan_debug("Local iteration error: {:.5E}.\n", error); + if(error < tolerance * rel_error || (inf_norm(residual) < tolerance * ini_f && counter > 5u)) { mat left(6, 2); rel_error = 2. * bulk / square_b; // reuse variable @@ -137,7 +134,3 @@ int NonlinearCamClay::reset_status() { trial_stiffness = current_stiffness; return SUANPAN_SUCCESS; } - -void NonlinearCamClay::print() { - suanpan_info("A 3D nonlinear modified Cam-Clay model.\n"); -} diff --git a/Material/Material3D/Clay/CamClay/NonlinearCamClay.h b/Material/Material3D/Clay/CamClay/NonlinearCamClay.h index 1b086e294..4c5e59ed5 100644 --- a/Material/Material3D/Clay/CamClay/NonlinearCamClay.h +++ b/Material/Material3D/Clay/CamClay/NonlinearCamClay.h @@ -26,6 +26,8 @@ * 1. Computational Methods for Plasticity: Theory and Applications * [10.1002/9780470694626](https://doi.org/10.1002/9780470694626) * Chapter 10 Section 10.1 + * + * Note the definition of hardening variable alpha is different from the reference. * * @author tlc * @date 26/04/2019 @@ -48,8 +50,8 @@ struct DataNonlinearCamClay { const double pt; // tensile yield hydrostatic stress }; -class NonlinearCamClay : DataNonlinearCamClay, public Material3D { - static constexpr unsigned max_iteration = 20; +class NonlinearCamClay : protected DataNonlinearCamClay, public Material3D { + static constexpr unsigned max_iteration = 20u; static const double sqrt_three_two; static const mat unit_dev_tensor; @@ -62,13 +64,14 @@ class NonlinearCamClay : DataNonlinearCamClay, public Material3D { [[nodiscard]] virtual double compute_da(double) const = 0; public: - NonlinearCamClay(unsigned, // tag - double, // elastic modulus - double, // poisson's ratio - double, // beta - double, // m - double, // pt - double = 0. // density + NonlinearCamClay( + unsigned, // tag + double, // elastic modulus + double, // poisson's ratio + double, // beta + double, // m + double, // pt + double = 0. // density ); int initialize(const shared_ptr&) override; @@ -80,8 +83,6 @@ class NonlinearCamClay : DataNonlinearCamClay, public Material3D { int clear_status() override; int commit_status() override; int reset_status() override; - - void print() override; }; #endif diff --git a/Material/Material3D/Clay/CamClay/NonlinearCamClay.tex b/Material/Material3D/Clay/CamClay/NonlinearCamClay.tex deleted file mode 100644 index d2dd6d611..000000000 --- a/Material/Material3D/Clay/CamClay/NonlinearCamClay.tex +++ /dev/null @@ -1,107 +0,0 @@ -\documentclass[10pt,fleqn,3p]{elsarticle} -\usepackage{amsmath,amsfonts,amssymb,mathpazo,indentfirst} -\newcommand*{\md}[1]{\mathrm{d}#1} -\newcommand*{\tr}[1]{\mathrm{tr}#1} -\newcommand*{\ddfrac}[2]{\dfrac{\md#1}{\md#2}} -\newcommand*{\pfrac}[2]{\dfrac{\partial#1}{\partial#2}} -\begin{document}\pagestyle{empty} -\section{Basics} -The two-scalar formulation depends on hydrostatic stress $p$ and von Mises equivalent stress $q$. -\begin{gather} -p=\dfrac{\tr{\sigma}}{3}=\dfrac{I_1}{3},\qquad{}q=\sqrt{3J_2}=\sqrt{\dfrac{3}{2}s:s}=\sqrt{\dfrac{3}{2}}|s|. -\end{gather} -\section{Yield Function} -The yield function is defined as -\begin{gather} -F=\dfrac{\left(p-p_t+a\right)^2}{b^2}+\dfrac{q^2}{M^2}-a^2, -\end{gather} -where $p_t\geqslant0$ is the tensile yield strength, $b=1$ if $p_e\geqslant0$ and $b=\beta$ if $p_e<0$ with $p_e=p-p_t+a$ denotes relative stress to the origin of ellipse, $\beta$ is a constant that controls the shape of negative-wards half of yielding ellipse, $M$ is the ratio between two radii of yielding ellipse. -\section{Flow Rule} -The associative plasticity is assumed so that -\begin{gather} -\Delta\varepsilon^p=\Delta\gamma\pfrac{F}{\sigma}=\Delta\gamma\left(\dfrac{2p_e}{3b^2}I+\dfrac{3}{M^2}s\right) -\end{gather} -via the following relationship -\begin{gather*} -\ddfrac{q^2}{\sigma}=\dfrac{3}{2}\ddfrac{\left(s:s\right)}{\sigma}=\dfrac{3}{2}\left(\ddfrac{s}{\sigma}:s+s:\ddfrac{s}{\sigma}\right)=3s. -\end{gather*} -Accordingly, -\begin{gather} -\Delta\varepsilon^p_v=\Delta\gamma\dfrac{2p_e}{b^2},\qquad\Delta\varepsilon^p_d=\Delta\gamma\dfrac{3}{M^2}s, -\end{gather} -where $\Delta\varepsilon^p_v=\tr{\Delta\varepsilon^p}$ is the volumetric strain scalar and $\Delta\varepsilon^p_d$ is the deviatoric strain tensor. -\section{Hardening Rule} -The hardening variable $\alpha$ is defined as the volumetric strain $\varepsilon^p_v$ so that -\begin{gather} -\alpha=\varepsilon^p_v. -\end{gather} -The corresponding incremental form is then -\begin{gather} -\alpha-\alpha_n=\Delta\alpha=\Delta\varepsilon^p_v=\Delta\gamma\dfrac{2p_e}{b^2},\\ -\alpha-\alpha_n-\Delta\gamma\dfrac{2p_e}{b^2}=0. -\end{gather} -The hardening rule is then defined as a function of $\alpha$, -\begin{gather} -a=a\left(\alpha\right)\geqslant0. -\end{gather} -\section{Residual} -By using the elastic relationship, -\begin{gather} -s=2G\varepsilon^e_d=2G\left(\varepsilon^{tr}_d-\Delta\varepsilon^p_d\right)=s^{tr}-\Delta\gamma\dfrac{6G}{M^2}s,\\ -p=K\varepsilon^e_v=K\left(\varepsilon^{tr}_v-\Delta\varepsilon^p_v\right)=p^{tr}-K\left(\alpha-\alpha_n\right). -\end{gather} -Hence, -\begin{gather} -s=\dfrac{M^2}{M^2+6G\Delta\gamma}s^{tr},\qquad -q=\dfrac{M^2}{M^2+6G\Delta\gamma}q^{tr}. -\end{gather} - -The governing residual equations for independent variables $x=\begin{bmatrix}\Delta\gamma&\alpha\end{bmatrix}^\mathrm{T}$ can be expressed as -\begin{gather} -R=\left\{\begin{array}{l} -\dfrac{p_e^2}{b^2}+\dfrac{q^2}{M^2}-a^2=0,\\[4mm] -\alpha-\alpha_n-\Delta\gamma\dfrac{2}{b^2}p_e=0. -\end{array}\right. -\end{gather} -where $p_e=p^{tr}-K\alpha+K\alpha_n-p_t+a$ and $q=\dfrac{M^2}{M^2+6G\Delta\gamma}q^{tr}$. -\section{Local Iteration} -The Jacobian can be formed accordingly. -\begin{gather} -J=\ddfrac{R}{x}=\begin{bmatrix} -\dfrac{-12GM^2q^{tr,2}}{(M^2+6G\Delta\gamma)^3}&\dfrac{2}{b^2}p_e(a'-K)-2aa'\\[4mm] --\dfrac{2}{b^2}p_e&1-\Delta\gamma\dfrac{2}{b^2}(a'-K) -\end{bmatrix}. -\end{gather} -\section{Tangent Stiffness} -At local iteration, $\varepsilon^{tr}$ is fixed and $R$ is iterated out. Noting that in the global iteration, $\varepsilon^{tr}$ is also a variable that changes. If local iteration is converged, then $R=0$, so -\begin{gather} -\ddfrac{R}{\varepsilon^{tr}}=\pfrac{R}{\varepsilon^{tr}}+\pfrac{R}{x}\ddfrac{x}{\varepsilon^{tr}}=0, -\end{gather} -consequently, -\begin{gather} -\ddfrac{x}{\varepsilon^{tr}}= -\begin{bmatrix} -\ddfrac{\Delta\gamma}{\varepsilon^{tr}}\\[4mm]\ddfrac{\alpha}{\varepsilon^{tr}} -\end{bmatrix} -=-\left(\pfrac{R}{x}\right)^{-1}\pfrac{R}{\varepsilon^{tr}}=-J^{-1}\pfrac{R}{\varepsilon^{tr}}. -\end{gather} - -Taking derivatives about $\varepsilon^{tr}$ gives -\begin{gather} -\pfrac{R}{\varepsilon^{tr}}=\begin{bmatrix} -\dfrac{2p_eK}{b^2}I+\dfrac{6G}{M^2+6G\Delta\gamma}s\\[4mm] -\dfrac{-2\Delta\gamma{}K}{b^2}I -\end{bmatrix} -\end{gather} - -The stress can be expressed as -\begin{gather} -\sigma=s+pI=\dfrac{M^2}{M^2+6G\Delta\gamma}s^{tr}+\left(p^{tr}-K\left(\alpha-\alpha_n\right)\right)I. -\end{gather} -Direct differentiation gives -\begin{gather} -\ddfrac{\sigma}{\varepsilon}=\dfrac{M^2}{M^2+6G\Delta\gamma}\ddfrac{s^{tr}}{\varepsilon}+s^{tr}\otimes\ddfrac{\dfrac{M^2}{M^2+6G\Delta\gamma}}{\varepsilon}+I\otimes\ddfrac{\left(p^{tr}-K\left(\alpha-\alpha_n\right)\right)}{\varepsilon}\\ -\ddfrac{\sigma}{\varepsilon}=\dfrac{2GM^2}{M^2+6G\Delta\gamma}I_d+KI\otimes{}I-KI\otimes\ddfrac{\alpha}{\varepsilon}-\dfrac{6GM^2}{\left(M^2+6G\Delta\gamma\right)^2}s^{tr}\otimes\ddfrac{\Delta\gamma}{\varepsilon},\\ -\ddfrac{\sigma}{\varepsilon}=D^e-\dfrac{12G^2\Delta\gamma}{M^2+6G\Delta\gamma}I_d-KI\otimes\ddfrac{\alpha}{\varepsilon}-\dfrac{6G}{M^2+6G\Delta\gamma}s\otimes\ddfrac{\Delta\gamma}{\varepsilon}. -\end{gather} -\end{document} diff --git a/Material/Material3D/Clay/CamClay/ParabolicCC.h b/Material/Material3D/Clay/CamClay/ParabolicCC.h index 4f83bd941..3632cb7e7 100644 --- a/Material/Material3D/Clay/CamClay/ParabolicCC.h +++ b/Material/Material3D/Clay/CamClay/ParabolicCC.h @@ -38,20 +38,21 @@ struct DataParabolicCC { const double limit = sqrt(fabs(a / a_slope)); }; -class ParabolicCC final : DataParabolicCC, public NonlinearCamClay { +class ParabolicCC final : protected DataParabolicCC, public NonlinearCamClay { [[nodiscard]] double compute_a(double) const override; [[nodiscard]] double compute_da(double) const override; public: - ParabolicCC(unsigned, // tag - double, // elastic modulus - double, // poisson's ratio - double, // beta - double, // m - double, // pt - double, // a - double, // a_slope - double = 0. // density + ParabolicCC( + unsigned, // tag + double, // elastic modulus + double, // poisson's ratio + double, // beta + double, // m + double, // pt + double, // a + double, // a_slope + double = 0. // density ); unique_ptr get_copy() override; diff --git a/Material/Material3D/Concrete/CDP.h b/Material/Material3D/Concrete/CDP.h index 8b2df962a..9cba413c8 100644 --- a/Material/Material3D/Concrete/CDP.h +++ b/Material/Material3D/Concrete/CDP.h @@ -55,21 +55,22 @@ class CDP final : public NonlinearCDP { [[nodiscard]] podarray compute_compression_backbone(double) const override; public: - explicit CDP(unsigned = 0, // tag - double = 3E4, // elastic modulus - double = .2, // poissons ratio - double = 3., // crack stress (+) - double = 30., // crush stress (-) - double = 1E-3, // normalized crack energy (+) - double = 1E-1, // normalized crush energy (+) - double = .8, // hardening after crack stress a_t - double = 4., // hardening after crush stress a_c - double = .6, // reference damage factor at half crack stress - double = .6, // reference damage factor at crush stress - double = .2, // dilatancy parameter - double = 1.16, // biaxial compression strength ratio - double = .5, // stiffness recovery - double = 2400E-12 // density + explicit CDP( + unsigned = 0, // tag + double = 3E4, // elastic modulus + double = .2, // poissons ratio + double = 3., // crack stress (+) + double = 30., // crush stress (-) + double = 1E-3, // normalized crack energy (+) + double = 1E-1, // normalized crush energy (+) + double = .8, // hardening after crack stress a_t + double = 4., // hardening after crush stress a_c + double = .6, // reference damage factor at half crack stress + double = .6, // reference damage factor at crush stress + double = .2, // dilatancy parameter + double = 1.16, // biaxial compression strength ratio + double = .5, // stiffness recovery + double = 2400E-12 // density ); unique_ptr get_copy() override; diff --git a/Material/Material3D/Concrete/CDPM2.cpp b/Material/Material3D/Concrete/CDPM2.cpp index be7bbc244..78d42735e 100644 --- a/Material/Material3D/Concrete/CDPM2.cpp +++ b/Material/Material3D/Concrete/CDPM2.cpp @@ -20,12 +20,13 @@ #include #include #include +#include const double CDPM2::sqrt_six = std::sqrt(6.); const double CDPM2::sqrt_three_two = std::sqrt(1.5); const mat CDPM2::unit_dev_tensor = tensor::unit_deviatoric_tensor4(); -void CDPM2::compute_plasticity(const double s, const double p, const double kp, podarray& data) const { +void CDPM2::compute_plasticity(const double lode, const double s, const double p, const double kp, vec& data) const { auto& f = data(0); auto& pfps = data(1); auto& pfpp = data(2); @@ -41,6 +42,9 @@ void CDPM2::compute_plasticity(const double s, const double p, const double kp, auto& pgppkp = data(12); auto& xh = data(13); auto& dxhdp = data(14); + auto& pfpl = data(15); + auto& r = data(16); + auto& drdl = data(17); auto qh1 = 1., qh2 = 1.; auto dqh1dkp = 0., dqh2dkp = 0.; @@ -70,6 +74,18 @@ void CDPM2::compute_plasticity(const double s, const double p, const double kp, const auto g3 = (s / sqrt_six + p) / fc; const auto g1 = (1. - qh1) * g3 * g3 + sqrt_three_two * s / fc; + const auto square_term = ra * lode * lode; + const auto sqrt_term = sqrt(rb * square_term + rc); + const auto numerator = square_term + rb; + const auto denominator = ra * lode + sqrt_term; + r = numerator / denominator; + drdl = ra / denominator * (2. * lode - r - r * rb * lode / sqrt_term); + + const auto g4 = (r * s / sqrt_six + p) / fc; + const auto pg4pp = 1. / fc; + const auto pg4ps = r / sqrt_six / fc; + const auto pg4pl = s / sqrt_six / fc * drdl; + const auto pg3pp = 1. / fc; const auto pg3ps = pg3pp / sqrt_six; @@ -80,11 +96,12 @@ void CDPM2::compute_plasticity(const double s, const double p, const double kp, const auto pg1ps = (2. - 2. * qh1) * g3 * pg3ps + sqrt_three_two / fc; const auto pg1pkp = -dqh1dkp * g3 * g3; - f = g1 * g1 + m0 * qh1 * qh1 * qh2 * g3 - qh1 * qh1 * qh2 * qh2; + f = g1 * g1 + m0 * qh1 * qh1 * qh2 * g4 - qh1 * qh1 * qh2 * qh2; - pfpp = 2. * g1 * pg1pp + m0 * qh1 * qh1 * qh2 * pg3pp; - pfps = 2. * g1 * pg1ps + m0 * qh1 * qh1 * qh2 * pg3ps; - pfpkp = 2. * g1 * pg1pkp + 2. * qh1 * qh2 * (m0 * g3 * dqh1dkp - qh1 * dqh2dkp - qh2 * dqh1dkp) + m0 * qh1 * qh1 * g3 * dqh2dkp; + pfpp = 2. * g1 * pg1pp + m0 * qh1 * qh1 * qh2 * pg4pp; + pfps = 2. * g1 * pg1ps + m0 * qh1 * qh1 * qh2 * pg4ps; + pfpkp = 2. * g1 * pg1pkp + 2. * qh1 * qh2 * (m0 * g4 * dqh1dkp - qh1 * dqh2dkp - qh2 * dqh1dkp) + m0 * qh1 * qh1 * g4 * dqh2dkp; + pfpl = m0 * qh1 * qh1 * qh2 * pg4pl; gp = 2. * g1 * pg1pp + qh1 * qh1 * pg2pp; gs = 2. * g1 * pg1ps + qh1 * qh1 * pg2ps; @@ -119,16 +136,18 @@ void CDPM2::compute_plasticity(const double s, const double p, const double kp, } } -int CDPM2::compute_damage(const double gamma, const double s, const double p, const double kp, const double ac, podarray& data) { - const auto& gs = data(4); - const auto& gp = data(5); - const auto& gg = data(6); - const auto& pgsps = data(7); - const auto& pgspp = data(8); - const auto& pgspkp = data(9); - const auto& pgpps = data(10); - const auto& pgppp = data(11); - const auto& pgppkp = data(12); +int CDPM2::compute_damage(const double gamma, const double s, const double p, const double kp, const double ac, vec& data) { + const auto gs = data(4); + const auto gp = data(5); + const auto gg = data(6); + const auto pgsps = data(7); + const auto pgspp = data(8); + const auto pgspkp = data(9); + const auto pgpps = data(10); + const auto pgppp = data(11); + const auto pgppkp = data(12); + const auto r = data(16); + const auto drdl = data(17); const auto& current_ee = current_history(7); const auto& current_et = current_history(8); @@ -151,7 +170,8 @@ int CDPM2::compute_damage(const double gamma, const double s, const double p, co // ee const auto ptapp = .5 * e0 * m0 / fc; - const auto ptaps = ptapp / sqrt_six; + const auto ptaps = ptapp / sqrt_six * r; + const auto ptapl = ptapp / sqrt_six * s * drdl; const auto ptbps = sqrt_three_two * e0 / fc; const auto term_a = ptaps * s + ptapp * p; const auto term_b = ptbps * s; @@ -160,6 +180,7 @@ int CDPM2::compute_damage(const double gamma, const double s, const double p, co const auto incre_ee = ee - current_ee; const auto peeps = (ptaps * ee + term_b * ptbps) / term_c; const auto peepp = ptapp * ee / term_c; + const auto peepl = ptapl * ee / term_c; // ep const auto ep = gamma * gg; @@ -176,24 +197,30 @@ int CDPM2::compute_damage(const double gamma, const double s, const double p, co pxsps = -pxspp * p / s; } + const auto at = 1. - ac; + // kdt - auto incre_kdt = 0., pkdtps = 0., pkdtpp = 0.; - if((et = current_et + incre_ee) > kdt) { + auto incre_kdt = 0., pkdtps = 0., pkdtpp = 0., pkdtpac = 0., pkdtpl = 0.; + if((et = current_et + at * incre_ee) > kdt) { incre_kdt = et - kdt; kdt = et; - pkdtps = peeps; - pkdtpp = peepp; + pkdtps = at * peeps; + pkdtpp = at * peepp; + pkdtpac = -incre_ee; + pkdtpl = at * peepl; } // kdt1 - auto pkdt1pg = 0., pkdt1ps = 0., pkdt1pp = 0., pkdt1pkp = 0.; + auto pkdt1pg = 0., pkdt1ps = 0., pkdt1pp = 0., pkdt1pkp = 0., pkdt1pac = 0.; if(incre_kdt > 0. && kdt > e0) { - const auto incre_kdt1 = ep / xs; + const auto atxs = at / xs; + const auto incre_kdt1 = atxs * ep; kdt1 = current_kdt1 + incre_kdt1; - pkdt1pg = peppg / xs; - pkdt1ps = (pepps - incre_kdt1 * pxsps) / xs; - pkdt1pp = (peppp - incre_kdt1 * pxspp) / xs; - pkdt1pkp = peppkp / xs; + pkdt1pg = atxs * peppg; + pkdt1ps = atxs * (pepps - incre_kdt1 * pxsps); + pkdt1pp = atxs * (peppp - incre_kdt1 * pxspp); + pkdt1pkp = atxs * peppkp; + pkdt1pac = -ep / xs; } // kdt2 @@ -201,15 +228,18 @@ int CDPM2::compute_damage(const double gamma, const double s, const double p, co kdt2 = current_kdt2 + incre_kdt2; const auto pkdt2ps = (pkdtps - incre_kdt2 * pxsps) / xs; const auto pkdt2pp = (pkdtpp - incre_kdt2 * pxspp) / xs; + const auto pkdt2pac = pkdtpac / xs; + const auto pkdt2pl = pkdtpl / xs; // kdc - auto incre_kdc = 0., pkdcps = 0., pkdcpp = 0., pkdcpac = 0.; + auto incre_kdc = 0., pkdcps = 0., pkdcpp = 0., pkdcpac = 0., pkdcpl = 0.; if((ec = current_ec + ac * incre_ee) > kdc) { incre_kdc = ec - kdc; kdc = ec; pkdcps = ac * peeps; pkdcpp = ac * peepp; pkdcpac = incre_ee; + pkdcpl = ac * peepl; } // kdc1 @@ -240,8 +270,9 @@ int CDPM2::compute_damage(const double gamma, const double s, const double p, co const auto pkdc2ps = (pkdcps - incre_kdc2 * pxsps) / xs; const auto pkdc2pp = (pkdcpp - incre_kdc2 * pxspp) / xs; const auto pkdc2pac = pkdcpac / xs; + const auto pkdc2pl = pkdcpl / xs; - podarray datad(3); + vec datad(3); if(SUANPAN_SUCCESS != compute_damage_factor(kdt, kdt1, kdt2, eft, omegat, datad)) return SUANPAN_FAIL; const auto& potpkdt = datad(0); @@ -252,11 +283,15 @@ int CDPM2::compute_damage(const double gamma, const double s, const double p, co auto& potps = data(1); auto& potpq = data(2); auto& potpkp = data(3); + auto& potpac = data(8); + auto& potpl = data(9); potpg = potpkdt1 * pkdt1pg; potps = potpkdt * pkdtps + potpkdt1 * pkdt1ps + potpkdt2 * pkdt2ps; potpq = potpkdt * pkdtpp + potpkdt1 * pkdt1pp + potpkdt2 * pkdt2pp; potpkp = potpkdt1 * pkdt1pkp; + potpac = potpkdt * pkdtpac + potpkdt1 * pkdt1pac + potpkdt2 * pkdt2pac; + potpl = potpkdt * pkdtpl + potpkdt2 * pkdt2pl; if(SUANPAN_SUCCESS != compute_damage_factor(kdc, kdc1, kdc2, efc, omegac, datad)) return SUANPAN_FAIL; const auto& pocpkdc = datad(0); @@ -267,18 +302,20 @@ int CDPM2::compute_damage(const double gamma, const double s, const double p, co auto& pocps = data(5); auto& pocpq = data(6); auto& pocpkp = data(7); - auto& pocpac = data(8); + auto& pocpac = data(10); + auto& pocpl = data(11); pocpg = pocpkdc1 * pkdc1pg; pocps = pocpkdc * pkdcps + pocpkdc1 * pkdc1ps + pocpkdc2 * pkdc2ps; pocpq = pocpkdc * pkdcpp + pocpkdc1 * pkdc1pp + pocpkdc2 * pkdc2pp; pocpkp = pocpkdc1 * pkdc1pkp; pocpac = pocpkdc * pkdcpac + pocpkdc1 * pkdc1pac + pocpkdc2 * pkdc2pac; + pocpl = pocpkdc * pkdcpl + pocpkdc2 * pkdc2pl; return SUANPAN_SUCCESS; } -int CDPM2::compute_damage_factor(const double kd, const double kd1, const double kd2, const double ef, double& omega, podarray& data) const { +int CDPM2::compute_damage_factor(const double kd, const double kd1, const double kd2, const double ef, double& omega, vec& data) const { auto& popkd = data(0); auto& popkd1 = data(1); auto& popkd2 = data(2); @@ -290,19 +327,22 @@ int CDPM2::compute_damage_factor(const double kd, const double kd1, const double return SUANPAN_SUCCESS; } + omega = 1.; // initial guess with the maximum value to avoid convergence to the negative solution + auto counter = 0u; while(true) { if(max_iteration == ++counter) return SUANPAN_FAIL; const auto term_a = ft * exp(-(kd1 + omega * kd2) / ef); const auto term_b = (1. - omega) * elastic_modulus; + const auto residual = term_a - term_b * kd; const auto jacobian = elastic_modulus * kd - kd2 / ef * term_a; - const auto incre = (term_a - term_b * kd) / jacobian; + const auto incre = residual / jacobian; const auto error = fabs(incre); suanpan_debug("Local damage iteration error: {:.5E}.\n", error); - if(error <= tolerance) { + if(error < tolerance || (fabs(residual) < tolerance && counter > 5u)) { popkd = term_b / jacobian; popkd1 = term_a / ef / jacobian; popkd2 = popkd1 * omega; @@ -314,9 +354,9 @@ int CDPM2::compute_damage_factor(const double kd, const double kd1, const double } CDPM2::CDPM2(const unsigned T, const double E, const double V, const double FT, const double FC, const double QH0, const double HP, const double DF, const double AH, const double BH, const double CH, const double DH, const double AS, const double EFT, const double EFC, const DamageType DT, const double R) - : DataCDPM2{fabs(E), fabs(V), fabs(FT), fabs(FC), QH0, HP, DF, AH, BH, CH, DH, AS, fabs(EFT), fabs(EFC)} + : DataCDPM2{fabs(E), fabs(V), fabs(FT), fabs(FC), fabs(QH0), std::max(HP, static_cast(std::numeric_limits::epsilon())), DF, AH, BH, CH, DH, AS, fabs(EFT), fabs(EFC)} , Material3D(T, R) - , damage_type(DT) { access::rw(tolerance) = 1E-13; } + , damage_type(DT) {} int CDPM2::initialize(const shared_ptr&) { trial_stiffness = current_stiffness = initial_stiffness = tensor::isotropic_stiffness(elastic_modulus, poissons_ratio); @@ -328,19 +368,12 @@ int CDPM2::initialize(const shared_ptr&) { unique_ptr CDPM2::get_copy() { return make_unique(*this); } -double CDPM2::get_parameter(const ParameterType P) const { - if(ParameterType::DENSITY == P) return density; - if(ParameterType::ELASTICMODULUS == P || ParameterType::YOUNGSMODULUS == P || ParameterType::E == P) return elastic_modulus; - if(ParameterType::SHEARMODULUS == P || ParameterType::G == P) return .5 * double_shear; - if(ParameterType::BULKMODULUS == P) return elastic_modulus / (3. - 6. * poissons_ratio); - if(ParameterType::POISSONSRATIO == P) return poissons_ratio; - return 0.; -} +double CDPM2::get_parameter(const ParameterType P) const { return material_property(elastic_modulus, poissons_ratio)(P); } int CDPM2::update_trial_status(const vec& t_strain) { incre_strain = (trial_strain = t_strain) - current_strain; - if(norm(incre_strain) <= tolerance) return SUANPAN_SUCCESS; + if(norm(incre_strain) <= datum::eps) return SUANPAN_SUCCESS; trial_history = current_history; const auto& current_kp = current_history(0); @@ -359,6 +392,34 @@ int CDPM2::update_trial_status(const vec& t_strain) { const auto trial_p = hydro_stress; const vec n = dev_stress / trial_s; + static constexpr double low_limit = -.95; + static const double low_slope = (2. * cos(acos(low_limit) / 3.) - 1.) / (low_limit + 1.); + static constexpr double high_limit = .95; + static const double high_slope = (2. * cos(acos(high_limit) / 3.) - 2.) / (high_limit - 1.); + + double lode, dlode; + if(const auto lode_a = tensor::stress::lode(dev_stress); lode_a < low_limit) { + // close to left boundary + // use linear approximation + lode = 1. + low_slope * (1. + lode_a); + dlode = low_slope; + } + else if(lode_a > high_limit) { + // close to right boundary + // use linear approximation + lode = 2. + high_slope * (lode_a - 1.); + dlode = high_slope; + } + else { + const auto lode_b = acos(lode_a) / 3.; // theta + lode = 2. * cos(lode_b); // 2*cos(theta) + dlode = 2. / 3. * sin(lode_b) / sqrt((1. - lode_a) * (1. + lode_a)); + } + + const auto square_lode = lode * lode; + const rowvec dlde = dlode * double_shear * (tensor::stress::lode_der(dev_stress) % tensor::stress::norm_weight).t() * unit_dev_tensor; + + auto ini_f = 0.; auto gamma = 0., s = trial_s, p = trial_p; mat jacobian(4, 4, fill::none), left(4, 6, fill::zeros); @@ -366,7 +427,7 @@ int CDPM2::update_trial_status(const vec& t_strain) { vec residual(4), incre; - podarray data(15); + vec data(18); const auto& f = data(0); const auto& pfps = data(1); const auto& pfpp = data(2); @@ -382,23 +443,66 @@ int CDPM2::update_trial_status(const vec& t_strain) { const auto& pgppkp = data(12); const auto& xh = data(13); const auto& dxhdp = data(14); + const auto& pfpl = data(15); + // const auto& r = data(16); + // const auto& drdl = data(17); auto counter = 0u; - + auto ref_error = 1.; + auto try_bisection = false; while(true) { if(max_iteration == ++counter) { + if(!try_bisection) { + try_bisection = true; + + const auto approx_update = [&](const double gm) { + gamma = gm; + s = trial_s - double_shear * gamma * gs; + p = trial_p - bulk * gamma * gp; + kp = current_kp + gamma * gg * square_lode / xh; + compute_plasticity(lode, s, p, kp, data); + return f; + }; + + approx_update(0.); // clear data + + gamma = ini_f / elastic_modulus / elastic_modulus; + auto x1 = 0., f1 = ini_f; + // find a proper bracket + while(true) { + if(approx_update(gamma) < 0.) break; + x1 = gamma; + f1 = f; + gamma *= 2.; + } + + ridders(approx_update, x1, f1, gamma, f, tolerance); + + counter = 1u; // avoid initial elastic check + + continue; + } + suanpan_error("Cannot converge within {} iterations.\n", max_iteration); return SUANPAN_FAIL; } - compute_plasticity(s, p, kp, data); + compute_plasticity(lode, s, p, kp, data); + + if(!data.is_finite()) { + suanpan_error("Non-finite value detected.\n"); + return SUANPAN_FAIL; + } - if(1u == counter && f < 0.) break; + if(1u == counter) { + if(f < 0.) break; + ini_f = f; + } residual(0) = f; residual(1) = s + double_shear * gamma * gs - trial_s; residual(2) = p + bulk * gamma * gp - trial_p; - residual(3) = xh * (current_kp - kp) + gamma * gg; + residual(3) = xh * (current_kp - kp) + gamma * gg * square_lode; jacobian(0, 1) = pfps; jacobian(0, 2) = pfpp; @@ -414,17 +518,18 @@ int CDPM2::update_trial_status(const vec& t_strain) { jacobian(2, 2) = bulk * gamma * pgppp + 1.; jacobian(2, 3) = bulk * gamma * pgppkp; - jacobian(3, 0) = gg; - jacobian(3, 1) = gamma / gg * (gs * pgsps + gp / 3. * pgpps); - jacobian(3, 2) = gamma / gg * (gs * pgspp + gp / 3. * pgppp) + (current_kp - kp) * dxhdp; - jacobian(3, 3) = gamma / gg * (gs * pgspkp + gp / 3. * pgppkp) - xh; + jacobian(3, 0) = gg * square_lode; + jacobian(3, 1) = gamma * square_lode / gg * (gs * pgsps + gp / 3. * pgpps); + jacobian(3, 2) = gamma * square_lode / gg * (gs * pgspp + gp / 3. * pgppp) + (current_kp - kp) * dxhdp; + jacobian(3, 3) = gamma * square_lode / gg * (gs * pgspkp + gp / 3. * pgppkp) - xh; - if(!solve(incre, jacobian, residual)) return SUANPAN_FAIL; + if(!solve(incre, jacobian, residual, solve_opts::equilibrate + solve_opts::refine)) return SUANPAN_FAIL; - const auto error = norm(residual); + const auto error = inf_norm(incre); + if(1u == counter) ref_error = error; suanpan_debug("Local plasticity iteration error: {:.5E}.\n", error); - if(error <= tolerance) { + if(error < tolerance * ref_error || (inf_norm(residual) < tolerance && counter > 5u)) { const vec unit_n = n % tensor::stress::norm_weight; plastic_strain += gamma * gs * unit_n + gamma * gp / 3. * tensor::unit_tensor2; @@ -433,10 +538,10 @@ int CDPM2::update_trial_status(const vec& t_strain) { mat right(4, 6, fill::none); - right.row(0).zeros(); + right.row(0) = -pfpl * dlde; right.row(1) = double_shear * unit_n.t() * unit_dev_tensor; right.row(2) = bulk * tensor::unit_tensor2.t(); - right.row(3).zeros(); + right.row(3) = -2. * gamma * gg * lode * dlde; if(!solve(left, jacobian, right)) return SUANPAN_FAIL; @@ -474,34 +579,46 @@ int CDPM2::update_trial_status(const vec& t_strain) { const auto aca = accu(square(principal_stress(c_pattern))); const auto acb = accu(square(principal_stress)); const auto ac = aca / acb; - rowvec daca = 2. * principal_stress.t(); - daca(t_pattern).fill(0.); - const rowvec dac = (daca - 2. * ac * principal_stress.t()) / acb; if(SUANPAN_SUCCESS != compute_damage(gamma, s, p, kp, ac, data)) return SUANPAN_FAIL; - if(DamageType::NODAMAGE == damage_type) return SUANPAN_SUCCESS; + if(const auto &kdt = trial_history(10), &kdc = trial_history(11); DamageType::NODAMAGE == damage_type || (kdt < e0 && kdc < e0)) return SUANPAN_SUCCESS; const auto& omegat = trial_history(16); const auto& omegac = trial_history(17); const rowvec pot(&data(0), 4); const rowvec poc(&data(4), 4); - const auto& pocpac = data(8); + const auto& potpac = data(8); + const auto& potpl = data(9); + const auto& pocpac = data(10); + const auto& pocpl = data(11); + + rowvec daca = 2. * principal_stress.t(); + daca(t_pattern).fill(0.); + const rowvec dac = (daca - 2. * ac * principal_stress.t()) / acb; + const rowvec dacde = dac * transform::compute_jacobian_nominal_to_principal(principal_direction) * trial_stiffness; - const rowvec potpe = pot * left; - const rowvec pocpe = poc * left + pocpac * dac * transform::compute_jacobian_nominal_to_principal(principal_direction) * trial_stiffness; + const rowvec potpe = pot * left + potpac * dacde + potpl * dlde; + const rowvec pocpe = poc * left + pocpac * dacde + pocpl * dlde; + + const auto damage_t = 1. - omegat; + const auto damage_c = 1. - omegac; if(DamageType::ISOTROPIC == damage_type) { - trial_stiffness *= (1. - omegat) * (1. - omegac); - trial_stiffness -= trial_stress * ((1. - omegat) * pocpe + (1. - omegac) * potpe); + trial_stiffness *= damage_t * damage_c; + trial_stiffness -= trial_stress * (damage_t * pocpe + damage_c * potpe); - trial_stress *= (1. - omegat) * (1. - omegac); + trial_stress *= damage_t * damage_c; } else if(DamageType::ANISOTROPIC == damage_type) { - const auto get_fraction = [](const vec& p_stress) { - const auto compute_fraction = [](const double a, const double b) { return suanpan::approx_equal(a, b, 4) ? a + b <= 0. ? 0. : 2. : 2. * (suanpan::ramp(a) - suanpan::ramp(b)) / (a - b); }; + const auto get_fraction = [](const vec& stress) { + const auto compute_fraction = [&stress](const unsigned i, const unsigned j) { + const auto &a = stress(i), &b = stress(j); + + return suanpan::approx_equal(a, b, 4) ? a + b <= 0. ? 0. : 2. : 2. * (suanpan::ramp(a) - suanpan::ramp(b)) / (a - b); + }; - return vec{compute_fraction(p_stress(0), p_stress(1)), compute_fraction(p_stress(1), p_stress(2)), compute_fraction(p_stress(2), p_stress(0))}; + return vec{compute_fraction(0, 1), compute_fraction(1, 2), compute_fraction(2, 0)}; }; const mat pnn = transform::eigen_to_tensor_base(principal_direction); @@ -514,9 +631,9 @@ int CDPM2::update_trial_status(const vec& t_strain) { const vec tension_stress = tension_projector * trial_stress; - trial_stiffness = (1. - omegac) * trial_stiffness - trial_stress * pocpe + (omegac - omegat) * tension_derivative * trial_stiffness + tension_stress * (pocpe - potpe); + trial_stiffness = damage_c * trial_stiffness - trial_stress * pocpe + (omegac - omegat) * tension_derivative * trial_stiffness + tension_stress * (pocpe - potpe); - trial_stress *= 1. - omegac; + trial_stress *= damage_c; trial_stress += (omegac - omegat) * tension_stress; } @@ -547,12 +664,11 @@ int CDPM2::reset_status() { return SUANPAN_SUCCESS; } -vector CDPM2::record(const OutputType T) { - if(T == OutputType::KAPPAP) return {vec{current_history(0)}}; - if(T == OutputType::DT) return {vec{current_history(16)}}; - if(T == OutputType::DC) return {vec{current_history(17)}}; +vector CDPM2::record(const OutputType P) { + if(P == OutputType::DT) return {vec{current_history(16)}}; + if(P == OutputType::DC) return {vec{current_history(17)}}; - return Material3D::record(T); + return Material3D::record(P); } void CDPM2::print() { diff --git a/Material/Material3D/Concrete/CDPM2.h b/Material/Material3D/Concrete/CDPM2.h index a8c9da074..6526e3b5f 100644 --- a/Material/Material3D/Concrete/CDPM2.h +++ b/Material/Material3D/Concrete/CDPM2.h @@ -21,8 +21,8 @@ * A 3D concrete material model that supports stiffness degradation. * * @author tlc - * @date 04/08/2021 - * @version 1.0.0 + * @date 17/10/2023 + * @version 1.1.0 * @file CDPM2.h * @addtogroup Material-3D * @{ @@ -37,7 +37,7 @@ struct DataCDPM2 { const double elastic_modulus = 3E4; const double poissons_ratio = .3; const double ft = 3.; - const double fc = 10.; + const double fc = 30.; const double qh0 = .3; const double hp = .01; const double df = .85; @@ -46,10 +46,14 @@ struct DataCDPM2 { const double ch = 2.; const double dh = 1E-6; const double as = 5.; - const double eft = 2E-4; - const double efc = 1E-4; - - const double e = 1.; + const double eft = 5E-4; + const double efc = 5E-4; + + const double e = [&] { + const auto fbc = 1.16 * fc; + const auto factor = ft / fbc * (fbc + fc) * (fbc - fc) / (fc + ft) / (fc - ft); + return (1. + factor) / (2. - factor); + }(); const double e0 = ft / elastic_modulus; const double ftfc = ft / fc; const double m0 = 3. * (fc / ft - ftfc) * e / (1. + e); @@ -57,6 +61,10 @@ struct DataCDPM2 { const double sqrtdf = ft * sqrt(2. / (3. + 6. * df * df)); const double eh = bh - dh; const double fh = ch * eh / (ah - bh); + + const double ra = (1. + e) * (1. - e); + const double rb = pow(2. * e - 1., 2.); + const double rc = rb * e * (5. * e - 4.); }; class CDPM2 final : protected DataCDPM2, public Material3D { @@ -68,7 +76,7 @@ class CDPM2 final : protected DataCDPM2, public Material3D { }; private: - static constexpr unsigned max_iteration = 20; + static constexpr unsigned max_iteration = 20u; static const double sqrt_six; static const double sqrt_three_two; static const mat unit_dev_tensor; @@ -78,28 +86,29 @@ class CDPM2 final : protected DataCDPM2, public Material3D { const DamageType damage_type = DamageType::ANISOTROPIC; - void compute_plasticity(double, double, double, podarray&) const; - int compute_damage(double, double, double, double, double, podarray&); - int compute_damage_factor(double, double, double, double, double&, podarray&) const; + void compute_plasticity(double, double, double, double, vec&) const; + int compute_damage(double, double, double, double, double, vec&); + int compute_damage_factor(double, double, double, double, double&, vec&) const; public: - CDPM2(unsigned, // tag - double, // elastic_modulus - double, // poissons_ratio - double, // ft - double, // fc - double, // qh0 - double, // hp - double, // df - double, // ah - double, // bh - double, // ch - double, // dh - double, // as - double, // eft - double, // efc - DamageType, // damage type - double // density + CDPM2( + unsigned, // tag + double, // elastic_modulus + double, // poissons_ratio + double, // ft + double, // fc + double, // qh0 + double, // hp + double, // df + double, // ah + double, // bh + double, // ch + double, // dh + double, // as + double, // eft + double, // efc + DamageType, // damage type + double // density ); int initialize(const shared_ptr&) override; diff --git a/Material/Material3D/Concrete/CustomCDP.h b/Material/Material3D/Concrete/CustomCDP.h index 2f73947ac..cc859dc3b 100644 --- a/Material/Material3D/Concrete/CustomCDP.h +++ b/Material/Material3D/Concrete/CustomCDP.h @@ -56,17 +56,18 @@ class CustomCDP final : public NonlinearCDP { [[nodiscard]] podarray compute_compression_backbone(double) const override; public: - CustomCDP(unsigned, // tag - unsigned, // tension expression tag - unsigned, // compression expression tag - double, // elastic modulus - double, // poissons ratio - double, // normalized crack energy (+) - double, // normalized crush energy (+) - double, // dilatancy parameter - double, // biaxial compression strength ratio - double, // stiffness recovery - double // density + CustomCDP( + unsigned, // tag + unsigned, // tension expression tag + unsigned, // compression expression tag + double, // elastic modulus + double, // poissons ratio + double, // normalized crack energy (+) + double, // normalized crush energy (+) + double, // dilatancy parameter + double, // biaxial compression strength ratio + double, // stiffness recovery + double // density ); int initialize(const shared_ptr&) override; diff --git a/Material/Material3D/Concrete/NonlinearCDP.cpp b/Material/Material3D/Concrete/NonlinearCDP.cpp index a2f122c77..bcde7ee4a 100644 --- a/Material/Material3D/Concrete/NonlinearCDP.cpp +++ b/Material/Material3D/Concrete/NonlinearCDP.cpp @@ -51,14 +51,7 @@ int NonlinearCDP::initialize(const shared_ptr&) { return SUANPAN_SUCCESS; } -double NonlinearCDP::get_parameter(const ParameterType P) const { - if(ParameterType::DENSITY == P) return density; - if(ParameterType::ELASTICMODULUS == P || ParameterType::YOUNGSMODULUS == P || ParameterType::E == P) return elastic_modulus; - if(ParameterType::SHEARMODULUS == P || ParameterType::G == P) return elastic_modulus / (2. + 2. * poissons_ratio); - if(ParameterType::BULKMODULUS == P) return elastic_modulus / (3. - 6. * poissons_ratio); - if(ParameterType::POISSONSRATIO == P) return poissons_ratio; - return 0.; -} +double NonlinearCDP::get_parameter(const ParameterType P) const { return material_property(elastic_modulus, poissons_ratio)(P); } int NonlinearCDP::update_trial_status(const vec& t_strain) { incre_strain = (trial_strain = t_strain) - current_strain; @@ -165,18 +158,18 @@ int NonlinearCDP::update_trial_status(const vec& t_strain) { if(!solve(incre, jacobian, residual)) return SUANPAN_FAIL; - auto error = norm(residual); - if(1u == counter) ref_error = std::max(1., error); - suanpan_debug("Local iteration error: {:.5E}.\n", error /= ref_error); - if(error <= tolerance || norm(incre) <= tolerance) break; + const auto error = inf_norm(incre); + if(1u == counter) ref_error = error; + suanpan_debug("Local iteration error: {:.5E}.\n", error); + if(error < tolerance * ref_error || ((error < tolerance || inf_norm(residual) < tolerance) && counter > 5u)) break; lambda -= incre(0); kappa_t -= incre(1); kappa_c -= incre(2); new_stress -= dsigmadlambda * incre(0); - if(kappa_t > 1.) kappa_t = .999; // avoid overshoot - if(kappa_c > 1.) kappa_c = .999; // avoid overshoot + if(kappa_t > 1.) kappa_t = 1. - datum::eps; // avoid overshoot + if(kappa_c > 1.) kappa_c = 1. - datum::eps; // avoid overshoot } // update damage indices @@ -247,13 +240,11 @@ int NonlinearCDP::reset_status() { return SUANPAN_SUCCESS; } -vector NonlinearCDP::record(const OutputType T) { - if(T == OutputType::DT) return {vec{current_history(0)}}; - if(T == OutputType::DC) return {vec{current_history(1)}}; - if(T == OutputType::KAPPAT) return {vec{current_history(2)}}; - if(T == OutputType::KAPPAC) return {vec{current_history(3)}}; +vector NonlinearCDP::record(const OutputType P) { + if(P == OutputType::DT) return {vec{current_history(0)}}; + if(P == OutputType::DC) return {vec{current_history(1)}}; - return Material3D::record(T); + return Material3D::record(P); } void NonlinearCDP::print() { diff --git a/Material/Material3D/Concrete/NonlinearCDP.h b/Material/Material3D/Concrete/NonlinearCDP.h index 23e12b31c..7b3f4c2b1 100644 --- a/Material/Material3D/Concrete/NonlinearCDP.h +++ b/Material/Material3D/Concrete/NonlinearCDP.h @@ -52,7 +52,7 @@ struct DataNonlinearCDP { }; class NonlinearCDP : protected DataNonlinearCDP, public Material3D { - static constexpr unsigned max_iteration = 20; + static constexpr unsigned max_iteration = 20u; static const double root_three_two; static constexpr double scale = .999; // to avoid overshoot static const mat unit_dev_tensor; @@ -101,15 +101,16 @@ class NonlinearCDP : protected DataNonlinearCDP, public Material3D { [[nodiscard]] virtual podarray compute_compression_backbone(double) const = 0; public: - NonlinearCDP(unsigned, // tag - double, // elastic modulus - double, // poissons ratio - double, // normalized crack energy (+) - double, // normalized crush energy (+) - double, // dilatancy parameter - double, // biaxial compression strength ratio - double, // stiffness recovery - double // density + NonlinearCDP( + unsigned, // tag + double, // elastic modulus + double, // poissons ratio + double, // normalized crack energy (+) + double, // normalized crush energy (+) + double, // dilatancy parameter + double, // biaxial compression strength ratio + double, // stiffness recovery + double // density ); int initialize(const shared_ptr&) override; diff --git a/Material/Material3D/Concrete/Rebar3D.cpp b/Material/Material3D/Concrete/Rebar3D.cpp index 97226d71d..11567ed4b 100644 --- a/Material/Material3D/Concrete/Rebar3D.cpp +++ b/Material/Material3D/Concrete/Rebar3D.cpp @@ -29,9 +29,9 @@ Rebar3D::Rebar3D(const unsigned T, const unsigned XT, const unsigned YT, const u , ratio_z(ZR) {} int Rebar3D::initialize(const shared_ptr& D) { - rebar_x = suanpan::initialized_material_copy(D, tag_x); - rebar_y = suanpan::initialized_material_copy(D, tag_y); - rebar_z = suanpan::initialized_material_copy(D, tag_z); + rebar_x = D->initialized_material_copy(tag_x); + rebar_y = D->initialized_material_copy(tag_y); + rebar_z = D->initialized_material_copy(tag_z); if(nullptr == rebar_x || nullptr == rebar_y || nullptr == rebar_z || rebar_x->get_material_type() != MaterialType::D1 || rebar_y->get_material_type() != MaterialType::D1 || rebar_z->get_material_type() != MaterialType::D1) return SUANPAN_FAIL; @@ -88,4 +88,12 @@ int Rebar3D::reset_status() { return rebar_x->reset_status() + rebar_y->reset_status() + rebar_z->reset_status(); } -vector Rebar3D::record(OutputType) { return {}; } +vector Rebar3D::record(const OutputType P) { + vector data; + + for(const auto& I : rebar_x->record(P)) data.emplace_back(I); + for(const auto& I : rebar_y->record(P)) data.emplace_back(I); + for(const auto& I : rebar_z->record(P)) data.emplace_back(I); + + return data; +} diff --git a/Material/Material3D/Concrete/Rebar3D.h b/Material/Material3D/Concrete/Rebar3D.h index 868b32789..7f7323158 100644 --- a/Material/Material3D/Concrete/Rebar3D.h +++ b/Material/Material3D/Concrete/Rebar3D.h @@ -41,14 +41,15 @@ class Rebar3D final : public Material3D { ResourceHolder rebar_x, rebar_y, rebar_z; public: - Rebar3D(unsigned, // tag - unsigned, // material tag along x axis - unsigned, // material tag along y axis - unsigned, // material tag along z axis - double, // reinforcement ratio along x axis - double, // reinforcement ratio along y axis - double, // reinforcement ratio along z axis - double = 0. // inclination + Rebar3D( + unsigned, // tag + unsigned, // material tag along x axis + unsigned, // material tag along y axis + unsigned, // material tag along z axis + double, // reinforcement ratio along x axis + double, // reinforcement ratio along y axis + double, // reinforcement ratio along z axis + double = 0. // inclination ); int initialize(const shared_ptr&) override; diff --git a/Material/Material3D/Concrete/TableCDP.h b/Material/Material3D/Concrete/TableCDP.h index 9a5b19c54..5d7d1f9de 100644 --- a/Material/Material3D/Concrete/TableCDP.h +++ b/Material/Material3D/Concrete/TableCDP.h @@ -40,17 +40,18 @@ class TableCDP final : public NonlinearCDP { [[nodiscard]] podarray compute_compression_backbone(double) const override; public: - TableCDP(unsigned, // tag - double, // elastic modulus - double, // poissons ratio - mat&&, // tension table - mat&&, // compression table - mat&&, // tension damage table - mat&&, // compression damage table - double = .2, // dilatancy parameter - double = 1.16, // biaxial compression strength ratio - double = .5, // stiffness recovery - double = 2400E-12 // density + TableCDP( + unsigned, // tag + double, // elastic modulus + double, // poissons ratio + mat&&, // tension table + mat&&, // compression table + mat&&, // tension damage table + mat&&, // compression damage table + double = .2, // dilatancy parameter + double = 1.16, // biaxial compression strength ratio + double = .5, // stiffness recovery + double = 2400E-12 // density ); unique_ptr get_copy() override; diff --git a/Material/Material3D/Damage/IsotropicDamage.cpp b/Material/Material3D/Damage/IsotropicDamage.cpp index 760b4e94b..0d980a9b5 100644 --- a/Material/Material3D/Damage/IsotropicDamage.cpp +++ b/Material/Material3D/Damage/IsotropicDamage.cpp @@ -22,17 +22,12 @@ IsotropicDamage::IsotropicDamage(const unsigned T, const unsigned MT) : Material3D(T, 0.) , mat_tag(MT) {} -IsotropicDamage::IsotropicDamage(const IsotropicDamage& old_obj) - : Material3D(old_obj) - , mat_tag(old_obj.mat_tag) - , mat_ptr(suanpan::make_copy(old_obj.mat_ptr)) {} - int IsotropicDamage::initialize(const shared_ptr& D) { - mat_ptr = suanpan::initialized_material_copy(D, mat_tag); + mat_ptr = D->initialized_material_copy(mat_tag); if(nullptr == mat_ptr || mat_ptr->get_material_type() != MaterialType::D3) return SUANPAN_FAIL; - access::rw(density) = mat_ptr->get_parameter(ParameterType::DENSITY); + access::rw(density) = mat_ptr->get_density(); trial_stiffness = current_stiffness = initial_stiffness = mat_ptr->get_initial_stiffness(); @@ -42,9 +37,7 @@ int IsotropicDamage::initialize(const shared_ptr& D) { double IsotropicDamage::get_parameter(const ParameterType P) const { return mat_ptr->get_parameter(P); } int IsotropicDamage::update_trial_status(const vec& t_strain) { - trial_strain = t_strain; - - if(mat_ptr->update_trial_status(trial_strain) != SUANPAN_SUCCESS) return SUANPAN_FAIL; + if(SUANPAN_SUCCESS != mat_ptr->update_trial_status(trial_strain = t_strain)) return SUANPAN_FAIL; trial_stress = mat_ptr->get_trial_stress(); trial_stiffness = mat_ptr->get_trial_stiffness(); @@ -55,10 +48,9 @@ int IsotropicDamage::update_trial_status(const vec& t_strain) { } int IsotropicDamage::clear_status() { - current_strain.zeros(); - trial_strain.zeros(); - current_stress.zeros(); - trial_stress.zeros(); + trial_strain = current_strain.zeros(); + trial_stress = current_stress.zeros(); + trial_history = current_history = initial_history; trial_stiffness = current_stiffness = initial_stiffness; return mat_ptr->clear_status(); @@ -67,6 +59,7 @@ int IsotropicDamage::clear_status() { int IsotropicDamage::commit_status() { current_strain = trial_strain; current_stress = trial_stress; + current_history = trial_history; current_stiffness = trial_stiffness; return mat_ptr->commit_status(); @@ -75,6 +68,7 @@ int IsotropicDamage::commit_status() { int IsotropicDamage::reset_status() { trial_strain = current_strain; trial_stress = current_stress; + trial_history = current_history; trial_stiffness = current_stiffness; return mat_ptr->reset_status(); diff --git a/Material/Material3D/Damage/IsotropicDamage.h b/Material/Material3D/Damage/IsotropicDamage.h index a365daa0c..929fef761 100644 --- a/Material/Material3D/Damage/IsotropicDamage.h +++ b/Material/Material3D/Damage/IsotropicDamage.h @@ -29,24 +29,21 @@ #define ISOTROPICDAMAGE_H #include +#include class IsotropicDamage : public Material3D { const unsigned mat_tag; - unique_ptr mat_ptr; + ResourceHolder mat_ptr; protected: virtual void compute_damage() = 0; public: - IsotropicDamage(unsigned, // tag - unsigned // mat tag + IsotropicDamage( + unsigned, // tag + unsigned // mat tag ); - IsotropicDamage(const IsotropicDamage&); - IsotropicDamage(IsotropicDamage&&) = delete; - IsotropicDamage& operator=(const IsotropicDamage&) = delete; - IsotropicDamage& operator=(IsotropicDamage&&) = delete; - ~IsotropicDamage() override = default; int initialize(const shared_ptr&) override; diff --git a/Material/Material3D/Damage/LinearDamage.cpp b/Material/Material3D/Damage/LinearDamage.cpp index ced6126cc..dc71fbab8 100644 --- a/Material/Material3D/Damage/LinearDamage.cpp +++ b/Material/Material3D/Damage/LinearDamage.cpp @@ -26,25 +26,45 @@ LinearDamage::LinearDamage(const unsigned T, const unsigned MT, const double SE, , e_strain(EE) , e_damage(ED) {} +int LinearDamage::initialize(const shared_ptr& D) { + initialize_history(1); + + return IsotropicDamage::initialize(D); +} + void LinearDamage::compute_damage() { const auto dev_strain = tensor::dev(trial_strain); const auto eqv_strain = root_two_third * tensor::strain::norm(dev_strain); - if(eqv_strain <= s_strain) return; + const auto compute_damage_factor = [&](const double t_strain) { + if(t_strain <= s_strain) return vec{1., 0.}; - if(eqv_strain >= e_strain) { - trial_stiffness *= e_damage; - trial_stress *= e_damage; - return; - } + if(t_strain >= e_strain) return vec{e_damage, 0.}; + + return vec{1. + slope * (t_strain - s_strain), slope}; + }; - const auto damage = 1. + slope * (eqv_strain - s_strain); + trial_history = current_history; + if(eqv_strain > trial_history(0)) { + trial_history(0) = eqv_strain; + const auto damage = compute_damage_factor(trial_history(0)); + const auto& d = damage(0); + const auto& dd = damage(1); - trial_stiffness *= damage; + trial_stiffness *= d; - trial_stiffness += trial_stress * (tensor::strain::norm_weight % dev_strain).t() * slope / eqv_strain / 1.5; + trial_stiffness += trial_stress * (tensor::strain::norm_weight % dev_strain).t() * dd / eqv_strain / 1.5; - trial_stress *= damage; + trial_stress *= d; + } + else { + const auto damage = compute_damage_factor(trial_history(0)); + const auto& d = damage(0); + + trial_stiffness *= d; + + trial_stress *= d; + } } unique_ptr LinearDamage::get_copy() { return make_unique(*this); } diff --git a/Material/Material3D/Damage/LinearDamage.h b/Material/Material3D/Damage/LinearDamage.h index 203a74eb3..46d9257ea 100644 --- a/Material/Material3D/Damage/LinearDamage.h +++ b/Material/Material3D/Damage/LinearDamage.h @@ -41,13 +41,16 @@ class LinearDamage final : public IsotropicDamage { void compute_damage() override; public: - LinearDamage(unsigned, // tag - unsigned, // mat tag - double, // start strain - double, // end strain - double // end damage value + LinearDamage( + unsigned, // tag + unsigned, // mat tag + double, // start strain + double, // end strain + double // end damage value ); + int initialize(const shared_ptr&) override; + unique_ptr get_copy() override; }; diff --git a/Material/Material3D/DruckerPrager/BilinearDP.h b/Material/Material3D/DruckerPrager/BilinearDP.h index 5c1dce9c5..7cc6389f6 100644 --- a/Material/Material3D/DruckerPrager/BilinearDP.h +++ b/Material/Material3D/DruckerPrager/BilinearDP.h @@ -36,20 +36,21 @@ struct DataBilinearDP { const double critical = -cohesion / cohesion_slope; }; -class BilinearDP final : DataBilinearDP, public NonlinearDruckerPrager { +class BilinearDP final : protected DataBilinearDP, public NonlinearDruckerPrager { [[nodiscard]] double compute_c(double) const override; [[nodiscard]] double compute_dc(double) const override; public: - BilinearDP(unsigned, // tag - double, // elastic modulus - double, // poisson's ratio - double, // eta_yield (hydrostatic stress related) - double, // eta_flow (dilatancy angle related) - double, // xi (cohesion related) - double, // cohesion - double, // cohesion slope - double = 0. // density + BilinearDP( + unsigned, // tag + double, // elastic modulus + double, // poisson's ratio + double, // eta_yield (hydrostatic stress related) + double, // eta_flow (dilatancy angle related) + double, // xi (cohesion related) + double, // cohesion + double, // cohesion slope + double = 0. // density ); unique_ptr get_copy() override; diff --git a/Material/Material3D/DruckerPrager/CustomDP.h b/Material/Material3D/DruckerPrager/CustomDP.h index 0e8b810e8..10294d4f5 100644 --- a/Material/Material3D/DruckerPrager/CustomDP.h +++ b/Material/Material3D/DruckerPrager/CustomDP.h @@ -42,14 +42,15 @@ class CustomDP final : public NonlinearDruckerPrager { ResourceHolder c_expression; public: - CustomDP(unsigned, // tag - double, // elastic modulus - double, // poisson's ratio - double, // eta_yield (hydrostatic stress related) - double, // eta_flow (dilatancy angle related) - double, // xi (cohesion related) - unsigned, // expression tag - double = 0. // density + CustomDP( + unsigned, // tag + double, // elastic modulus + double, // poisson's ratio + double, // eta_yield (hydrostatic stress related) + double, // eta_flow (dilatancy angle related) + double, // xi (cohesion related) + unsigned, // expression tag + double = 0. // density ); int initialize(const shared_ptr&) override; diff --git a/Material/Material3D/DruckerPrager/ExpDP.h b/Material/Material3D/DruckerPrager/ExpDP.h index c5dbbf45d..d76ed99b9 100644 --- a/Material/Material3D/DruckerPrager/ExpDP.h +++ b/Material/Material3D/DruckerPrager/ExpDP.h @@ -38,21 +38,22 @@ struct DataExpDP { const double cohesion, a, b; }; -class ExpDP final : DataExpDP, public NonlinearDruckerPrager { +class ExpDP final : protected DataExpDP, public NonlinearDruckerPrager { [[nodiscard]] double compute_c(double) const override; [[nodiscard]] double compute_dc(double) const override; public: - ExpDP(unsigned, // tag - double, // elastic modulus - double, // poisson's ratio - double, // eta_yield - double, // eta_flow - double, // xi - double, // cohesion - double, // a - double, // b - double = 0. // density + ExpDP( + unsigned, // tag + double, // elastic modulus + double, // poisson's ratio + double, // eta_yield + double, // eta_flow + double, // xi + double, // cohesion + double, // a + double, // b + double = 0. // density ); unique_ptr get_copy() override; diff --git a/Material/Material3D/DruckerPrager/NonlinearDruckerPrager.cpp b/Material/Material3D/DruckerPrager/NonlinearDruckerPrager.cpp index b8caadf51..134218dc3 100644 --- a/Material/Material3D/DruckerPrager/NonlinearDruckerPrager.cpp +++ b/Material/Material3D/DruckerPrager/NonlinearDruckerPrager.cpp @@ -33,19 +33,12 @@ int NonlinearDruckerPrager::initialize(const shared_ptr&) { return SUANPAN_SUCCESS; } -double NonlinearDruckerPrager::get_parameter(const ParameterType P) const { - if(ParameterType::DENSITY == P) return density; - if(ParameterType::ELASTICMODULUS == P || ParameterType::YOUNGSMODULUS == P || ParameterType::E == P) return elastic_modulus; - if(ParameterType::SHEARMODULUS == P || ParameterType::G == P) return shear; - if(ParameterType::BULKMODULUS == P) return elastic_modulus / (3. - 6. * poissons_ratio); - if(ParameterType::POISSONSRATIO == P) return poissons_ratio; - return 0.; -} +double NonlinearDruckerPrager::get_parameter(const ParameterType P) const { return material_property(elastic_modulus, poissons_ratio)(P); } int NonlinearDruckerPrager::update_trial_status(const vec& t_strain) { incre_strain = (trial_strain = t_strain) - current_strain; - if(norm(incre_strain) <= tolerance) return SUANPAN_SUCCESS; + if(norm(incre_strain) <= datum::eps) return SUANPAN_SUCCESS; trial_stress = current_stress + (trial_stiffness = initial_stiffness) * incre_strain; @@ -60,22 +53,26 @@ int NonlinearDruckerPrager::update_trial_status(const vec& t_strain) { if(yield_const <= xi * compute_c(plastic_strain)) return SUANPAN_SUCCESS; - auto gamma = 0., denominator = 0.; + auto gamma = 0.; + double denominator; auto counter = 0u; - while(++counter < max_iteration) { - const auto incre_gamma = (yield_const - factor_a * gamma - xi * compute_c(plastic_strain)) / (denominator = factor_a + xi * xi * compute_dc(plastic_strain)); + auto ref_error = 1.; + while(true) { + if(max_iteration == ++counter) { + suanpan_error("Cannot converge within {} iterations.\n", max_iteration); + return SUANPAN_FAIL; + } + + const auto residual = yield_const - factor_a * gamma - xi * compute_c(plastic_strain); + const auto incre_gamma = residual / (denominator = factor_a + xi * xi * compute_dc(plastic_strain)); const auto error = fabs(incre_gamma); + if(1u == counter) ref_error = error; suanpan_debug("Local iteration error: {:.5E}.\n", error); - if(error <= tolerance) break; + if(error < tolerance * ref_error || (fabs(residual) < tolerance && counter > 5u)) break; plastic_strain = current_history(0) + xi * (gamma += incre_gamma); } - if(max_iteration == counter) { - suanpan_error("Cannot converge within {} iterations.\n", max_iteration); - return SUANPAN_FAIL; - } - if(sqrt_j2 >= shear * gamma) { const auto norm_s = tensor::stress::norm(dev_stress); @@ -94,21 +91,22 @@ int NonlinearDruckerPrager::update_trial_status(const vec& t_strain) { gamma = 0.; // volumetric strain reuse variable plastic_strain = current_history(0); - counter = 0; - while(++counter < max_iteration) { + counter = 0u; + while(true) { + if(max_iteration == ++counter) { + suanpan_error("Cannot converge within {} iterations.\n", max_iteration); + return SUANPAN_FAIL; + } + const auto residual = compute_c(plastic_strain) * xi / eta_flow - hydro_stress + bulk * gamma; const auto incre_gamma = residual / (denominator = factor_b * compute_dc(plastic_strain) + bulk); const auto error = fabs(incre_gamma); + if(1u == counter) ref_error = error; suanpan_debug("Local iteration error: {:.5E}.\n", error); - if(error <= tolerance) break; + if(error < tolerance * ref_error || (fabs(residual) < tolerance && counter > 5u)) break; plastic_strain = current_history(0) + xi / eta_yield * (gamma -= incre_gamma); } - if(max_iteration == counter) { - suanpan_error("Cannot converge within {} iterations.\n", max_iteration); - return SUANPAN_FAIL; - } - trial_stress = (hydro_stress - bulk * gamma) * tensor::unit_tensor2; trial_stiffness = (bulk - bulk * bulk / denominator) * unit_x_unit; diff --git a/Material/Material3D/DruckerPrager/NonlinearDruckerPrager.h b/Material/Material3D/DruckerPrager/NonlinearDruckerPrager.h index 480c2db4e..2e7956a6e 100644 --- a/Material/Material3D/DruckerPrager/NonlinearDruckerPrager.h +++ b/Material/Material3D/DruckerPrager/NonlinearDruckerPrager.h @@ -43,7 +43,7 @@ struct DataNonlinearDruckerPrager { }; class NonlinearDruckerPrager : protected DataNonlinearDruckerPrager, public Material3D { - static constexpr unsigned max_iteration = 20; + static constexpr unsigned max_iteration = 20u; static const mat unit_dev_tensor; static const mat unit_x_unit; @@ -62,13 +62,14 @@ class NonlinearDruckerPrager : protected DataNonlinearDruckerPrager, public Mate [[nodiscard]] virtual double compute_dc(double) const = 0; public: - NonlinearDruckerPrager(unsigned, // tag - double, // elastic modulus - double, // poisson's ratio - double, // eta_yield (hydrostatic stress related) - double, // eta_flow (dilatancy angle related) - double, // xi (cohesion related) - double = 0. // density + NonlinearDruckerPrager( + unsigned, // tag + double, // elastic modulus + double, // poisson's ratio + double, // eta_yield (hydrostatic stress related) + double, // eta_flow (dilatancy angle related) + double, // xi (cohesion related) + double = 0. // density ); int initialize(const shared_ptr&) override; diff --git a/Material/Material3D/Elastic/BlatzKo.cpp b/Material/Material3D/Elastic/BlatzKo.cpp index 16781e7eb..ef773a10c 100644 --- a/Material/Material3D/Elastic/BlatzKo.cpp +++ b/Material/Material3D/Elastic/BlatzKo.cpp @@ -31,14 +31,7 @@ int BlatzKo::initialize(const shared_ptr&) { return SUANPAN_SUCCESS; } -double BlatzKo::get_parameter(const ParameterType P) const { - if(ParameterType::DENSITY == P) return density; - if(ParameterType::ELASTICMODULUS == P || ParameterType::YOUNGSMODULUS == P || ParameterType::E == P) return elastic_modulus; - if(ParameterType::SHEARMODULUS == P || ParameterType::G == P) return shear_modulus; - if(ParameterType::BULKMODULUS == P) return elastic_modulus / (3. - 6. * poissons_ratio); - if(ParameterType::POISSONSRATIO == P) return poissons_ratio; - return 0.; -} +double BlatzKo::get_parameter(const ParameterType P) const { return material_property(elastic_modulus, poissons_ratio)(P); } unique_ptr BlatzKo::get_copy() { return make_unique(*this); } diff --git a/Material/Material3D/Elastic/BlatzKo.h b/Material/Material3D/Elastic/BlatzKo.h index 3fe5770aa..6f2bdc7be 100644 --- a/Material/Material3D/Elastic/BlatzKo.h +++ b/Material/Material3D/Elastic/BlatzKo.h @@ -40,14 +40,15 @@ struct DataBlatzKo { const double half_beta_two; }; -class BlatzKo final : DataBlatzKo, public Material3D { +class BlatzKo final : protected DataBlatzKo, public Material3D { static const vec weight; public: - BlatzKo(unsigned, // tag - double, // elastic modulus - double, // poissons ratio - double = 0. // density + BlatzKo( + unsigned, // tag + double, // elastic modulus + double, // poissons ratio + double = 0. // density ); int initialize(const shared_ptr&) override; diff --git a/Material/Material3D/Elastic/IsotropicElastic3D.cpp b/Material/Material3D/Elastic/IsotropicElastic3D.cpp index f8058e1b2..7b431d74c 100644 --- a/Material/Material3D/Elastic/IsotropicElastic3D.cpp +++ b/Material/Material3D/Elastic/IsotropicElastic3D.cpp @@ -30,14 +30,7 @@ int IsotropicElastic3D::initialize(const shared_ptr&) { return SUANPAN_SUCCESS; } -double IsotropicElastic3D::get_parameter(const ParameterType P) const { - if(ParameterType::DENSITY == P) return density; - if(ParameterType::ELASTICMODULUS == P || ParameterType::YOUNGSMODULUS == P || ParameterType::E == P) return elastic_modulus; - if(ParameterType::SHEARMODULUS == P || ParameterType::G == P) return elastic_modulus / (2. + 2. * poissons_ratio); - if(ParameterType::BULKMODULUS == P) return elastic_modulus / (3. - 6. * poissons_ratio); - if(ParameterType::POISSONSRATIO == P) return poissons_ratio; - return 0.; -} +double IsotropicElastic3D::get_parameter(const ParameterType P) const { return material_property(elastic_modulus, poissons_ratio)(P); } unique_ptr IsotropicElastic3D::get_copy() { return make_unique(*this); } diff --git a/Material/Material3D/Elastic/IsotropicElastic3D.h b/Material/Material3D/Elastic/IsotropicElastic3D.h index 9ec457207..b68444bf0 100644 --- a/Material/Material3D/Elastic/IsotropicElastic3D.h +++ b/Material/Material3D/Elastic/IsotropicElastic3D.h @@ -44,10 +44,11 @@ struct DataIsotropicElastic3D { class IsotropicElastic3D final : public DataIsotropicElastic3D, public Material3D { public: - IsotropicElastic3D(unsigned, // tag - double, // elastic modulus - double, // poissons ratio - double = 0. // density + IsotropicElastic3D( + unsigned, // tag + double, // elastic modulus + double, // poissons ratio + double = 0. // density ); int initialize(const shared_ptr&) override; diff --git a/Material/Material3D/Elastic/IsotropicNonlinearElastic3D.cpp b/Material/Material3D/Elastic/IsotropicNonlinearElastic3D.cpp index 45e33bd93..3113d945e 100644 --- a/Material/Material3D/Elastic/IsotropicNonlinearElastic3D.cpp +++ b/Material/Material3D/Elastic/IsotropicNonlinearElastic3D.cpp @@ -40,7 +40,7 @@ int IsotropicNonlinearElastic3D::initialize(const shared_ptr&) { int IsotropicNonlinearElastic3D::update_trial_status(const vec& t_strain) { incre_strain = (trial_strain = t_strain) - current_strain; - if(norm(incre_strain) < 1E-12) return SUANPAN_SUCCESS; + if(norm(incre_strain) < datum::eps) return SUANPAN_SUCCESS; const auto d_strain = tensor::dev(trial_strain); // deviatoric strain const auto e_strain = two_third * dot(tensor::strain::norm_weight, square(d_strain)); // equivalent strain squared diff --git a/Material/Material3D/Elastic/IsotropicNonlinearElastic3D.h b/Material/Material3D/Elastic/IsotropicNonlinearElastic3D.h index 62907b0d1..021419d98 100644 --- a/Material/Material3D/Elastic/IsotropicNonlinearElastic3D.h +++ b/Material/Material3D/Elastic/IsotropicNonlinearElastic3D.h @@ -44,8 +44,9 @@ class IsotropicNonlinearElastic3D : public Material3D { virtual vec compute_derivative(double, double) = 0; public: - explicit IsotropicNonlinearElastic3D(unsigned, // tag - double = 0. // density + explicit IsotropicNonlinearElastic3D( + unsigned, // tag + double = 0. // density ); int initialize(const shared_ptr&) override; diff --git a/Material/Material3D/Elastic/MooneyRivlin.h b/Material/Material3D/Elastic/MooneyRivlin.h index 3186fcd1b..e8587d6bb 100644 --- a/Material/Material3D/Elastic/MooneyRivlin.h +++ b/Material/Material3D/Elastic/MooneyRivlin.h @@ -38,18 +38,19 @@ struct DataMooneyRivlin { const double A10, A01; }; -class MooneyRivlin final : DataMooneyRivlin, public Material3D { +class MooneyRivlin final : protected DataMooneyRivlin, public Material3D { static const vec weight; static const vec I1E; static const mat I2EE; static const double one_three, two_three, four_three, five_three, eight_nine; public: - MooneyRivlin(unsigned, // tag - double, // bulk modulus - double = 80, // a10 - double = 20, // a01 - double = 0. // density + MooneyRivlin( + unsigned, // tag + double, // bulk modulus + double = 80, // a10 + double = 20, // a01 + double = 0. // density ); int initialize(const shared_ptr&) override; diff --git a/Material/Material3D/Elastic/NLE3D01.h b/Material/Material3D/Elastic/NLE3D01.h index d1db42779..91e373028 100644 --- a/Material/Material3D/Elastic/NLE3D01.h +++ b/Material/Material3D/Elastic/NLE3D01.h @@ -38,19 +38,20 @@ struct DataNLE3D01 { const double m; }; -class NLE3D01 final : DataNLE3D01, public IsotropicNonlinearElastic3D { +class NLE3D01 final : protected DataNLE3D01, public IsotropicNonlinearElastic3D { const double factor_a = (.5 * m + .5) * ref_stress / (1. + m) * pow(ref_strain, -m); const double factor_b = (.5 * m - .5) * factor_a; vec compute_derivative(double, double) override; public: - NLE3D01(unsigned, // tag - double, // bulk modulus - double, // reference strain - double, // reference stress - double, // m - double // density + NLE3D01( + unsigned, // tag + double, // bulk modulus + double, // reference strain + double, // reference stress + double, // m + double // density ); unique_ptr get_copy() override; diff --git a/Material/Material3D/Elastic/OrthotropicElastic3D.h b/Material/Material3D/Elastic/OrthotropicElastic3D.h index baa9eeea1..3e7fdd79c 100644 --- a/Material/Material3D/Elastic/OrthotropicElastic3D.h +++ b/Material/Material3D/Elastic/OrthotropicElastic3D.h @@ -38,10 +38,11 @@ class OrthotropicElastic3D final : public Material3D { const vec modulus, poissons_ratio; public: - OrthotropicElastic3D(unsigned, // tag - vec&&, // elastic modulus - vec&&, // poissons ratio - double = 0. // density + OrthotropicElastic3D( + unsigned, // tag + vec&&, // elastic modulus + vec&&, // poissons ratio + double = 0. // density ); int initialize(const shared_ptr&) override; diff --git a/Material/Material3D/Elastic/Yeoh.h b/Material/Material3D/Elastic/Yeoh.h index cdd11697a..34cbc67af 100644 --- a/Material/Material3D/Elastic/Yeoh.h +++ b/Material/Material3D/Elastic/Yeoh.h @@ -36,7 +36,7 @@ struct DataYeoh { const vec A1; }; -class Yeoh final : DataYeoh, public Material3D { +class Yeoh final : protected DataYeoh, public Material3D { static const vec weight; static const vec I1E; @@ -49,10 +49,11 @@ class Yeoh final : DataYeoh, public Material3D { [[nodiscard]] vec compute_derivative(double, double) const; public: - Yeoh(unsigned, // tag - vec&&, // constants - vec&&, // constants - double = 0. // density + Yeoh( + unsigned, // tag + vec&&, // constants + vec&&, // constants + double = 0. // density ); int initialize(const shared_ptr&) override; diff --git a/Material/Material3D/Hoffman/BilinearHoffman.h b/Material/Material3D/Hoffman/BilinearHoffman.h index 8cfbfd09d..02028676a 100644 --- a/Material/Material3D/Hoffman/BilinearHoffman.h +++ b/Material/Material3D/Hoffman/BilinearHoffman.h @@ -40,12 +40,13 @@ class BilinearHoffman : protected DataBilinearHoffman, public NonlinearHoffman { [[nodiscard]] double compute_dk(double) const override; public: - BilinearHoffman(unsigned, // tag - vec&&, // elastic modulus - vec&&, // poissons ratio - vec&&, // sigma - double, // hardening ratio - double = 0. // density + BilinearHoffman( + unsigned, // tag + vec&&, // elastic modulus + vec&&, // poissons ratio + vec&&, // sigma + double, // hardening ratio + double = 0. // density ); unique_ptr get_copy() override; diff --git a/Material/Material3D/Hoffman/CustomHoffman.h b/Material/Material3D/Hoffman/CustomHoffman.h index 2b8c3a2da..22b4c3fd5 100644 --- a/Material/Material3D/Hoffman/CustomHoffman.h +++ b/Material/Material3D/Hoffman/CustomHoffman.h @@ -42,12 +42,13 @@ class CustomHoffman final : public NonlinearHoffman { ResourceHolder k_expression; public: - CustomHoffman(unsigned, // tag - vec&&, // elastic modulus - vec&&, // poissons ratio - vec&&, // sigma - unsigned, // hardening function tag - double = 0. // density + CustomHoffman( + unsigned, // tag + vec&&, // elastic modulus + vec&&, // poissons ratio + vec&&, // sigma + unsigned, // hardening function tag + double = 0. // density ); int initialize(const shared_ptr&) override; diff --git a/Material/Material3D/Hoffman/ExpHoffman.h b/Material/Material3D/Hoffman/ExpHoffman.h index 9c60fdde0..b55bc2d3d 100644 --- a/Material/Material3D/Hoffman/ExpHoffman.h +++ b/Material/Material3D/Hoffman/ExpHoffman.h @@ -35,18 +35,19 @@ struct DataExpHoffman { const double a, b; }; -class ExpHoffman final : DataExpHoffman, public NonlinearHoffman { +class ExpHoffman final : protected DataExpHoffman, public NonlinearHoffman { [[nodiscard]] double compute_k(double) const override; [[nodiscard]] double compute_dk(double) const override; public: - ExpHoffman(unsigned, // tag - vec&&, // elastic modulus - vec&&, // poissons ratio - vec&&, // sigma - double, // a - double, // b - double = 0. // density + ExpHoffman( + unsigned, // tag + vec&&, // elastic modulus + vec&&, // poissons ratio + vec&&, // sigma + double, // a + double, // b + double = 0. // density ); unique_ptr get_copy() override; diff --git a/Material/Material3D/Hoffman/NonlinearHill.h b/Material/Material3D/Hoffman/NonlinearHill.h index 168f4d234..2b5a481bb 100644 --- a/Material/Material3D/Hoffman/NonlinearHill.h +++ b/Material/Material3D/Hoffman/NonlinearHill.h @@ -33,11 +33,12 @@ class NonlinearHill : public NonlinearHoffman { public: - NonlinearHill(unsigned, // tag - vec&&, // elastic modulus - vec&&, // poissons ratio - vec&&, // yield stress - double = 0. // density + NonlinearHill( + unsigned, // tag + vec&&, // elastic modulus + vec&&, // poissons ratio + vec&&, // yield stress + double = 0. // density ); }; diff --git a/Material/Material3D/Hoffman/NonlinearHoffman.cpp b/Material/Material3D/Hoffman/NonlinearHoffman.cpp index ebc144dee..1e7bad9a7 100644 --- a/Material/Material3D/Hoffman/NonlinearHoffman.cpp +++ b/Material/Material3D/Hoffman/NonlinearHoffman.cpp @@ -19,16 +19,12 @@ #include const double NonlinearHoffman::root_two_third = sqrt(2. / 3.); -constexpr unsigned NonlinearHoffman::max_iteration = 20; const uword NonlinearHoffman::sa{0}; const span NonlinearHoffman::sb{1, 6}; NonlinearHoffman::NonlinearHoffman(const unsigned T, vec&& EE, vec&& VV, vec&& SS, const double R) : DataNonlinearHoffman{std::forward(EE), std::forward(VV), std::forward(SS)} - , Material3D(T, R) { - transform::hoffman_projection(yield_stress, proj_a, proj_b); - access::rw(tolerance) = 1E-13; -} + , Material3D(T, R) { transform::hoffman_projection(yield_stress, proj_a, proj_b); } int NonlinearHoffman::initialize(const shared_ptr&) { trial_stiffness = current_stiffness = initial_stiffness = tensor::orthotropic_stiffness(modulus, ratio); @@ -40,15 +36,10 @@ int NonlinearHoffman::initialize(const shared_ptr&) { return SUANPAN_SUCCESS; } -double NonlinearHoffman::get_parameter(const ParameterType P) const { - if(ParameterType::DENSITY == P) return density; - return 0.; -} - int NonlinearHoffman::update_trial_status(const vec& t_strain) { incre_strain = (trial_strain = t_strain) - current_strain; - if(norm(incre_strain) <= tolerance) return SUANPAN_SUCCESS; + if(norm(incre_strain) <= datum::eps) return SUANPAN_SUCCESS; trial_history = current_history; auto& eqv_strain = trial_history(0); @@ -78,7 +69,7 @@ int NonlinearHoffman::update_trial_status(const vec& t_strain) { const auto k = compute_k(eqv_strain = current_eqv_strain + gamma * norm_n_mid); const auto f = dot(trial_stress, factor_b) - k * k; - if(1u == counter && f < 0.) return SUANPAN_SUCCESS; + if(1u == counter && f <= 0.) return SUANPAN_SUCCESS; const rowvec dn = two_third / norm_n_mid * (n_mid % tensor::strain::norm_weight).t(); const auto factor_c = k * compute_dk(eqv_strain); @@ -93,11 +84,11 @@ int NonlinearHoffman::update_trial_status(const vec& t_strain) { if(!solve(incre, jacobian, residual)) return SUANPAN_FAIL; - const auto error = norm(incre); - if(1u == counter && error > ref_error) ref_error = error; - suanpan_debug("Local plasticity iteration error: {:.5E}.\n", error / ref_error); + const auto error = inf_norm(incre); + if(1u == counter) ref_error = error; + suanpan_debug("Local plasticity iteration error: {:.5E}.\n", error); - if(error <= tolerance * std::max(1., ref_error)) { + if(error < tolerance * ref_error || (inf_norm(residual) < tolerance && counter > 5u)) { plastic_strain += gamma * n_mid; mat left, right(7, 6, fill::zeros); diff --git a/Material/Material3D/Hoffman/NonlinearHoffman.h b/Material/Material3D/Hoffman/NonlinearHoffman.h index b41b532f0..26a3a47e5 100644 --- a/Material/Material3D/Hoffman/NonlinearHoffman.h +++ b/Material/Material3D/Hoffman/NonlinearHoffman.h @@ -40,7 +40,7 @@ struct DataNonlinearHoffman { class NonlinearHoffman : protected DataNonlinearHoffman, public Material3D { static constexpr double two_third = 2. / 3.; static const double root_two_third; - static const unsigned max_iteration; + static constexpr unsigned max_iteration = 20u; static const uword sa; static const span sb; @@ -50,17 +50,16 @@ class NonlinearHoffman : protected DataNonlinearHoffman, public Material3D { [[nodiscard]] virtual double compute_dk(double) const = 0; public: - NonlinearHoffman(unsigned, // tag - vec&&, // elastic modulus - vec&&, // poissons ratio - vec&&, // sigma - double = 0. // density + NonlinearHoffman( + unsigned, // tag + vec&&, // elastic modulus + vec&&, // poissons ratio + vec&&, // sigma + double = 0. // density ); int initialize(const shared_ptr&) override; - [[nodiscard]] double get_parameter(ParameterType) const override; - int update_trial_status(const vec&) override; int clear_status() override; diff --git a/Material/Material3D/Hoffman/TimberPD.cpp b/Material/Material3D/Hoffman/TimberPD.cpp index a04676bb6..4fef96bf4 100644 --- a/Material/Material3D/Hoffman/TimberPD.cpp +++ b/Material/Material3D/Hoffman/TimberPD.cpp @@ -25,13 +25,13 @@ TimberPD::TimberPD(const unsigned T, vec&& EE, vec&& VV, vec&& SS, vec&& HH, con , hill_t(transform::hill_projection(yield_stress(0), yield_stress(2), yield_stress(4), yield_stress(6), yield_stress(7), yield_stress(8))) , hill_c(transform::hill_projection(yield_stress(1), yield_stress(3), yield_stress(5), yield_stress(6), yield_stress(7), yield_stress(8))) {} -int TimberPD::initialize(const shared_ptr&) { +int TimberPD::initialize(const shared_ptr& D) { initial_history.resize(9); initial_history(7) = ini_r_t; initial_history(8) = ini_r_c; initialize_history(9); - return BilinearHoffman::initialize(nullptr); + return BilinearHoffman::initialize(D); } unique_ptr TimberPD::get_copy() { return make_unique(*this); } @@ -39,7 +39,7 @@ unique_ptr TimberPD::get_copy() { return make_unique(*this); int TimberPD::update_trial_status(const vec& t_strain) { if(SUANPAN_SUCCESS != BilinearHoffman::update_trial_status(t_strain)) return SUANPAN_FAIL; - if(norm(incre_strain) <= tolerance) return SUANPAN_SUCCESS; + if(norm(incre_strain) <= datum::eps) return SUANPAN_SUCCESS; vec principal_stress; // 3 mat principal_direction; // 3x3 @@ -102,12 +102,11 @@ double TimberPD::compute_damage_t(const double r_t) const { return 1. - ini_r_t double TimberPD::compute_damage_c(const double r_c) const { return b_c * pow(std::max(datum::eps, 1. - ini_r_c / r_c), m_c); } -vector TimberPD::record(const OutputType T) { - if(T == OutputType::KAPPAP) return {vec{current_history(0)}}; - if(T == OutputType::DT) return {vec{compute_damage_t(current_history(1))}}; - if(T == OutputType::DC) return {vec{compute_damage_c(current_history(2))}}; +vector TimberPD::record(const OutputType P) { + if(P == OutputType::DT) return {vec{compute_damage_t(current_history(1))}}; + if(P == OutputType::DC) return {vec{compute_damage_c(current_history(2))}}; - return Material3D::record(T); + return Material3D::record(P); } void TimberPD::print() { diff --git a/Material/Material3D/Hoffman/TimberPD.h b/Material/Material3D/Hoffman/TimberPD.h index 7f2172343..eb8ce9a38 100644 --- a/Material/Material3D/Hoffman/TimberPD.h +++ b/Material/Material3D/Hoffman/TimberPD.h @@ -17,6 +17,9 @@ /** * @class TimberPD * @brief The TimberPD class. + * + * Reference: + * 1. [10.1016/j.compstruc.2017.09.010](https://doi.org/10.1016/j.compstruc.2017.09.010) * * @author tlc * @date 24/08/2023 @@ -44,12 +47,13 @@ class TimberPD final : protected DataTimberPD, public BilinearHoffman { [[nodiscard]] double update_damage_c(const vec&, mat&); public: - TimberPD(unsigned, // tag - vec&&, // elastic modulus - vec&&, // poissons ratio - vec&&, // sigma - vec&&, // hardening - double = 0. // density + TimberPD( + unsigned, // tag + vec&&, // elastic modulus + vec&&, // poissons ratio + vec&&, // sigma + vec&&, // hardening + double = 0. // density ); int initialize(const shared_ptr&) override; diff --git a/Material/Material3D/Material3D b/Material/Material3D/Material3D index 5ba9ba1ad..cf6507a2a 100644 --- a/Material/Material3D/Material3D +++ b/Material/Material3D/Material3D @@ -47,4 +47,5 @@ #include "vonMises/VAFCRP.h" #include "Wrapper/Rotation3D.h" #include "Wrapper/Stacked.h" -#include "Wrapper/Substepping.h" \ No newline at end of file +#include "Wrapper/StressWrapper.h" +#include "Wrapper/Substepping.h" diff --git a/Material/Material3D/Material3D.cpp b/Material/Material3D/Material3D.cpp index 4bf21a3fc..c9db96f2f 100644 --- a/Material/Material3D/Material3D.cpp +++ b/Material/Material3D/Material3D.cpp @@ -23,37 +23,108 @@ Material3D::Material3D(const unsigned T, const double R) : Material(T, MaterialType::D3, R) {} vector Material3D::record(const OutputType P) { - vector data; - - if(P == OutputType::S) data.emplace_back(current_stress); - else if(P == OutputType::HYDRO) data.emplace_back(vec{tensor::mean3(current_stress)}); - else if(P == OutputType::E) data.emplace_back(current_strain); - else if(P == OutputType::EE) data.emplace_back(solve(initial_stiffness, current_stress)); - else if(P == OutputType::PE) data.emplace_back(current_strain - solve(initial_stiffness, current_stress)); - else if(P == OutputType::PEEQ) data.emplace_back(vec{sqrt(2. / 3.) * tensor::strain::norm(current_strain - solve(initial_stiffness, current_stress))}); - else if(P == OutputType::SP) { if(vec principal_stress; eig_sym(principal_stress, tensor::stress::to_tensor(current_stress))) data.emplace_back(principal_stress); } - else if(P == OutputType::EP) { if(vec principal_strain; eig_sym(principal_strain, tensor::strain::to_tensor(current_strain))) data.emplace_back(principal_strain); } - else if(P == OutputType::EEP) { if(vec principal_strain; eig_sym(principal_strain, tensor::strain::to_tensor(solve(initial_stiffness, current_stress)))) data.emplace_back(principal_strain); } - else if(P == OutputType::PEP) { if(vec principal_strain; eig_sym(principal_strain, tensor::strain::to_tensor(current_strain - solve(initial_stiffness, current_stress)))) data.emplace_back(principal_strain); } - else if(P == OutputType::S11) data.emplace_back(vec{current_stress.n_elem > 0 ? current_stress(0) : 0.}); - else if(P == OutputType::S22) data.emplace_back(vec{current_stress.n_elem > 1 ? current_stress(1) : 0.}); - else if(P == OutputType::S33) data.emplace_back(vec{current_stress.n_elem > 2 ? current_stress(2) : 0.}); - else if(P == OutputType::S12) data.emplace_back(vec{current_stress.n_elem > 3 ? current_stress(3) : 0.}); - else if(P == OutputType::S23) data.emplace_back(vec{current_stress.n_elem > 4 ? current_stress(4) : 0.}); - else if(P == OutputType::S13) data.emplace_back(vec{current_stress.n_elem > 5 ? current_stress(5) : 0.}); - else if(P == OutputType::E11) data.emplace_back(vec{current_strain.n_elem > 0 ? current_strain(0) : 0.}); - else if(P == OutputType::E22) data.emplace_back(vec{current_strain.n_elem > 1 ? current_strain(1) : 0.}); - else if(P == OutputType::E33) data.emplace_back(vec{current_strain.n_elem > 2 ? current_strain(2) : 0.}); - else if(P == OutputType::E12) data.emplace_back(vec{current_strain.n_elem > 3 ? current_strain(3) : 0.}); - else if(P == OutputType::E23) data.emplace_back(vec{current_strain.n_elem > 4 ? current_strain(4) : 0.}); - else if(P == OutputType::E13) data.emplace_back(vec{current_strain.n_elem > 5 ? current_strain(5) : 0.}); - else if(P == OutputType::SP1) { if(vec principal_stress; eig_sym(principal_stress, tensor::stress::to_tensor(current_stress))) data.emplace_back(vec{principal_stress(0)}); } - else if(P == OutputType::SP2) { if(vec principal_stress; eig_sym(principal_stress, tensor::stress::to_tensor(current_stress))) data.emplace_back(vec{principal_stress(1)}); } - else if(P == OutputType::SP3) { if(vec principal_stress; eig_sym(principal_stress, tensor::stress::to_tensor(current_stress))) data.emplace_back(vec{principal_stress(2)}); } - else if(P == OutputType::EP1) { if(vec principal_strain; eig_sym(principal_strain, tensor::strain::to_tensor(current_strain))) data.emplace_back(vec{principal_strain(0)}); } - else if(P == OutputType::EP2) { if(vec principal_strain; eig_sym(principal_strain, tensor::strain::to_tensor(current_strain))) data.emplace_back(vec{principal_strain(1)}); } - else if(P == OutputType::EP3) { if(vec principal_strain; eig_sym(principal_strain, tensor::strain::to_tensor(current_strain))) data.emplace_back(vec{principal_strain(2)}); } - else if(P == OutputType::HIST) data.emplace_back(current_history); - - return data; + if(P == OutputType::S11) return {vec{current_stress(0)}}; + if(P == OutputType::S22) return {vec{current_stress(1)}}; + if(P == OutputType::S33) return {vec{current_stress(2)}}; + if(P == OutputType::S12) return {vec{current_stress(3)}}; + if(P == OutputType::S23) return {vec{current_stress(4)}}; + if(P == OutputType::S13) return {vec{current_stress(5)}}; + if(P == OutputType::E11) return {vec{current_strain(0)}}; + if(P == OutputType::E22) return {vec{current_strain(1)}}; + if(P == OutputType::E33) return {vec{current_strain(2)}}; + if(P == OutputType::E12) return {vec{current_strain(3)}}; + if(P == OutputType::E23) return {vec{current_strain(4)}}; + if(P == OutputType::E13) return {vec{current_strain(5)}}; + + if(P == OutputType::SP) { + vec principal_stress; + eig_sym(principal_stress, tensor::stress::to_tensor(current_stress)); + return {principal_stress}; + } + if(P == OutputType::SP1) { + vec principal_stress; + eig_sym(principal_stress, tensor::stress::to_tensor(current_stress)); + return {vec{principal_stress(0)}}; + } + if(P == OutputType::SP2) { + vec principal_stress; + eig_sym(principal_stress, tensor::stress::to_tensor(current_stress)); + return {vec{principal_stress(1)}}; + } + if(P == OutputType::SP3) { + vec principal_stress; + eig_sym(principal_stress, tensor::stress::to_tensor(current_stress)); + return {vec{principal_stress(2)}}; + } + + if(P == OutputType::EP) { + vec principal_strain; + eig_sym(principal_strain, tensor::strain::to_tensor(current_strain)); + return {principal_strain}; + } + if(P == OutputType::EP1) { + vec principal_strain; + eig_sym(principal_strain, tensor::strain::to_tensor(current_strain)); + return {vec{principal_strain(0)}}; + } + if(P == OutputType::EP2) { + vec principal_strain; + eig_sym(principal_strain, tensor::strain::to_tensor(current_strain)); + return {vec{principal_strain(1)}}; + } + if(P == OutputType::EP3) { + vec principal_strain; + eig_sym(principal_strain, tensor::strain::to_tensor(current_strain)); + return {vec{principal_strain(2)}}; + } + + if(P == OutputType::EEP) { + vec principal_strain; + eig_sym(principal_strain, tensor::strain::to_tensor(solve(initial_stiffness, current_stress))); + return {principal_strain}; + } + if(P == OutputType::EEP1) { + vec principal_strain; + eig_sym(principal_strain, tensor::strain::to_tensor(solve(initial_stiffness, current_stress))); + return {vec{principal_strain(0)}}; + } + if(P == OutputType::EEP2) { + vec principal_strain; + eig_sym(principal_strain, tensor::strain::to_tensor(solve(initial_stiffness, current_stress))); + return {vec{principal_strain(1)}}; + } + if(P == OutputType::EEP3) { + vec principal_strain; + eig_sym(principal_strain, tensor::strain::to_tensor(solve(initial_stiffness, current_stress))); + return {vec{principal_strain(2)}}; + } + + if(P == OutputType::PEP) { + vec principal_strain; + eig_sym(principal_strain, tensor::strain::to_tensor(current_strain - solve(initial_stiffness, current_stress))); + return {principal_strain}; + } + if(P == OutputType::PEP1) { + vec principal_strain; + eig_sym(principal_strain, tensor::strain::to_tensor(current_strain - solve(initial_stiffness, current_stress))); + return {vec{principal_strain(0)}}; + } + if(P == OutputType::PEP2) { + vec principal_strain; + eig_sym(principal_strain, tensor::strain::to_tensor(current_strain - solve(initial_stiffness, current_stress))); + return {vec{principal_strain(1)}}; + } + if(P == OutputType::PEP3) { + vec principal_strain; + eig_sym(principal_strain, tensor::strain::to_tensor(current_strain - solve(initial_stiffness, current_stress))); + return {vec{principal_strain(2)}}; + } + + if(P == OutputType::EEQ) return {vec{sqrt(2. / 3.) * tensor::strain::norm(current_strain)}}; + if(P == OutputType::EEEQ) return {vec{sqrt(2. / 3.) * tensor::strain::norm(solve(initial_stiffness, current_stress))}}; + if(P == OutputType::PEEQ) return {vec{sqrt(2. / 3.) * tensor::strain::norm(current_strain - solve(initial_stiffness, current_stress))}}; + if(P == OutputType::HYDRO) return {vec{tensor::mean3(current_stress)}}; + if(P == OutputType::MISES) return {vec{sqrt(1.5) * tensor::stress::norm(tensor::dev(current_stress))}}; + + return Material::record(P); } diff --git a/Material/Material3D/Material3D.h b/Material/Material3D/Material3D.h index e71d3d5f2..97d3ce440 100644 --- a/Material/Material3D/Material3D.h +++ b/Material/Material3D/Material3D.h @@ -36,8 +36,9 @@ using std::vector; class Material3D : public Material { public: - Material3D(unsigned, // tag - double // density + Material3D( + unsigned, // tag + double // density ); vector record(OutputType) override; diff --git a/Material/Material3D/Sand/DafaliasManzari.cpp b/Material/Material3D/Sand/DafaliasManzari.cpp index 10600e0dc..f7c1100a9 100644 --- a/Material/Material3D/Sand/DafaliasManzari.cpp +++ b/Material/Material3D/Sand/DafaliasManzari.cpp @@ -28,7 +28,7 @@ const mat DafaliasManzari::unit_dev_tensor = tensor::unit_deviatoric_tensor4(); DafaliasManzari::DafaliasManzari(const unsigned T, const double G0, const double NU, const double AC, const double LC, const double E0, const double XI, const double M, const double H0, const double H1, const double CH, const double NB, const double A, const double ND, const double ZM, const double CZ, const double PC, const double GR, const double R) : DataDafaliasManzari{fabs(G0), fabs(NU), fabs(AC), fabs(LC), fabs(E0), fabs(XI), fabs(M), fabs(H0), fabs(H1), fabs(CH), fabs(NB), A, fabs(ND), fabs(ZM), fabs(CZ), -fabs(PC), fabs(GR)} - , Material3D(T, R) { access::rw(tolerance) = 1E-12; } + , Material3D(T, R) {} int DafaliasManzari::initialize(const shared_ptr&) { trial_stiffness = current_stiffness = initial_stiffness = tensor::isotropic_stiffness(gi * (2. + 2. * poissons_ratio), poissons_ratio); @@ -40,19 +40,12 @@ int DafaliasManzari::initialize(const shared_ptr&) { unique_ptr DafaliasManzari::get_copy() { return make_unique(*this); } -double DafaliasManzari::get_parameter(const ParameterType P) const { - if(ParameterType::DENSITY == P) return density; - if(ParameterType::ELASTICMODULUS == P || ParameterType::YOUNGSMODULUS == P || ParameterType::E == P) return gi * (2. + 2. * poissons_ratio); - if(ParameterType::SHEARMODULUS == P || ParameterType::G == P) return gi; - if(ParameterType::BULKMODULUS == P) return gi * (2. + 2. * poissons_ratio) / (3. - 6. * poissons_ratio); - if(ParameterType::POISSONSRATIO == P) return poissons_ratio; - return 0.; -} +double DafaliasManzari::get_parameter(const ParameterType P) const { return material_property(gi * (2. + 2. * poissons_ratio), poissons_ratio)(P); } int DafaliasManzari::update_trial_status(const vec& t_strain) { incre_strain = (trial_strain = t_strain) - current_strain; - if(norm(incre_strain) <= tolerance) return SUANPAN_SUCCESS; + if(norm(incre_strain) <= datum::eps) return SUANPAN_SUCCESS; const auto current_p = tensor::mean3(current_stress); const auto current_s = tensor::dev(current_stress); @@ -78,7 +71,10 @@ int DafaliasManzari::update_trial_status(const vec& t_strain) { auto ref_error = 1.; while(true) { - if(max_iteration == ++counter) return SUANPAN_FAIL; + if(max_iteration == ++counter) { + suanpan_error("Cannot converge within {} iterations.\n", max_iteration); + return SUANPAN_FAIL; + } const auto sqrt_term = shear_modulus * sqrt(std::max(datum::eps, pc * p)); @@ -101,10 +97,10 @@ int DafaliasManzari::update_trial_status(const vec& t_strain) { if(!solve(incre, jacobian, residual)) return SUANPAN_FAIL; - auto error = norm(residual); - if(1u == counter) ref_error = std::max(1., error); - suanpan_debug("Local elastic iteration error: {:.5E}.\n", error /= ref_error); - if(error <= tolerance) break; + const auto error = inf_norm(residual); + if(1u == counter) ref_error = error; + suanpan_debug("Local elastic iteration error: {:.5E}.\n", error); + if(error < tolerance * ref_error || (inf_norm(residual) < tolerance && counter > 5u)) break; p -= incre(sa); s -= incre(sb); @@ -159,7 +155,10 @@ int DafaliasManzari::update_trial_status(const vec& t_strain) { auto update_ini_alpha = false; while(true) { - if(max_iteration == ++counter) return SUANPAN_FAIL; + if(max_iteration == ++counter) { + suanpan_error("Cannot converge within {} iterations.\n", max_iteration); + return SUANPAN_FAIL; + } // shear modulus @@ -317,10 +316,10 @@ int DafaliasManzari::update_trial_status(const vec& t_strain) { if(!solve(incre, jacobian, residual)) return SUANPAN_FAIL; - auto error = norm(residual); - if(1u == counter) ref_error = std::max(1., error); - suanpan_debug("Local plastic iteration error: {:.5E}.\n", error /= ref_error); - if(error <= tolerance) break; + const auto error = inf_norm(residual); + if(1u == counter) ref_error = error; + suanpan_debug("Local plastic iteration error: {:.5E}.\n", error); + if(error < tolerance * ref_error || (inf_norm(residual) < tolerance && counter > 5u)) break; gamma -= incre(si); p -= incre(sj); diff --git a/Material/Material3D/Sand/DafaliasManzari.h b/Material/Material3D/Sand/DafaliasManzari.h index af2d883fd..ec50c458c 100644 --- a/Material/Material3D/Sand/DafaliasManzari.h +++ b/Material/Material3D/Sand/DafaliasManzari.h @@ -51,8 +51,8 @@ struct DataDafaliasManzari { const double gr = .2; }; -class DafaliasManzari final : DataDafaliasManzari, public Material3D { - static constexpr unsigned max_iteration = 20; +class DafaliasManzari final : protected DataDafaliasManzari, public Material3D { + static constexpr unsigned max_iteration = 20u; static const mat unit_dev_tensor; const double pr = (2. + 2. * poissons_ratio) / (3. - 6. * poissons_ratio); @@ -62,25 +62,26 @@ class DafaliasManzari final : DataDafaliasManzari, public Material3D { static const span sb, sk, sl, sm; public: - DafaliasManzari(unsigned, // tag - double, // g0 - double, // nu - double, // ac - double, // lc - double, // e0 - double, // xi - double, // m - double, // h0 - double, // h1 - double, // ch - double, // nb - double, // a - double, // nd - double, // zm - double, // cz - double, // pc - double, // gr - double = 0. // density + DafaliasManzari( + unsigned, // tag + double, // g0 + double, // nu + double, // ac + double, // lc + double, // e0 + double, // xi + double, // m + double, // h0 + double, // h1 + double, // ch + double, // nb + double, // a + double, // nd + double, // zm + double, // cz + double, // pc + double, // gr + double = 0. // density ); int initialize(const shared_ptr&) override; diff --git a/Material/Material3D/Sand/SimpleSand.cpp b/Material/Material3D/Sand/SimpleSand.cpp index 498d10f80..4339c945f 100644 --- a/Material/Material3D/Sand/SimpleSand.cpp +++ b/Material/Material3D/Sand/SimpleSand.cpp @@ -24,7 +24,7 @@ const mat SimpleSand::unit_dev_tensor = tensor::unit_deviatoric_tensor4(); SimpleSand::SimpleSand(const unsigned T, const double E, const double V, const double M, const double A, const double H, const double AC, const double NB, const double ND, const double VC, const double PC, const double LC, const double V0, const double R) : DataSimpleSand{E, V, fabs(M), A, H, AC, fabs(NB), fabs(ND), fabs(VC), -fabs(PC), fabs(LC), fabs(V0)} - , Material3D(T, R) { access::rw(tolerance) = 1E-12; } + , Material3D(T, R) {} int SimpleSand::initialize(const shared_ptr&) { trial_stiffness = current_stiffness = initial_stiffness = tensor::isotropic_stiffness(elastic_modulus, poissons_ratio); @@ -36,19 +36,12 @@ int SimpleSand::initialize(const shared_ptr&) { unique_ptr SimpleSand::get_copy() { return make_unique(*this); } -double SimpleSand::get_parameter(const ParameterType P) const { - if(ParameterType::DENSITY == P) return density; - if(ParameterType::ELASTICMODULUS == P || ParameterType::YOUNGSMODULUS == P || ParameterType::E == P) return elastic_modulus; - if(ParameterType::SHEARMODULUS == P || ParameterType::G == P) return shear; - if(ParameterType::BULKMODULUS == P) return elastic_modulus / (3. - 6. * poissons_ratio); - if(ParameterType::POISSONSRATIO == P) return poissons_ratio; - return 0.; -} +double SimpleSand::get_parameter(const ParameterType P) const { return material_property(elastic_modulus, poissons_ratio)(P); } int SimpleSand::update_trial_status(const vec& t_strain) { incre_strain = (trial_strain = t_strain) - current_strain; - if(norm(incre_strain) <= tolerance) return SUANPAN_SUCCESS; + if(norm(incre_strain) <= datum::eps) return SUANPAN_SUCCESS; trial_history = current_history; const vec current_alpha(¤t_history(0), 6); @@ -120,11 +113,10 @@ int SimpleSand::update_trial_status(const vec& t_strain) { if(!solve(incre, jacobian, residual)) return SUANPAN_FAIL; - auto error = norm(residual); - - if(1u == counter) ref_error = std::max(1., error); - suanpan_debug("Local iteration error: {:.5E}.\n", error /= ref_error); - if(error <= tolerance || norm(incre) <= tolerance) break; + const auto error = inf_norm(incre); + if(1u == counter) ref_error = error; + suanpan_debug("Local iteration error: {:.5E}.\n", error); + if(error < tolerance * ref_error || (inf_norm(residual) < tolerance && counter > 5u)) break; gamma -= incre(sa); p -= incre(sb); diff --git a/Material/Material3D/Sand/SimpleSand.h b/Material/Material3D/Sand/SimpleSand.h index b35f9cbab..c3323bd11 100644 --- a/Material/Material3D/Sand/SimpleSand.h +++ b/Material/Material3D/Sand/SimpleSand.h @@ -48,8 +48,8 @@ struct DataSimpleSand { const double v0 = 2.; }; -class SimpleSand final : DataSimpleSand, public Material3D { - static constexpr unsigned max_iteration = 20; +class SimpleSand final : protected DataSimpleSand, public Material3D { + static constexpr unsigned max_iteration = 20u; static const mat unit_dev_tensor; static constexpr uword sa = 0, sb = 1; @@ -60,20 +60,21 @@ class SimpleSand final : DataSimpleSand, public Material3D { const double bulk = elastic_modulus / (3. - 6. * poissons_ratio); public: - SimpleSand(unsigned, // tag - double, // elastic modulus - double, // poissons ratio - double, // m - double, // A - double, // h - double, // alpha_c - double, // n_b - double, // n_d - double, // v_c - double, // p_c - double, // lambda_c - double, // v_0 - double = 0. // density + SimpleSand( + unsigned, // tag + double, // elastic modulus + double, // poissons ratio + double, // m + double, // A + double, // h + double, // alpha_c + double, // n_b + double, // n_d + double, // v_c + double, // p_c + double, // lambda_c + double, // v_0 + double = 0. // density ); int initialize(const shared_ptr&) override; diff --git a/Material/Material3D/Wrapper/Rotation3D.cpp b/Material/Material3D/Wrapper/Rotation3D.cpp index b5ed2fe87..aa17e122c 100644 --- a/Material/Material3D/Wrapper/Rotation3D.cpp +++ b/Material/Material3D/Wrapper/Rotation3D.cpp @@ -77,14 +77,14 @@ Rotation3D::Rotation3D(const unsigned T, const unsigned MT, mat&& R) , mat_tag(MT) { form_transformation(std::forward(R)); } int Rotation3D::initialize(const shared_ptr& D) { - mat_obj = suanpan::initialized_material_copy(D, mat_tag); + mat_obj = D->initialized_material_copy(mat_tag); if(nullptr == mat_obj || mat_obj->get_material_type() != MaterialType::D3) { suanpan_error("A valid 3D host material is required.\n"); return SUANPAN_FAIL; } - access::rw(density) = mat_obj->get_parameter(ParameterType::DENSITY); + access::rw(density) = mat_obj->get_density(); trial_stiffness = current_stiffness = initial_stiffness = trans_mat.t() * mat_obj->get_initial_stiffness() * trans_mat; @@ -93,6 +93,8 @@ int Rotation3D::initialize(const shared_ptr& D) { unique_ptr Rotation3D::get_copy() { return make_unique(*this); } +double Rotation3D::get_parameter(const ParameterType P) const { return mat_obj->get_parameter(P); } + int Rotation3D::update_trial_status(const vec& t_strain) { incre_strain = (trial_strain = t_strain) - current_strain; @@ -107,10 +109,8 @@ int Rotation3D::update_trial_status(const vec& t_strain) { } int Rotation3D::clear_status() { - current_strain.zeros(); - trial_strain.zeros(); - current_stress.zeros(); - trial_stress.zeros(); + trial_strain = current_strain.zeros(); + trial_stress = current_stress.zeros(); trial_stiffness = current_stiffness = initial_stiffness; return mat_obj->clear_status(); } diff --git a/Material/Material3D/Wrapper/Rotation3D.h b/Material/Material3D/Wrapper/Rotation3D.h index a04c103e3..a76c14da5 100644 --- a/Material/Material3D/Wrapper/Rotation3D.h +++ b/Material/Material3D/Wrapper/Rotation3D.h @@ -41,20 +41,25 @@ class Rotation3D final : public Material3D { void form_transformation(mat&&); public: - Rotation3D(unsigned, // tag - unsigned, // mat tag - double, // rotation vector - double, // rotation vector - double // rotation vector + Rotation3D( + unsigned, // tag + unsigned, // mat tag + double, // rotation vector + double, // rotation vector + double // rotation vector + ); + Rotation3D( + unsigned, // tag + unsigned, // mat tag + mat&& ); - Rotation3D(unsigned, // tag - unsigned, // mat tag - mat&&); int initialize(const shared_ptr&) override; unique_ptr get_copy() override; + [[nodiscard]] double get_parameter(ParameterType) const override; + int update_trial_status(const vec&) override; int clear_status() override; diff --git a/Material/Material3D/Wrapper/Stacked.cpp b/Material/Material3D/Wrapper/Stacked.cpp index a794ff607..e6182ce8d 100644 --- a/Material/Material3D/Wrapper/Stacked.cpp +++ b/Material/Material3D/Wrapper/Stacked.cpp @@ -23,16 +23,18 @@ Stacked::Stacked(const unsigned T, uvec&& MT) , mat_tag(std::forward(MT)) {} int Stacked::initialize(const shared_ptr& D) { + auto& t_density = access::rw(density); + t_density = 0.; initial_stiffness.zeros(6, 6); mat_pool.clear(); mat_pool.reserve(mat_tag.n_elem); for(const auto I : mat_tag) { - mat_pool.emplace_back(suanpan::initialized_material_copy(D, I)); + mat_pool.emplace_back(D->initialized_material_copy(I)); if(nullptr == mat_pool.back() || mat_pool.back()->get_material_type() != MaterialType::D3) { suanpan_error("A valid 3D host material is required.\n"); return SUANPAN_FAIL; } - access::rw(density) += mat_pool.back()->get_parameter(ParameterType::DENSITY); + t_density += mat_pool.back()->get_density(); initial_stiffness += mat_pool.back()->get_initial_stiffness(); } diff --git a/Material/Material3D/Wrapper/Stacked.h b/Material/Material3D/Wrapper/Stacked.h index 0f39cf38d..77c5a1f0f 100644 --- a/Material/Material3D/Wrapper/Stacked.h +++ b/Material/Material3D/Wrapper/Stacked.h @@ -37,8 +37,9 @@ class Stacked final : public Material3D { std::vector> mat_pool; public: - Stacked(unsigned, // tag - uvec&& // mat tag + Stacked( + unsigned, // tag + uvec&& // mat tag ); int initialize(const shared_ptr&) override; diff --git a/Material/Material3D/Wrapper/StressWrapper.cpp b/Material/Material3D/Wrapper/StressWrapper.cpp new file mode 100644 index 000000000..f63ee8241 --- /dev/null +++ b/Material/Material3D/Wrapper/StressWrapper.cpp @@ -0,0 +1,113 @@ +/******************************************************************************* + * Copyright (C) 2017-2023 Theodore Chang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + ******************************************************************************/ + +#include "StressWrapper.h" +#include + +mat StressWrapper::form_stiffness(const mat& full_stiffness) const { return full_stiffness(F1, F1) - full_stiffness(F1, F2) * solve(full_stiffness(F2, F2), full_stiffness(F2, F1)); } + +StressWrapper::StressWrapper(const unsigned T, const unsigned BT, const unsigned MI, uvec&& FA, uvec&& FB, const MaterialType MT) + : Material(T, MT, 0.) + , F1(std::forward(FA)) + , F2(std::forward(FB)) + , base_tag(BT) + , max_iteration(MI) {} + +int StressWrapper::initialize(const shared_ptr& D) { + base = D->initialized_material_copy(base_tag); + + if(nullptr == base || base->get_material_type() != MaterialType::D3) { + suanpan_error("A valid 3D host material is required.\n"); + return SUANPAN_FAIL; + } + + access::rw(density) = base->get_density(); + + trial_full_strain = current_full_strain.zeros(6); + + trial_stiffness = current_stiffness = initial_stiffness = form_stiffness(base->get_initial_stiffness()); + + return SUANPAN_SUCCESS; +} + +double StressWrapper::get_parameter(const ParameterType P) const { return base->get_parameter(P); } + +int StressWrapper::update_trial_status(const vec& t_strain) { + auto& t_stress = base->get_trial_stress(); + auto& t_stiffness = base->get_trial_stiffness(); + + if(norm(incre_strain = t_strain - trial_strain) <= datum::eps) return SUANPAN_SUCCESS; + + trial_full_strain(F1) = trial_strain = t_strain; + + if(1u == max_iteration) { + trial_full_strain(F2) -= solve(t_stiffness(F2, F2), t_stress(F2) + t_stiffness(F2, F1) * incre_strain); + + if(SUANPAN_SUCCESS != base->update_trial_status(trial_full_strain)) return SUANPAN_FAIL; + } + else { + auto counter = 0u; + auto ref_error = 1.; + while(true) { + // do not fail the analysis here + // some material models may have large tolerance + if(max_iteration == ++counter) break; + + if(SUANPAN_SUCCESS != base->update_trial_status(trial_full_strain)) return SUANPAN_FAIL; + + const vec incre = solve(t_stiffness(F2, F2), t_stress(F2)); + const auto error = inf_norm(incre); + if(1u == counter) ref_error = error; + suanpan_debug("Local iteration error: {:.5E}.\n", error); + if(error < tolerance * ref_error || (inf_norm(t_stress(F2)) < tolerance && counter > 5u)) break; + + trial_full_strain(F2) -= incre; + } + } + + trial_stress = t_stress(F1) - t_stiffness(F1, F2) * solve(t_stiffness(F2, F2), t_stress(F2)); + + trial_stiffness = form_stiffness(t_stiffness); + + return SUANPAN_SUCCESS; +} + +int StressWrapper::clear_status() { + trial_full_strain = current_full_strain.zeros(6); + trial_strain = current_strain.zeros(); + trial_stress = current_stress.zeros(); + trial_stiffness = current_stiffness = initial_stiffness; + return base->clear_status(); +} + +int StressWrapper::commit_status() { + current_full_strain = trial_full_strain; + current_strain = trial_strain; + current_stress = trial_stress; + current_stiffness = trial_stiffness; + return base->commit_status(); +} + +int StressWrapper::reset_status() { + trial_full_strain = current_full_strain; + trial_strain = current_strain; + trial_stress = current_stress; + trial_stiffness = current_stiffness; + return base->reset_status(); +} + +std::vector StressWrapper::record(const OutputType P) { return base->record(P); } diff --git a/Material/Material3D/Wrapper/StressWrapper.h b/Material/Material3D/Wrapper/StressWrapper.h new file mode 100644 index 000000000..b0dd26993 --- /dev/null +++ b/Material/Material3D/Wrapper/StressWrapper.h @@ -0,0 +1,76 @@ +/******************************************************************************* + * Copyright (C) 2017-2023 Theodore Chang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + ******************************************************************************/ +/** + * @class StressWrapper + * @brief A StressWrapper class. + * + * A universal wrapper that wraps 3D material models into other models by setting some stress components to zero. + * + * @author tlc + * @date 22/09/2023 + * @version 0.1.0 + * @file StressWrapper.h + * @addtogroup Material-3D + * @{ + */ + +#ifndef StressWrapper_H +#define StressWrapper_H + +#include +#include + +class StressWrapper : public Material { + const uvec F1, F2; + + const unsigned base_tag; + + const unsigned max_iteration; + + vec trial_full_strain, current_full_strain; + + [[nodiscard]] mat form_stiffness(const mat&) const; + +protected: + ResourceHolder base; + +public: + StressWrapper( + unsigned, // tag + unsigned, // 3D material tag + unsigned, // max iteration + uvec&&, // non-trivial stress DoF + uvec&&, // trivial stress DoF + MaterialType // material type + ); + + int initialize(const shared_ptr&) override; + + [[nodiscard]] double get_parameter(ParameterType) const override; + + int update_trial_status(const vec&) override; + + int clear_status() override; + int commit_status() override; + int reset_status() override; + + std::vector record(OutputType) override; +}; + +#endif + +//! @} diff --git a/Material/Material3D/Wrapper/Substepping.cpp b/Material/Material3D/Wrapper/Substepping.cpp index 31fc78991..68b2caf4b 100644 --- a/Material/Material3D/Wrapper/Substepping.cpp +++ b/Material/Material3D/Wrapper/Substepping.cpp @@ -24,7 +24,7 @@ Substepping::Substepping(const unsigned T, const unsigned MT, const unsigned MI) , mat_tag(MT) {} int Substepping::initialize(const shared_ptr& D) { - current_mat_obj = suanpan::initialized_material_copy(D, mat_tag); + current_mat_obj = D->initialized_material_copy(mat_tag); if(nullptr == current_mat_obj) { suanpan_error("A valid host material is required.\n"); @@ -35,7 +35,7 @@ int Substepping::initialize(const shared_ptr& D) { PureWrapper(this); - access::rw(density) = current_mat_obj->get_parameter(ParameterType::DENSITY); + access::rw(density) = current_mat_obj->get_density(); access::rw(material_type) = current_mat_obj->get_material_type(); return SUANPAN_SUCCESS; @@ -93,12 +93,15 @@ int Substepping::update_trial_status(const vec& t_strain) { auto accumulated_factor = 0., incre_factor = 1.; - unsigned counter = 0, step = 0; + auto counter = 0u, step = 0u; while(true) { - if(++counter == max_iteration) return SUANPAN_FAIL; + if(max_iteration == ++counter) { + suanpan_error("Cannot converge within {} iterations.\n", max_iteration); + return SUANPAN_FAIL; + } if(SUANPAN_SUCCESS != trial_mat_obj->update_trial_status(current_mat_obj->get_current_strain() + (accumulated_factor + incre_factor) * incre_strain)) { - step = 0; + step = 0u; incre_factor *= .5; continue; } @@ -107,8 +110,8 @@ int Substepping::update_trial_status(const vec& t_strain) { if(SUANPAN_SUCCESS != trial_mat_obj->commit_status()) return SUANPAN_FAIL; - if(++step == 3) { - step = 0; + if(++step == 3u) { + step = 0u; incre_factor *= 1.2; } diff --git a/Material/Material3D/Wrapper/Substepping.h b/Material/Material3D/Wrapper/Substepping.h index bad681892..ff12c03f5 100644 --- a/Material/Material3D/Wrapper/Substepping.h +++ b/Material/Material3D/Wrapper/Substepping.h @@ -39,9 +39,10 @@ class Substepping final : public Material { ResourceHolder trial_mat_obj, current_mat_obj; public: - Substepping(unsigned, // tag - unsigned, // mat tag - unsigned // max iteration + Substepping( + unsigned, // tag + unsigned, // mat tag + unsigned // max iteration ); int initialize(const shared_ptr&) override; diff --git a/Material/Material3D/vonMises/ArmstrongFrederick.cpp b/Material/Material3D/vonMises/ArmstrongFrederick.cpp index 90a00cc57..a819ea8e8 100644 --- a/Material/Material3D/vonMises/ArmstrongFrederick.cpp +++ b/Material/Material3D/vonMises/ArmstrongFrederick.cpp @@ -24,7 +24,7 @@ const mat ArmstrongFrederick::unit_dev_tensor = tensor::unit_deviatoric_tensor4( ArmstrongFrederick::ArmstrongFrederick(const unsigned T, const double E, const double V, const double Y, const double S, const double H, const double M, vec&& A, vec&& B, const double R) : DataArmstrongFrederick{E, V, Y, S, H, M, std::forward(A), std::forward(B)} - , Material3D(T, R) { access::rw(tolerance) = 1E-15; } + , Material3D(T, R) {} int ArmstrongFrederick::initialize(const shared_ptr&) { trial_stiffness = current_stiffness = initial_stiffness = tensor::isotropic_stiffness(elastic_modulus, poissons_ratio); @@ -36,19 +36,12 @@ int ArmstrongFrederick::initialize(const shared_ptr&) { unique_ptr ArmstrongFrederick::get_copy() { return make_unique(*this); } -double ArmstrongFrederick::get_parameter(const ParameterType P) const { - if(ParameterType::DENSITY == P) return density; - if(ParameterType::ELASTICMODULUS == P || ParameterType::YOUNGSMODULUS == P || ParameterType::E == P) return elastic_modulus; - if(ParameterType::SHEARMODULUS == P || ParameterType::G == P) return shear; - if(ParameterType::BULKMODULUS == P) return elastic_modulus / (3. - 6. * poissons_ratio); - if(ParameterType::POISSONSRATIO == P) return poissons_ratio; - return 0.; -} +double ArmstrongFrederick::get_parameter(const ParameterType P) const { return material_property(elastic_modulus, poissons_ratio)(P); } int ArmstrongFrederick::update_trial_status(const vec& t_strain) { incre_strain = (trial_strain = t_strain) - current_strain; - if(norm(incre_strain) <= tolerance) return SUANPAN_SUCCESS; + if(norm(incre_strain) <= datum::eps) return SUANPAN_SUCCESS; trial_stress = current_stress + (trial_stiffness = initial_stiffness) * incre_strain; @@ -68,7 +61,8 @@ int ArmstrongFrederick::update_trial_status(const vec& t_strain) { auto gamma = 0.; double norm_xi, jacobian; - unsigned counter = 0; + auto counter = 0u; + auto ref_error = 1.; while(true) { if(max_iteration == ++counter) { suanpan_error("Cannot converge within {} iterations.\n", max_iteration); @@ -99,8 +93,10 @@ int ArmstrongFrederick::update_trial_status(const vec& t_strain) { jacobian = root_three_two * sum_b - three_shear - dk; const auto incre = yield_func / jacobian; - suanpan_debug("Local iteration error: {:.5E}.\n", fabs(incre)); - if(fabs(incre) <= tolerance) break; + const auto error = fabs(incre); + if(1u == counter) ref_error = error; + suanpan_debug("Local iteration error: {:.5E}.\n", error); + if(error < tolerance * ref_error || (fabs(yield_func) < tolerance && counter > 5u)) break; gamma -= incre; p -= incre; @@ -146,12 +142,6 @@ int ArmstrongFrederick::reset_status() { return SUANPAN_SUCCESS; } -vector ArmstrongFrederick::record(const OutputType P) { - if(P == OutputType::PEEQ) return {vec{current_history(0)}}; - - return Material3D::record(P); -} - void ArmstrongFrederick::print() { suanpan_info("A 3D nonlinear hardening model using Armstrong-Frederick kinematic hardening rule.\n"); } diff --git a/Material/Material3D/vonMises/ArmstrongFrederick.h b/Material/Material3D/vonMises/ArmstrongFrederick.h index c85f2717a..be6041fec 100644 --- a/Material/Material3D/vonMises/ArmstrongFrederick.h +++ b/Material/Material3D/vonMises/ArmstrongFrederick.h @@ -48,8 +48,8 @@ struct DataArmstrongFrederick { const vec a, b; }; -class ArmstrongFrederick final : DataArmstrongFrederick, public Material3D { - static constexpr unsigned max_iteration = 20; +class ArmstrongFrederick final : protected DataArmstrongFrederick, public Material3D { + static constexpr unsigned max_iteration = 20u; static const double root_three_two; static const mat unit_dev_tensor; @@ -61,16 +61,17 @@ class ArmstrongFrederick final : DataArmstrongFrederick, public Material3D { const double root_six_shear = sqrt(6.) * shear; public: - ArmstrongFrederick(unsigned, // tag - double, // elastic modulus - double, // poissons ratio - double, // yield stress - double, // saturated stress - double, // linear hardening modulus - double, // m - vec&&, // a - vec&&, // b - double = 0. // density + ArmstrongFrederick( + unsigned, // tag + double, // elastic modulus + double, // poissons ratio + double, // yield stress + double, // saturated stress + double, // linear hardening modulus + double, // m + vec&&, // a + vec&&, // b + double = 0. // density ); int initialize(const shared_ptr&) override; @@ -85,8 +86,6 @@ class ArmstrongFrederick final : DataArmstrongFrederick, public Material3D { int commit_status() override; int reset_status() override; - vector record(OutputType) override; - void print() override; }; diff --git a/Material/Material3D/vonMises/BilinearJ2.cpp b/Material/Material3D/vonMises/BilinearJ2.cpp index 1113982f3..46d3e72fd 100644 --- a/Material/Material3D/vonMises/BilinearJ2.cpp +++ b/Material/Material3D/vonMises/BilinearJ2.cpp @@ -37,19 +37,12 @@ int BilinearJ2::initialize(const shared_ptr&) { unique_ptr BilinearJ2::get_copy() { return make_unique(*this); } -double BilinearJ2::get_parameter(const ParameterType P) const { - if(ParameterType::DENSITY == P) return density; - if(ParameterType::ELASTICMODULUS == P || ParameterType::YOUNGSMODULUS == P || ParameterType::E == P) return elastic_modulus; - if(ParameterType::SHEARMODULUS == P || ParameterType::G == P) return shear_modulus; - if(ParameterType::BULKMODULUS == P) return elastic_modulus / (3. - 6. * poissons_ratio); - if(ParameterType::POISSONSRATIO == P) return poissons_ratio; - return 0.; -} +double BilinearJ2::get_parameter(const ParameterType P) const { return material_property(elastic_modulus, poissons_ratio)(P); } int BilinearJ2::update_trial_status(const vec& t_strain) { incre_strain = (trial_strain = t_strain) - current_strain; - if(norm(incre_strain) <= tolerance) return SUANPAN_SUCCESS; + if(norm(incre_strain) <= datum::eps) return SUANPAN_SUCCESS; trial_stress = current_stress + (trial_stiffness = initial_stiffness) * incre_strain; @@ -104,14 +97,6 @@ int BilinearJ2::reset_status() { return SUANPAN_SUCCESS; } -vector BilinearJ2::record(const OutputType P) { - if(P == OutputType::MISES) return {vec{tensor::stress::norm(tensor::dev(current_stress)) / root_two_third}}; - if(P == OutputType::EEQ) return {vec{root_two_third * tensor::strain::norm(tensor::dev(current_strain))}}; - if(P == OutputType::PEEQ) return {vec{current_history(0)}}; - - return Material3D::record(P); -} - void BilinearJ2::print() { suanpan_info("A 3D bilinear hardening model.\n"); } diff --git a/Material/Material3D/vonMises/BilinearJ2.h b/Material/Material3D/vonMises/BilinearJ2.h index db7c44d0e..f614c312a 100644 --- a/Material/Material3D/vonMises/BilinearJ2.h +++ b/Material/Material3D/vonMises/BilinearJ2.h @@ -42,7 +42,7 @@ struct DataBilinearJ2 { const double beta; // isotropic (1.0) / kinematic (0.0) hardening factor }; -class BilinearJ2 final : DataBilinearJ2, public Material3D { +class BilinearJ2 final : protected DataBilinearJ2, public Material3D { static const double two_third; static const double root_two_third; static const mat unit_dev_tensor; @@ -54,13 +54,14 @@ class BilinearJ2 final : DataBilinearJ2, public Material3D { const double kinematic_modulus = (1. - beta) * elastic_modulus * hardening_ratio / (1. - hardening_ratio); public: - BilinearJ2(unsigned, // tag - double, // elastic modulus - double, // poisson's ratio - double, // initial yield stress - double = 0., // hardening ratio - double = 1., // isotropic (1.0) / kinematic (0.0) hardening factor - double = 0. // density + BilinearJ2( + unsigned, // tag + double, // elastic modulus + double, // poisson's ratio + double, // initial yield stress + double = 0., // hardening ratio + double = 1., // isotropic (1.0) / kinematic (0.0) hardening factor + double = 0. // density ); int initialize(const shared_ptr&) override; @@ -75,8 +76,6 @@ class BilinearJ2 final : DataBilinearJ2, public Material3D { int commit_status() override; int reset_status() override; - vector record(OutputType) override; - void print() override; }; diff --git a/Material/Material3D/vonMises/BilinearPeric.h b/Material/Material3D/vonMises/BilinearPeric.h index a35cadaa3..7ebe1bc58 100644 --- a/Material/Material3D/vonMises/BilinearPeric.h +++ b/Material/Material3D/vonMises/BilinearPeric.h @@ -34,19 +34,20 @@ struct DataBilinearPeric { const double yield_stress, hardening_modulus; }; -class BilinearPeric final : DataBilinearPeric, public NonlinearPeric { +class BilinearPeric final : protected DataBilinearPeric, public NonlinearPeric { [[nodiscard]] double compute_k(double) const override; [[nodiscard]] double compute_dk(double) const override; public: - BilinearPeric(unsigned, // tag - double, // elastic modulus - double, // poisson's ratio - double, // initial yield stress - double = 0., // hardening modulus - double = 0., // mu - double = 0., // epsilon - double = 0. // density + BilinearPeric( + unsigned, // tag + double, // elastic modulus + double, // poisson's ratio + double, // initial yield stress + double = 0., // hardening modulus + double = 0., // mu + double = 0., // epsilon + double = 0. // density ); unique_ptr get_copy() override; diff --git a/Material/Material3D/vonMises/CustomGurson.h b/Material/Material3D/vonMises/CustomGurson.h index e59cf3b6a..67049aec2 100644 --- a/Material/Material3D/vonMises/CustomGurson.h +++ b/Material/Material3D/vonMises/CustomGurson.h @@ -41,16 +41,17 @@ class CustomGurson final : public NonlinearGurson { [[nodiscard]] vec compute_hardening(double) const override; public: - CustomGurson(unsigned, // tag - unsigned, // expression tag - double, // elastic modulus - double, // poisson's ratio - double, // q1 - double, // q2 - double, // fn - double, // sn - double, // en - double = 0. // density + CustomGurson( + unsigned, // tag + unsigned, // expression tag + double, // elastic modulus + double, // poisson's ratio + double, // q1 + double, // q2 + double, // fn + double, // sn + double, // en + double = 0. // density ); int initialize(const shared_ptr&) override; diff --git a/Material/Material3D/vonMises/CustomJ2.h b/Material/Material3D/vonMises/CustomJ2.h index 6c499a374..b59ade6d3 100644 --- a/Material/Material3D/vonMises/CustomJ2.h +++ b/Material/Material3D/vonMises/CustomJ2.h @@ -44,12 +44,13 @@ class CustomJ2 final : public NonlinearJ2 { ResourceHolder k_expression, h_expression; public: - CustomJ2(unsigned, // tag - double, // elastic modulus - double, // poisson's ratio - unsigned, // isotropic hardening function - unsigned, // kinematic hardening function - double = 0. // density + CustomJ2( + unsigned, // tag + double, // elastic modulus + double, // poisson's ratio + unsigned, // isotropic hardening function + unsigned, // kinematic hardening function + double = 0. // density ); int initialize(const shared_ptr&) override; diff --git a/Material/Material3D/vonMises/ExpGurson.cpp b/Material/Material3D/vonMises/ExpGurson.cpp index 5014a810e..0d86af82d 100644 --- a/Material/Material3D/vonMises/ExpGurson.cpp +++ b/Material/Material3D/vonMises/ExpGurson.cpp @@ -17,8 +17,6 @@ #include "ExpGurson.h" -constexpr unsigned ExpGurson::max_iteration = 20; - ExpGurson::ExpGurson(const unsigned T, const double E, const double V, const double YS, const double N, const double Q1, const double Q2, const double FN, const double SN, const double EN, const double R) : DataExpGurson{fabs(YS), std::min(1., N)} , NonlinearGurson(T, E, V, Q1, Q2, FN, SN, EN, R) {} @@ -27,7 +25,8 @@ vec ExpGurson::compute_hardening(const double plastic_strain) const { auto k = 1.; double pow_term; - unsigned counter = 0; + auto counter = 0u; + auto ref_error = 1.; while(true) { if(max_iteration == ++counter) { suanpan_error("Cannot converge within {} iterations.\n", max_iteration); @@ -37,8 +36,11 @@ vec ExpGurson::compute_hardening(const double plastic_strain) const { const auto tmp_term = k + para_c * plastic_strain; pow_term = pow(tmp_term, n - 1.); - const auto incre = (k - pow_term * tmp_term) / (1. - n * pow_term); - if(fabs(incre) <= tolerance) break; + const auto residual = k - pow_term * tmp_term; + const auto incre = residual / (1. - n * pow_term); + const auto error = fabs(incre); + if(1u == counter) ref_error = error; + if(error < tolerance * ref_error || (fabs(residual) < tolerance && counter > 5u)) break; k -= incre; } diff --git a/Material/Material3D/vonMises/ExpGurson.h b/Material/Material3D/vonMises/ExpGurson.h index 57f7ca7a6..331b33a70 100644 --- a/Material/Material3D/vonMises/ExpGurson.h +++ b/Material/Material3D/vonMises/ExpGurson.h @@ -35,25 +35,26 @@ struct DataExpGurson { const double yield_stress, n; }; -class ExpGurson final : DataExpGurson, public NonlinearGurson { - static const unsigned max_iteration; +class ExpGurson final : protected DataExpGurson, public NonlinearGurson { + static constexpr unsigned max_iteration = 20u; const double para_c = 3. * elastic_modulus / (2. + 2. * poissons_ratio) / yield_stress; [[nodiscard]] vec compute_hardening(double) const override; public: - ExpGurson(unsigned, // tag - double, // elastic modulus - double, // poisson's ratio - double, // yield stress - double, // n - double, // q1 - double, // q2 - double, // fn - double, // sn - double, // en - double = 0. // density + ExpGurson( + unsigned, // tag + double, // elastic modulus + double, // poisson's ratio + double, // yield stress + double, // n + double, // q1 + double, // q2 + double, // fn + double, // sn + double, // en + double = 0. // density ); unique_ptr get_copy() override; diff --git a/Material/Material3D/vonMises/ExpJ2.h b/Material/Material3D/vonMises/ExpJ2.h index 343c47192..2d2c93836 100644 --- a/Material/Material3D/vonMises/ExpJ2.h +++ b/Material/Material3D/vonMises/ExpJ2.h @@ -49,20 +49,21 @@ struct DataExpJ2 { const double a, b; }; -class ExpJ2 final : DataExpJ2, public NonlinearJ2 { +class ExpJ2 final : protected DataExpJ2, public NonlinearJ2 { [[nodiscard]] double compute_k(double) const override; [[nodiscard]] double compute_dk(double) const override; [[nodiscard]] double compute_h(double) const override; [[nodiscard]] double compute_dh(double) const override; public: - ExpJ2(unsigned, // tag - double, // elastic modulus - double, // poisson's ratio - double, // yield stress - double, // a - double, // b - double = 0. // density + ExpJ2( + unsigned, // tag + double, // elastic modulus + double, // poisson's ratio + double, // yield stress + double, // a + double, // b + double = 0. // density ); unique_ptr get_copy() override; diff --git a/Material/Material3D/vonMises/MultilinearJ2.h b/Material/Material3D/vonMises/MultilinearJ2.h index 69c7f2443..0efe5e9ac 100644 --- a/Material/Material3D/vonMises/MultilinearJ2.h +++ b/Material/Material3D/vonMises/MultilinearJ2.h @@ -40,11 +40,12 @@ class MultilinearJ2 final : public NonlinearJ2 { [[nodiscard]] double compute_dh(double) const override; public: - MultilinearJ2(unsigned, // tag - double, // elastic modulus - double, // poisson's ratio - mat&&, // backbone - double = 0. // density + MultilinearJ2( + unsigned, // tag + double, // elastic modulus + double, // poisson's ratio + mat&&, // backbone + double = 0. // density ); unique_ptr get_copy() override; diff --git a/Material/Material3D/vonMises/NonlinearGurson.cpp b/Material/Material3D/vonMises/NonlinearGurson.cpp index 9dfd14e91..e17769b6b 100644 --- a/Material/Material3D/vonMises/NonlinearGurson.cpp +++ b/Material/Material3D/vonMises/NonlinearGurson.cpp @@ -24,7 +24,7 @@ const mat NonlinearGurson::unit_dev_tensor = tensor::unit_deviatoric_tensor4(); NonlinearGurson::NonlinearGurson(const unsigned T, const double E, const double V, const double Q1, const double Q2, const double FN, const double SN, const double EN, const double R) : DataNonlinearGurson{E, V, Q1, Q2, FN, SN, EN} - , Material3D(T, R) { access::rw(tolerance) = 1E-13; } + , Material3D(T, R) {} int NonlinearGurson::initialize(const shared_ptr&) { trial_stiffness = current_stiffness = initial_stiffness = tensor::isotropic_stiffness(elastic_modulus, poissons_ratio); @@ -34,19 +34,12 @@ int NonlinearGurson::initialize(const shared_ptr&) { return SUANPAN_SUCCESS; } -double NonlinearGurson::get_parameter(const ParameterType P) const { - if(ParameterType::DENSITY == P) return density; - if(ParameterType::ELASTICMODULUS == P || ParameterType::YOUNGSMODULUS == P || ParameterType::E == P) return elastic_modulus; - if(ParameterType::SHEARMODULUS == P || ParameterType::G == P) return elastic_modulus / (2. + 2. * poissons_ratio); - if(ParameterType::BULKMODULUS == P) return elastic_modulus / (3. - 6. * poissons_ratio); - if(ParameterType::POISSONSRATIO == P) return poissons_ratio; - return 0.; -} +double NonlinearGurson::get_parameter(const ParameterType P) const { return material_property(elastic_modulus, poissons_ratio)(P); } int NonlinearGurson::update_trial_status(const vec& t_strain) { incre_strain = (trial_strain = t_strain) - current_strain; - if(norm(incre_strain) <= tolerance) return SUANPAN_SUCCESS; + if(norm(incre_strain) <= datum::eps) return SUANPAN_SUCCESS; trial_stress = current_stress + (trial_stiffness = initial_stiffness) * incre_strain; @@ -66,7 +59,8 @@ int NonlinearGurson::update_trial_status(const vec& t_strain) { auto gamma = 0.; double denom; - unsigned counter = 0; + auto counter = 0u; + auto ref_error = 1.; while(true) { if(max_iteration == ++counter) { suanpan_error("Cannot converge within {} iterations.\n", max_iteration); @@ -111,9 +105,10 @@ int NonlinearGurson::update_trial_status(const vec& t_strain) { if(!solve(incre, jacobian, residual)) return SUANPAN_FAIL; - const auto error = norm(residual); + const auto error = inf_norm(incre); + if(1u == counter) ref_error = error; suanpan_debug("Local iteration error: {:.5E}.\n", error); - if(error <= tolerance || norm(incre) <= tolerance) break; + if(error < tolerance * ref_error || (inf_norm(residual) < tolerance && counter > 5u)) break; gamma -= incre(0); pe -= incre(1); @@ -166,9 +161,7 @@ int NonlinearGurson::reset_status() { } vector NonlinearGurson::record(const OutputType P) { - if(P == OutputType::PEEQ) return {vec{current_history(0)}}; if(P == OutputType::VF) return {vec{current_history(1)}}; - if(P == OutputType::PE) return {vec{current_strain - solve(initial_stiffness, current_stress)}}; return Material3D::record(P); } diff --git a/Material/Material3D/vonMises/NonlinearGurson.h b/Material/Material3D/vonMises/NonlinearGurson.h index 5ad42daa4..ab9fa3eb5 100644 --- a/Material/Material3D/vonMises/NonlinearGurson.h +++ b/Material/Material3D/vonMises/NonlinearGurson.h @@ -39,7 +39,7 @@ struct DataNonlinearGurson { }; class NonlinearGurson : protected DataNonlinearGurson, public Material3D { - static constexpr unsigned max_iteration = 20; + static constexpr unsigned max_iteration = 20u; static const double sqrt_three_two; static const mat unit_dev_tensor; @@ -52,15 +52,16 @@ class NonlinearGurson : protected DataNonlinearGurson, public Material3D { [[nodiscard]] virtual vec compute_hardening(double) const = 0; public: - NonlinearGurson(unsigned, // tag - double, // elastic modulus - double, // poisson's ratio - double, // q1 - double, // q2 - double, // fn - double, // sn - double, // en - double = 0. // density + NonlinearGurson( + unsigned, // tag + double, // elastic modulus + double, // poisson's ratio + double, // q1 + double, // q2 + double, // fn + double, // sn + double, // en + double = 0. // density ); int initialize(const shared_ptr&) override; diff --git a/Material/Material3D/vonMises/NonlinearJ2.cpp b/Material/Material3D/vonMises/NonlinearJ2.cpp index 3ac50ffb0..b2bea19c2 100644 --- a/Material/Material3D/vonMises/NonlinearJ2.cpp +++ b/Material/Material3D/vonMises/NonlinearJ2.cpp @@ -34,19 +34,12 @@ int NonlinearJ2::initialize(const shared_ptr&) { return SUANPAN_SUCCESS; } -double NonlinearJ2::get_parameter(const ParameterType P) const { - if(ParameterType::DENSITY == P) return density; - if(ParameterType::ELASTICMODULUS == P || ParameterType::YOUNGSMODULUS == P || ParameterType::E == P) return elastic_modulus; - if(ParameterType::SHEARMODULUS == P || ParameterType::G == P) return shear_modulus; - if(ParameterType::BULKMODULUS == P) return elastic_modulus / (3. - 6. * poissons_ratio); - if(ParameterType::POISSONSRATIO == P) return poissons_ratio; - return 0.; -} +double NonlinearJ2::get_parameter(const ParameterType P) const { return material_property(elastic_modulus, poissons_ratio)(P); } int NonlinearJ2::update_trial_status(const vec& t_strain) { incre_strain = (trial_strain = t_strain) - current_strain; - if(norm(incre_strain) <= tolerance) return SUANPAN_SUCCESS; + if(norm(incre_strain) <= datum::eps) return SUANPAN_SUCCESS; trial_stress = current_stress + (trial_stiffness = initial_stiffness) * incre_strain; @@ -69,27 +62,30 @@ int NonlinearJ2::update_trial_status(const vec& t_strain) { auto yield_func = norm_rel_stress - root_two_third * k; - if(yield_func < 0.) return SUANPAN_SUCCESS; + if(yield_func <= 0.) return SUANPAN_SUCCESS; const auto current_h = compute_h(plastic_strain); - auto gamma = 0., incre_h = 0., denom = 0.; - unsigned counter = 0; - while(++counter < max_iteration) { + auto gamma = 0., incre_h = 0.; + double denom; + auto counter = 0u; + auto ref_error = 1.; + while(true) { + if(max_iteration == ++counter) { + suanpan_error("Cannot converge within {} iterations.\n", max_iteration); + return SUANPAN_FAIL; + } + denom = double_shear + two_third * (dk + compute_dh(plastic_strain)); const auto incre_gamma = yield_func / denom; - const auto abs_error = fabs(incre_gamma); - suanpan_debug("Local iteration error: {:.5E}.\n", abs_error); - if(abs_error <= tolerance) break; + const auto error = fabs(incre_gamma); + if(1u == counter) ref_error = error; + suanpan_debug("Local iteration error: {:.5E}.\n", error); + if(error < tolerance * ref_error || ((fabs(yield_func) < tolerance || error < datum::eps) && counter > 5u)) break; incre_h = compute_h(plastic_strain = current_history(0) + root_two_third * (gamma += incre_gamma)) - current_h; update_isotropic_hardening(); yield_func = norm_rel_stress - double_shear * gamma - root_two_third * (k + incre_h); } - if(max_iteration == counter) { - suanpan_error("Cannot converge within {} iterations.\n", max_iteration); - return SUANPAN_FAIL; - } - back_stress += root_two_third * incre_h / norm_rel_stress * rel_stress; auto t_factor = double_shear * gamma / norm_rel_stress; @@ -125,12 +121,6 @@ int NonlinearJ2::reset_status() { return SUANPAN_SUCCESS; } -vector NonlinearJ2::record(const OutputType P) { - if(P == OutputType::PEEQ) return {vec{current_history(0)}}; - - return Material3D::record(P); -} - void NonlinearJ2::print() { suanpan_info("A 3D nonlinear hardening model using von-Mises yielding criterion.\n"); } diff --git a/Material/Material3D/vonMises/NonlinearJ2.h b/Material/Material3D/vonMises/NonlinearJ2.h index 739c14848..8d59cd5ef 100644 --- a/Material/Material3D/vonMises/NonlinearJ2.h +++ b/Material/Material3D/vonMises/NonlinearJ2.h @@ -39,7 +39,7 @@ struct DataNonlinearJ2 { }; class NonlinearJ2 : protected DataNonlinearJ2, public Material3D { - static constexpr unsigned max_iteration = 20; + static constexpr unsigned max_iteration = 20u; static constexpr double two_third = 2. / 3.; static const double root_two_third; static const mat unit_dev_tensor; @@ -54,10 +54,11 @@ class NonlinearJ2 : protected DataNonlinearJ2, public Material3D { [[nodiscard]] virtual double compute_dh(double) const = 0; public: - NonlinearJ2(unsigned, // tag - double, // elastic modulus - double, // poisson's ratio - double = 0. // density + NonlinearJ2( + unsigned, // tag + double, // elastic modulus + double, // poisson's ratio + double = 0. // density ); int initialize(const shared_ptr&) override; @@ -70,8 +71,6 @@ class NonlinearJ2 : protected DataNonlinearJ2, public Material3D { int commit_status() override; int reset_status() override; - vector record(OutputType) override; - void print() override; }; diff --git a/Material/Material3D/vonMises/NonlinearPeric.cpp b/Material/Material3D/vonMises/NonlinearPeric.cpp index 08fddabec..fa96236e8 100644 --- a/Material/Material3D/vonMises/NonlinearPeric.cpp +++ b/Material/Material3D/vonMises/NonlinearPeric.cpp @@ -38,14 +38,7 @@ int NonlinearPeric::initialize(const shared_ptr& D) { return SUANPAN_SUCCESS; } -double NonlinearPeric::get_parameter(const ParameterType P) const { - if(ParameterType::DENSITY == P) return density; - if(ParameterType::ELASTICMODULUS == P || ParameterType::YOUNGSMODULUS == P || ParameterType::E == P) return elastic_modulus; - if(ParameterType::SHEARMODULUS == P || ParameterType::G == P) return shear_modulus; - if(ParameterType::BULKMODULUS == P) return elastic_modulus / (3. - 6. * poissons_ratio); - if(ParameterType::POISSONSRATIO == P) return poissons_ratio; - return 0.; -} +double NonlinearPeric::get_parameter(const ParameterType P) const { return material_property(elastic_modulus, poissons_ratio)(P); } int NonlinearPeric::update_trial_status(const vec& t_strain) { trial_stress = current_stress + (trial_stiffness = initial_stiffness) * (incre_strain = (trial_strain = t_strain) - current_strain); @@ -68,15 +61,24 @@ int NonlinearPeric::update_trial_status(const vec& t_strain) { auto residual = eqv_stress - k; - if(residual < 0.) return SUANPAN_SUCCESS; + if(residual <= 0.) return SUANPAN_SUCCESS; auto gamma = 0., pow_term = 1., denom = *incre_time; - unsigned counter = 0; - while(++counter < max_iteration) { + auto counter = 0u; + auto ref_error = 1.; + while(true) { + if(max_iteration == ++counter) { + suanpan_error("Cannot converge within {} iterations.\n", max_iteration); + return SUANPAN_FAIL; + } + const auto gradient = (triple_shear + factor_a * (eqv_stress - triple_shear * gamma) / denom) * pow_term - dk; const auto incre_gamma = residual / gradient; - suanpan_debug("Local iteration error: {:.5E}.\n", incre_gamma); - if(fabs(incre_gamma) <= tolerance) break; + const auto error = fabs(incre_gamma); + if(1u == counter) ref_error = error; + suanpan_debug("Local iteration error: {:.5E}.\n", error); + if(error < tolerance * ref_error || ((fabs(residual) < tolerance || error < datum::eps) && counter > 5u)) break; + plastic_strain = current_history(0) + (gamma += incre_gamma); denom = *incre_time + mu * gamma; pow_term = pow(*incre_time / denom, epsilon); @@ -84,11 +86,6 @@ int NonlinearPeric::update_trial_status(const vec& t_strain) { residual = (eqv_stress - triple_shear * gamma) * pow_term - k; } - if(max_iteration == counter) { - suanpan_error("Cannot converge within {} iterations.\n", max_iteration); - return SUANPAN_FAIL; - } - trial_stress -= gamma * triple_shear / eqv_stress * dev_stress; trial_stiffness += triple_shear * triple_shear * (gamma / eqv_stress - 1. / (triple_shear + dk / pow_term + factor_a / denom * (eqv_stress - triple_shear * gamma))) / eqv_stress / eqv_stress * dev_stress * dev_stress.t() - triple_shear * double_shear * gamma / eqv_stress * unit_dev_tensor; diff --git a/Material/Material3D/vonMises/NonlinearPeric.h b/Material/Material3D/vonMises/NonlinearPeric.h index d388a9bbd..c0511160f 100644 --- a/Material/Material3D/vonMises/NonlinearPeric.h +++ b/Material/Material3D/vonMises/NonlinearPeric.h @@ -40,8 +40,8 @@ struct DataNonlinearPeric { const double epsilon; }; -class NonlinearPeric : DataNonlinearPeric, public Material3D { - static constexpr unsigned max_iteration = 20; +class NonlinearPeric : protected DataNonlinearPeric, public Material3D { + static constexpr unsigned max_iteration = 20u; static const double root_three_two; static const mat unit_dev_tensor; static const double unit_time; @@ -58,12 +58,13 @@ class NonlinearPeric : DataNonlinearPeric, public Material3D { [[nodiscard]] virtual double compute_dk(double) const = 0; public: - NonlinearPeric(unsigned, // tag - double, // elastic modulus - double, // poisson's ratio - double = 0., // mu - double = 0., // epsilon - double = 0. // density + NonlinearPeric( + unsigned, // tag + double, // elastic modulus + double, // poisson's ratio + double = 0., // mu + double = 0., // epsilon + double = 0. // density ); int initialize(const shared_ptr&) override; diff --git a/Material/Material3D/vonMises/PolyJ2.h b/Material/Material3D/vonMises/PolyJ2.h index 8bf531f93..663f6ac9c 100644 --- a/Material/Material3D/vonMises/PolyJ2.h +++ b/Material/Material3D/vonMises/PolyJ2.h @@ -35,18 +35,19 @@ struct DataPolyJ2 { const vec poly_para; }; -class PolyJ2 final : DataPolyJ2, public NonlinearJ2 { +class PolyJ2 final : protected DataPolyJ2, public NonlinearJ2 { [[nodiscard]] double compute_k(double) const override; [[nodiscard]] double compute_dk(double) const override; [[nodiscard]] double compute_h(double) const override; [[nodiscard]] double compute_dh(double) const override; public: - PolyJ2(unsigned, // tag - double, // elastic modulus - double, // poisson's ratio - vec&&, // poly parameter - double = 0. // density + PolyJ2( + unsigned, // tag + double, // elastic modulus + double, // poisson's ratio + vec&&, // poly parameter + double = 0. // density ); unique_ptr get_copy() override; diff --git a/Material/Material3D/vonMises/TableGurson.cpp b/Material/Material3D/vonMises/TableGurson.cpp index e0d9280c8..2983eeae7 100644 --- a/Material/Material3D/vonMises/TableGurson.cpp +++ b/Material/Material3D/vonMises/TableGurson.cpp @@ -37,12 +37,4 @@ TableGurson::TableGurson(const unsigned T, const double E, const double V, mat&& : NonlinearGurson(T, E, V, Q1, Q2, FN, SN, EN, R) , hardening_table(std::forward(HARDEN)) {} -double TableGurson::get_parameter(const ParameterType P) const { - if(ParameterType::DENSITY == P) return density; - if(ParameterType::ELASTICMODULUS == P || ParameterType::YOUNGSMODULUS == P || ParameterType::E == P) return elastic_modulus; - if(ParameterType::SHEARMODULUS == P || ParameterType::G == P) return elastic_modulus / (2. + 2. * poissons_ratio); - if(ParameterType::POISSONSRATIO == P) return poissons_ratio; - return 0.; -} - unique_ptr TableGurson::get_copy() { return make_unique(*this); } diff --git a/Material/Material3D/vonMises/TableGurson.h b/Material/Material3D/vonMises/TableGurson.h index 80ea36627..2565e3b62 100644 --- a/Material/Material3D/vonMises/TableGurson.h +++ b/Material/Material3D/vonMises/TableGurson.h @@ -32,25 +32,24 @@ #include "NonlinearGurson.h" class TableGurson final : public NonlinearGurson { - mat hardening_table; + const mat hardening_table; [[nodiscard]] vec compute_hardening(double) const override; public: - TableGurson(unsigned, // tag - double, // elastic modulus - double, // poisson's ratio - mat&&, // table - double, // q1 - double, // q2 - double, // fn - double, // sn - double, // en - double = 0. // density + TableGurson( + unsigned, // tag + double, // elastic modulus + double, // poisson's ratio + mat&&, // table + double, // q1 + double, // q2 + double, // fn + double, // sn + double, // en + double = 0. // density ); - [[nodiscard]] double get_parameter(ParameterType) const override; - unique_ptr get_copy() override; }; diff --git a/Material/Material3D/vonMises/VAFCRP.cpp b/Material/Material3D/vonMises/VAFCRP.cpp index cd456a559..36756acaf 100644 --- a/Material/Material3D/vonMises/VAFCRP.cpp +++ b/Material/Material3D/vonMises/VAFCRP.cpp @@ -26,7 +26,7 @@ const mat VAFCRP::unit_dev_tensor = tensor::unit_deviatoric_tensor4(); VAFCRP::VAFCRP(const unsigned T, const double E, const double V, const double Y, const double S, const double H, const double M, const double MU, const double EP, vec&& A, vec&& B, const double R) : DataVAFCRP{E, V, Y, S, H, M, MU, EP, std::forward(A), std::forward(B)} - , Material3D(T, R) { access::rw(tolerance) = 1E-15; } + , Material3D(T, R) {} int VAFCRP::initialize(const shared_ptr& D) { incre_time = &D->get_factory()->modify_incre_time(); @@ -40,14 +40,7 @@ int VAFCRP::initialize(const shared_ptr& D) { unique_ptr VAFCRP::get_copy() { return make_unique(*this); } -double VAFCRP::get_parameter(const ParameterType P) const { - if(ParameterType::DENSITY == P) return density; - if(ParameterType::ELASTICMODULUS == P || ParameterType::YOUNGSMODULUS == P || ParameterType::E == P) return elastic_modulus; - if(ParameterType::SHEARMODULUS == P || ParameterType::G == P) return shear; - if(ParameterType::BULKMODULUS == P) return elastic_modulus / (3. - 6. * poissons_ratio); - if(ParameterType::POISSONSRATIO == P) return poissons_ratio; - return 0.; -} +double VAFCRP::get_parameter(const ParameterType P) const { return material_property(elastic_modulus, poissons_ratio)(P); } int VAFCRP::update_trial_status(const vec& t_strain) { trial_stress = current_stress + (trial_stiffness = initial_stiffness) * (incre_strain = (trial_strain = t_strain) - current_strain); @@ -68,7 +61,8 @@ int VAFCRP::update_trial_status(const vec& t_strain) { auto gamma = 0., exp_gamma = 1.; double norm_xi, jacobian; - unsigned counter = 0; + auto counter = 0u; + auto ref_error = 1.; while(true) { if(max_iteration == ++counter) { suanpan_error("Cannot converge within {} iterations.\n", max_iteration); @@ -99,9 +93,12 @@ int VAFCRP::update_trial_status(const vec& t_strain) { jacobian = exp_gamma * (root_three_two * sum_b - three_shear - q * epsilon * mu / (*incre_time + mu * gamma)) - dk; - const auto incre = (q * exp_gamma - k) / jacobian; - suanpan_debug("Local iteration error: {:.5E}.\n", fabs(incre)); - if(fabs(incre) <= tolerance) break; + const auto residual = q * exp_gamma - k; + const auto incre = residual / jacobian; + const auto error = fabs(incre); + if(1u == counter) ref_error = error; + suanpan_debug("Local iteration error: {:.5E}.\n", error); + if(error < tolerance * ref_error || (fabs(residual) < tolerance && counter > 5u)) break; gamma -= incre; p -= incre; @@ -147,12 +144,6 @@ int VAFCRP::reset_status() { return SUANPAN_SUCCESS; } -vector VAFCRP::record(const OutputType P) { - if(P == OutputType::PEEQ) return {vec{current_history(0)}}; - - return Material3D::record(P); -} - void VAFCRP::print() { suanpan_info("A VADCRP material model.\n"); } diff --git a/Material/Material3D/vonMises/VAFCRP.h b/Material/Material3D/vonMises/VAFCRP.h index 383ea55ab..c6889eea4 100644 --- a/Material/Material3D/vonMises/VAFCRP.h +++ b/Material/Material3D/vonMises/VAFCRP.h @@ -52,8 +52,8 @@ struct DataVAFCRP { const vec a, b; }; -class VAFCRP final : DataVAFCRP, public Material3D { - static constexpr unsigned max_iteration = 20; +class VAFCRP final : protected DataVAFCRP, public Material3D { + static constexpr unsigned max_iteration = 20u; static const double root_three_two; static const mat unit_dev_tensor; @@ -67,18 +67,19 @@ class VAFCRP final : DataVAFCRP, public Material3D { const double root_six_shear = sqrt(6.) * shear; public: - VAFCRP(unsigned, // tag - double, // elastic modulus - double, // poissons ratio - double, // yield stress - double, // saturated stress - double, // linear hardening modulus - double, // m - double, // mu - double, // epsilon - vec&&, // a - vec&&, // b - double = 0. // density + VAFCRP( + unsigned, // tag + double, // elastic modulus + double, // poissons ratio + double, // yield stress + double, // saturated stress + double, // linear hardening modulus + double, // m + double, // mu + double, // epsilon + vec&&, // a + vec&&, // b + double = 0. // density ); int initialize(const shared_ptr&) override; @@ -93,8 +94,6 @@ class VAFCRP final : DataVAFCRP, public Material3D { int commit_status() override; int reset_status() override; - vector record(OutputType) override; - void print() override; }; diff --git a/Material/MaterialOS/CMakeLists.txt b/Material/MaterialOS/CMakeLists.txt new file mode 100644 index 000000000..1d0931770 --- /dev/null +++ b/Material/MaterialOS/CMakeLists.txt @@ -0,0 +1,5 @@ +set(MOS + MaterialOS/MaterialOS.cpp + MaterialOS/ElasticOS.cpp + MaterialOS/Wrapper/UniversalOS.cpp +) diff --git a/Material/MaterialOS/ElasticOS.cpp b/Material/MaterialOS/ElasticOS.cpp new file mode 100644 index 000000000..818c0a3ae --- /dev/null +++ b/Material/MaterialOS/ElasticOS.cpp @@ -0,0 +1,63 @@ +/******************************************************************************* + * Copyright (C) 2017-2023 Theodore Chang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + ******************************************************************************/ + +#include "ElasticOS.h" + +ElasticOS::ElasticOS(const unsigned T, const double E, const double P, const double R) + : DataElasticOS{fabs(E), fabs(P)} + , MaterialOS(T, R) {} + +int ElasticOS::initialize(const shared_ptr&) { + const auto shear_modulus = elastic_modulus / (2. + 2. * poissons_ratio); + initial_stiffness = diagmat(vec{elastic_modulus, shear_modulus, shear_modulus}); + + ConstantStiffness(this); + + return SUANPAN_SUCCESS; +} + +double ElasticOS::get_parameter(const ParameterType P) const { return material_property(elastic_modulus, poissons_ratio)(P); } + +unique_ptr ElasticOS::get_copy() { return make_unique(*this); } + +int ElasticOS::update_trial_status(const vec& t_strain) { + trial_strain = t_strain; + trial_stress = trial_stiffness * trial_strain; + return SUANPAN_SUCCESS; +} + +int ElasticOS::clear_status() { + trial_strain = current_strain.zeros(); + trial_stress = current_stress.zeros(); + return SUANPAN_SUCCESS; +} + +int ElasticOS::commit_status() { + current_strain = trial_strain; + current_stress = trial_stress; + return SUANPAN_SUCCESS; +} + +int ElasticOS::reset_status() { + trial_strain = current_strain; + trial_stress = current_stress; + return SUANPAN_SUCCESS; +} + +void ElasticOS::print() { + suanpan_info("An elastic material with E={:.4E} and nu={:.4E}.\n", elastic_modulus, poissons_ratio); +} diff --git a/Material/MaterialOS/ElasticOS.h b/Material/MaterialOS/ElasticOS.h new file mode 100644 index 000000000..dba2e241c --- /dev/null +++ b/Material/MaterialOS/ElasticOS.h @@ -0,0 +1,70 @@ +/******************************************************************************* + * Copyright (C) 2017-2023 Theodore Chang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + ******************************************************************************/ +/** + * @class ElasticOS + * @brief The ElasticOS class defines a isotropic elastic material for open section + * problems. + * + * The Young's modulus is stored in `elastic_modulus`. The Poisson's ratio is + * stored in `poissons_ratio`. + * + * + * @author tlc + * @date 15/09/2023 + * @version 1.0.0 + * @file ElasticOS.h + * @addtogroup Material-OS + * @{ + */ + +#ifndef ELASTICOS_H +#define ELASTICOS_H + +#include + +struct DataElasticOS { + double elastic_modulus; // elastic modulus + double poissons_ratio; // poissons ratio +}; + +class ElasticOS final : public DataElasticOS, public MaterialOS { +public: + ElasticOS( + unsigned, // tag + double, // elastic modulus + double, // poissons ratio + double = 0. // density + ); + + int initialize(const shared_ptr&) override; + + [[nodiscard]] double get_parameter(ParameterType) const override; + + unique_ptr get_copy() override; + + int update_trial_status(const vec&) override; + + int clear_status() override; + int commit_status() override; + int reset_status() override; + + void print() override; +}; + +#endif + +//! @} diff --git a/Material/MaterialOS/MaterialOS b/Material/MaterialOS/MaterialOS new file mode 100644 index 000000000..c5f1f7451 --- /dev/null +++ b/Material/MaterialOS/MaterialOS @@ -0,0 +1,4 @@ +#include "MaterialOS.h" +#include "ElasticOS.h" + +#include "Wrapper/UniversalOS.h" diff --git a/Material/MaterialOS/MaterialOS.cpp b/Material/MaterialOS/MaterialOS.cpp new file mode 100644 index 000000000..e82208e6e --- /dev/null +++ b/Material/MaterialOS/MaterialOS.cpp @@ -0,0 +1,21 @@ +/******************************************************************************* + * Copyright (C) 2017-2023 Theodore Chang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + ******************************************************************************/ + +#include "MaterialOS.h" + +MaterialOS::MaterialOS(const unsigned T, const double R) + : Material(T, MaterialType::OS, R) {} diff --git a/Material/MaterialOS/MaterialOS.h b/Material/MaterialOS/MaterialOS.h new file mode 100644 index 000000000..c618687b3 --- /dev/null +++ b/Material/MaterialOS/MaterialOS.h @@ -0,0 +1,47 @@ +/******************************************************************************* + * Copyright (C) 2017-2023 Theodore Chang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + ******************************************************************************/ +/** + * @class MaterialOS + * @brief The MaterialOS class. + * + * @author tlc + * @date 15/09/2023 + * @version 0.1.0 + * @file MaterialOS.h + * @addtogroup Material-OS + * @ingroup Material + * @{ + */ + +#ifndef MATERIALOS_H +#define MATERIALOS_H + +#include + +using std::vector; + +class MaterialOS : public Material { +public: + MaterialOS( + unsigned, // tag + double // density + ); +}; + +#endif + +//! @} diff --git a/Material/MaterialOS/Wrapper/UniversalOS.cpp b/Material/MaterialOS/Wrapper/UniversalOS.cpp new file mode 100644 index 000000000..fafdd18ac --- /dev/null +++ b/Material/MaterialOS/Wrapper/UniversalOS.cpp @@ -0,0 +1,94 @@ +/******************************************************************************* + * Copyright (C) 2017-2023 Theodore Chang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + ******************************************************************************/ + +#include "UniversalOS.h" +#include + +UniversalOS::UniversalOS(const unsigned T, const unsigned BT, const unsigned MI, uvec&& FA, uvec&& FB) + : StressWrapper(T, BT, MI, std::forward(FA), std::forward(FB), MaterialType::OS) {} + +void UniversalOS::print() { + suanpan_info("An open section material wrapper.\n"); + suanpan_info("Strain:", current_strain); + suanpan_info("Stress:", current_stress); + if(base) base->print(); +} + +OS146::OS146(const unsigned T, const unsigned BT, const unsigned MI) + : UniversalOS(T, BT, MI, uvec{0, 3, 5}, uvec{1, 2, 4}) {} + +unique_ptr OS146::get_copy() { return make_unique(*this); } + +OS146S::OS146S(const unsigned T, const unsigned BT, const double G) + : Material(T, MaterialType::OS) + , base_tag(BT) + , shear_modulus(G) {} + +int OS146S::initialize(const shared_ptr& D) { + base = D->initialized_material_copy(base_tag); + + if(nullptr == base || base->get_material_type() != MaterialType::D1) { + suanpan_error("A valid 1D host material is required.\n"); + return SUANPAN_FAIL; + } + + access::rw(density) = base->get_density(); + + trial_stiffness = current_stiffness = initial_stiffness = diagmat(vec{base->get_initial_stiffness()(0), shear_modulus, shear_modulus}); + + return SUANPAN_SUCCESS; +} + +double OS146S::get_parameter(const ParameterType P) const { return base->get_parameter(P); } + +unique_ptr OS146S::get_copy() { return make_unique(*this); } + +int OS146S::update_trial_status(const vec& t_strain) { + trial_strain = t_strain; + if(SUANPAN_SUCCESS != base->update_trial_status(t_strain(0))) return SUANPAN_FAIL; + + trial_stress = shear_modulus * trial_strain; + trial_stress(0) = base->get_trial_stress()(0); + trial_stiffness = diagmat(vec{base->get_trial_stiffness()(0), shear_modulus, shear_modulus}); + + return SUANPAN_SUCCESS; +} + +int OS146S::clear_status() { + trial_strain = current_strain.zeros(); + trial_stress = current_stress.zeros(); + trial_stiffness = current_stiffness = initial_stiffness; + return base->clear_status(); +} + +int OS146S::commit_status() { + current_strain = trial_strain; + current_stress = trial_stress; + current_stiffness = trial_stiffness; + return base->commit_status(); +} + +int OS146S::reset_status() { + trial_strain = current_strain; + trial_stress = current_stress; + trial_stiffness = current_stiffness; + return base->reset_status(); +} + +std::vector OS146S::record(const OutputType P) { return base->record(P); } + +void OS146S::print() { if(base) base->print(); } diff --git a/Material/Material2D/Bilinear2D.h b/Material/MaterialOS/Wrapper/UniversalOS.h similarity index 52% rename from Material/Material2D/Bilinear2D.h rename to Material/MaterialOS/Wrapper/UniversalOS.h index 11f9d288f..19388fb56 100644 --- a/Material/Material2D/Bilinear2D.h +++ b/Material/MaterialOS/Wrapper/UniversalOS.h @@ -15,48 +15,59 @@ * along with this program. If not, see . ******************************************************************************/ /** - * @class Bilinear2D - * @brief A Bilinear2D class. + * @class UniversalOS + * @brief A UniversalOS class. * @author tlc - * @date 04/07/2018 - * @version 0.2.0 - * @file Bilinear2D.h - * @addtogroup Material-2D + * @date 21/09/2023 + * @version 0.1.0 + * @file UniversalOS.h + * @addtogroup Material-OS * @{ */ -#ifndef BILINEAR2D_H -#define BILINEAR2D_H +#ifndef UNIVERSALOS_H +#define UNIVERSALOS_H -#include -#include +#include -class Bilinear2D final : public Material2D { - static const uvec F1, F2; +class UniversalOS : public StressWrapper { +public: + UniversalOS( + unsigned, // tag + unsigned, // 3D material tag + unsigned, // max iteration + uvec&&, uvec&& + ); + + void print() override; +}; + +class OS146 final : public UniversalOS { +public: + OS146( + unsigned, // tag + unsigned, // 3D material tag + unsigned // max iteration + ); - const double elastic_modulus; - const double poissons_ratio; + unique_ptr get_copy() override; +}; - vec current_full_strain; - vec trial_full_strain; +class OS146S final : public Material { + const unsigned base_tag; - BilinearJ2 base; + const double shear_modulus; - static mat form_stiffness(const mat&); + ResourceHolder base; public: - Bilinear2D(unsigned, // tag - double, // elastic modulus - double, // poisson's ratio - double, // initial yield stress - double, // hardening ratio - double = 1., // isotropic (1.0) / kinematic (0.0) hardening factor - PlaneType = PlaneType::S, // plane stress or plane strain - double = 0. // density + OS146S( + unsigned, // tag + unsigned, // 3D material tag + double // shear modulus ); int initialize(const shared_ptr&) override; - void initialize_couple(const shared_ptr&) override; [[nodiscard]] double get_parameter(ParameterType) const override; @@ -68,9 +79,9 @@ class Bilinear2D final : public Material2D { int commit_status() override; int reset_status() override; - void print() override; + std::vector record(OutputType) override; - vector record(OutputType) override; + void print() override; }; #endif diff --git a/Material/MaterialParser.cpp b/Material/MaterialParser.cpp index 43be4b38b..9132dfda8 100644 --- a/Material/MaterialParser.cpp +++ b/Material/MaterialParser.cpp @@ -340,64 +340,6 @@ void new_bilinear1d(unique_ptr& return_obj, istringstream& command) { return_obj = make_unique(tag, elastic_modulus, yield_stress, hardening_ratio, beta, density); } -void new_bilinear2d(unique_ptr& return_obj, istringstream& command) { - unsigned tag; - if(!get_input(command, tag)) { - suanpan_error("A valid tag is required.\n"); - return; - } - - double elastic_modulus; - if(!get_input(command, elastic_modulus)) { - suanpan_error("A valid elastic modulus is required.\n"); - return; - } - - double poissons_ratio; - if(!get_input(command, poissons_ratio)) { - suanpan_error("A valid poissons ratio is required.\n"); - return; - } - - double yield_stress; - if(!get_input(command, yield_stress)) { - suanpan_error("A valid yield stress is required.\n"); - return; - } - - auto hardening_ratio = 0.; - if(command.eof()) - suanpan_debug("Zero hardening ratio assumed.\n"); - else if(!get_input(command, hardening_ratio)) { - suanpan_error("A valid hardening ratio is required.\n"); - return; - } - - auto beta = 1.; - if(command.eof()) - suanpan_debug("Isotropic hardening assumed.\n"); - else if(!get_input(command, beta)) { - suanpan_error("A valid beta is required.\n"); - return; - } - - unsigned material_type = 0; - if(!command.eof() && !get_input(command, material_type)) { - suanpan_error("A valid material type is required.\n"); - return; - } - - auto density = 0.; - if(command.eof()) - suanpan_debug("Zero density assumed.\n"); - else if(!get_input(command, density)) { - suanpan_error("A valid density is required.\n"); - return; - } - - return_obj = make_unique(tag, elastic_modulus, poissons_ratio, yield_stress, hardening_ratio, beta, material_type == 0 ? PlaneType::S : PlaneType::E, density); -} - void new_bilinearcc(unique_ptr& return_obj, istringstream& command) { unsigned tag; if(!get_input(command, tag)) { @@ -975,25 +917,30 @@ void new_customcdp(unique_ptr& return_obj, istringstream& command) { return_obj = make_unique(tag, expressions(0), expressions(1), pool(0), pool(1), pool(2), pool(3), pool(4), pool(5), pool(6), pool(7)); } -void new_cdpm2(unique_ptr& return_obj, istringstream& command, const unsigned damage_type) { +void new_cdpm2(unique_ptr& return_obj, istringstream& command, const CDPM2::DamageType damage_type) { unsigned tag; if(!get_input(command, tag)) { suanpan_error("A valid tag is required.\n"); return; } - vec para_pool{3E4, .3, 3., 30., .3, .01, .85, .08, .003, 2., 1E-6, 5., 2E-4, 1E-4, 0.}; + vec para_pool{3E4, .3, 3., 30., .3, .01, .85, .08, .003, 2., 1E-6, 5., 5E-4, 5E-4, 0.}; if(!get_optional_input(command, para_pool)) { suanpan_error("A valid parameter is required.\n"); return; } - auto dt = CDPM2::DamageType::ISOTROPIC; - if(0 == damage_type) dt = CDPM2::DamageType::NODAMAGE; - else if(2 == damage_type) dt = CDPM2::DamageType::ANISOTROPIC; + if(para_pool(4) < 0. || para_pool(4) > 1.) { + suanpan_error("Initial ratio qh0 must be in [0,1].\n"); + return; + } + if(para_pool(5) + para_pool(4) > 1.) { + suanpan_error("Hardeinng modulus hp must be smaller than 1-qh0.\n"); + return; + } - return_obj = make_unique(tag, para_pool(0), para_pool(1), para_pool(2), para_pool(3), para_pool(4), para_pool(5), para_pool(6), para_pool(7), para_pool(8), para_pool(9), para_pool(10), para_pool(11), para_pool(12), para_pool(13), dt, para_pool(14)); + return_obj = make_unique(tag, para_pool(0), para_pool(1), para_pool(2), para_pool(3), para_pool(4), para_pool(5), para_pool(6), para_pool(7), para_pool(8), para_pool(9), para_pool(10), para_pool(11), para_pool(12), para_pool(13), damage_type, para_pool(14)); } void new_concrete21(unique_ptr& return_obj, istringstream& command) { @@ -1130,6 +1077,45 @@ void new_concreteexp(unique_ptr& return_obj, istringstream& command) { return_obj = make_unique(tag, elastic_modulus, f_t, a_t, g_t, f_c, a_c, g_c, middle_point, density); } +void new_concretek4(unique_ptr& return_obj, istringstream& command) { + unsigned tag; + if(!get_input(command, tag)) { + suanpan_error("A valid tag is required.\n"); + return; + } + + double elastic_modulus, hardening; + if(!get_input(command, elastic_modulus, hardening)) { + suanpan_error("A valid modulus is required.\n"); + return; + } + + vec pool(8); + if(!get_input(command, pool)) { + suanpan_error("A valid parameter is required.\n"); + return; + } + + auto density = 0.; + if(command.eof()) + suanpan_debug("Zero density assumed.\n"); + else if(!get_input(command, density)) { + suanpan_error("A valid density is required.\n"); + return; + } + + auto enable_damage = true, enable_crack_closing = true; + if(!command.eof()) { + if(!get_input(command, enable_damage, enable_crack_closing)) { + suanpan_error("A valid flag is required.\n"); + return; + } + suanpan_warning("Internal flags are set.\n"); + } + + return_obj = make_unique(tag, elastic_modulus, hardening, std::move(pool), density, enable_damage, enable_crack_closing); +} + void new_concretetable(unique_ptr& return_obj, istringstream& command) { unsigned tag; if(!get_input(command, tag)) { @@ -1182,9 +1168,9 @@ void new_concretetsai(unique_ptr& return_obj, istringstream& command) double input; while(!command.eof() && get_input(command, input)) para.emplace_back(input); - if(para.size() == 7) return_obj = make_unique(tag, para[0], para[1], para[2], para[3], para[4], para[5], para[6], 0.); + if(para.size() == 7) return_obj = make_unique(tag, para[0], para[1], para[2], para[3], para[4], para[5], para[6]); else if(para.size() == 8) return_obj = make_unique(tag, para[0], para[1], para[2], para[3], para[4], para[5], para[6], para[7]); - else if(para.size() == 9) return_obj = make_unique(tag, para[0], para[1], para[2], para[3], para[4], para[5], para[6], para[7], para[8], 0.); + else if(para.size() == 9) return_obj = make_unique(tag, para[0], para[1], para[2], para[3], para[4], para[5], para[6], para[7], para[8]); else if(para.size() == 10) return_obj = make_unique(tag, para[0], para[1], para[2], para[3], para[4], para[5], para[6], para[7], para[8], para[9]); else suanpan_error("7, 8, 9 or 10 double inputs are required.\n"); @@ -1786,12 +1772,8 @@ void new_expj2(unique_ptr& return_obj, istringstream& command) { suanpan_error("A valid yield stress is required.\n"); return; } - if(!get_input(command, a)) { - suanpan_error("A valid a is required.\n"); - return; - } - if(!get_input(command, b)) { - suanpan_error("A valid b is required.\n"); + if(!get_input(command, a, b)) { + suanpan_error("A valid parameter is required.\n"); return; } @@ -2076,6 +2058,36 @@ void new_isotropicelastic3d(unique_ptr& return_obj, istringstream& com return_obj = make_unique(tag, elastic_modulus, poissons_ratio, density); } +void new_elasticos(unique_ptr& return_obj, istringstream& command) { + unsigned tag; + if(!get_input(command, tag)) { + suanpan_error("A valid tag is required.\n"); + return; + } + + double elastic_modulus; + if(!get_input(command, elastic_modulus)) { + suanpan_error("A valid elastic modulus is required.\n"); + return; + } + + double poissons_ratio; + if(!get_input(command, poissons_ratio)) { + suanpan_error("A valid poissons ratio is required.\n"); + return; + } + + auto density = 0.; + if(command.eof()) + suanpan_debug("Zero density assumed.\n"); + else if(!get_input(command, density)) { + suanpan_error("A valid density is required.\n"); + return; + } + + return_obj = make_unique(tag, elastic_modulus, poissons_ratio, density); +} + void new_kelvin(unique_ptr& return_obj, istringstream& command) { unsigned tag; if(!get_input(command, tag)) { @@ -2387,7 +2399,7 @@ void new_multilinearj2(unique_ptr& return_obj, istringstream& command) return; } - auto density = 0.; + double density; if(!get_input(command, density)) { suanpan_error("A valid density is required.\n"); return; @@ -2424,7 +2436,7 @@ void new_multilinearmises1d(unique_ptr& return_obj, istringstream& com return; } - auto density = 0.; + double density; if(!get_input(command, density)) { suanpan_error("A valid density is required.\n"); return; @@ -2611,7 +2623,7 @@ void new_planestrain(unique_ptr& return_obj, istringstream& command, c return_obj = make_unique(tag, full_tag, type); } -void new_planestress(unique_ptr& return_obj, istringstream& command) { +template void new_wrapper(unique_ptr& return_obj, istringstream& command) { unsigned tag; if(!get_input(command, tag)) { suanpan_error("A valid tag is required.\n"); @@ -2630,13 +2642,29 @@ void new_planestress(unique_ptr& return_obj, istringstream& command) { return; } - string use_matrix = "true"; - if(!command.eof() && !get_input(command, use_matrix)) { - suanpan_error("A valid flag to indicate if to use the matrix in iteration is required.\n"); + return_obj = make_unique(tag, full_tag, max_iteration); +} + +void new_os146s(unique_ptr& return_obj, istringstream& command) { + unsigned tag; + if(!get_input(command, tag)) { + suanpan_error("A valid tag is required.\n"); + return; + } + + unsigned full_tag; + if(!get_input(command, full_tag)) { + suanpan_error("A valid reference material tag is required.\n"); + return; + } + + double shear_modulus; + if(!get_input(command, shear_modulus)) { + suanpan_error("A valid shear modulus is required.\n"); return; } - return_obj = make_unique(tag, full_tag, max_iteration, is_true(use_matrix)); + return_obj = make_unique(tag, full_tag, shear_modulus); } void new_polyelastic1d(unique_ptr& return_obj, istringstream& command) { @@ -2871,7 +2899,7 @@ void new_substepping(unique_ptr& return_obj, istringstream& command) { return; } - unsigned max_iteration = 20; + auto max_iteration = 20u; if(!get_optional_input(command, max_iteration)) { suanpan_error("A valid maximum iteration is required.\n"); return; @@ -3038,7 +3066,7 @@ void new_tablegurson(unique_ptr& return_obj, istringstream& command) { return_obj = make_unique(tag, para_pool(0), para_pool(1), std::move(hardening_table), para_pool(2), para_pool(3), para_pool(4), para_pool(5), para_pool(6), para_pool(7)); } -void new_trilineardegradation(unique_ptr& return_obj, istringstream& command) { +void new_trilinearstraindegradation(unique_ptr& return_obj, istringstream& command) { unsigned tag; if(!get_input(command, tag)) { suanpan_error("A valid tag is required.\n"); @@ -3065,49 +3093,34 @@ void new_trilineardegradation(unique_ptr& return_obj, istringstream& c return; } - return_obj = make_unique(tag, mat_tag, s_strain, e_strain, e_damage); + return_obj = make_unique(tag, mat_tag, s_strain, e_strain, e_damage); } -void new_customdegradation(unique_ptr& return_obj, istringstream& command) { - unsigned tag, mat_tag, expression_tag; - if(!get_input(command, tag, mat_tag, expression_tag)) { +void new_customdegradation(unique_ptr& return_obj, istringstream& command, const bool if_strain) { + unsigned tag, mat_tag, p_expression_tag, n_expression_tag; + if(!get_input(command, tag, mat_tag, p_expression_tag)) { suanpan_error("A valid tag is required.\n"); return; } - return_obj = make_unique(tag, mat_tag, expression_tag); -} - -void new_trivial(unique_ptr& return_obj, istringstream& command) { - unsigned tag; - if(!get_input(command, tag)) { + if(command.eof()) n_expression_tag = p_expression_tag; + else if(!get_input(command, n_expression_tag)) { suanpan_error("A valid tag is required.\n"); return; } - return_obj = make_unique(tag); + if(if_strain) return_obj = make_unique(tag, mat_tag, p_expression_tag, n_expression_tag); + else return_obj = make_unique(tag, mat_tag, p_expression_tag, n_expression_tag); } -void new_uniaxial(unique_ptr& return_obj, istringstream& command) { +void new_trivial(unique_ptr& return_obj, istringstream& command) { unsigned tag; if(!get_input(command, tag)) { suanpan_error("A valid tag is required.\n"); return; } - unsigned full_tag; - if(!get_input(command, full_tag)) { - suanpan_error("A valid reference material tag is required.\n"); - return; - } - - auto max_iteration = 1; - if(!command.eof() && !get_input(command, max_iteration)) { - suanpan_error("A valid number for maximum iteration is required.\n"); - return; - } - - return_obj = make_unique(tag, full_tag, max_iteration); + return_obj = make_unique(tag); } void new_vafcrp(unique_ptr& return_obj, istringstream& command) { @@ -3338,18 +3351,18 @@ int create_new_material(const shared_ptr& domain, istringstream& com unique_ptr new_material = nullptr; - if(is_equal(material_id, "AFC01")) new_afc01(new_material, command); - else if(is_equal(material_id, "AFC")) new_afc01(new_material, command); + if(is_equal(material_id, "AFC")) new_afc01(new_material, command); + else if(is_equal(material_id, "AFC01")) new_afc01(new_material, command); else if(is_equal(material_id, "AFC02")) new_afc02(new_material, command); else if(is_equal(material_id, "AFC03")) new_afc03(new_material, command); else if(is_equal(material_id, "AFCN")) new_afc03(new_material, command); else if(is_equal(material_id, "AFCS")) new_afc02(new_material, command); else if(is_equal(material_id, "ArmstrongFrederick")) new_armstrongfrederick(new_material, command); else if(is_equal(material_id, "ArmstrongFrederick1D")) new_armstrongfrederick1d(new_material, command); + else if(is_equal(material_id, "AsymmElastic1D")) new_asymmelastic1d(new_material, command); else if(is_equal(material_id, "Axisymmetric")) new_axisymmetric(new_material, command); else if(is_equal(material_id, "AxisymmetricElastic")) new_axisymmetricelastic(new_material, command); else if(is_equal(material_id, "Bilinear1D")) new_bilinear1d(new_material, command); - else if(is_equal(material_id, "Bilinear2D")) new_bilinear2d(new_material, command); else if(is_equal(material_id, "BilinearCC")) new_bilinearcc(new_material, command); else if(is_equal(material_id, "BilinearDP")) new_bilineardp(new_material, command); else if(is_equal(material_id, "BilinearElastic1D")) new_bilinearelastic1d(new_material, command); @@ -3360,38 +3373,40 @@ int create_new_material(const shared_ptr& domain, istringstream& com else if(is_equal(material_id, "BilinearPeric")) new_bilinearperic(new_material, command); else if(is_equal(material_id, "BilinearPO")) new_bilinearpo(new_material, command); else if(is_equal(material_id, "BilinearViscosity")) new_bilinearviscosity(new_material, command); - else if(is_equal(material_id, "CustomViscosity")) new_customviscosity(new_material, command); else if(is_equal(material_id, "BlatzKo")) new_blatzko(new_material, command); else if(is_equal(material_id, "BoucWen")) new_boucwen(new_material, command); else if(is_equal(material_id, "BWBN")) new_bwbn(new_material, command); else if(is_equal(material_id, "CDP")) new_cdp(new_material, command); - else if(is_equal(material_id, "CDPM2")) new_cdpm2(new_material, command, 1); - else if(is_equal(material_id, "CDPM2ANISO")) new_cdpm2(new_material, command, 2); - else if(is_equal(material_id, "CDPM2ISO")) new_cdpm2(new_material, command, 1); - else if(is_equal(material_id, "CDPM2NO")) new_cdpm2(new_material, command, 0); + else if(is_equal(material_id, "CDPM2")) new_cdpm2(new_material, command, CDPM2::DamageType::ISOTROPIC); + else if(is_equal(material_id, "CDPM2ANISO")) new_cdpm2(new_material, command, CDPM2::DamageType::ANISOTROPIC); + else if(is_equal(material_id, "CDPM2ISO")) new_cdpm2(new_material, command, CDPM2::DamageType::ISOTROPIC); + else if(is_equal(material_id, "CDPM2NO")) new_cdpm2(new_material, command, CDPM2::DamageType::NODAMAGE); else if(is_equal(material_id, "Concrete21")) new_concrete21(new_material, command); else if(is_equal(material_id, "Concrete22")) new_concrete22(new_material, command); else if(is_equal(material_id, "ConcreteCM")) new_concretecm(new_material, command); else if(is_equal(material_id, "ConcreteExp")) new_concreteexp(new_material, command); + else if(is_equal(material_id, "ConcreteK4")) new_concretek4(new_material, command); else if(is_equal(material_id, "ConcreteTable")) new_concretetable(new_material, command); else if(is_equal(material_id, "ConcreteTsai")) new_concretetsai(new_material, command); else if(is_equal(material_id, "CoulombFriction")) new_coulombfriction(new_material, command); else if(is_equal(material_id, "CustomCC")) new_customcc(new_material, command); else if(is_equal(material_id, "CustomCDP")) new_customcdp(new_material, command); else if(is_equal(material_id, "CustomDP")) new_customdp(new_material, command); - else if(is_equal(material_id, "CustomDegradation")) new_customdegradation(new_material, command); else if(is_equal(material_id, "CustomElastic1D")) new_customelastic1d(new_material, command); else if(is_equal(material_id, "CustomGurson")) new_customgurson(new_material, command); else if(is_equal(material_id, "CustomGurson1D")) new_customgurson1d(new_material, command); else if(is_equal(material_id, "CustomHoffman")) new_customhoffman(new_material, command); else if(is_equal(material_id, "CustomJ2")) new_customj2(new_material, command); else if(is_equal(material_id, "CustomMises1D")) new_custommises1d(new_material, command); + else if(is_equal(material_id, "CustomStrainDegradation")) new_customdegradation(new_material, command, true); + else if(is_equal(material_id, "CustomStressDegradation")) new_customdegradation(new_material, command, false); + else if(is_equal(material_id, "CustomViscosity")) new_customviscosity(new_material, command); else if(is_equal(material_id, "DafaliasManzari")) new_dafaliasmanzari(new_material, command); else if(is_equal(material_id, "Dhakal")) new_dhakal(new_material, command); - else if(is_equal(material_id, "AsymmElastic1D")) new_asymmelastic1d(new_material, command); else if(is_equal(material_id, "Elastic1D")) new_elastic1d(new_material, command); else if(is_equal(material_id, "Elastic2D")) new_elastic2d(new_material, command); else if(is_equal(material_id, "Elastic3D")) new_isotropicelastic3d(new_material, command); + else if(is_equal(material_id, "ElasticOS")) new_elasticos(new_material, command); else if(is_equal(material_id, "ExpCC")) new_expcc(new_material, command); else if(is_equal(material_id, "ExpDP")) new_expdp(new_material, command); else if(is_equal(material_id, "ExpGurson")) new_expgurson(new_material, command); @@ -3419,10 +3434,12 @@ int create_new_material(const shared_ptr& domain, istringstream& com else if(is_equal(material_id, "NLE3D01")) new_nle3d01(new_material, command); else if(is_equal(material_id, "Nonviscous01")) new_nonviscous01(new_material, command); else if(is_equal(material_id, "OrthotropicElastic3D")) new_orthotropicelastic3d(new_material, command); + else if(is_equal(material_id, "OS146")) new_wrapper(new_material, command); + else if(is_equal(material_id, "OS146S")) new_os146s(new_material, command); else if(is_equal(material_id, "ParabolicCC")) new_paraboliccc(new_material, command); else if(is_equal(material_id, "Parallel")) new_parallel(new_material, command); else if(is_equal(material_id, "PlaneStrain")) new_planestrain(new_material, command, 0); - else if(is_equal(material_id, "PlaneStress")) new_planestress(new_material, command); + else if(is_equal(material_id, "PlaneStress")) new_wrapper(new_material, command); else if(is_equal(material_id, "PlaneSymmetric13")) new_planestrain(new_material, command, 1); else if(is_equal(material_id, "PlaneSymmetric23")) new_planestrain(new_material, command, 2); else if(is_equal(material_id, "PolyElastic1D")) new_polyelastic1d(new_material, command); @@ -3443,9 +3460,9 @@ int create_new_material(const shared_ptr& domain, istringstream& com else if(is_equal(material_id, "TableGurson")) new_tablegurson(new_material, command); else if(is_equal(material_id, "Tanh1D")) new_tanh1d(new_material, command); else if(is_equal(material_id, "TimberPD")) new_timberpd(new_material, command); - else if(is_equal(material_id, "TrilinearDegradation")) new_trilineardegradation(new_material, command); + else if(is_equal(material_id, "TrilinearStrainDegradation")) new_trilinearstraindegradation(new_material, command); else if(is_equal(material_id, "Trivial")) new_trivial(new_material, command); - else if(is_equal(material_id, "Uniaxial")) new_uniaxial(new_material, command); + else if(is_equal(material_id, "Uniaxial")) new_wrapper(new_material, command); else if(is_equal(material_id, "VAFCRP")) new_vafcrp(new_material, command); else if(is_equal(material_id, "VAFCRP1D")) new_vafcrp1d(new_material, command); else if(is_equal(material_id, "Viscosity01")) new_viscosity01(new_material, command); diff --git a/Material/MaterialTester.cpp b/Material/MaterialTester.cpp index 684193959..4802b9b82 100644 --- a/Material/MaterialTester.cpp +++ b/Material/MaterialTester.cpp @@ -339,7 +339,7 @@ int test_material_with_base3d(const shared_ptr& domain, istringstrea const auto material = domain->get_material(material_tag)->get_copy(); - if(!initialise_material(domain, material, incre.n_elem)) return {}; + if(!initialise_material(domain, material, incre.n_elem)) return SUANPAN_SUCCESS; save_result(material_tester(material, load_step, incre, base)); diff --git a/Material/ParameterType.h b/Material/ParameterType.h new file mode 100644 index 000000000..ab95848d5 --- /dev/null +++ b/Material/ParameterType.h @@ -0,0 +1,55 @@ +/******************************************************************************* + * Copyright (C) 2017-2023 Theodore Chang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + ******************************************************************************/ + +#ifndef PARAMETERTYPE_H +#define PARAMETERTYPE_H + +enum class ParameterType { + ELASTICMODULUS, + POISSONSRATIO, + SHEARMODULUS, + BULKMODULUS, + PEAKSTRAIN, + CRACKSTRAIN +}; + +struct material_property { + const double elastic_modulus, poissons_ratio; + + material_property(const double E, const double P) + : elastic_modulus(E) + , poissons_ratio(P) {} + + double operator()(const ParameterType P) const { + switch(P) { + case ParameterType::ELASTICMODULUS: + return elastic_modulus; + case ParameterType::POISSONSRATIO: + return poissons_ratio; + case ParameterType::SHEARMODULUS: + return elastic_modulus / (2. + 2. * poissons_ratio); + case ParameterType::BULKMODULUS: + return elastic_modulus / (3. - 6. * poissons_ratio); + case ParameterType::PEAKSTRAIN: + case ParameterType::CRACKSTRAIN: + default: + return 0.; + } + } +}; + +#endif diff --git a/Material/Special/CMakeLists.txt b/Material/Special/CMakeLists.txt index ce57d70cc..bbf9d7ea7 100644 --- a/Material/Special/CMakeLists.txt +++ b/Material/Special/CMakeLists.txt @@ -1,3 +1,3 @@ set(MS Special/Fluid.cpp - ) +) diff --git a/Material/Special/Fluid.cpp b/Material/Special/Fluid.cpp index 7ccc70f0d..a76165147 100644 --- a/Material/Special/Fluid.cpp +++ b/Material/Special/Fluid.cpp @@ -25,7 +25,7 @@ int Fluid::initialize(const shared_ptr&) { return SUANPAN_SUCCESS; } double Fluid::get_parameter(const ParameterType P) const { if(ParameterType::BULKMODULUS == P) return bulk_modulus; - return 0; + return 0.; } unique_ptr Fluid::get_copy() { return make_unique(*this); } diff --git a/Material/Special/Fluid.h b/Material/Special/Fluid.h index 3c757697f..5fc29b3c9 100644 --- a/Material/Special/Fluid.h +++ b/Material/Special/Fluid.h @@ -34,11 +34,12 @@ struct DataFluid { const double bulk_modulus; // bulk modulus }; -class Fluid final : DataFluid, public Material { +class Fluid final : protected DataFluid, public Material { public: - Fluid(unsigned, // tag - double, // bulk modulus - double // density + Fluid( + unsigned, // tag + double, // bulk modulus + double // density ); int initialize(const shared_ptr&) override; diff --git a/Material/Special/Special b/Material/Special/Special index e1aebfeee..4f459b088 100644 --- a/Material/Special/Special +++ b/Material/Special/Special @@ -1 +1 @@ -#include "Fluid.h" \ No newline at end of file +#include "Fluid.h" diff --git a/Option.cmake b/Option.cmake index 0ad2dde9e..a9740834f 100644 --- a/Option.cmake +++ b/Option.cmake @@ -13,7 +13,7 @@ option(BUILD_DLL_EXAMPLE "Build dynamic linked library examples." OFF) option(BUILD_MULTITHREAD "Build with multi-threaded support via TBB." OFF) option(BUILD_SHARED "Build all libraries as shared ones." OFF) option(USE_SUPERLUMT "Use multi-threaded SuperLU. Note the performance may not be better than the sequential version." OFF) -option(USE_EXTERNAL_VTK "Enable visualisation via VTK. Note external VTK libraries need to be compiled in advance." OFF) +option(USE_VTK "Enable visualisation via VTK. Note external VTK libraries need to be compiled in advance." OFF) option(USE_HDF5 "Enable recording results in HDF5 format." ON) option(USE_AVX "Enable AVX support." ON) option(USE_AVX2 "Enable AVX2 support." OFF) @@ -48,7 +48,7 @@ if (CMAKE_SYSTEM_NAME MATCHES "Windows") # WINDOWS PLATFORM if (FORTRAN_STATUS) set(BUILD_SHARED OFF CACHE BOOL "" FORCE) endif () - option(USE_EXTERNAL_CUDA "Enable GPU based global solvers via CUDA." OFF) + option(USE_CUDA "Enable GPU based global solvers via CUDA." OFF) endif () elseif (CMAKE_SYSTEM_NAME MATCHES "Linux") # LINUX PLATFORM set(SP_EXTERNAL_LIB_PATH "linux") @@ -62,7 +62,7 @@ elseif (CMAKE_SYSTEM_NAME MATCHES "Linux") # LINUX PLATFORM elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang") # Clang COMPILER set(COMPILER_IDENTIFIER "clang-linux") endif () - option(USE_EXTERNAL_CUDA "Enable GPU based global solvers via CUDA." OFF) + option(USE_CUDA "Enable GPU based global solvers via CUDA." OFF) elseif (CMAKE_SYSTEM_NAME MATCHES "Darwin") # MAC PLATFORM set(SP_EXTERNAL_LIB_PATH "mac") if (CMAKE_CXX_COMPILER_ID MATCHES "GNU") # GNU GCC COMPILER @@ -79,7 +79,7 @@ if (COMPILER_IDENTIFIER MATCHES "unknown") message(FATAL_ERROR "Cannot identify the compiler available, please use GCC or MSVC or Intel.") endif () -if (USE_MKL AND USE_EXTERNAL_CUDA) +if (USE_MKL AND USE_CUDA) option(USE_MAGMA "Enable GPU based global solvers via MAGMA." OFF) endif () @@ -117,7 +117,7 @@ if (USE_MKL) if (COMPILER_IDENTIFIER MATCHES "IntelLLVM") set(USE_INTEL_OPENMP ON CACHE BOOL "" FORCE) endif () - if (USE_INTEL_OPENMP) + if (USE_INTEL_OPENMP OR COMPILER_IDENTIFIER MATCHES "vs") if (MKLROOT MATCHES "(oneapi|oneAPI)") if (COMPILER_IDENTIFIER MATCHES "linux") find_library(IOMPPATH iomp5 ${MKLROOT}/../../compiler/latest/linux/compiler/lib/intel64_lin) @@ -134,8 +134,10 @@ if (USE_MKL) endif () endif () -if (USE_EXTERNAL_CUDA) - cmake_policy(SET CMP0146 OLD) +if (USE_CUDA) + if (POLICY CMP0146) + cmake_policy(SET CMP0146 OLD) + endif () find_package(CUDA) if (NOT CUDA_FOUND) set(CUDA_PATH "" CACHE PATH "CUDA library path which contains /include folder.") @@ -162,7 +164,7 @@ if (USE_MAGMA) endif () set(HAVE_VTK FALSE CACHE INTERNAL "") -if (USE_EXTERNAL_VTK) +if (USE_VTK) if (VTK_PATH MATCHES "") find_package(VTK) else () @@ -239,10 +241,13 @@ if (COMPILER_IDENTIFIER MATCHES "vs") link_directories(Libs/win) + string(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") + string(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") + + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MP /openmp") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP /openmp /EHsc") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MP /openmp /EHsc") - set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} /MP /Qopenmp /Qparallel /fpp /names:lowercase /assume:underscore") - set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} /libs:dll /threads") + + set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} /nowarn /MP /Qopenmp /Qparallel /fpp /names:lowercase /assume:underscore /libs:dll /threads") if (USE_AVX512) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /arch:AVX512") diff --git a/README.md b/README.md index 5ae7071ad..f76769d18 100644 --- a/README.md +++ b/README.md @@ -6,11 +6,12 @@ [![license](https://img.shields.io/github/license/TLCFEM/suanPan.svg?color=44cc11)](https://www.gnu.org/licenses/gpl-3.0) [![documentation](https://readthedocs.org/projects/suanpan-manual/badge/?version=latest)](https://suanpan-manual.readthedocs.io/?badge=latest) [![release](https://img.shields.io/github/release-pre/TLCFEM/suanPan.svg?color=44cc11)](https://github.com/TLCFEM/suanPan/releases) +[![docker](https://img.shields.io/docker/image-size/tlcfem/suanpan/latest?label=docker&color=44cc11)](https://hub.docker.com/r/tlcfem/suanpan/tags) [![suanpan](https://snapcraft.io//suanpan/badge.svg)](https://snapcraft.io/suanpan) [![Chocolatey](https://img.shields.io/chocolatey/v/suanpan?color=44cc11)](https://chocolatey.org/packages/suanpan) [![Chocolatey](https://img.shields.io/chocolatey/dt/suanpan?color=44cc11&label=choco%20install)](https://chocolatey.org/packages/suanpan) [![download](https://img.shields.io/github/downloads/TLCFEM/suanPan/total.svg?color=44cc11)](https://img.shields.io/github/downloads/TLCFEM/suanPan/total.svg?color=44cc11) -[![stable build](https://github.com/TLCFEM/suanPan/workflows/Stable%20Release/badge.svg?branch=master)](https://github.com/TLCFEM/suanPan/actions) +[![dev](https://github.com/TLCFEM/suanPan/actions/workflows/dev-all.yml/badge.svg?branch=dev)](https://github.com/TLCFEM/suanPan/actions/workflows/dev-all.yml) [![codecov](https://codecov.io/gh/TLCFEM/suanPan/branch/dev/graph/badge.svg?token=65BF9DF697)](https://codecov.io/gh/TLCFEM/suanPan) [![codacy](https://app.codacy.com/project/badge/Grade/1ea08c43edf342a8b00b21e585e63503)](https://www.codacy.com/gh/TLCFEM/suanPan/dashboard?utm_source=github.com&utm_medium=referral&utm_content=TLCFEM/suanPan&utm_campaign=Badge_Grade) [![CodeFactor](https://www.codefactor.io/repository/github/tlcfem/suanpan/badge)](https://www.codefactor.io/repository/github/tlcfem/suanpan) @@ -23,6 +24,11 @@ [![gplv3-or-later](https://www.gnu.org/graphics/gplv3-or-later.svg)](https://www.gnu.org/licenses/gpl-3.0.en.html) +[![marketplace](https://img.shields.io/visual-studio-marketplace/v/tlc.suanpan?label=VS%20Code&color=44cc11)](https://marketplace.visualstudio.com/items?itemName=tlc.suanpan) + +***Check out the VS Code [extension](https://marketplace.visualstudio.com/items?itemName=tlc.suanpan) for syntax +highlighting and autocompletion.*** + ## Introduction [🧮 **suanPan**](https://tlcfem.github.io/suanPan/) is a finite element method (FEM) simulation platform for @@ -102,6 +108,9 @@ details can be seen [here](https://tlcfem.gitbook.io/suanpan-manual/tutorial/obt Only the 64-bit version is compiled. It is assumed that [**AVX**](https://en.wikipedia.org/wiki/Advanced_Vector_Extensions) is available thus if the program fails, please check if your CPU supports AVX. +Alternatively, you can try the `no-avx` version. + +> Check artifacts of [workflows](https://github.com/TLCFEM/suanPan/actions/workflows/dev-all.yml) for the latest binaries. ### Windows @@ -109,7 +118,7 @@ fails, please check if your CPU supports AVX. The archives of binaries are released under [Release](https://github.com/TLCFEM/suanPan/releases) page. -1. `suanpan-win-mkl-vtk.zip` is the portable version. +1. `suanpan-win-mkl-vtk.zip` is the portable archive. 2. `suanpan-win-mkl-vtk.exe` is the installer. #### Chocolatey @@ -157,8 +166,8 @@ Linux users are recommended to obtain the binaries via `snap` or `flatpak`. #### Snap The snap supports visualisation via VTK and uses Intel MKL for linear algebra. -The edge channel is in sync with the dev branch. -The stable channel is in sync with the master branch. +The edge channel is in sync with the `dev` branch. +The stable channel is in sync with the `master` branch. [![Get it from the Snap Store](https://snapcraft.io/static/images/badges/en/snap-store-black.svg)](https://snapcraft.io/suanpan) @@ -167,8 +176,8 @@ The stable channel is in sync with the master branch. #### Flatpak Flatpak is also available if preferred. -The beta channel is in sync with the dev branch. -The stable channel is in sync with the master branch. +The beta channel is in sync with the `dev` branch. +The stable channel is in sync with the `master` branch. Download on Flathub @@ -183,12 +192,6 @@ flatpak install suanPan echo "alias suanpan=\"flatpak run io.github.tlcfem.suanPan\"" >> ~/.bashrc ``` -#### Installation Packages - -Alternatively, download the RPM (Fedora 36) or DEB (Ubuntu 22.04) package from the release page. The packages may not be -compatible with older distributions (due to different versions of `libstdc++`). It is also possible to compile the -package via docker, check the dockerfiles under the `Script` folder, for any questions please open an issue. - ### Other Platforms Precompiled binaries are provided via CI/CD on macOS, Windows, and Ubuntu. @@ -200,9 +203,10 @@ A few flavors are available: may be missing on server systems 2. `mkl` --- linear algebra operations are offloaded to MKL, which gives the optimal performance on Intel chips 3. `openblas` --- linear algebra operations are offloaded to OpenBLAS, which may outperform MKL on AMD platforms +4. `no-avx` --- AVX support is disabled, useful for older CPUs which do not support AVX instructions -Advanced users can compile the program from source by themselves in order to enable GPU based solvers which require -an available [CUDA](https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/) library. +Advanced users can compile the program from source by themselves to enable GPU based solvers which require +an available [CUDA](https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/) and/or MAGMA library. Since CI/CD uses `GCC 11` (on Linux) and `Clang 13.0.1` (on macOS), it may be required to update/install proper `libstdc++` (or `libc++`) version. The easiest way is to install the same compiler. For example, on Ubuntu 22.04, @@ -219,8 +223,17 @@ For VTK enabled versions, it may be necessary to install OpenGL. sudo apt install libglu1-mesa-dev freeglut3-dev mesa-common-dev libglvnd-dev ``` +It is also possible to compile the package via docker, check the dockerfiles under the `Script` folder, for any +questions please open an issue. + ### Automation Related +#### VS Code + +The VS Code extension is available [here](https://marketplace.visualstudio.com/items?itemName=tlc.suanpan). + +#### Sublime Text + On Windows, a batch file named `AddAssociation.bat` is provided in the archive. It provides file associations and prepares a proper working environment (build system, autocompletion, highlighting) with [Sublime Text](https://www.sublimetext.com/). It also adds file associations with `.sp` and `.supan` files, please @@ -247,7 +260,7 @@ Additional libraries used in **suanPan** are listed as follows. - [**FEAST**](http://www.feast-solver.org/) version 4.0 - [**SuperLU**](https://portal.nersc.gov/project/sparse/superlu/) version 5.3.0 - [**SuperLU MT**](https://portal.nersc.gov/project/sparse/superlu/) version 3.1 -- [**OpenBLAS**](https://github.com/xianyi/OpenBLAS) version 0.3.21 +- [**OpenBLAS**](https://github.com/xianyi/OpenBLAS) version 0.3.24 - [**Lis**](https://www.ssisc.org/lis/) version 2.1.3 - [**TBB** Threading Building Blocks](https://github.com/oneapi-src/oneTBB) version 2021.9.0 - [**HDF5**](https://www.hdfgroup.org/solutions/hdf5/) version 1.10.6 @@ -256,8 +269,8 @@ Additional libraries used in **suanPan** are listed as follows. - [**VTK**](https://vtk.org/) version 9.2.6 - [**CUDA**](https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/) version 12.0 - [**MAGMA**](https://icl.utk.edu/magma/) version 2.7.1 -- [**Armadillo**](http://arma.sourceforge.net/) version 12.6.3 -- [**ensmallen**](https://ensmallen.org/) version 2.19.0 +- [**Armadillo**](http://arma.sourceforge.net/) version 12.6.6 +- [**ensmallen**](https://ensmallen.org/) version 2.20.0 - [**oneMKL**](https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/onemkl.html) version 2023.2.0 - [**Catch2**](https://github.com/catchorg/Catch2) version 3.4.0 - [**fmt**](https://github.com/fmtlib/fmt) version 10.1.1 diff --git a/Recorder/CMakeLists.txt b/Recorder/CMakeLists.txt index 50f7a6ed7..e83fe47a3 100644 --- a/Recorder/CMakeLists.txt +++ b/Recorder/CMakeLists.txt @@ -15,4 +15,4 @@ target_sources(${PROJECT_NAME} PRIVATE RecorderParser.cpp SumRecorder.cpp VisualisationRecorder.cpp - ) +) diff --git a/Recorder/EigenRecorder.cpp b/Recorder/EigenRecorder.cpp index 1e7d21edf..a516f460b 100644 --- a/Recorder/EigenRecorder.cpp +++ b/Recorder/EigenRecorder.cpp @@ -80,5 +80,5 @@ void EigenRecorder::save() { } void EigenRecorder::print() { - suanpan_info("A recorder to record eigen values and eigen vectors.\n"); + suanpan_info("A recorder to record eigenvalues and eigenvectors.\n"); } diff --git a/Recorder/ElementRecorder.cpp b/Recorder/ElementRecorder.cpp index d84ec6452..220de38d5 100644 --- a/Recorder/ElementRecorder.cpp +++ b/Recorder/ElementRecorder.cpp @@ -21,11 +21,16 @@ #include void ElementRecorder::initialize(const shared_ptr& D) { + std::vector pool; + pool.reserve(get_object_tag().n_elem); for(const auto I : get_object_tag()) - if(!D->find(I)) { - D->disable_recorder(get_tag()); - return; - } + if(!D->find(I) || !D->get(I)->is_active()) + suanpan_warning("Element {} is not available/active, removed from recorder {}.\n", I, get_tag()); + else pool.emplace_back(I); + + set_object_tag(pool); + + access::rw(get_data_pool()).resize(get_object_tag().n_elem); } void ElementRecorder::record(const shared_ptr& D) { diff --git a/Recorder/FrameRecorder.cpp b/Recorder/FrameRecorder.cpp index bc991b4d2..102ad9a14 100644 --- a/Recorder/FrameRecorder.cpp +++ b/Recorder/FrameRecorder.cpp @@ -31,7 +31,7 @@ FrameRecorder::FrameRecorder(const unsigned T, const OutputType L, const unsigne : Recorder(T, {}, L, I, false, true) { #ifdef SUANPAN_HDF5 ostringstream file_name; - file_name << 'R' << get_tag() << '-' << to_char(get_variable_type()) << ".h5"; + file_name << 'R' << get_tag() << '-' << to_name(get_variable_type()) << ".h5"; file_id = H5Fcreate((SUANPAN_OUTPUT / file_name.str()).generic_string().c_str(), H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); #endif } diff --git a/Recorder/FrameRecorder.h b/Recorder/FrameRecorder.h index 6b8eadd85..fb443e352 100644 --- a/Recorder/FrameRecorder.h +++ b/Recorder/FrameRecorder.h @@ -37,9 +37,10 @@ class FrameRecorder final : public Recorder { #endif public: - FrameRecorder(unsigned, // tag - OutputType, // recorder type - unsigned // interval + FrameRecorder( + unsigned, // tag + OutputType, // recorder type + unsigned // interval ); FrameRecorder(const FrameRecorder&) = delete; FrameRecorder(FrameRecorder&&) noexcept = delete; diff --git a/Recorder/GlobalMassRecorder.h b/Recorder/GlobalMassRecorder.h index 00372454e..d5ffc28ec 100644 --- a/Recorder/GlobalMassRecorder.h +++ b/Recorder/GlobalMassRecorder.h @@ -35,10 +35,11 @@ class GlobalMassRecorder final : public GlobalRecorder { static void assemble_mass(const mat&, const uvec&, mat&); public: - GlobalMassRecorder(unsigned, // tag - unsigned, // interval - bool, // if to record time - bool // if to use hdf5 + GlobalMassRecorder( + unsigned, // tag + unsigned, // interval + bool, // if to record time + bool // if to use hdf5 ); void record(const shared_ptr&) override; diff --git a/Recorder/GlobalRecorder.cpp b/Recorder/GlobalRecorder.cpp index 3ca14a9a0..9d6fd82b2 100644 --- a/Recorder/GlobalRecorder.cpp +++ b/Recorder/GlobalRecorder.cpp @@ -43,6 +43,11 @@ void GlobalRecorder::record(const shared_ptr& D) { for(auto& I : D->get_pool()) viscous_energy += I->get_viscous_energy(); insert({{viscous_energy, D->get_factory()->get_viscous_energy()}}, 0); } + else if(OutputType::NVE == get_variable_type()) { + auto nonviscous_energy = 0.; + for(auto& I : D->get_pool()) nonviscous_energy += I->get_nonviscous_energy(); + insert({{nonviscous_energy, D->get_factory()->get_nonviscous_energy()}}, 0); + } else if(OutputType::SE == get_variable_type()) { auto strain_energy = 0.; for(auto& I : D->get_pool()) strain_energy += I->get_strain_energy(); @@ -53,12 +58,12 @@ void GlobalRecorder::record(const shared_ptr& D) { for(auto& I : D->get_pool()) momentum += accu(I->get_momentum()); insert({{momentum, accu(D->get_factory()->get_momentum())}}, 0); } - else if(OutputType::MMX == get_variable_type()) insert({{get_momentum_component(DOF::U1)}}, 0); - else if(OutputType::MMY == get_variable_type()) insert({{get_momentum_component(DOF::U2)}}, 0); - else if(OutputType::MMZ == get_variable_type()) insert({{get_momentum_component(DOF::U3)}}, 0); - else if(OutputType::MMRX == get_variable_type()) insert({{get_momentum_component(DOF::UR1)}}, 0); - else if(OutputType::MMRY == get_variable_type()) insert({{get_momentum_component(DOF::UR2)}}, 0); - else if(OutputType::MMRZ == get_variable_type()) insert({{get_momentum_component(DOF::UR3)}}, 0); + else if(OutputType::MM1 == get_variable_type()) insert({{get_momentum_component(DOF::U1)}}, 0); + else if(OutputType::MM2 == get_variable_type()) insert({{get_momentum_component(DOF::U2)}}, 0); + else if(OutputType::MM3 == get_variable_type()) insert({{get_momentum_component(DOF::U3)}}, 0); + else if(OutputType::MM4 == get_variable_type() || OutputType::MMR1 == get_variable_type()) insert({{get_momentum_component(DOF::UR1)}}, 0); + else if(OutputType::MM5 == get_variable_type() || OutputType::MMR2 == get_variable_type()) insert({{get_momentum_component(DOF::UR2)}}, 0); + else if(OutputType::MM6 == get_variable_type() || OutputType::MMR3 == get_variable_type()) insert({{get_momentum_component(DOF::UR3)}}, 0); else insert({{.0, .0}}, 0); if(if_record_time()) insert(D->get_factory()->get_current_time()); diff --git a/Recorder/GlobalRecorder.h b/Recorder/GlobalRecorder.h index a66d57103..49b54f883 100644 --- a/Recorder/GlobalRecorder.h +++ b/Recorder/GlobalRecorder.h @@ -33,11 +33,12 @@ class GlobalRecorder : public Recorder { public: - GlobalRecorder(unsigned, // tag - OutputType, // recorder type - unsigned, // interval - bool, // if to record time - bool // if to use hdf5 + GlobalRecorder( + unsigned, // tag + OutputType, // recorder type + unsigned, // interval + bool, // if to record time + bool // if to use hdf5 ); void record(const shared_ptr&) override; diff --git a/Recorder/GlobalStiffnessRecorder.h b/Recorder/GlobalStiffnessRecorder.h index a326cb8de..42396182b 100644 --- a/Recorder/GlobalStiffnessRecorder.h +++ b/Recorder/GlobalStiffnessRecorder.h @@ -35,10 +35,11 @@ class GlobalStiffnessRecorder final : public GlobalRecorder { static void assemble_stiffness(const mat&, const uvec&, mat&); public: - GlobalStiffnessRecorder(unsigned, // tag - unsigned, // interval - bool, // if to record time - bool // if to use hdf5 + GlobalStiffnessRecorder( + unsigned, // tag + unsigned, // interval + bool, // if to record time + bool // if to use hdf5 ); void record(const shared_ptr&) override; diff --git a/Recorder/GroupElementRecorder.cpp b/Recorder/GroupElementRecorder.cpp index 99a90c1e5..7e53be53c 100644 --- a/Recorder/GroupElementRecorder.cpp +++ b/Recorder/GroupElementRecorder.cpp @@ -22,7 +22,7 @@ void GroupElementRecorder::update_tag(const shared_ptr& D) { std::vector tag; - for(auto& I : groups) if(D->find(I)) for(auto& J : D->get(I)->get_pool()) tag.emplace_back(J); + for(const auto I : groups) if(D->find(I)) for(const auto J : D->get(I)->get_pool()) tag.emplace_back(J); set_object_tag(unique(uvec(tag))); diff --git a/Recorder/GroupElementRecorder.h b/Recorder/GroupElementRecorder.h index 91e1235e8..a6d5cb327 100644 --- a/Recorder/GroupElementRecorder.h +++ b/Recorder/GroupElementRecorder.h @@ -37,12 +37,13 @@ class GroupElementRecorder final : public ElementRecorder { void update_tag(const shared_ptr&); public: - GroupElementRecorder(unsigned, // tag - uvec&&, // object tags - OutputType, // recorder type - unsigned, // interval - bool, // if to record time - bool // if to use hdf5 + GroupElementRecorder( + unsigned, // tag + uvec&&, // object tags + OutputType, // recorder type + unsigned, // interval + bool, // if to record time + bool // if to use hdf5 ); void initialize(const shared_ptr&) override; diff --git a/Recorder/GroupNodeRecorder.cpp b/Recorder/GroupNodeRecorder.cpp index 7763a4786..f76dabd6f 100644 --- a/Recorder/GroupNodeRecorder.cpp +++ b/Recorder/GroupNodeRecorder.cpp @@ -22,7 +22,7 @@ void GroupNodeRecorder::update_tag(const shared_ptr& D) { std::vector tag; - for(auto& I : groups) if(D->find_group(static_cast(I))) for(auto& J : D->get_group(static_cast(I))->get_pool()) tag.emplace_back(J); + for(const auto I : groups) if(D->find(I)) for(const auto J : D->get(I)->get_pool()) tag.emplace_back(J); set_object_tag(unique(uvec(tag))); diff --git a/Recorder/GroupNodeRecorder.h b/Recorder/GroupNodeRecorder.h index ae1643cb2..76da3e01f 100644 --- a/Recorder/GroupNodeRecorder.h +++ b/Recorder/GroupNodeRecorder.h @@ -37,12 +37,13 @@ class GroupNodeRecorder final : public NodeRecorder { void update_tag(const shared_ptr&); public: - GroupNodeRecorder(unsigned, // tag - uvec&&, // object tags - OutputType, // recorder type - unsigned, // interval - bool, // if to record time - bool // if to use hdf5 + GroupNodeRecorder( + unsigned, // tag + uvec&&, // object tags + OutputType, // recorder type + unsigned, // interval + bool, // if to record time + bool // if to use hdf5 ); void initialize(const shared_ptr&) override; diff --git a/Recorder/GroupSumRecorder.cpp b/Recorder/GroupSumRecorder.cpp index bc66308d2..d73d019b0 100644 --- a/Recorder/GroupSumRecorder.cpp +++ b/Recorder/GroupSumRecorder.cpp @@ -22,7 +22,7 @@ void GroupSumRecorder::update_tag(const shared_ptr& D) { std::vector tag; - for(auto& I : groups) if(D->find_group(static_cast(I))) for(auto& J : D->get_group(static_cast(I))->get_pool()) tag.emplace_back(J); + for(const auto I : groups) if(D->find(I)) for(const auto J : D->get(I)->get_pool()) tag.emplace_back(J); set_object_tag(unique(uvec(tag))); } diff --git a/Recorder/GroupSumRecorder.h b/Recorder/GroupSumRecorder.h index 254a6d5f8..debbc9bcf 100644 --- a/Recorder/GroupSumRecorder.h +++ b/Recorder/GroupSumRecorder.h @@ -37,12 +37,13 @@ class GroupSumRecorder final : public SumRecorder { void update_tag(const shared_ptr&); public: - GroupSumRecorder(unsigned, // tag - uvec&&, // object tags - OutputType, // recorder type - unsigned, // interval - bool, // if to record time - bool // if to use hdf5 + GroupSumRecorder( + unsigned, // tag + uvec&&, // object tags + OutputType, // recorder type + unsigned, // interval + bool, // if to record time + bool // if to use hdf5 ); void initialize(const shared_ptr&) override; diff --git a/Recorder/NodeRecorder.cpp b/Recorder/NodeRecorder.cpp index 4d2c746f6..324d71731 100644 --- a/Recorder/NodeRecorder.cpp +++ b/Recorder/NodeRecorder.cpp @@ -22,11 +22,16 @@ #include void NodeRecorder::initialize(const shared_ptr& D) { + std::vector pool; + pool.reserve(get_object_tag().n_elem); for(const auto I : get_object_tag()) - if(!D->find(I)) { - D->disable_recorder(get_tag()); - return; - } + if(!D->find(I) || !D->get(I)->is_active()) + suanpan_warning("Node {} is not available/active, removed from recorder {}.\n", I, get_tag()); + else pool.emplace_back(I); + + set_object_tag(pool); + + access::rw(get_data_pool()).resize(get_object_tag().n_elem); } void NodeRecorder::record(const shared_ptr& D) { @@ -53,7 +58,7 @@ void NodeRecorder::record(const shared_ptr& D) { } }; - auto get_momentum_component = [&](const DOF DI) { + auto insert_momentum = [&](const DOF DI) { for(unsigned I = 0; I < obj_tag.n_elem; ++I) { const auto& t_node = D->get(obj_tag(I)); if(!t_node->is_active()) continue; @@ -71,30 +76,36 @@ void NodeRecorder::record(const shared_ptr& D) { for(unsigned I = 0; I < obj_tag.n_elem; ++I) if(const auto& t_node = D->get(obj_tag(I)); t_node->is_active()) insert({damping_force(t_node->get_reordered_dof())}, I); } - else if(OutputType::GDF1 == get_variable_type()) insert_damping_force(0); - else if(OutputType::GDF2 == get_variable_type()) insert_damping_force(1); - else if(OutputType::GDF3 == get_variable_type()) insert_damping_force(2); - else if(OutputType::GDF4 == get_variable_type() || OutputType::GDM1 == get_variable_type()) insert_damping_force(3); - else if(OutputType::GDF5 == get_variable_type() || OutputType::GDM2 == get_variable_type()) insert_damping_force(4); - else if(OutputType::GDF6 == get_variable_type() || OutputType::GDM3 == get_variable_type()) insert_damping_force(5); else if(OutputType::GIF == get_variable_type()) { auto& inertial_force = D->get_factory()->get_current_inertial_force(); if(inertial_force.empty()) return; for(unsigned I = 0; I < obj_tag.n_elem; ++I) if(const auto& t_node = D->get(obj_tag(I)); t_node->is_active()) insert({inertial_force(t_node->get_reordered_dof())}, I); } + else if(OutputType::MM == get_variable_type()) { + auto& momentum = D->get_factory()->get_momentum(); + if(momentum.empty()) return; + + for(unsigned I = 0; I < obj_tag.n_elem; ++I) if(const auto& t_node = D->get(obj_tag(I)); t_node->is_active()) insert({momentum(t_node->get_reordered_dof())}, I); + } + else if(OutputType::GDF1 == get_variable_type()) insert_damping_force(0); + else if(OutputType::GDF2 == get_variable_type()) insert_damping_force(1); + else if(OutputType::GDF3 == get_variable_type()) insert_damping_force(2); + else if(OutputType::GDF4 == get_variable_type() || OutputType::GDM1 == get_variable_type()) insert_damping_force(3); + else if(OutputType::GDF5 == get_variable_type() || OutputType::GDM2 == get_variable_type()) insert_damping_force(4); + else if(OutputType::GDF6 == get_variable_type() || OutputType::GDM3 == get_variable_type()) insert_damping_force(5); else if(OutputType::GIF1 == get_variable_type()) insert_inertial_force(0); else if(OutputType::GIF2 == get_variable_type()) insert_inertial_force(1); else if(OutputType::GIF3 == get_variable_type()) insert_inertial_force(2); else if(OutputType::GIF4 == get_variable_type() || OutputType::GIM1 == get_variable_type()) insert_inertial_force(3); else if(OutputType::GIF5 == get_variable_type() || OutputType::GIM2 == get_variable_type()) insert_inertial_force(4); else if(OutputType::GIF6 == get_variable_type() || OutputType::GIM3 == get_variable_type()) insert_inertial_force(5); - else if(OutputType::MMX == get_variable_type()) get_momentum_component(DOF::U1); - else if(OutputType::MMY == get_variable_type()) get_momentum_component(DOF::U2); - else if(OutputType::MMZ == get_variable_type()) get_momentum_component(DOF::U3); - else if(OutputType::MMRX == get_variable_type()) get_momentum_component(DOF::UR1); - else if(OutputType::MMRY == get_variable_type()) get_momentum_component(DOF::UR2); - else if(OutputType::MMRZ == get_variable_type()) get_momentum_component(DOF::UR3); + else if(OutputType::MM1 == get_variable_type()) insert_momentum(DOF::U1); + else if(OutputType::MM2 == get_variable_type()) insert_momentum(DOF::U2); + else if(OutputType::MM3 == get_variable_type()) insert_momentum(DOF::U3); + else if(OutputType::MM4 == get_variable_type() || OutputType::MMR1 == get_variable_type()) insert_momentum(DOF::UR1); + else if(OutputType::MM5 == get_variable_type() || OutputType::MMR2 == get_variable_type()) insert_momentum(DOF::UR2); + else if(OutputType::MM6 == get_variable_type() || OutputType::MMR3 == get_variable_type()) insert_momentum(DOF::UR3); else for(unsigned I = 0; I < obj_tag.n_elem; ++I) if(const auto& t_node = D->get(obj_tag(I)); t_node->is_active()) insert(t_node->record(get_variable_type()), I); if(if_record_time()) insert(D->get_factory()->get_current_time()); diff --git a/Recorder/OutputType.cpp b/Recorder/OutputType.cpp index 5165a6350..7d08484f9 100644 --- a/Recorder/OutputType.cpp +++ b/Recorder/OutputType.cpp @@ -18,415 +18,202 @@ #include "OutputType.h" #include -const char* to_char(const OutputType& L) { - switch(L) { - case OutputType::SD: - return "SD"; - case OutputType::ED: - return "ED"; - case OutputType::VD: - return "VD"; - case OutputType::SS: - return "SS"; - case OutputType::ES: - return "ES"; - case OutputType::VS: - return "VS"; - case OutputType::S: - return "S"; - case OutputType::S11: - return "S11"; - case OutputType::S22: - return "S22"; - case OutputType::S33: - return "S33"; - case OutputType::S12: - return "S12"; - case OutputType::S23: - return "S23"; - case OutputType::S13: - return "S13"; - case OutputType::SINT: - return "SINT"; - case OutputType::HYDRO: - return "HYDRO"; - case OutputType::PP: - return "PP"; - case OutputType::E: - return "E"; - case OutputType::E11: - return "E11"; - case OutputType::E22: - return "E22"; - case OutputType::E33: - return "E33"; - case OutputType::E12: - return "E12"; - case OutputType::E23: - return "E23"; - case OutputType::E13: - return "E13"; - case OutputType::EEQ: - return "EEQ"; - case OutputType::EINT: - return "EINT"; - case OutputType::SP: - return "SP"; - case OutputType::SP1: - return "SP1"; - case OutputType::SP2: - return "SP2"; - case OutputType::SP3: - return "SP3"; - case OutputType::EP: - return "EP"; - case OutputType::EP1: - return "EP1"; - case OutputType::EP2: - return "EP2"; - case OutputType::EP3: - return "EP3"; - case OutputType::SINV: - return "SINV"; - case OutputType::MISES: - return "MISES"; - case OutputType::NMISES: - return "NMISES"; - case OutputType::TRESC: - return "TRESC"; - case OutputType::EE: - return "EE"; - case OutputType::EE11: - return "EE11"; - case OutputType::EE22: - return "EE22"; - case OutputType::EE33: - return "EE33"; - case OutputType::EE12: - return "EE12"; - case OutputType::EE23: - return "EE23"; - case OutputType::EE13: - return "EE13"; - case OutputType::EEP: - return "EEP"; - case OutputType::EEP1: - return "EEP1"; - case OutputType::EEP2: - return "EEP2"; - case OutputType::EEP3: - return "EEP3"; - case OutputType::EEEQ: - return "EEEQ"; - case OutputType::PE: - return "PE"; - case OutputType::PE11: - return "PE11"; - case OutputType::PE22: - return "PE22"; - case OutputType::PE33: - return "PE33"; - case OutputType::PE12: - return "PE12"; - case OutputType::PE23: - return "PE23"; - case OutputType::PE13: - return "PE13"; - case OutputType::PEP: - return "PEP"; - case OutputType::PEP1: - return "PEP1"; - case OutputType::PEP2: - return "PEP2"; - case OutputType::PEP3: - return "PEP3"; - case OutputType::PEEQ: - return "PEEQ"; +const char* to_name(const OutputType L) { + if(OutputType::S == L) return "S"; + if(OutputType::S11 == L) return "S11"; + if(OutputType::S12 == L) return "S12"; + if(OutputType::S13 == L) return "S13"; + if(OutputType::S22 == L) return "S22"; + if(OutputType::S23 == L) return "S23"; + if(OutputType::S33 == L) return "S33"; + if(OutputType::E == L) return "E"; + if(OutputType::E11 == L) return "E11"; + if(OutputType::E12 == L) return "E12"; + if(OutputType::E13 == L) return "E13"; + if(OutputType::E22 == L) return "E22"; + if(OutputType::E23 == L) return "E23"; + if(OutputType::E33 == L) return "E33"; + if(OutputType::EE == L) return "EE"; + if(OutputType::EE11 == L) return "EE11"; + if(OutputType::EE12 == L) return "EE12"; + if(OutputType::EE13 == L) return "EE13"; + if(OutputType::EE22 == L) return "EE22"; + if(OutputType::EE23 == L) return "EE23"; + if(OutputType::EE33 == L) return "EE33"; + if(OutputType::PE == L) return "PE"; + if(OutputType::PE11 == L) return "PE11"; + if(OutputType::PE12 == L) return "PE12"; + if(OutputType::PE13 == L) return "PE13"; + if(OutputType::PE22 == L) return "PE22"; + if(OutputType::PE23 == L) return "PE23"; + if(OutputType::PE33 == L) return "PE33"; + if(OutputType::SP == L) return "SP"; + if(OutputType::SP1 == L) return "SP1"; + if(OutputType::SP2 == L) return "SP2"; + if(OutputType::SP3 == L) return "SP3"; + if(OutputType::EP == L) return "EP"; + if(OutputType::EP1 == L) return "EP1"; + if(OutputType::EP2 == L) return "EP2"; + if(OutputType::EP3 == L) return "EP3"; + if(OutputType::EEP == L) return "EEP"; + if(OutputType::EEP1 == L) return "EEP1"; + if(OutputType::EEP2 == L) return "EEP2"; + if(OutputType::EEP3 == L) return "EEP3"; + if(OutputType::PEP == L) return "PEP"; + if(OutputType::PEP1 == L) return "PEP1"; + if(OutputType::PEP2 == L) return "PEP2"; + if(OutputType::PEP3 == L) return "PEP3"; + if(OutputType::U == L) return "U"; + if(OutputType::U1 == L) return "U1"; + if(OutputType::U2 == L) return "U2"; + if(OutputType::U3 == L) return "U3"; + if(OutputType::U4 == L) return "U4"; + if(OutputType::U5 == L) return "U5"; + if(OutputType::U6 == L) return "U6"; + if(OutputType::UR1 == L) return "UR1"; + if(OutputType::UR2 == L) return "UR2"; + if(OutputType::UR3 == L) return "UR3"; + if(OutputType::V == L) return "V"; + if(OutputType::V1 == L) return "V1"; + if(OutputType::V2 == L) return "V2"; + if(OutputType::V3 == L) return "V3"; + if(OutputType::V4 == L) return "V4"; + if(OutputType::V5 == L) return "V5"; + if(OutputType::V6 == L) return "V6"; + if(OutputType::VR1 == L) return "VR1"; + if(OutputType::VR2 == L) return "VR2"; + if(OutputType::VR3 == L) return "VR3"; + if(OutputType::A == L) return "A"; + if(OutputType::A1 == L) return "A1"; + if(OutputType::A2 == L) return "A2"; + if(OutputType::A3 == L) return "A3"; + if(OutputType::A4 == L) return "A4"; + if(OutputType::A5 == L) return "A5"; + if(OutputType::A6 == L) return "A6"; + if(OutputType::AR1 == L) return "AR1"; + if(OutputType::AR2 == L) return "AR2"; + if(OutputType::AR3 == L) return "AR3"; + if(OutputType::MM == L) return "MM"; + if(OutputType::MM1 == L) return "MM1"; + if(OutputType::MM2 == L) return "MM2"; + if(OutputType::MM3 == L) return "MM3"; + if(OutputType::MM4 == L) return "MM4"; + if(OutputType::MM5 == L) return "MM5"; + if(OutputType::MM6 == L) return "MM6"; + if(OutputType::MMR1 == L) return "MMR1"; + if(OutputType::MMR2 == L) return "MMR2"; + if(OutputType::MMR3 == L) return "MMR3"; + if(OutputType::RF == L) return "RF"; + if(OutputType::RF1 == L) return "RF1"; + if(OutputType::RF2 == L) return "RF2"; + if(OutputType::RF3 == L) return "RF3"; + if(OutputType::RF4 == L) return "RF4"; + if(OutputType::RF5 == L) return "RF5"; + if(OutputType::RF6 == L) return "RF6"; + if(OutputType::RM1 == L) return "RM1"; + if(OutputType::RM2 == L) return "RM2"; + if(OutputType::RM3 == L) return "RM3"; + if(OutputType::DF == L) return "DF"; + if(OutputType::DF1 == L) return "DF1"; + if(OutputType::DF2 == L) return "DF2"; + if(OutputType::DF3 == L) return "DF3"; + if(OutputType::DF4 == L) return "DF4"; + if(OutputType::DF5 == L) return "DF5"; + if(OutputType::DF6 == L) return "DF6"; + if(OutputType::DM1 == L) return "DM1"; + if(OutputType::DM2 == L) return "DM2"; + if(OutputType::DM3 == L) return "DM3"; + if(OutputType::IF == L) return "IF"; + if(OutputType::IF1 == L) return "IF1"; + if(OutputType::IF2 == L) return "IF2"; + if(OutputType::IF3 == L) return "IF3"; + if(OutputType::IF4 == L) return "IF4"; + if(OutputType::IF5 == L) return "IF5"; + if(OutputType::IF6 == L) return "IF6"; + if(OutputType::IM1 == L) return "IM1"; + if(OutputType::IM2 == L) return "IM2"; + if(OutputType::IM3 == L) return "IM3"; + if(OutputType::GDF == L) return "GDF"; + if(OutputType::GDF1 == L) return "GDF1"; + if(OutputType::GDF2 == L) return "GDF2"; + if(OutputType::GDF3 == L) return "GDF3"; + if(OutputType::GDF4 == L) return "GDF4"; + if(OutputType::GDF5 == L) return "GDF5"; + if(OutputType::GDF6 == L) return "GDF6"; + if(OutputType::GDM1 == L) return "GDM1"; + if(OutputType::GDM2 == L) return "GDM2"; + if(OutputType::GDM3 == L) return "GDM3"; + if(OutputType::GIF == L) return "GIF"; + if(OutputType::GIF1 == L) return "GIF1"; + if(OutputType::GIF2 == L) return "GIF2"; + if(OutputType::GIF3 == L) return "GIF3"; + if(OutputType::GIF4 == L) return "GIF4"; + if(OutputType::GIF5 == L) return "GIF5"; + if(OutputType::GIF6 == L) return "GIF6"; + if(OutputType::GIM1 == L) return "GIM1"; + if(OutputType::GIM2 == L) return "GIM2"; + if(OutputType::GIM3 == L) return "GIM3"; + if(OutputType::HYDRO == L) return "HYDRO"; + if(OutputType::MISES == L) return "MISES"; + if(OutputType::EEQ == L) return "EEQ"; + if(OutputType::EEEQ == L) return "EEEQ"; + if(OutputType::PEEQ == L) return "PEEQ"; + if(OutputType::KE == L) return "KE"; + if(OutputType::SE == L) return "SE"; + if(OutputType::VE == L) return "VE"; + if(OutputType::NVE == L) return "NVE"; + if(OutputType::K == L) return "K"; + if(OutputType::M == L) return "M"; + if(OutputType::ED == L) return "ED"; + if(OutputType::VD == L) return "VD"; + if(OutputType::SD == L) return "SD"; + if(OutputType::ES == L) return "ES"; + if(OutputType::VS == L) return "VS"; + if(OutputType::SS == L) return "SS"; + if(OutputType::DAMAGE == L) return "DAMAGE"; + if(OutputType::DT == L) return "DT"; + if(OutputType::DC == L) return "DC"; + if(OutputType::PP == L) return "PP"; + if(OutputType::VF == L) return "VF"; + if(OutputType::HIST == L) return "HIST"; + if(OutputType::LITR == L) return "LITR"; + if(OutputType::YF == L) return "YF"; + if(OutputType::BEAME == L) return "BEAME"; + if(OutputType::BEAMS == L) return "BEAMS"; + if(OutputType::AMP == L) return "AMP"; - case OutputType::U: - return "U"; - case OutputType::UT: - return "UT"; - case OutputType::UR: - return "UR"; - case OutputType::U1: - return "U1"; - case OutputType::U2: - return "U2"; - case OutputType::U3: - return "U3"; - case OutputType::UR1: - return "UR1"; - case OutputType::UR2: - return "UR2"; - case OutputType::UR3: - return "UR3"; - case OutputType::U4: - return "U4"; - case OutputType::U5: - return "U5"; - case OutputType::U6: - return "U6"; - case OutputType::V: - return "V"; - case OutputType::VT: - return "VT"; - case OutputType::VR: - return "VR"; - case OutputType::V1: - return "V1"; - case OutputType::V2: - return "V2"; - case OutputType::V3: - return "V3"; - case OutputType::VR1: - return "VR1"; - case OutputType::VR2: - return "VR2"; - case OutputType::VR3: - return "VR3"; - case OutputType::V4: - return "V4"; - case OutputType::V5: - return "V5"; - case OutputType::V6: - return "V6"; - case OutputType::A: - return "A"; - case OutputType::AT: - return "AT"; - case OutputType::AR: - return "AR"; - case OutputType::A1: - return "A1"; - case OutputType::A2: - return "A2"; - case OutputType::A3: - return "A3"; - case OutputType::AR1: - return "AR1"; - case OutputType::AR2: - return "AR2"; - case OutputType::AR3: - return "AR3"; - case OutputType::A4: - return "A4"; - case OutputType::A5: - return "A5"; - case OutputType::A6: - return "A6"; - - case OutputType::RF: - return "RF"; - case OutputType::RT: - return "RT"; - case OutputType::RF1: - return "RF1"; - case OutputType::RF2: - return "RF2"; - case OutputType::RF3: - return "RF3"; - case OutputType::RF4: - return "RF4"; - case OutputType::RF5: - return "RF5"; - case OutputType::RF6: - return "RF6"; - case OutputType::RM: - return "RM"; - case OutputType::RM1: - return "RM1"; - case OutputType::RM2: - return "RM2"; - case OutputType::RM3: - return "RM3"; - case OutputType::DF: - return "DF"; - case OutputType::DF1: - return "DF1"; - case OutputType::DF2: - return "DF2"; - case OutputType::DF3: - return "DF3"; - case OutputType::DF4: - return "DF4"; - case OutputType::DF5: - return "DF5"; - case OutputType::DF6: - return "DF6"; - case OutputType::DM1: - return "DF4"; - case OutputType::DM2: - return "DF5"; - case OutputType::DM3: - return "DF6"; - case OutputType::IF: - return "IF"; - case OutputType::IF1: - return "IF1"; - case OutputType::IF2: - return "IF2"; - case OutputType::IF3: - return "IF3"; - case OutputType::IF4: - return "IF4"; - case OutputType::IF5: - return "IF5"; - case OutputType::IF6: - return "IF6"; - case OutputType::IM1: - return "IF4"; - case OutputType::IM2: - return "IF5"; - case OutputType::IM3: - return "IF6"; - case OutputType::GDF: - return "GDF"; - case OutputType::GDF1: - return "GDF1"; - case OutputType::GDF2: - return "GDF2"; - case OutputType::GDF3: - return "GDF3"; - case OutputType::GDF4: - return "GDF4"; - case OutputType::GDF5: - return "GDF5"; - case OutputType::GDF6: - return "GDF6"; - case OutputType::GDM1: - return "GDF4"; - case OutputType::GDM2: - return "GDF5"; - case OutputType::GDM3: - return "GDF6"; - case OutputType::GIF: - return "GIF"; - case OutputType::GIF1: - return "GIF1"; - case OutputType::GIF2: - return "GIF2"; - case OutputType::GIF3: - return "GIF3"; - case OutputType::GIF4: - return "GIF4"; - case OutputType::GIF5: - return "GIF5"; - case OutputType::GIF6: - return "GIF6"; - case OutputType::GIM1: - return "GIF4"; - case OutputType::GIM2: - return "GIF5"; - case OutputType::GIM3: - return "GIF6"; - - case OutputType::DAMAGE: - return "DAMAGE"; - case OutputType::DT: - return "DT"; - case OutputType::DC: - return "DC"; - case OutputType::KAPPAT: - return "KAPPAT"; - case OutputType::KAPPAC: - return "KAPPAC"; - case OutputType::KAPPAP: - return "KAPPAP"; - case OutputType::VF: - return "VF"; - - case OutputType::REBARE: - return "REBARE"; - case OutputType::REBARS: - return "REBARS"; - case OutputType::RESULTANT: - return "RESULTANT"; - case OutputType::AXIAL: - return "AXIAL"; - case OutputType::SHEAR: - return "SHEAR"; - case OutputType::MOMENT: - return "MOMENT"; - case OutputType::TORSION: - return "TORSION"; - case OutputType::LITR: - return "LITR"; - case OutputType::K: - return "STIFFNESS"; - case OutputType::M: - return "MASS"; - - case OutputType::SE: - return "SE"; - case OutputType::TSE: - return "TSE"; - case OutputType::CSE: - return "CSE"; - case OutputType::KE: - return "KE"; - case OutputType::VE: - return "VE"; - case OutputType::MM: - return "MOMENTUM"; - case OutputType::MMX: - return "MOMENTUMX"; - case OutputType::MMY: - return "MOMENTUMY"; - case OutputType::MMZ: - return "MOMENTUMZ"; - case OutputType::MMRX: - return "MOMENTUMRZ"; - case OutputType::MMRY: - return "MOMENTUMRY"; - case OutputType::MMRZ: - return "MOMENTUMRZ"; - - case OutputType::HIST: - return "HIST"; - - case OutputType::AMP: - return "AMPLITUDE"; - case OutputType::YF: - return "YF"; - - case OutputType::BEAME: - return "BEAME"; - case OutputType::BEAMS: - return "BEAMS"; - - case OutputType::NL: - default: - return "NL"; - } + return "NL"; } -OutputType to_list(const char* L) { - if(is_equal(L, "SD")) return OutputType::SD; - if(is_equal(L, "ED")) return OutputType::ED; - if(is_equal(L, "VD")) return OutputType::VD; - if(is_equal(L, "SS")) return OutputType::SS; - if(is_equal(L, "ES")) return OutputType::ES; - if(is_equal(L, "VS")) return OutputType::VS; +OutputType to_token(const char* L) { if(is_equal(L, "S")) return OutputType::S; if(is_equal(L, "S11")) return OutputType::S11; - if(is_equal(L, "S22")) return OutputType::S22; - if(is_equal(L, "S33")) return OutputType::S33; if(is_equal(L, "S12")) return OutputType::S12; - if(is_equal(L, "S23")) return OutputType::S23; if(is_equal(L, "S13")) return OutputType::S13; - if(is_equal(L, "SINT")) return OutputType::SINT; - if(is_equal(L, "HYDRO")) return OutputType::HYDRO; - if(is_equal(L, "PP")) return OutputType::PP; + if(is_equal(L, "S22")) return OutputType::S22; + if(is_equal(L, "S23")) return OutputType::S23; + if(is_equal(L, "S33")) return OutputType::S33; if(is_equal(L, "E")) return OutputType::E; if(is_equal(L, "E11")) return OutputType::E11; - if(is_equal(L, "E22")) return OutputType::E22; - if(is_equal(L, "E33")) return OutputType::E33; if(is_equal(L, "E12")) return OutputType::E12; - if(is_equal(L, "E23")) return OutputType::E23; if(is_equal(L, "E13")) return OutputType::E13; - if(is_equal(L, "EEQ")) return OutputType::EEQ; - if(is_equal(L, "EINT")) return OutputType::EINT; + if(is_equal(L, "E22")) return OutputType::E22; + if(is_equal(L, "E23")) return OutputType::E23; + if(is_equal(L, "E33")) return OutputType::E33; + if(is_equal(L, "EE")) return OutputType::EE; + if(is_equal(L, "EE11")) return OutputType::EE11; + if(is_equal(L, "EE12")) return OutputType::EE12; + if(is_equal(L, "EE13")) return OutputType::EE13; + if(is_equal(L, "EE22")) return OutputType::EE22; + if(is_equal(L, "EE23")) return OutputType::EE23; + if(is_equal(L, "EE33")) return OutputType::EE33; + if(is_equal(L, "PE")) return OutputType::PE; + if(is_equal(L, "PE11")) return OutputType::PE11; + if(is_equal(L, "PE12")) return OutputType::PE12; + if(is_equal(L, "PE13")) return OutputType::PE13; + if(is_equal(L, "PE22")) return OutputType::PE22; + if(is_equal(L, "PE23")) return OutputType::PE23; + if(is_equal(L, "PE33")) return OutputType::PE33; if(is_equal(L, "SP")) return OutputType::SP; if(is_equal(L, "SP1")) return OutputType::SP1; if(is_equal(L, "SP2")) return OutputType::SP2; @@ -435,82 +222,61 @@ OutputType to_list(const char* L) { if(is_equal(L, "EP1")) return OutputType::EP1; if(is_equal(L, "EP2")) return OutputType::EP2; if(is_equal(L, "EP3")) return OutputType::EP3; - if(is_equal(L, "SINV")) return OutputType::SINV; - if(is_equal(L, "MISES")) return OutputType::MISES; - if(is_equal(L, "NMISES")) return OutputType::NMISES; - if(is_equal(L, "TRESC")) return OutputType::TRESC; - - if(is_equal(L, "EE")) return OutputType::EE; - if(is_equal(L, "EE11")) return OutputType::EE11; - if(is_equal(L, "EE22")) return OutputType::EE22; - if(is_equal(L, "EE33")) return OutputType::EE33; - if(is_equal(L, "EE12")) return OutputType::EE12; - if(is_equal(L, "EE23")) return OutputType::EE23; - if(is_equal(L, "EE13")) return OutputType::EE13; if(is_equal(L, "EEP")) return OutputType::EEP; if(is_equal(L, "EEP1")) return OutputType::EEP1; if(is_equal(L, "EEP2")) return OutputType::EEP2; if(is_equal(L, "EEP3")) return OutputType::EEP3; - if(is_equal(L, "EEEQ")) return OutputType::EEEQ; - if(is_equal(L, "PE")) return OutputType::PE; - if(is_equal(L, "PE11")) return OutputType::PE11; - if(is_equal(L, "PE22")) return OutputType::PE22; - if(is_equal(L, "PE33")) return OutputType::PE33; - if(is_equal(L, "PE12")) return OutputType::PE12; - if(is_equal(L, "PE23")) return OutputType::PE23; - if(is_equal(L, "PE13")) return OutputType::PE13; if(is_equal(L, "PEP")) return OutputType::PEP; if(is_equal(L, "PEP1")) return OutputType::PEP1; if(is_equal(L, "PEP2")) return OutputType::PEP2; if(is_equal(L, "PEP3")) return OutputType::PEP3; - if(is_equal(L, "PEEQ")) return OutputType::PEEQ; - if(is_equal(L, "U")) return OutputType::U; - if(is_equal(L, "UT")) return OutputType::UT; - if(is_equal(L, "UR")) return OutputType::UR; if(is_equal(L, "U1")) return OutputType::U1; if(is_equal(L, "U2")) return OutputType::U2; if(is_equal(L, "U3")) return OutputType::U3; - if(is_equal(L, "UR1")) return OutputType::UR1; - if(is_equal(L, "UR2")) return OutputType::UR2; - if(is_equal(L, "UR3")) return OutputType::UR3; if(is_equal(L, "U4")) return OutputType::U4; if(is_equal(L, "U5")) return OutputType::U5; if(is_equal(L, "U6")) return OutputType::U6; + if(is_equal(L, "UR1")) return OutputType::UR1; + if(is_equal(L, "UR2")) return OutputType::UR2; + if(is_equal(L, "UR3")) return OutputType::UR3; if(is_equal(L, "V")) return OutputType::V; - if(is_equal(L, "VT")) return OutputType::VT; - if(is_equal(L, "VR")) return OutputType::VR; if(is_equal(L, "V1")) return OutputType::V1; if(is_equal(L, "V2")) return OutputType::V2; if(is_equal(L, "V3")) return OutputType::V3; - if(is_equal(L, "VR1")) return OutputType::VR1; - if(is_equal(L, "VR2")) return OutputType::VR2; - if(is_equal(L, "VR3")) return OutputType::VR3; if(is_equal(L, "V4")) return OutputType::V4; if(is_equal(L, "V5")) return OutputType::V5; if(is_equal(L, "V6")) return OutputType::V6; + if(is_equal(L, "VR1")) return OutputType::VR1; + if(is_equal(L, "VR2")) return OutputType::VR2; + if(is_equal(L, "VR3")) return OutputType::VR3; if(is_equal(L, "A")) return OutputType::A; - if(is_equal(L, "AT")) return OutputType::AT; - if(is_equal(L, "AR")) return OutputType::AR; if(is_equal(L, "A1")) return OutputType::A1; if(is_equal(L, "A2")) return OutputType::A2; if(is_equal(L, "A3")) return OutputType::A3; - if(is_equal(L, "AR1")) return OutputType::AR1; - if(is_equal(L, "AR2")) return OutputType::AR2; - if(is_equal(L, "AR3")) return OutputType::AR3; if(is_equal(L, "A4")) return OutputType::A4; if(is_equal(L, "A5")) return OutputType::A5; if(is_equal(L, "A6")) return OutputType::A6; - + if(is_equal(L, "AR1")) return OutputType::AR1; + if(is_equal(L, "AR2")) return OutputType::AR2; + if(is_equal(L, "AR3")) return OutputType::AR3; + if(is_equal(L, "MM")) return OutputType::MM; + if(is_equal(L, "MM1")) return OutputType::MM1; + if(is_equal(L, "MM2")) return OutputType::MM2; + if(is_equal(L, "MM3")) return OutputType::MM3; + if(is_equal(L, "MM4")) return OutputType::MM4; + if(is_equal(L, "MM5")) return OutputType::MM5; + if(is_equal(L, "MM6")) return OutputType::MM6; + if(is_equal(L, "MMR1")) return OutputType::MMR1; + if(is_equal(L, "MMR2")) return OutputType::MMR2; + if(is_equal(L, "MMR3")) return OutputType::MMR3; if(is_equal(L, "RF")) return OutputType::RF; - if(is_equal(L, "RT")) return OutputType::RT; if(is_equal(L, "RF1")) return OutputType::RF1; if(is_equal(L, "RF2")) return OutputType::RF2; if(is_equal(L, "RF3")) return OutputType::RF3; if(is_equal(L, "RF4")) return OutputType::RF4; if(is_equal(L, "RF5")) return OutputType::RF5; if(is_equal(L, "RF6")) return OutputType::RF6; - if(is_equal(L, "RM")) return OutputType::RM; if(is_equal(L, "RM1")) return OutputType::RM1; if(is_equal(L, "RM2")) return OutputType::RM2; if(is_equal(L, "RM3")) return OutputType::RM3; @@ -521,9 +287,9 @@ OutputType to_list(const char* L) { if(is_equal(L, "DF4")) return OutputType::DF4; if(is_equal(L, "DF5")) return OutputType::DF5; if(is_equal(L, "DF6")) return OutputType::DF6; - if(is_equal(L, "DM1")) return OutputType::DF4; - if(is_equal(L, "DM2")) return OutputType::DF5; - if(is_equal(L, "DM3")) return OutputType::DF6; + if(is_equal(L, "DM1")) return OutputType::DM1; + if(is_equal(L, "DM2")) return OutputType::DM2; + if(is_equal(L, "DM3")) return OutputType::DM3; if(is_equal(L, "IF")) return OutputType::IF; if(is_equal(L, "IF1")) return OutputType::IF1; if(is_equal(L, "IF2")) return OutputType::IF2; @@ -531,9 +297,9 @@ OutputType to_list(const char* L) { if(is_equal(L, "IF4")) return OutputType::IF4; if(is_equal(L, "IF5")) return OutputType::IF5; if(is_equal(L, "IF6")) return OutputType::IF6; - if(is_equal(L, "IM1")) return OutputType::IF4; - if(is_equal(L, "IM2")) return OutputType::IF5; - if(is_equal(L, "IM3")) return OutputType::IF6; + if(is_equal(L, "IM1")) return OutputType::IM1; + if(is_equal(L, "IM2")) return OutputType::IM2; + if(is_equal(L, "IM3")) return OutputType::IM3; if(is_equal(L, "GDF")) return OutputType::GDF; if(is_equal(L, "GDF1")) return OutputType::GDF1; if(is_equal(L, "GDF2")) return OutputType::GDF2; @@ -541,9 +307,9 @@ OutputType to_list(const char* L) { if(is_equal(L, "GDF4")) return OutputType::GDF4; if(is_equal(L, "GDF5")) return OutputType::GDF5; if(is_equal(L, "GDF6")) return OutputType::GDF6; - if(is_equal(L, "GDM1")) return OutputType::GDF4; - if(is_equal(L, "GDM2")) return OutputType::GDF5; - if(is_equal(L, "GDM3")) return OutputType::GDF6; + if(is_equal(L, "GDM1")) return OutputType::GDM1; + if(is_equal(L, "GDM2")) return OutputType::GDM2; + if(is_equal(L, "GDM3")) return OutputType::GDM3; if(is_equal(L, "GIF")) return OutputType::GIF; if(is_equal(L, "GIF1")) return OutputType::GIF1; if(is_equal(L, "GIF2")) return OutputType::GIF2; @@ -551,53 +317,315 @@ OutputType to_list(const char* L) { if(is_equal(L, "GIF4")) return OutputType::GIF4; if(is_equal(L, "GIF5")) return OutputType::GIF5; if(is_equal(L, "GIF6")) return OutputType::GIF6; - if(is_equal(L, "GIM1")) return OutputType::GIF4; - if(is_equal(L, "GIM2")) return OutputType::GIF5; - if(is_equal(L, "GIM3")) return OutputType::GIF6; - + if(is_equal(L, "GIM1")) return OutputType::GIM1; + if(is_equal(L, "GIM2")) return OutputType::GIM2; + if(is_equal(L, "GIM3")) return OutputType::GIM3; + if(is_equal(L, "HYDRO")) return OutputType::HYDRO; + if(is_equal(L, "MISES")) return OutputType::MISES; + if(is_equal(L, "EEQ")) return OutputType::EEQ; + if(is_equal(L, "EEEQ")) return OutputType::EEEQ; + if(is_equal(L, "PEEQ")) return OutputType::PEEQ; + if(is_equal(L, "KE")) return OutputType::KE; + if(is_equal(L, "SE")) return OutputType::SE; + if(is_equal(L, "VE")) return OutputType::VE; + if(is_equal(L, "NVE")) return OutputType::NVE; + if(is_equal(L, "K")) return OutputType::K; + if(is_equal(L, "M")) return OutputType::M; + if(is_equal(L, "ED")) return OutputType::ED; + if(is_equal(L, "VD")) return OutputType::VD; + if(is_equal(L, "SD")) return OutputType::SD; + if(is_equal(L, "ES")) return OutputType::ES; + if(is_equal(L, "VS")) return OutputType::VS; + if(is_equal(L, "SS")) return OutputType::SS; if(is_equal(L, "DAMAGE")) return OutputType::DAMAGE; if(is_equal(L, "DT")) return OutputType::DT; if(is_equal(L, "DC")) return OutputType::DC; - if(is_equal(L, "KAPPAT")) return OutputType::KAPPAT; - if(is_equal(L, "KAPPAC")) return OutputType::KAPPAC; - if(is_equal(L, "KAPPAP")) return OutputType::KAPPAP; + if(is_equal(L, "PP")) return OutputType::PP; if(is_equal(L, "VF")) return OutputType::VF; + if(is_equal(L, "HIST")) return OutputType::HIST; + if(is_equal(L, "LITR")) return OutputType::LITR; + if(is_equal(L, "YF")) return OutputType::YF; + if(is_equal(L, "BEAME")) return OutputType::BEAME; + if(is_equal(L, "BEAMS")) return OutputType::BEAMS; + if(is_equal(L, "AMP")) return OutputType::AMP; - if(is_equal(L, "REBARE")) return OutputType::REBARE; - if(is_equal(L, "REBARS")) return OutputType::REBARS; - if(is_equal(L, "RESULTANT")) return OutputType::RESULTANT; - if(is_equal(L, "AXIAL")) return OutputType::AXIAL; - if(is_equal(L, "SHEAR")) return OutputType::SHEAR; - if(is_equal(L, "MOMENT")) return OutputType::MOMENT; - if(is_equal(L, "TORSION")) return OutputType::TORSION; + return OutputType::NL; +} - if(is_equal(L, "LITR")) return OutputType::LITR; - if(is_equal(L, "STIFFNESS")) return OutputType::K; - if(is_equal(L, "MASS")) return OutputType::M; - if(is_equal(L, "K")) return OutputType::K; - if(is_equal(L, "M")) return OutputType::M; +OutputType to_token(const std::string& L) { return to_token(L.c_str()); } - if(is_equal(L, "SE")) return OutputType::SE; - if(is_equal(L, "TSE")) return OutputType::TSE; - if(is_equal(L, "CSE")) return OutputType::CSE; - if(is_equal(L, "KE")) return OutputType::KE; - if(is_equal(L, "VE")) return OutputType::VE; - if(is_equal(L, "MOMENTUM")) return OutputType::MM; - if(is_equal(L, "MOMENTUMX")) return OutputType::MMX; - if(is_equal(L, "MOMENTUMY")) return OutputType::MMY; - if(is_equal(L, "MOMENTUMZ")) return OutputType::MMZ; - if(is_equal(L, "MOMENTUMRX")) return OutputType::MMRX; - if(is_equal(L, "MOMENTUMRY")) return OutputType::MMRY; - if(is_equal(L, "MOMENTUMRZ")) return OutputType::MMRZ; +int to_index(const OutputType config) { + if(config == OutputType::S11) return 0; + if(config == OutputType::S22) return 1; + if(config == OutputType::S33) return 2; + if(config == OutputType::S12) return 3; + if(config == OutputType::S23) return 4; + if(config == OutputType::S13) return 5; - if(is_equal(L, "HIST")) return OutputType::HIST; - if(is_equal(L, "AMP")) return OutputType::AMP; - if(is_equal(L, "YF")) return OutputType::YF; + if(config == OutputType::E11) return 0; + if(config == OutputType::E22) return 1; + if(config == OutputType::E33) return 2; + if(config == OutputType::E12) return 3; + if(config == OutputType::E23) return 4; + if(config == OutputType::E13) return 5; - if(is_equal(L, "BEAME")) return OutputType::BEAME; - if(is_equal(L, "BEAMS")) return OutputType::BEAMS; + if(config == OutputType::EE11) return 0; + if(config == OutputType::EE22) return 1; + if(config == OutputType::EE33) return 2; + if(config == OutputType::EE12) return 3; + if(config == OutputType::EE23) return 4; + if(config == OutputType::EE13) return 5; - if(is_equal(L, "NL")) return OutputType::NL; + if(config == OutputType::PE11) return 0; + if(config == OutputType::PE22) return 1; + if(config == OutputType::PE33) return 2; + if(config == OutputType::PE12) return 3; + if(config == OutputType::PE23) return 4; + if(config == OutputType::PE13) return 5; - return OutputType::NL; + if(config == OutputType::SP1) return 0; + if(config == OutputType::SP2) return 1; + if(config == OutputType::SP3) return 2; + + if(config == OutputType::EP1) return 0; + if(config == OutputType::EP2) return 1; + if(config == OutputType::EP3) return 2; + + if(config == OutputType::EEP1) return 0; + if(config == OutputType::EEP2) return 1; + if(config == OutputType::EEP3) return 2; + + if(config == OutputType::PEP1) return 0; + if(config == OutputType::PEP2) return 1; + if(config == OutputType::PEP3) return 2; + + if(config == OutputType::U1) return 0; + if(config == OutputType::U2) return 1; + if(config == OutputType::U3) return 2; + if(config == OutputType::U4) return 3; + if(config == OutputType::U5) return 4; + if(config == OutputType::U6) return 5; + if(config == OutputType::UR1) return 3; + if(config == OutputType::UR2) return 4; + if(config == OutputType::UR3) return 5; + + if(config == OutputType::V1) return 0; + if(config == OutputType::V2) return 1; + if(config == OutputType::V3) return 2; + if(config == OutputType::V4) return 3; + if(config == OutputType::V5) return 4; + if(config == OutputType::V6) return 5; + if(config == OutputType::VR1) return 3; + if(config == OutputType::VR2) return 4; + if(config == OutputType::VR3) return 5; + + if(config == OutputType::A1) return 0; + if(config == OutputType::A2) return 1; + if(config == OutputType::A3) return 2; + if(config == OutputType::A4) return 3; + if(config == OutputType::A5) return 4; + if(config == OutputType::A6) return 5; + if(config == OutputType::AR1) return 3; + if(config == OutputType::AR2) return 4; + if(config == OutputType::AR3) return 5; + + if(config == OutputType::RF1) return 0; + if(config == OutputType::RF2) return 1; + if(config == OutputType::RF3) return 2; + if(config == OutputType::RF4) return 3; + if(config == OutputType::RF5) return 4; + if(config == OutputType::RF6) return 5; + if(config == OutputType::RM1) return 3; + if(config == OutputType::RM2) return 4; + if(config == OutputType::RM3) return 5; + + if(config == OutputType::DF1) return 0; + if(config == OutputType::DF2) return 1; + if(config == OutputType::DF3) return 2; + if(config == OutputType::DF4) return 3; + if(config == OutputType::DF5) return 4; + if(config == OutputType::DF6) return 5; + if(config == OutputType::DM1) return 3; + if(config == OutputType::DM2) return 4; + if(config == OutputType::DM3) return 5; + + if(config == OutputType::IF1) return 0; + if(config == OutputType::IF2) return 1; + if(config == OutputType::IF3) return 2; + if(config == OutputType::IF4) return 3; + if(config == OutputType::IF5) return 4; + if(config == OutputType::IF6) return 5; + if(config == OutputType::IM1) return 3; + if(config == OutputType::IM2) return 4; + if(config == OutputType::IM3) return 5; + + return 0; +} + +const char* to_category(const OutputType L) { + if(OutputType::S == L) return "S"; + if(OutputType::S11 == L) return "S"; + if(OutputType::S12 == L) return "S"; + if(OutputType::S13 == L) return "S"; + if(OutputType::S22 == L) return "S"; + if(OutputType::S23 == L) return "S"; + if(OutputType::S33 == L) return "S"; + if(OutputType::E == L) return "E"; + if(OutputType::E11 == L) return "E"; + if(OutputType::E12 == L) return "E"; + if(OutputType::E13 == L) return "E"; + if(OutputType::E22 == L) return "E"; + if(OutputType::E23 == L) return "E"; + if(OutputType::E33 == L) return "E"; + if(OutputType::EE == L) return "EE"; + if(OutputType::EE11 == L) return "EE"; + if(OutputType::EE12 == L) return "EE"; + if(OutputType::EE13 == L) return "EE"; + if(OutputType::EE22 == L) return "EE"; + if(OutputType::EE23 == L) return "EE"; + if(OutputType::EE33 == L) return "EE"; + if(OutputType::PE == L) return "PE"; + if(OutputType::PE11 == L) return "PE"; + if(OutputType::PE12 == L) return "PE"; + if(OutputType::PE13 == L) return "PE"; + if(OutputType::PE22 == L) return "PE"; + if(OutputType::PE23 == L) return "PE"; + if(OutputType::PE33 == L) return "PE"; + if(OutputType::SP == L) return "SP"; + if(OutputType::SP1 == L) return "SP"; + if(OutputType::SP2 == L) return "SP"; + if(OutputType::SP3 == L) return "SP"; + if(OutputType::EP == L) return "EP"; + if(OutputType::EP1 == L) return "EP"; + if(OutputType::EP2 == L) return "EP"; + if(OutputType::EP3 == L) return "EP"; + if(OutputType::EEP == L) return "EEP"; + if(OutputType::EEP1 == L) return "EEP"; + if(OutputType::EEP2 == L) return "EEP"; + if(OutputType::EEP3 == L) return "EEP"; + if(OutputType::PEP == L) return "PEP"; + if(OutputType::PEP1 == L) return "PEP"; + if(OutputType::PEP2 == L) return "PEP"; + if(OutputType::PEP3 == L) return "PEP"; + if(OutputType::U == L) return "U"; + if(OutputType::U1 == L) return "U"; + if(OutputType::U2 == L) return "U"; + if(OutputType::U3 == L) return "U"; + if(OutputType::U4 == L) return "U"; + if(OutputType::U5 == L) return "U"; + if(OutputType::U6 == L) return "U"; + if(OutputType::UR1 == L) return "U"; + if(OutputType::UR2 == L) return "U"; + if(OutputType::UR3 == L) return "U"; + if(OutputType::V == L) return "V"; + if(OutputType::V1 == L) return "V"; + if(OutputType::V2 == L) return "V"; + if(OutputType::V3 == L) return "V"; + if(OutputType::V4 == L) return "V"; + if(OutputType::V5 == L) return "V"; + if(OutputType::V6 == L) return "V"; + if(OutputType::VR1 == L) return "V"; + if(OutputType::VR2 == L) return "V"; + if(OutputType::VR3 == L) return "V"; + if(OutputType::A == L) return "A"; + if(OutputType::A1 == L) return "A"; + if(OutputType::A2 == L) return "A"; + if(OutputType::A3 == L) return "A"; + if(OutputType::A4 == L) return "A"; + if(OutputType::A5 == L) return "A"; + if(OutputType::A6 == L) return "A"; + if(OutputType::AR1 == L) return "A"; + if(OutputType::AR2 == L) return "A"; + if(OutputType::AR3 == L) return "A"; + if(OutputType::MM == L) return "MM"; + if(OutputType::MM1 == L) return "MM"; + if(OutputType::MM2 == L) return "MM"; + if(OutputType::MM3 == L) return "MM"; + if(OutputType::MM4 == L) return "MM"; + if(OutputType::MM5 == L) return "MM"; + if(OutputType::MM6 == L) return "MM"; + if(OutputType::MMR1 == L) return "MM"; + if(OutputType::MMR2 == L) return "MM"; + if(OutputType::MMR3 == L) return "MM"; + if(OutputType::RF == L) return "RF"; + if(OutputType::RF1 == L) return "RF"; + if(OutputType::RF2 == L) return "RF"; + if(OutputType::RF3 == L) return "RF"; + if(OutputType::RF4 == L) return "RF"; + if(OutputType::RF5 == L) return "RF"; + if(OutputType::RF6 == L) return "RF"; + if(OutputType::RM1 == L) return "RF"; + if(OutputType::RM2 == L) return "RF"; + if(OutputType::RM3 == L) return "RF"; + if(OutputType::DF == L) return "DF"; + if(OutputType::DF1 == L) return "DF"; + if(OutputType::DF2 == L) return "DF"; + if(OutputType::DF3 == L) return "DF"; + if(OutputType::DF4 == L) return "DF"; + if(OutputType::DF5 == L) return "DF"; + if(OutputType::DF6 == L) return "DF"; + if(OutputType::DM1 == L) return "DF"; + if(OutputType::DM2 == L) return "DF"; + if(OutputType::DM3 == L) return "DF"; + if(OutputType::IF == L) return "IF"; + if(OutputType::IF1 == L) return "IF"; + if(OutputType::IF2 == L) return "IF"; + if(OutputType::IF3 == L) return "IF"; + if(OutputType::IF4 == L) return "IF"; + if(OutputType::IF5 == L) return "IF"; + if(OutputType::IF6 == L) return "IF"; + if(OutputType::IM1 == L) return "IF"; + if(OutputType::IM2 == L) return "IF"; + if(OutputType::IM3 == L) return "IF"; + if(OutputType::GDF == L) return "GDF"; + if(OutputType::GDF1 == L) return "GDF"; + if(OutputType::GDF2 == L) return "GDF"; + if(OutputType::GDF3 == L) return "GDF"; + if(OutputType::GDF4 == L) return "GDF"; + if(OutputType::GDF5 == L) return "GDF"; + if(OutputType::GDF6 == L) return "GDF"; + if(OutputType::GDM1 == L) return "GDM"; + if(OutputType::GDM2 == L) return "GDM"; + if(OutputType::GDM3 == L) return "GDM"; + if(OutputType::GIF == L) return "GIF"; + if(OutputType::GIF1 == L) return "GIF"; + if(OutputType::GIF2 == L) return "GIF"; + if(OutputType::GIF3 == L) return "GIF"; + if(OutputType::GIF4 == L) return "GIF"; + if(OutputType::GIF5 == L) return "GIF"; + if(OutputType::GIF6 == L) return "GIF"; + if(OutputType::GIM1 == L) return "GIF"; + if(OutputType::GIM2 == L) return "GIF"; + if(OutputType::GIM3 == L) return "GIF"; + if(OutputType::HYDRO == L) return "HYDRO"; + if(OutputType::MISES == L) return "MISES"; + if(OutputType::EEQ == L) return "EEQ"; + if(OutputType::EEEQ == L) return "EEEQ"; + if(OutputType::PEEQ == L) return "PEEQ"; + if(OutputType::KE == L) return "KE"; + if(OutputType::SE == L) return "SE"; + if(OutputType::VE == L) return "VE"; + if(OutputType::NVE == L) return "NVE"; + if(OutputType::K == L) return "K"; + if(OutputType::M == L) return "M"; + if(OutputType::ED == L) return "ED"; + if(OutputType::VD == L) return "VD"; + if(OutputType::SD == L) return "SD"; + if(OutputType::ES == L) return "ES"; + if(OutputType::VS == L) return "VS"; + if(OutputType::SS == L) return "SS"; + if(OutputType::DAMAGE == L) return "DAMAGE"; + if(OutputType::DT == L) return "DT"; + if(OutputType::DC == L) return "DC"; + if(OutputType::PP == L) return "PP"; + if(OutputType::VF == L) return "VF"; + if(OutputType::HIST == L) return "HIST"; + if(OutputType::LITR == L) return "LITR"; + if(OutputType::YF == L) return "YF"; + if(OutputType::BEAME == L) return "BEAME"; + if(OutputType::BEAMS == L) return "BEAMS"; + if(OutputType::AMP == L) return "AMP"; + if(OutputType::NL == L) return "NL"; + + return "NL"; } diff --git a/Recorder/OutputType.h b/Recorder/OutputType.h index 60e7d3f8f..7b044fe01 100644 --- a/Recorder/OutputType.h +++ b/Recorder/OutputType.h @@ -18,149 +18,129 @@ #ifndef OUTPUTTYPE_H #define OUTPUTTYPE_H +#include + enum class OutputType { - // damper stress in Maxwell model - SD, - // damper strain in Maxwell model - ED, - // damper strain rate in Maxwell model - VD, - // spring stress in Maxwell model - SS, - // spring strain in Maxwell model - ES, - // spring strain rate in Maxwell model - VS, // stress S, S11, - S22, - S33, S12, - S23, S13, - // interpolation parameters of the stress field - SINT, - HYDRO, - PP, - // pore pressure + S22, + S23, + S33, + // strain E, E11, - E22, - E33, E12, - E23, E13, - // eqv. strain - EEQ, - // interpolation parameters of the strain field - EINT, + E22, + E23, + E33, + + // elastic strain + EE, + EE11, + EE12, + EE13, + EE22, + EE23, + EE33, + + // plastic strain + PE, + PE11, + PE12, + PE13, + PE22, + PE23, + PE33, + // principal stress SP, SP1, SP2, SP3, + // principal strain EP, EP1, EP2, EP3, - // stress invariant - SINV, - // Mises stress - MISES, - // Mises stress - NMISES, - // Tresca stress - TRESC, - // elastic strain - EE, - EE11, - EE22, - EE33, - EE12, - EE23, - EE13, + // principal elastic strain EEP, EEP1, EEP2, EEP3, - // equivalent elastic strain - EEEQ, - // plastic strain - PE, - PE11, - PE22, - PE33, - PE12, - PE23, - PE13, + // principal plastic strain PEP, PEP1, PEP2, PEP3, - // eqv. plastic strain - PEEQ, // displacement U, - // translation displacement - UT, - // rotation displacement - UR, U1, U2, U3, - UR1, - UR2, - UR3, U4, U5, U6, + UR1, + UR2, + UR3, + // velocity V, - VT, - VR, V1, V2, V3, - VR1, - VR2, - VR3, V4, V5, V6, + VR1, + VR2, + VR3, + // acceleration A, - AT, - AR, A1, A2, A3, - AR1, - AR2, - AR3, A4, A5, A6, + AR1, + AR2, + AR3, + + // momentum + MM, + MM1, + MM2, + MM3, + MM4, + MM5, + MM6, + MMR1, + MMR2, + MMR3, // reaction force RF, - RT, RF1, RF2, RF3, RF4, RF5, RF6, - // reaction moment - RM, RM1, RM2, RM3, + // damping force DF, DF1, @@ -172,6 +152,7 @@ enum class OutputType { DM1, DM2, DM3, + // inertial force IF, IF1, @@ -183,7 +164,8 @@ enum class OutputType { IM1, IM2, IM3, - // damping force + + // global damping force GDF, GDF1, GDF2, @@ -194,7 +176,8 @@ enum class OutputType { GDM1, GDM2, GDM3, - // inertial force + + // global inertial force GIF, GIF1, GIF2, @@ -206,66 +189,83 @@ enum class OutputType { GIM2, GIM3, - // damage variable - DAMAGE, - DT, - DC, - KAPPAT, - KAPPAC, - KAPPAP, - VF, + // hydrostatic pressure + HYDRO, + + // von Mises stress + MISES, - RESULTANT, - // resultant force - AXIAL, - // axial force resultant force - SHEAR, - // shear force resultant force - MOMENT, - // moment resultant force - TORSION, - // torsion resultant force + // equivalent strain + EEQ, + // equivalent elastic strain + EEEQ, + // equivalent plastic strain + PEEQ, - REBARE, - REBARS, + // kinetic energy + KE, + // strain energy + SE, + // viscous energy + VE, + // nonviscous energy + NVE, - LITR, - // local iteration counter + // stiffness K, + // mass M, - // energy - SE, - TSE, - CSE, - KE, - VE, - // momentum - MM, - MMX, - MMY, - MMZ, - MMRX, - MMRY, - MMRZ, - - // history variable + // damper strain in Maxwell/Kelvin model + ED, + // damper strain rate in Maxwell/Kelvin model + VD, + // damper force in Maxwell/Kelvin model + SD, + // spring strain in Maxwell/Kelvin model + ES, + // spring strain rate in Maxwell/Kelvin model + VS, + // spring force in Maxwell/Kelvin model + SS, + + // damage variable in phase field models + DAMAGE, + // tensile damage in material models + DT, + // compressive damage in material models + DC, + + // pore pressure + PP, + + // volume fraction + VF, + + // history vector HIST, - // amplitude - AMP, + // local iteration in Maxwell model + LITR, - // yield flag + // yield flag, 1 for yield, 0 for not yield YF, - // beam element end forces + // beam end deformation BEAME, + // beam end force BEAMS, + // amplitude + AMP, NL }; -const char* to_char(const OutputType&); -OutputType to_list(const char*); +const char* to_name(OutputType); +OutputType to_token(const char*); +OutputType to_token(const std::string&); + +const char* to_category(OutputType); +int to_index(OutputType); #endif diff --git a/Recorder/Recorder b/Recorder/Recorder index 9a0fb0879..2ef1e3aa8 100644 --- a/Recorder/Recorder +++ b/Recorder/Recorder @@ -12,4 +12,4 @@ #include "OutputType.h" #include "Recorder.h" #include "SumRecorder.h" -#include "VisualisationRecorder.h" \ No newline at end of file +#include "VisualisationRecorder.h" diff --git a/Recorder/Recorder.cpp b/Recorder/Recorder.cpp index 4020f699d..6967be287 100644 --- a/Recorder/Recorder.cpp +++ b/Recorder/Recorder.cpp @@ -44,7 +44,7 @@ Recorder::Recorder(const unsigned T, uvec&& B, const OutputType L, const unsigne void Recorder::initialize(const shared_ptr&) {} -void Recorder::set_object_tag(const uvec& T) { object_tag = T; } +void Recorder::set_object_tag(uvec&& T) { object_tag = std::forward(T); } const uvec& Recorder::get_object_tag() const { return object_tag; } @@ -56,7 +56,7 @@ bool Recorder::if_hdf5() const { return use_hdf5; } bool Recorder::if_record_time() const { return record_time; } -bool Recorder::if_perform_record() { return 1 == interval || 0 == std::remainder(counter++, interval); } +bool Recorder::if_perform_record() { return 1 == interval || 0 == counter++ % interval; } void Recorder::insert(const double T) { time_pool.emplace_back(T); } @@ -70,7 +70,7 @@ void Recorder::save() { if(time_pool.empty() || data_pool.empty() || data_pool.cbegin()->empty() || data_pool.cbegin()->cbegin()->empty() || data_pool.cbegin()->cbegin()->cbegin()->is_empty()) return; ostringstream file_name; - file_name << 'R' << get_tag() << '-' << to_char(variable_type); + file_name << 'R' << get_tag() << '-' << to_name(variable_type); const auto origin_name = file_name.str(); unsigned idx = 0; @@ -87,6 +87,8 @@ void Recorder::save() { const auto group_id = H5Gcreate(file_id, group_name.c_str(), H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT); for(const auto& s_data_pool : data_pool) { + if(s_data_pool.empty()) continue; + auto max_size = 0llu; for(const auto& I : s_data_pool[0]) if(I.n_elem > max_size) max_size = I.n_elem; @@ -110,46 +112,30 @@ void Recorder::save() { H5Gclose(group_id); H5Fclose(file_id); } - else { + else +#endif + { for(const auto& s_data_pool : data_pool) { + if(s_data_pool.empty()) continue; + auto max_size = 0llu; for(const auto& I : s_data_pool[0]) if(I.n_elem > max_size) max_size = I.n_elem; - mat data_to_write(s_data_pool.cbegin()->size() * max_size + 1, time_pool.size(), fill::zeros); + mat data_to_write(time_pool.size(), s_data_pool.cbegin()->size() * max_size + 1, fill::zeros); for(size_t I = 0; I < time_pool.size(); ++I) { - data_to_write(0, I) = time_pool[I]; - unsigned L = 1; - for(const auto& J : s_data_pool[I]) for(unsigned K = 0; K < J.n_elem; ++K) data_to_write(L++, I) = J[K]; + data_to_write(I, 0) = time_pool[I]; + auto L = 1u; + for(const auto& J : s_data_pool[I]) for(unsigned K = 0; K < J.n_elem; ++K) data_to_write(I, L++) = J[K]; } ostringstream dataset_name; dataset_name << (SUANPAN_OUTPUT / origin_name).generic_string(); dataset_name << object_tag(idx++); - mat(data_to_write.t()).save(dataset_name.str() + ".txt", raw_ascii); + data_to_write.save(dataset_name.str() + ".txt", raw_ascii); } } -#else - for(const auto& s_data_pool : data_pool) { - auto max_size = 0llu; - for(const auto& I : s_data_pool[0]) if(I.n_elem > max_size) max_size = I.n_elem; - - mat data_to_write(s_data_pool.cbegin()->size() * max_size + 1, time_pool.size(), fill::zeros); - - for(size_t I = 0; I < time_pool.size(); ++I) { - data_to_write(0, I) = time_pool[I]; - auto L = 1; - for(const auto& J : s_data_pool[I]) for(unsigned K = 0; K < J.n_elem; ++K) data_to_write(L++, I) = J[K]; - } - - ostringstream dataset_name; - dataset_name << (SUANPAN_OUTPUT / origin_name).generic_string(); - dataset_name << object_tag(idx++); - - mat(data_to_write.t()).save(dataset_name.str() + ".txt", raw_ascii); - } -#endif } void Recorder::print() {} diff --git a/Recorder/Recorder.h b/Recorder/Recorder.h index 2c9d84905..33846f191 100644 --- a/Recorder/Recorder.h +++ b/Recorder/Recorder.h @@ -48,12 +48,13 @@ class Recorder : public Tag { bool if_perform_record(); public: - Recorder(unsigned, // tag - uvec&&, // object tags - OutputType, // recorder type - unsigned, // interval - bool, // if to record time - bool // if to use hdf5 + Recorder( + unsigned, // tag + uvec&&, // object tags + OutputType, // recorder type + unsigned, // interval + bool, // if to record time + bool // if to use hdf5 ); Recorder(const Recorder&) = delete; Recorder(Recorder&&) = delete; // move forbidden @@ -63,7 +64,7 @@ class Recorder : public Tag { virtual void initialize(const shared_ptr&); - void set_object_tag(const uvec&); + void set_object_tag(uvec&&); [[nodiscard]] const uvec& get_object_tag() const; void set_variable_type(OutputType); diff --git a/Recorder/RecorderParser.cpp b/Recorder/RecorderParser.cpp index f8a9a325a..ae37d5d10 100644 --- a/Recorder/RecorderParser.cpp +++ b/Recorder/RecorderParser.cpp @@ -20,19 +20,7 @@ #include #include -int create_new_recorder(const shared_ptr& domain, istringstream& command) { - unsigned tag; - if(!get_input(command, tag)) { - suanpan_error("A valid tag is required.\n"); - return SUANPAN_SUCCESS; - } - - string file_type; - if(!get_input(command, file_type)) { - suanpan_error("A valid object type is required.\n"); - return SUANPAN_SUCCESS; - } - +int process_recorder_command(const shared_ptr& domain, istringstream& command, const unsigned tag, const bool use_hdf5) { string object_type; if(!get_input(command, object_type)) { suanpan_error("A valid object type is required.\n"); @@ -40,7 +28,7 @@ int create_new_recorder(const shared_ptr& domain, istringstream& com } if(is_equal(object_type, "Eigen")) { - if(!domain->insert(make_shared(tag, is_equal(file_type[0], 'h')))) + if(!domain->insert(make_shared(tag, use_hdf5))) suanpan_error("Fail to create new eigen recorder.\n"); return SUANPAN_SUCCESS; } @@ -51,12 +39,11 @@ int create_new_recorder(const shared_ptr& domain, istringstream& com return SUANPAN_SUCCESS; } - unsigned interval = 1; - while(true) if(const auto peek_value = command.peek(); is_equal(peek_value, '\t') || is_equal(peek_value, ' ')) command.ignore(); else break; + auto interval = 1u; if(is_equal(command.peek(), 'e') || is_equal(command.peek(), 'i')) { string tmp_string; get_input(command, tmp_string); @@ -64,14 +51,28 @@ int create_new_recorder(const shared_ptr& domain, istringstream& com } if(is_equal(object_type, "Frame")) { - if(!domain->insert(make_shared(tag, to_list(variable_type.c_str()), interval))) + if(!domain->insert(make_shared(tag, to_token(variable_type), interval))) suanpan_error("Fail to create new frame recorder.\n"); return SUANPAN_SUCCESS; } if(is_equal(object_type, "Visualisation")) { - unsigned width = 6; - if(!command.eof() && !get_input(command, width)) width = 6; - if(!domain->insert(make_shared(tag, to_list(variable_type.c_str()), interval, width))) + string para; + auto width = 6u; + auto scale = 1.; + while(!command.eof() && get_input(command, para)) + if(is_equal(para, "Width")) { + if(!get_input(command, width)) { + width = 6; + suanpan_error("A valid width is required, using six.\n"); + } + } + else if(is_equal(para, "Scale")) { + if(!get_input(command, scale)) { + scale = 1.; + suanpan_error("A valid scale is required, using unity.\n"); + } + } + if(!domain->insert(make_shared(tag, to_token(variable_type), interval, width, scale))) suanpan_error("Fail to create new visualisation recorder.\n"); return SUANPAN_SUCCESS; } @@ -80,25 +81,25 @@ int create_new_recorder(const shared_ptr& domain, istringstream& com std::vector object_tag; while(!command.eof() && get_input(command, s_object_tag)) object_tag.emplace_back(s_object_tag); - if(const auto use_hdf5 = is_equal(file_type[0], 'h'); is_equal(object_type, "Node") && !domain->insert(make_shared(tag, uvec(object_tag), to_list(variable_type.c_str()), interval, true, use_hdf5))) + if(is_equal(object_type, "Node") && !domain->insert(make_shared(tag, uvec(object_tag), to_token(variable_type), interval, true, use_hdf5))) suanpan_error("Fail to create new node recorder.\n"); - else if(is_equal(object_type, "GroupNode") && !domain->insert(make_shared(tag, uvec(object_tag), to_list(variable_type.c_str()), interval, true, use_hdf5))) + else if(is_equal(object_type, "GroupNode") && !domain->insert(make_shared(tag, uvec(object_tag), to_token(variable_type), interval, true, use_hdf5))) suanpan_error("Fail to create new group node recorder.\n"); - else if(is_equal(object_type, "Sum") && !domain->insert(make_shared(tag, uvec(object_tag), to_list(variable_type.c_str()), interval, true, use_hdf5))) + else if(is_equal(object_type, "Sum") && !domain->insert(make_shared(tag, uvec(object_tag), to_token(variable_type), interval, true, use_hdf5))) suanpan_error("Fail to create new summation recorder.\n"); - else if(is_equal(object_type, "GroupSum") && !domain->insert(make_shared(tag, uvec(object_tag), to_list(variable_type.c_str()), interval, true, use_hdf5))) + else if(is_equal(object_type, "GroupSum") && !domain->insert(make_shared(tag, uvec(object_tag), to_token(variable_type), interval, true, use_hdf5))) suanpan_error("Fail to create new group summation recorder.\n"); - else if(is_equal(object_type, "Element") && !domain->insert(make_shared(tag, uvec(object_tag), to_list(variable_type.c_str()), interval, true, use_hdf5))) + else if(is_equal(object_type, "Element") && !domain->insert(make_shared(tag, uvec(object_tag), to_token(variable_type), interval, true, use_hdf5))) suanpan_error("Fail to create new element recorder.\n"); - else if(is_equal(object_type, "GroupElement") && !domain->insert(make_shared(tag, uvec(object_tag), to_list(variable_type.c_str()), interval, true, use_hdf5))) + else if(is_equal(object_type, "GroupElement") && !domain->insert(make_shared(tag, uvec(object_tag), to_token(variable_type), interval, true, use_hdf5))) suanpan_error("Fail to create new group element recorder.\n"); else if(is_equal(object_type, "Amplitude") && !domain->insert(make_shared(tag, uvec(object_tag), OutputType::AMP, interval, true, use_hdf5))) suanpan_error("Fail to create new amplitude recorder.\n"); else if(is_equal(object_type, "Global")) { bool flag; - if(OutputType::K == to_list(variable_type.c_str())) flag = domain->insert(make_shared(tag, interval, true, use_hdf5)); - else if(OutputType::M == to_list(variable_type.c_str())) flag = domain->insert(make_shared(tag, interval, true, use_hdf5)); - else flag = domain->insert(make_shared(tag, to_list(variable_type.c_str()), interval, true, use_hdf5)); + if(OutputType::K == to_token(variable_type)) flag = domain->insert(make_shared(tag, interval, true, use_hdf5)); + else if(OutputType::M == to_token(variable_type)) flag = domain->insert(make_shared(tag, interval, true, use_hdf5)); + else flag = domain->insert(make_shared(tag, to_token(variable_type), interval, true, use_hdf5)); if(!flag) suanpan_error("Fail to create new global recorder.\n"); } @@ -106,171 +107,28 @@ int create_new_recorder(const shared_ptr& domain, istringstream& com return SUANPAN_SUCCESS; } -int create_new_plainrecorder(const shared_ptr& domain, istringstream& command) { +int create_new_recorder(const shared_ptr& domain, istringstream& command) { unsigned tag; if(!get_input(command, tag)) { suanpan_error("A valid tag is required.\n"); return SUANPAN_SUCCESS; } - string object_type; - if(!get_input(command, object_type)) { + string file_type; + if(!get_input(command, file_type)) { suanpan_error("A valid object type is required.\n"); return SUANPAN_SUCCESS; } - if(is_equal(object_type, "Eigen")) { - if(!domain->insert(make_shared(tag, false))) - suanpan_error("Fail to create new eigen recorder.\n"); - return SUANPAN_SUCCESS; - } - - string variable_type; - if(!is_equal(object_type, "Amplitude") && !get_input(command, variable_type)) { - suanpan_error("A valid recorder type is required.\n"); - return SUANPAN_SUCCESS; - } - - unsigned interval = 1; - - while(true) - if(const auto peek_value = command.peek(); is_equal(peek_value, '\t') || is_equal(peek_value, ' ')) command.ignore(); - else break; - - if(is_equal(command.peek(), 'e') || is_equal(command.peek(), 'i')) { - string tmp_string; - get_input(command, tmp_string); - if(!get_input(command, interval)) return SUANPAN_SUCCESS; - } - - if(is_equal(object_type, "Visualisation")) { - unsigned width = 6; - if(!command.eof() && !get_input(command, width)) width = 6; - if(!domain->insert(make_shared(tag, to_list(variable_type.c_str()), interval, width))) - suanpan_error("Fail to create new visualisation recorder.\n"); - return SUANPAN_SUCCESS; - } - - unsigned s_object_tag; - std::vector object_tag; - while(!command.eof() && get_input(command, s_object_tag)) object_tag.emplace_back(s_object_tag); - - if(is_equal(object_type, "Node") && !domain->insert(make_shared(tag, uvec(object_tag), to_list(variable_type.c_str()), interval, true, false))) - suanpan_error("Fail to create new node recorder.\n"); - else if(is_equal(object_type, "GroupNode") && !domain->insert(make_shared(tag, uvec(object_tag), to_list(variable_type.c_str()), interval, true, false))) - suanpan_error("Fail to create new group node recorder.\n"); - else if(is_equal(object_type, "Sum") && !domain->insert(make_shared(tag, uvec(object_tag), to_list(variable_type.c_str()), interval, true, false))) - suanpan_error("Fail to create new summation recorder.\n"); - else if(is_equal(object_type, "GroupSum") && !domain->insert(make_shared(tag, uvec(object_tag), to_list(variable_type.c_str()), interval, true, false))) - suanpan_error("Fail to create new group summation recorder.\n"); - else if(is_equal(object_type, "Element") && !domain->insert(make_shared(tag, uvec(object_tag), to_list(variable_type.c_str()), interval, true, false))) - suanpan_error("Fail to create new element recorder.\n"); - else if(is_equal(object_type, "GroupElement") && !domain->insert(make_shared(tag, uvec(object_tag), to_list(variable_type.c_str()), interval, true, false))) - suanpan_error("Fail to create new group element recorder.\n"); - else if(is_equal(object_type, "Amplitude") && !domain->insert(make_shared(tag, uvec(object_tag), OutputType::AMP, interval, true, false))) - suanpan_error("Fail to create new amplitude recorder.\n"); - else if(is_equal(object_type, "Global")) { - bool flag; - if(OutputType::K == to_list(variable_type.c_str())) flag = domain->insert(make_shared(tag, interval, true, false)); - else if(OutputType::M == to_list(variable_type.c_str())) flag = domain->insert(make_shared(tag, interval, true, false)); - else flag = domain->insert(make_shared(tag, to_list(variable_type.c_str()), interval, true, false)); - if(!flag) - suanpan_error("Fail to create new global recorder.\n"); - } - - return SUANPAN_SUCCESS; + return process_recorder_command(domain, command, tag, is_equal(file_type[0], 'h')); } -int create_new_hdf5recorder(const shared_ptr& domain, istringstream& command) { +int create_new_recorder(const shared_ptr& domain, istringstream& command, const bool use_hdf5) { unsigned tag; if(!get_input(command, tag)) { suanpan_error("A valid tag is required.\n"); return SUANPAN_SUCCESS; } - string object_type; - if(!get_input(command, object_type)) { - suanpan_error("A valid object type is required.\n"); - return SUANPAN_SUCCESS; - } - - if(is_equal(object_type, "Eigen")) { - if(!domain->insert(make_shared(tag, true))) - suanpan_error("Fail to create new eigen recorder.\n"); - return SUANPAN_SUCCESS; - } - - string variable_type; - if(!is_equal(object_type, "Amplitude") && !get_input(command, variable_type)) { - suanpan_error("A valid recorder type is required.\n"); - return SUANPAN_SUCCESS; - } - - unsigned interval = 1; - - while(true) - if(const auto peek_value = command.peek(); is_equal(peek_value, '\t') || is_equal(peek_value, ' ')) command.ignore(); - else break; - - if(is_equal(command.peek(), 'e') || is_equal(command.peek(), 'i')) { - string tmp_string; - get_input(command, tmp_string); - if(!get_input(command, interval)) return SUANPAN_SUCCESS; - } - - if(is_equal(object_type, "Frame")) { - if(!domain->insert(make_shared(tag, to_list(variable_type.c_str()), interval))) - suanpan_error("Fail to create new frame recorder.\n"); - return SUANPAN_SUCCESS; - } - if(is_equal(object_type, "Visualisation")) { - string para; - unsigned width = 6; - auto scale = 1.; - while(!command.eof() && get_input(command, para)) - if(is_equal(para, "Width")) { - if(!get_input(command, width)) { - width = 6; - suanpan_error("A valid width is required.\n"); - } - } - else if(is_equal(para, "Scale")) { - if(!get_input(command, scale)) { - scale = 1.; - suanpan_error("A valid scale is required.\n"); - } - } - if(!domain->insert(make_shared(tag, to_list(variable_type.c_str()), interval, width, scale))) - suanpan_error("Fail to create new visualisation recorder.\n"); - return SUANPAN_SUCCESS; - } - - uword s_object_tag = 0; - std::vector object_tag; - while(!command.eof() && get_input(command, s_object_tag)) object_tag.emplace_back(s_object_tag); - - if(is_equal(object_type, "Node") && !domain->insert(make_shared(tag, uvec(object_tag), to_list(variable_type.c_str()), interval, true, true))) - suanpan_error("Fail to create new node recorder.\n"); - else if(is_equal(object_type, "GroupNode") && !domain->insert(make_shared(tag, uvec(object_tag), to_list(variable_type.c_str()), interval, true, true))) - suanpan_error("Fail to create new group node recorder.\n"); - else if(is_equal(object_type, "Sum") && !domain->insert(make_shared(tag, uvec(object_tag), to_list(variable_type.c_str()), interval, true, true))) - suanpan_error("Fail to create new summation recorder.\n"); - else if(is_equal(object_type, "GroupSum") && !domain->insert(make_shared(tag, uvec(object_tag), to_list(variable_type.c_str()), interval, true, true))) - suanpan_error("Fail to create new group summation recorder.\n"); - else if(is_equal(object_type, "Element") && !domain->insert(make_shared(tag, uvec(object_tag), to_list(variable_type.c_str()), interval, true, true))) - suanpan_error("Fail to create new element recorder.\n"); - else if(is_equal(object_type, "GroupElement") && !domain->insert(make_shared(tag, uvec(object_tag), to_list(variable_type.c_str()), interval, true, true))) - suanpan_error("Fail to create new group element recorder.\n"); - else if(is_equal(object_type, "Amplitude") && !domain->insert(make_shared(tag, uvec(object_tag), OutputType::AMP, interval, true, true))) - suanpan_error("Fail to create new amplitude recorder.\n"); - else if(is_equal(object_type, "Global")) { - bool flag; - if(OutputType::K == to_list(variable_type.c_str())) flag = domain->insert(make_shared(tag, interval, true, true)); - else if(OutputType::M == to_list(variable_type.c_str())) flag = domain->insert(make_shared(tag, interval, true, true)); - else flag = domain->insert(make_shared(tag, to_list(variable_type.c_str()), interval, true, true)); - if(!flag) - suanpan_error("Fail to create new global recorder.\n"); - } - - return SUANPAN_SUCCESS; + return process_recorder_command(domain, command, tag, use_hdf5); } diff --git a/Recorder/RecorderParser.h b/Recorder/RecorderParser.h index 694cadfce..c61407a01 100644 --- a/Recorder/RecorderParser.h +++ b/Recorder/RecorderParser.h @@ -23,7 +23,6 @@ class DomainBase; int create_new_recorder(const std::shared_ptr&, std::istringstream&); -int create_new_plainrecorder(const std::shared_ptr&, std::istringstream&); -int create_new_hdf5recorder(const std::shared_ptr&, std::istringstream&); +int create_new_recorder(const std::shared_ptr&, std::istringstream&, bool); #endif diff --git a/Recorder/SumRecorder.cpp b/Recorder/SumRecorder.cpp index 81aa17b91..0595014f8 100644 --- a/Recorder/SumRecorder.cpp +++ b/Recorder/SumRecorder.cpp @@ -34,15 +34,21 @@ void SumRecorder::initialize(const shared_ptr& D) { void SumRecorder::record(const shared_ptr& D) { if(!if_perform_record()) return; - auto& obj_tag = get_object_tag(); - - std::vector data{{0.}}; - for(auto I = 0; I < static_cast(obj_tag.n_elem); ++I) if(const auto t_data = D->get(obj_tag(I))->record(get_variable_type()); !t_data.empty() && !t_data.cbegin()->empty()) data[0] += t_data[0]; - insert(data, 0); + auto data = 0.; + for(const auto I : get_object_tag()) { + const auto& t_node = D->get(I); + if(!t_node->is_active()) continue; + const auto t_data = t_node->record(get_variable_type()); + if(t_data.empty()) continue; + const auto& n_data = t_data[0]; + if(n_data.empty()) continue; + data += as_scalar(n_data); + } + insert({{data}}, 0); if(if_record_time()) insert(D->get_factory()->get_current_time()); } void SumRecorder::print() { - suanpan_info("A summation recorder.\n"); + suanpan_info("A summation recorder computes the summation of a collection of nodal scalar variables.\n"); } diff --git a/Recorder/SumRecorder.h b/Recorder/SumRecorder.h index c158d5890..54cab6c56 100644 --- a/Recorder/SumRecorder.h +++ b/Recorder/SumRecorder.h @@ -33,12 +33,13 @@ class SumRecorder : public Recorder { public: - SumRecorder(unsigned, // tag - uvec&&, // object tags - OutputType, // recorder type - unsigned, // interval - bool, // if to record time - bool // if to use hdf5 + SumRecorder( + unsigned, // tag + uvec&&, // object tags + OutputType, // recorder type + unsigned, // interval + bool, // if to record time + bool // if to use hdf5 ); void initialize(const shared_ptr&) override; diff --git a/Recorder/VisualisationRecorder.cpp b/Recorder/VisualisationRecorder.cpp index a39fce9f3..ae4c6200f 100644 --- a/Recorder/VisualisationRecorder.cpp +++ b/Recorder/VisualisationRecorder.cpp @@ -28,20 +28,19 @@ VisualisationRecorder::VisualisationRecorder(const unsigned T, const OutputType config.type = get_variable_type(); config.scale = S; - if(const auto t_name = vtk_get_name(config.type); 'U' == t_name[0] || 'V' == t_name[0] || 'A' == t_name[0]) function_handler = &vtk_plot_node_quantity; - else function_handler = &vtk_plot_element_quantity; + const auto P = to_token(to_category(config.type)); + + function_handler = OutputType::U == P || OutputType::V == P || OutputType::A == P || OutputType::RF == P || OutputType::DF == P || OutputType::IF == P ? &vtk_plot_node_quantity : &vtk_plot_element_quantity; #endif } void VisualisationRecorder::record([[maybe_unused]] const shared_ptr& D) { #ifdef SUANPAN_VTK - if(1 != interval && counter++ != interval) return; - - counter = 1; + if(!if_perform_record()) return; ostringstream file_name; - file_name << 'R' << get_tag() << '-' << to_char(get_variable_type()) << '-' << std::setw(width) << std::setfill('0') << ++total_counter << ".vtk"; + file_name << 'R' << get_tag() << '-' << to_name(get_variable_type()) << '-' << std::setw(static_cast(width)) << std::setfill('0') << ++total_counter << ".vtk"; fs::path file_path = SUANPAN_OUTPUT; diff --git a/Recorder/VisualisationRecorder.h b/Recorder/VisualisationRecorder.h index 0d819f61c..c38a01550 100644 --- a/Recorder/VisualisationRecorder.h +++ b/Recorder/VisualisationRecorder.h @@ -36,8 +36,8 @@ #endif class VisualisationRecorder final : public Recorder { - unsigned total_counter = 0; - unsigned width = 6; + unsigned total_counter = 0u; + unsigned width = 6u; #ifdef SUANPAN_VTK vtkInfo config; @@ -46,11 +46,12 @@ class VisualisationRecorder final : public Recorder { #endif public: - VisualisationRecorder(unsigned, // tag - OutputType, // recorder type - unsigned, // interval - unsigned, // output width - double = 1. // scale + VisualisationRecorder( + unsigned, // tag + OutputType, // recorder type + unsigned, // interval + unsigned, // output width + double = 1. // scale ); void record(const shared_ptr&) override; diff --git a/Resource/suanPan.rc b/Resource/suanPan.rc index 48559410b..8ef1f837b 100644 --- a/Resource/suanPan.rc +++ b/Resource/suanPan.rc @@ -51,8 +51,8 @@ END // VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,1,0,0 - PRODUCTVERSION 3,1,0,0 + FILEVERSION 3,2,0,0 + PRODUCTVERSION 3,2,0,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -69,12 +69,12 @@ BEGIN BEGIN VALUE "CompanyName", "TLCFEM" VALUE "FileDescription", "suanPan --- An Open Source, Parallel and Heterogeneous Finite Element Analysis Framework" - VALUE "FileVersion", "3.1.0.0" + VALUE "FileVersion", "3.2.0.0" VALUE "InternalName", "suanPan" VALUE "LegalCopyright", "Copyright (C) 2017-2023 Theodore Chang https://github.com/TLCFEM/suanPan" VALUE "OriginalFilename", "suanPan" VALUE "ProductName", "suanPan" - VALUE "ProductVersion", "3.1.0.0" + VALUE "ProductVersion", "3.2.0.0" END END BLOCK "VarFileInfo" diff --git a/Script/AlmaLinux.Dockerfile b/Script/AlmaLinux.Dockerfile deleted file mode 100644 index 48dd4fde8..000000000 --- a/Script/AlmaLinux.Dockerfile +++ /dev/null @@ -1,27 +0,0 @@ -FROM almalinux:9 as build - -RUN dnf upgrade --refresh -y && dnf install -y libglvnd-devel gcc g++ gfortran rpm-build rpm-devel rpmdevtools cmake wget git - -RUN wget -q https://registrationcenter-download.intel.com/akdlm/IRC_NAS/adb8a02c-4ee7-4882-97d6-a524150da358/l_onemkl_p_2023.2.0.49497_offline.sh -RUN sh ./l_onemkl_p_2023.2.0.49497_offline.sh -a --silent --eula accept && rm ./l_onemkl_p_2023.2.0.49497_offline.sh - -RUN mkdir vtk-build && cd vtk-build && \ - wget -q https://www.vtk.org/files/release/9.2/VTK-9.2.6.tar.gz && tar xf VTK-9.2.6.tar.gz && \ - cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF ./VTK-9.2.6 && \ - make install -j"$(nproc)" && cd .. && rm -r vtk-build - -RUN git clone -b dev --depth 1 https://github.com/TLCFEM/suanPan.git -RUN cd suanPan && mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_MULTITHREAD=ON -DUSE_HDF5=ON -DUSE_EXTERNAL_VTK=ON -DUSE_MKL=ON -DMKLROOT=/opt/intel/oneapi/mkl/latest/ -DUSE_INTEL_OPENMP=OFF -DLINK_DYNAMIC_MKL=OFF -DCMAKE_INSTALL_PREFIX=suanPan-linux-mkl-vtk -DBUILD_PACKAGE=RPM .. -RUN cd suanPan/build && make install -j"$(nproc)" && make package -RUN cd suanPan/build && cp suanPan*.rpm / && \ - tar czf /suanPan-linux-mkl-vtk.tar.gz suanPan-linux-mkl-vtk && \ - cd suanPan-linux-mkl-vtk/bin && ./suanPan.sh -v && \ - cd / && ls -al && rm -r suanPan - -FROM almalinux:9 as runtime - -COPY --from=build /suanPan*.rpm / - -RUN dnf upgrade --refresh -y && dnf install ./suanPan*.rpm -y - -RUN suanPan -v \ No newline at end of file diff --git a/Script/CompileAll.ps1 b/Script/CompileAll.ps1 new file mode 100644 index 000000000..87df50b27 --- /dev/null +++ b/Script/CompileAll.ps1 @@ -0,0 +1,28 @@ +# This script collects all cmake-build* folders and compile them in parallel. +# It is mainly used to test different compilers and configurations. +# The cmake-build* naming convention is used by CLion. +# CLion also enables auto-reloading of CMakeLists.txt files, which means the cmake-build* folders are always up-to-date. +# One can then invoke this script such that +# ```ps +# .\Script\CompileAll.ps1 +# ``` + +if (Test-Path -Path "CompileAll.ps1") { Set-Location -Path .. } + +$folders = Get-ChildItem -Directory -Name -Path . | Where-Object { $_ -like "cmake-build*" } | ForEach-Object { Convert-Path $_ } +$folder_count = $folders.length +$per_core = [int][math]::Ceiling($env:NUMBER_OF_PROCESSORS / ($folder_count - 1) - 1) + +$script = { + param ( + [string]$folder, + [int]$jobs + ) + Set-Location $folder + Write-Output "Compiling $folder with $jobs jobs." + cmake --build . --parallel $jobs +} + +foreach ($folder in $folders) { Start-Job -ScriptBlock $script -ArgumentList $folder, $per_core } + +Wait-Job -Job (Get-Job) | Receive-Job diff --git a/Script/CompileAll.sh b/Script/CompileAll.sh index a4fb670b9..55babcc11 100755 --- a/Script/CompileAll.sh +++ b/Script/CompileAll.sh @@ -4,6 +4,11 @@ if [ -f "/opt/intel/oneapi/setvars.sh" ]; then source /opt/intel/oneapi/setvars.sh fi +SCRIPT_DIR=$(realpath "$0") +SCRIPT_DIR=$(dirname "$SCRIPT_DIR") +SCRIPT_DIR=$(dirname "$SCRIPT_DIR") +cd "$SCRIPT_DIR" || exit + # shellcheck disable=SC2044 for folder in $(find . -maxdepth 1 -type d -name "cmake-build*"); do ( diff --git a/Script/Coverage.sh b/Script/Coverage.sh index 1ea48c7af..aa6e679f4 100755 --- a/Script/Coverage.sh +++ b/Script/Coverage.sh @@ -32,6 +32,7 @@ cp ../Example/Material/T.txt . cp ../Example/Material/CYCLE.txt . cp ../Example/Material/EHIST . cp ../Example/Material/example . +cp ../Example/Material/exp . cp ../Example/Section/HIST . for file in $files; do diff --git a/Script/Fedora.Dockerfile b/Script/Fedora.Dockerfile index 41c757c97..e98fe5b7a 100644 --- a/Script/Fedora.Dockerfile +++ b/Script/Fedora.Dockerfile @@ -1,4 +1,4 @@ -FROM fedora:38 as build +FROM fedora:36 as build RUN dnf upgrade --refresh -y && dnf install -y libglvnd-devel gcc g++ gfortran rpm-build rpm-devel rpmdevtools cmake wget git @@ -11,7 +11,7 @@ RUN mkdir vtk-build && cd vtk-build && \ make install -j"$(nproc)" && cd .. && rm -r vtk-build RUN git clone -b dev --depth 1 https://github.com/TLCFEM/suanPan.git -RUN cd suanPan && mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_MULTITHREAD=ON -DUSE_HDF5=ON -DUSE_EXTERNAL_VTK=ON -DUSE_MKL=ON -DMKLROOT=/opt/intel/oneapi/mkl/latest/ -DUSE_INTEL_OPENMP=OFF -DLINK_DYNAMIC_MKL=OFF -DCMAKE_INSTALL_PREFIX=suanPan-linux-mkl-vtk -DBUILD_PACKAGE=RPM .. +RUN cd suanPan && mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_MULTITHREAD=ON -DUSE_HDF5=ON -DUSE_VTK=ON -DUSE_MKL=ON -DMKLROOT=/opt/intel/oneapi/mkl/latest/ -DUSE_INTEL_OPENMP=OFF -DLINK_DYNAMIC_MKL=OFF -DCMAKE_INSTALL_PREFIX=suanPan-linux-mkl-vtk -DBUILD_PACKAGE=RPM .. RUN cd suanPan/build && make install -j"$(nproc)" && make package RUN cd suanPan/build && cp suanPan*.rpm / && \ tar czf /suanPan-linux-mkl-vtk.tar.gz suanPan-linux-mkl-vtk && \ diff --git a/Script/RemoveBinary.sh b/Script/RemoveBinary.sh index fbb3d48d7..3818b8164 100755 --- a/Script/RemoveBinary.sh +++ b/Script/RemoveBinary.sh @@ -2,14 +2,10 @@ shopt -s nullglob -if [ -f "suanPan.cpp" ]; then - cd . -elif [ -f "../suanPan.cpp" ]; then - cd .. -else - echo "Please invoke this script in the root folder." - exit 1 -fi +SCRIPT_DIR=$(realpath "$0") +SCRIPT_DIR=$(dirname "$SCRIPT_DIR") +SCRIPT_DIR=$(dirname "$SCRIPT_DIR") +cd "$SCRIPT_DIR" || exit path_array=(cmake-build*) path_array+=(build*) diff --git a/Script/Rev.sh b/Script/Rev.sh index b0aadf96e..5cd4e28b9 100755 --- a/Script/Rev.sh +++ b/Script/Rev.sh @@ -12,20 +12,18 @@ if [ ! -d ".git" ]; then exit fi -if [ -f "./suanPan.cpp" ]; then - file_path="./Toolbox/revision.h" -elif [ -f "../suanPan.cpp" ]; then - file_path="../Toolbox/revision.h" -else - echo "Error: Cannot locate the root directory." - exit -fi +SCRIPT_DIR=$(realpath "$0") +SCRIPT_DIR=$(dirname "$SCRIPT_DIR") +SCRIPT_DIR=$(dirname "$SCRIPT_DIR") +cd "$SCRIPT_DIR" || exit # sleep random time to avoid git conflict in parallel execution sleep $((RANDOM % 4)).$((((RANDOM % 10)) + 1))s git_rev=$(git rev-parse --short=8 HEAD) +file_path="./Toolbox/revision.h" + echo "constexpr auto SUANPAN_REVISION = \"$git_rev\";" >$file_path echo "Revision tag set to $git_rev" diff --git a/Script/Rocky.Dockerfile b/Script/Rocky.Dockerfile new file mode 100644 index 000000000..d88e1e405 --- /dev/null +++ b/Script/Rocky.Dockerfile @@ -0,0 +1,17 @@ +FROM tlcfem/suanpan-env:latest as build + +RUN git clone -b dev --depth 1 https://github.com/TLCFEM/suanPan.git +RUN cd suanPan && mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_MULTITHREAD=ON -DUSE_HDF5=ON -DUSE_VTK=ON -DUSE_MKL=ON -DMKLROOT=/opt/intel/oneapi/mkl/latest/ -DUSE_INTEL_OPENMP=OFF -DLINK_DYNAMIC_MKL=OFF -DCMAKE_INSTALL_PREFIX=suanPan-linux-mkl-vtk -DBUILD_PACKAGE=RPM .. +RUN cd suanPan/build && make install -j"$(nproc)" && make package +RUN cd suanPan/build && cp suanPan*.rpm / && \ + tar czf /suanPan-linux-mkl-vtk.tar.gz suanPan-linux-mkl-vtk && \ + cd suanPan-linux-mkl-vtk/bin && ./suanPan.sh -v && \ + cd / && ls -al && rm -r suanPan + +FROM rockylinux:9 as runtime + +COPY --from=build /suanPan*.rpm / + +RUN dnf install ./suanPan*.rpm -y + +RUN suanPan -v \ No newline at end of file diff --git a/Script/Rocky.Pre.Dockerfile b/Script/Rocky.Pre.Dockerfile new file mode 100644 index 000000000..9dbed0f06 --- /dev/null +++ b/Script/Rocky.Pre.Dockerfile @@ -0,0 +1,11 @@ +FROM rockylinux:9 as build + +RUN dnf upgrade --refresh -y && dnf install -y libglvnd-devel gcc g++ gfortran rpm-build rpm-devel rpmdevtools cmake wget git + +RUN wget -q https://registrationcenter-download.intel.com/akdlm/IRC_NAS/adb8a02c-4ee7-4882-97d6-a524150da358/l_onemkl_p_2023.2.0.49497_offline.sh && \ + sh ./l_onemkl_p_2023.2.0.49497_offline.sh -a --silent --eula accept && rm ./l_onemkl_p_2023.2.0.49497_offline.sh + +RUN mkdir vtk-build && cd vtk-build && \ + wget -q https://www.vtk.org/files/release/9.2/VTK-9.2.6.tar.gz && tar xf VTK-9.2.6.tar.gz && \ + cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF ./VTK-9.2.6 && \ + make install -j"$(nproc)" && cd .. && rm -r vtk-build diff --git a/Script/Ubuntu.Dockerfile b/Script/Ubuntu.Dockerfile index 8597a61d5..b5a7d0c64 100644 --- a/Script/Ubuntu.Dockerfile +++ b/Script/Ubuntu.Dockerfile @@ -11,8 +11,8 @@ RUN apt-get update -y && apt-get install -y wget gnupg RUN wget -q https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB RUN apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB -RUN echo "deb https://apt.repos.intel.com/oneapi all main" | tee /etc/apt/sources.list.d/oneAPI.list RUN rm GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB +RUN echo "deb https://apt.repos.intel.com/oneapi all main" | tee /etc/apt/sources.list.d/oneAPI.list RUN apt-get update -y && apt-get install -y gcc g++ gfortran cmake git intel-oneapi-mkl-devel libxt-dev freeglut3-dev libxcursor-dev file dpkg-dev @@ -22,7 +22,7 @@ RUN mkdir vtk-build && cd vtk-build && \ make install -j"$(nproc)" && cd .. && rm -r vtk-build RUN git clone -b dev --depth 1 https://github.com/TLCFEM/suanPan.git -RUN cd suanPan && mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_MULTITHREAD=ON -DUSE_HDF5=ON -DUSE_EXTERNAL_VTK=ON -DUSE_MKL=ON -DMKLROOT=/opt/intel/oneapi/mkl/latest/ -DUSE_INTEL_OPENMP=OFF -DLINK_DYNAMIC_MKL=OFF -DCMAKE_INSTALL_PREFIX=suanPan-linux-mkl-vtk -DBUILD_PACKAGE=DEB .. +RUN cd suanPan && mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_MULTITHREAD=ON -DUSE_HDF5=ON -DUSE_VTK=ON -DUSE_MKL=ON -DMKLROOT=/opt/intel/oneapi/mkl/latest/ -DUSE_INTEL_OPENMP=OFF -DLINK_DYNAMIC_MKL=OFF -DCMAKE_INSTALL_PREFIX=suanPan-linux-mkl-vtk -DBUILD_PACKAGE=DEB .. RUN cd suanPan/build && make install -j"$(nproc)" && make package RUN cd suanPan/build && cp suanPan*.deb / && \ tar czf /suanPan-linux-mkl-vtk.tar.gz suanPan-linux-mkl-vtk && \ diff --git a/Script/Version.sh b/Script/Version.sh index 9f93c862f..f79da7108 100755 --- a/Script/Version.sh +++ b/Script/Version.sh @@ -7,19 +7,13 @@ if [ $# -ne 3 ]; then exit 0 fi -folder_name="." - -if [ ! -f "suanPan.cpp" ]; then - if [ -f "Version.sh" ]; then - folder_name=".." - else - echo "Please invoke under the root folder of the project." - exit 0 - fi -fi +SCRIPT_DIR=$(realpath "$0") +SCRIPT_DIR=$(dirname "$SCRIPT_DIR") +SCRIPT_DIR=$(dirname "$SCRIPT_DIR") +cd "$SCRIPT_DIR" || exit # ci/cd -yml_file=$(find "$folder_name/.github/workflows" -name "*.yml") +yml_file=$(find ".github/workflows" -name "*.yml") for file in $yml_file; do if [ -f "$file" ]; then sed -i "s/suanPan-[0-9]\.[0-9]\.[0-9]/suanPan-$1\.$2\.$3/g" "$file" @@ -27,26 +21,26 @@ for file in $yml_file; do done # inno setup -file_name="$folder_name/Enhancement/suanPan.iss" +file_name="Enhancement/suanPan.iss" if [ -f $file_name ]; then sed -i "s/#define MyAppVersion \"[0-9]\.[0-9]\"/#define MyAppVersion \"$1\.$2\"/g" $file_name fi # chocolatey -file_name="$folder_name/Enhancement/suanpan.nuspec" +file_name="Enhancement/suanpan.nuspec" if [ -f $file_name ]; then sed -i "s/[0-9]\.[0-9]<\/version>/$1\.$2<\/version>/g" $file_name fi # msvc -file_name="$folder_name/Resource/suanPan.rc" +file_name="Resource/suanPan.rc" if [ -f $file_name ]; then sed -i "s/[0-9],[0-9],[0-9],0/$1,$2,$3,0/g" $file_name sed -i "s/[0-9]\.[0-9]\.[0-9]\.0/$1\.$2\.$3\.0/g" $file_name fi # application -file_name="$folder_name/Toolbox/argument.cpp" +file_name="Toolbox/argument.cpp" if [ -f $file_name ]; then sed -i "s/constexpr auto SUANPAN_MAJOR = [0-9];/constexpr auto SUANPAN_MAJOR = $1;/g" $file_name sed -i "s/constexpr auto SUANPAN_MINOR = [0-9];/constexpr auto SUANPAN_MINOR = $2;/g" $file_name @@ -54,13 +48,13 @@ if [ -f $file_name ]; then fi # cpack -file_name="$folder_name/CMakeLists.txt" +file_name="CMakeLists.txt" if [ -f $file_name ]; then sed -i "s/set(CPACK_PACKAGE_VERSION \"[0-9]\.[0-9]\.[0-9]\")/set(CPACK_PACKAGE_VERSION \"$1\.$2\.$3\")/g" $file_name fi # snapcraft -file_name="$folder_name/snapcraft.yaml" +file_name="snapcraft.yaml" if [ -f $file_name ]; then sed -i "s/version: \"[0-9]\.[0-9]\"/version: \"$1\.$2\"/g" $file_name fi diff --git a/Section/CMakeLists.txt b/Section/CMakeLists.txt index 08099c86f..cfe792a3e 100644 --- a/Section/CMakeLists.txt +++ b/Section/CMakeLists.txt @@ -8,11 +8,13 @@ include(Section1D/CMakeLists.txt) include(Section2D/CMakeLists.txt) include(Section3D/CMakeLists.txt) include(SectionNM/CMakeLists.txt) +include(SectionOS/CMakeLists.txt) include(SectionShell/CMakeLists.txt) add_library(${PROJECT_NAME} STATIC Section.cpp + Fibre.cpp SectionParser.cpp SectionTester.cpp - ${S1D} ${S2D} ${S3D} ${SNM} ${SS} - ) + ${S1D} ${S2D} ${S3D} ${SNM} ${SOS} ${SS} +) diff --git a/Section/Fibre.cpp b/Section/Fibre.cpp new file mode 100644 index 000000000..f6a4c9ff6 --- /dev/null +++ b/Section/Fibre.cpp @@ -0,0 +1,112 @@ +/******************************************************************************* + * Copyright (C) 2017-2023 Theodore Chang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + ******************************************************************************/ + +#include "Fibre.h" +#include + +Fibre::Fibre(const unsigned T, uvec&& FT, const SectionType ST) + : Section(T, ST, 0) + , fibre_tag(std::forward(FT)) {} + +int Fibre::initialize(const shared_ptr& D) { + fibre.clear(); + fibre.reserve(fibre_tag.n_elem); + + const auto host_type = get_section_type(); + + auto total_area = 0., total_linear_density = 0.; + + initial_stiffness.zeros(); + for(const auto I : fibre_tag) { + fibre.emplace_back(suanpan::initialized_section_copy(D, I)); + if(nullptr == fibre.back() || host_type != fibre.back()->get_section_type()) { + suanpan_warning("Section {} is ignored as it is not compatible with fibre section {}.\n", I, get_tag()); + fibre.pop_back(); + } + else { + total_area += fibre.back()->get_area(); + total_linear_density += fibre.back()->get_linear_density(); + initial_stiffness += fibre.back()->get_initial_stiffness(); + } + } + + access::rw(area) = total_area; + access::rw(linear_density) = total_linear_density; + + trial_stiffness = current_stiffness = initial_stiffness; + + if(const auto os_size = static_cast(section_type); SectionType::OS3D == section_type) trial_geometry = current_geometry = initial_geometry.zeros(os_size, os_size); + + return SUANPAN_SUCCESS; +} + +void Fibre::set_characteristic_length(const double L) const { + Section::set_characteristic_length(L); + for(const auto& I : fibre) I->set_characteristic_length(L); +} + +int Fibre::update_trial_status(const vec& t_deformation) { + trial_deformation = t_deformation; + + trial_stiffness.zeros(); + trial_resistance.zeros(); + if(SectionType::OS3D == section_type) trial_geometry.zeros(); + + for(const auto& I : fibre) { + if(I->update_trial_status(t_deformation) != SUANPAN_SUCCESS) return SUANPAN_FAIL; + trial_stiffness += I->get_trial_stiffness(); + trial_resistance += I->get_trial_resistance(); + if(SectionType::OS3D == section_type) trial_geometry += I->get_trial_geometry(); + } + + return SUANPAN_SUCCESS; +} + +int Fibre::clear_status() { + current_deformation = trial_deformation.zeros(); + current_resistance = trial_resistance.zeros(); + current_stiffness = trial_stiffness = initial_stiffness; + if(SectionType::OS3D == section_type) current_geometry = trial_geometry = initial_geometry; + auto code = 0; + for(const auto& I : fibre) code += I->clear_status(); + return code; +} + +int Fibre::commit_status() { + current_deformation = trial_deformation; + current_resistance = trial_resistance; + current_stiffness = trial_stiffness; + if(SectionType::OS3D == section_type) current_geometry = trial_geometry; + auto code = 0; + for(const auto& I : fibre) code += I->commit_status(); + return code; +} + +int Fibre::reset_status() { + trial_deformation = current_deformation; + trial_resistance = current_resistance; + trial_stiffness = current_stiffness; + if(SectionType::OS3D == section_type) trial_geometry = current_geometry; + auto code = 0; + for(const auto& I : fibre) code += I->reset_status(); + return code; +} + +void Fibre::print() { + suanpan_info("A composite fibre section consists of the following sections.\n"); + for(const auto& I : fibre) I->print(); +} diff --git a/Section/Section2D/Bar2D.h b/Section/Fibre.h similarity index 62% rename from Section/Section2D/Bar2D.h rename to Section/Fibre.h index 4efebbc1d..b57a290ad 100644 --- a/Section/Section2D/Bar2D.h +++ b/Section/Fibre.h @@ -15,39 +15,39 @@ * along with this program. If not, see . ******************************************************************************/ /** - * @class Bar2D - * @brief A Bar2D class. + * @class Fibre + * @brief A Fibre class. * @author tlc - * @date 05/06/2018 + * @date 14/09/2023 * @version 0.1.0 - * @file Bar2D.h - * @addtogroup Section + * @file Fibre.h + * @ingroup Section * @{ */ -#ifndef BAR2D_H -#define BAR2D_H +#ifndef FIBRE_H +#define FIBRE_H -#include
+#include
+#include -class Bar2D final : public Section2D { - unique_ptr s_material; +class Fibre : public Section { + const uvec fibre_tag; + +protected: + std::vector> fibre; public: - Bar2D(unsigned, // tag - double, // area - unsigned, // material tag - double = 0. // eccentricity - ); - Bar2D(const Bar2D&); - Bar2D(Bar2D&&) noexcept = delete; // move forbidden - Bar2D& operator=(const Bar2D&) = delete; // assign forbidden - Bar2D& operator=(Bar2D&&) noexcept = delete; // assign forbidden - ~Bar2D() override = default; + Fibre(unsigned, uvec&&, SectionType); + Fibre(const Fibre&) = default; + Fibre(Fibre&&) noexcept = delete; + Fibre& operator=(const Fibre&) = delete; + Fibre& operator=(Fibre&&) noexcept = delete; + ~Fibre() override = default; int initialize(const shared_ptr&) override; - unique_ptr
get_copy() override; + void set_characteristic_length(double) const override; int update_trial_status(const vec&) override; diff --git a/Section/Section b/Section/Section index 9ddbca317..7f93f9105 100644 --- a/Section/Section +++ b/Section/Section @@ -2,9 +2,5 @@ #include "Section2D/Section2D" #include "Section3D/Section3D" #include "SectionNM/SectionNM" +#include "SectionOS/SectionOS" #include "SectionShell/SectionShell" - -#include "ParameterType.h" -#include "Section.h" - -#include \ No newline at end of file diff --git a/Section/Section.cpp b/Section/Section.cpp index ce2dfcf88..4c0f2af78 100644 --- a/Section/Section.cpp +++ b/Section/Section.cpp @@ -21,15 +21,33 @@ #include Section::Section(const unsigned T, const SectionType ST, const unsigned MT, const double A, vec&& EC) - : DataSection{MT, ST, A, 0., {-EC(0), EC(1)}, {}, {}, {}, {}, {}, {}, {}, {}, {}} + : DataSection{MT, ST, EC.head(2), A} , Tag(T) {} +SectionType Section::get_section_type() const { return section_type; } + +double Section::get_area() const { return area; } + +double Section::get_linear_density() const { return linear_density; } + int Section::initialize_base(const shared_ptr& D) { if(initialized) return SUANPAN_SUCCESS; - if(0 != material_tag && (!D->find(material_tag) || MaterialType::D1 != D->get(material_tag)->get_material_type())) { - suanpan_warning("Section {} disabled as material {} cannot be found or wrong material type assigned.\n", get_tag(), material_tag); - return SUANPAN_FAIL; + if(0u != material_tag) { + if(!D->find(material_tag)) { + suanpan_warning("Section {} disabled as material {} cannot be found.\n", get_tag(), material_tag); + return SUANPAN_FAIL; + } + if(SectionType::OS3D == section_type) { + if(MaterialType::OS != D->get(material_tag)->get_material_type()) { + suanpan_warning("Section {} disabled as material {} has a wrong type, use OS type material only.\n", get_tag(), material_tag); + return SUANPAN_FAIL; + } + } + else if(MaterialType::D1 != D->get(material_tag)->get_material_type()) { + suanpan_warning("Section {} disabled as material {} has a wrong type, use 1D material only.\n", get_tag(), material_tag); + return SUANPAN_FAIL; + } } const auto size = static_cast(section_type); @@ -58,12 +76,14 @@ bool Section::is_initialized() const { return initialized; } bool Section::is_symmetric() const { return symmetric; } -SectionType Section::get_section_type() const { return section_type; } - void Section::set_eccentricity(const vec& E) const { access::rw(eccentricity) = E; } const vec& Section::get_eccentricity() const { return eccentricity; } +void Section::set_characteristic_length(const double L) const { access::rw(characteristic_length) = std::max(datum::eps, L); } + +double Section::get_characteristic_length() const { return characteristic_length; } + const vec& Section::get_trial_deformation() const { return trial_deformation; } const vec& Section::get_trial_deformation_rate() const { return trial_deformation_rate; } @@ -72,6 +92,8 @@ const vec& Section::get_trial_resistance() const { return trial_resistance; } const mat& Section::get_trial_stiffness() const { return trial_stiffness; } +const mat& Section::get_trial_geometry() const { return trial_geometry; } + const vec& Section::get_current_deformation() const { return current_deformation; } const vec& Section::get_current_deformation_rate() const { return current_deformation_rate; } @@ -80,14 +102,11 @@ const vec& Section::get_current_resistance() const { return current_resistance; const mat& Section::get_current_stiffness() const { return current_stiffness; } +const mat& Section::get_current_geometry() const { return current_geometry; } + const mat& Section::get_initial_stiffness() const { return initial_stiffness; } -double Section::get_parameter(const ParameterType P) { - if(ParameterType::AREA == P) return area; - if(ParameterType::LINEARDENSITY == P) return linear_density; - if(ParameterType::DENSITY == P) return linear_density / area; - return 0.; -} +const mat& Section::get_initial_geometry() const { return initial_geometry; } int Section::update_incre_status(const double i_strain) { const vec i_vec_strain{i_strain}; diff --git a/Section/Section.h b/Section/Section.h index 01dab2da4..c0457d61a 100644 --- a/Section/Section.h +++ b/Section/Section.h @@ -29,7 +29,6 @@ #define SECTION_H #include -#include
enum class SectionType : unsigned { D0 = 0, @@ -37,7 +36,8 @@ enum class SectionType : unsigned { D2 = 2, D3 = 3, NM2D = 3, - NM3D = 6 + NM3D = 6, + OS3D = 12, }; enum class OutputType; @@ -50,24 +50,28 @@ struct DataSection { const SectionType section_type; + const vec eccentricity; + const double area; + const double linear_density = 0.; + const double characteristic_length = -1.; - const double linear_density; + vec trial_deformation{}; // trial deformation + vec current_deformation{}; // current deformation - const vec eccentricity; + vec trial_deformation_rate{}; // trial deformation rate + vec current_deformation_rate{}; // current deformation rate - vec trial_deformation; // trial deformation - vec current_deformation; // current deformation + vec trial_resistance{}; // trial resistance + vec current_resistance{}; // current resistance - vec trial_deformation_rate; // trial deformation rate - vec current_deformation_rate; // current deformation rate + mat initial_stiffness{}; // stiffness matrix + mat current_stiffness{}; // stiffness matrix + mat trial_stiffness{}; // stiffness matrix - vec trial_resistance; // trial resistance - vec current_resistance; // current resistance - - mat initial_stiffness; // initial stiffness matrix - mat current_stiffness; // stiffness matrix - mat trial_stiffness; // stiffness matrix + mat initial_geometry{}; // geometry matrix + mat current_geometry{}; // geometry matrix + mat trial_geometry{}; // geometry matrix }; class Section : protected DataSection, public Tag { @@ -75,11 +79,12 @@ class Section : protected DataSection, public Tag { const bool symmetric = false; public: - explicit Section(unsigned = 0, // section tag - SectionType = SectionType::D0, // section type - unsigned = 0, // material tag - double = 0., // area - vec&& = {0., 0.} // eccentricity + explicit Section( + unsigned = 0, // section tag + SectionType = SectionType::D0, // section type + unsigned = 0, // material tag + double = 0., // area + vec&& = {0., 0.} // eccentricity ); Section(const Section&) = default; // default copy ctor Section(Section&&) = delete; // move forbidden @@ -88,6 +93,10 @@ class Section : protected DataSection, public Tag { ~Section() override = default; + [[nodiscard]] SectionType get_section_type() const; + [[nodiscard]] double get_area() const; + [[nodiscard]] double get_linear_density() const; + int initialize_base(const shared_ptr&); virtual int initialize(const shared_ptr&) = 0; @@ -97,27 +106,29 @@ class Section : protected DataSection, public Tag { [[nodiscard]] bool is_initialized() const; [[nodiscard]] bool is_symmetric() const; - [[nodiscard]] SectionType get_section_type() const; - void set_eccentricity(const vec&) const; [[nodiscard]] const vec& get_eccentricity() const; + virtual void set_characteristic_length(double) const; + [[nodiscard]] double get_characteristic_length() const; + [[nodiscard]] virtual const vec& get_trial_deformation() const; [[nodiscard]] virtual const vec& get_trial_deformation_rate() const; [[nodiscard]] virtual const vec& get_trial_resistance() const; [[nodiscard]] virtual const mat& get_trial_stiffness() const; + [[nodiscard]] virtual const mat& get_trial_geometry() const; [[nodiscard]] virtual const vec& get_current_deformation() const; [[nodiscard]] virtual const vec& get_current_deformation_rate() const; [[nodiscard]] virtual const vec& get_current_resistance() const; [[nodiscard]] virtual const mat& get_current_stiffness() const; + [[nodiscard]] virtual const mat& get_current_geometry() const; [[nodiscard]] virtual const mat& get_initial_stiffness() const; + [[nodiscard]] virtual const mat& get_initial_geometry() const; virtual unique_ptr
get_copy() = 0; - virtual double get_parameter(ParameterType = ParameterType::NONE); - int update_incre_status(double); int update_incre_status(double, double); int update_trial_status(double); diff --git a/Section/Section1D/CMakeLists.txt b/Section/Section1D/CMakeLists.txt index e790f9cba..d0a7582f8 100644 --- a/Section/Section1D/CMakeLists.txt +++ b/Section/Section1D/CMakeLists.txt @@ -4,4 +4,4 @@ set(S1D Section1D/Rectangle1D.cpp Section1D/Circle1D.cpp Section1D/Fibre1D.cpp - ) +) diff --git a/Section/Section1D/Circle1D.h b/Section/Section1D/Circle1D.h index 832d5b454..5cef72cd6 100644 --- a/Section/Section1D/Circle1D.h +++ b/Section/Section1D/Circle1D.h @@ -31,13 +31,14 @@ #include
-class Circle1D : public Section1D { +class Circle1D final : public Section1D { const double radius; public: - explicit Circle1D(unsigned, // tag - double, // radius - unsigned // material tag + explicit Circle1D( + unsigned, // tag + double, // radius + unsigned // material tag ); unique_ptr
get_copy() override; diff --git a/Section/Section1D/Fibre1D.cpp b/Section/Section1D/Fibre1D.cpp index 95611afc7..825553465 100644 --- a/Section/Section1D/Fibre1D.cpp +++ b/Section/Section1D/Fibre1D.cpp @@ -16,86 +16,8 @@ ******************************************************************************/ #include "Fibre1D.h" -#include -#include Fibre1D::Fibre1D(const unsigned T, uvec&& ST) - : Section1D(T, 0, 0.) - , fibre_tag(std::forward(ST)) {} - -Fibre1D::Fibre1D(const Fibre1D& old_obj) - : Section1D(old_obj) - , fibre_tag(old_obj.fibre_tag) { - fibre.clear(); - fibre.reserve(old_obj.fibre.size()); - for(const auto& I : old_obj.fibre) fibre.emplace_back(I->get_copy()); -} - -int Fibre1D::initialize(const shared_ptr& D) { - auto total_a = 0., total_linear_density = 0.; - - initial_stiffness.zeros(); - - fibre.clear(); - fibre.reserve(fibre_tag.n_elem); - - for(const auto I : fibre_tag) { - fibre.emplace_back(suanpan::initialized_section_copy(D, I)); - if(nullptr == fibre.back() || SectionType::D1 != fibre.back()->get_section_type()) { - suanpan_warning("Section {} is ignored as it is not a valid 1D section.\n", I); - fibre.pop_back(); - } - else { - initial_stiffness += fibre.back()->get_initial_stiffness(); - total_a += fibre.back()->get_parameter(ParameterType::AREA); - total_linear_density += fibre.back()->get_parameter(ParameterType::LINEARDENSITY); - } - } - - access::rw(area) = total_a; - access::rw(linear_density) = total_linear_density; - - trial_stiffness = current_stiffness = initial_stiffness; - - return SUANPAN_SUCCESS; -} + : Fibre(T, std::forward(ST), SectionType::D1) {} unique_ptr
Fibre1D::get_copy() { return make_unique(*this); } - -int Fibre1D::update_trial_status(const vec& t_deformation) { - trial_deformation = t_deformation; - - trial_stiffness.zeros(); - trial_resistance.zeros(); - - for(const auto& I : fibre) { - if(I->update_trial_status(t_deformation) != SUANPAN_SUCCESS) return SUANPAN_FAIL; - trial_stiffness += I->get_trial_stiffness(); - trial_resistance += I->get_trial_resistance(); - } - - return SUANPAN_SUCCESS; -} - -int Fibre1D::clear_status() { - auto code = 0; - for(const auto& I : fibre) code += I->clear_status(); - return code; -} - -int Fibre1D::commit_status() { - auto code = 0; - for(const auto& I : fibre) code += I->commit_status(); - return code; -} - -int Fibre1D::reset_status() { - auto code = 0; - for(const auto& I : fibre) code += I->reset_status(); - return code; -} - -void Fibre1D::print() { - suanpan_info("A uniaxial fibre section consists of {} sections.\n", fibre.size()); - for(const auto& I : fibre) I->print(); -} diff --git a/Section/Section1D/Fibre1D.h b/Section/Section1D/Fibre1D.h index 850edf6bf..bdddb8f3e 100644 --- a/Section/Section1D/Fibre1D.h +++ b/Section/Section1D/Fibre1D.h @@ -18,7 +18,7 @@ * @class Fibre1D * @brief A Fibre1D class. * @author tlc - * @date 13/10/2017 + * @date 15/09/2023 * @version 0.1.0 * @file Fibre1D.h * @addtogroup Section-1D @@ -29,32 +29,13 @@ #ifndef FIBRE1D_H #define FIBRE1D_H -#include
- -class Fibre1D final : public Section1D { - uvec fibre_tag; - - vector> fibre; +#include
+class Fibre1D final : public Fibre { public: Fibre1D(unsigned, uvec&&); - Fibre1D(const Fibre1D&); - Fibre1D(Fibre1D&&) = delete; - Fibre1D& operator=(const Fibre1D&) = delete; - Fibre1D& operator=(Fibre1D&&) = delete; - ~Fibre1D() override = default; - - int initialize(const shared_ptr&) override; unique_ptr
get_copy() override; - - int update_trial_status(const vec&) override; - - int clear_status() override; - int commit_status() override; - int reset_status() override; - - void print() override; }; #endif diff --git a/Section/Section1D/Rectangle1D.h b/Section/Section1D/Rectangle1D.h index 5c536e6bb..14291912d 100644 --- a/Section/Section1D/Rectangle1D.h +++ b/Section/Section1D/Rectangle1D.h @@ -31,14 +31,15 @@ #include
-class Rectangle1D : public Section1D { +class Rectangle1D final : public Section1D { const double width, height; public: - explicit Rectangle1D(unsigned, // tag - double, // width - double, // height - unsigned // material tag + explicit Rectangle1D( + unsigned, // tag + double, // width + double, // height + unsigned // material tag ); unique_ptr
get_copy() override; diff --git a/Section/Section1D/Section1D b/Section/Section1D/Section1D index eb35e98d9..b1c2fd8e5 100644 --- a/Section/Section1D/Section1D +++ b/Section/Section1D/Section1D @@ -1,5 +1,4 @@ #include "Circle1D.h" #include "Fibre1D.h" #include "Rectangle1D.h" -#include "Section1D.h" -#include "TrussSection.h" \ No newline at end of file +#include "TrussSection.h" diff --git a/Section/Section1D/Section1D.cpp b/Section/Section1D/Section1D.cpp index 6c8d79f12..c22de6f2b 100644 --- a/Section/Section1D/Section1D.cpp +++ b/Section/Section1D/Section1D.cpp @@ -22,20 +22,21 @@ Section1D::Section1D(const unsigned T, const unsigned MT, const double A) : Section(T, SectionType::D1, MT, A) {} -Section1D::Section1D(const Section1D& old_obj) - : Section(old_obj) - , s_material(suanpan::make_copy(old_obj.s_material)) {} - int Section1D::initialize(const shared_ptr& D) { - s_material = suanpan::initialized_material_copy(D, material_tag); + s_material = D->initialized_material_copy(material_tag); - access::rw(linear_density) = area * s_material->get_parameter(ParameterType::DENSITY); + access::rw(linear_density) = area * s_material->get_density(); trial_stiffness = current_stiffness = initial_stiffness = area * s_material->get_initial_stiffness().at(0); return SUANPAN_SUCCESS; } +void Section1D::set_characteristic_length(const double L) const { + Section::set_characteristic_length(L); + s_material->set_characteristic_length(L); +} + int Section1D::update_trial_status(const vec& t_deformation) { if(norm((trial_deformation = t_deformation) - current_deformation) <= datum::eps) return SUANPAN_SUCCESS; diff --git a/Section/Section1D/Section1D.h b/Section/Section1D/Section1D.h index daa3a603a..15ccffca4 100644 --- a/Section/Section1D/Section1D.h +++ b/Section/Section1D/Section1D.h @@ -30,23 +30,22 @@ #define SECTION1D_H #include
+#include +#include using std::vector; class Section1D : public Section { protected: - unique_ptr s_material; + ResourceHolder s_material; public: - explicit Section1D(unsigned, unsigned, double); - Section1D(const Section1D&); - Section1D(Section1D&&) = delete; // move forbidden - Section1D& operator=(const Section1D&) = delete; // assign forbidden - Section1D& operator=(Section1D&&) = delete; // assign forbidden - ~Section1D() override = default; + Section1D(unsigned, unsigned, double); int initialize(const shared_ptr&) override; + void set_characteristic_length(double) const override; + int update_trial_status(const vec&) override; int clear_status() override; diff --git a/Section/Section1D/TrussSection.h b/Section/Section1D/TrussSection.h index 7d1a01c33..03ee45906 100644 --- a/Section/Section1D/TrussSection.h +++ b/Section/Section1D/TrussSection.h @@ -31,11 +31,12 @@ #include
-class TrussSection : public Section1D { +class TrussSection final : public Section1D { public: - explicit TrussSection(unsigned, // tag - double, // area - unsigned // material tag + explicit TrussSection( + unsigned, // tag + double, // area + unsigned // material tag ); unique_ptr
get_copy() override; diff --git a/Section/Section2D/Bar2D.cpp b/Section/Section2D/Bar2D.cpp deleted file mode 100644 index 5de9224db..000000000 --- a/Section/Section2D/Bar2D.cpp +++ /dev/null @@ -1,85 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2017-2023 Theodore Chang - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - ******************************************************************************/ - -#include "Bar2D.h" -#include -#include - -Bar2D::Bar2D(const unsigned T, const double AR, const unsigned MT, const double EC) - : Section2D(T, MT, AR, EC) {} - -Bar2D::Bar2D(const Bar2D& old_obj) - : Section2D(old_obj) - , s_material(suanpan::make_copy(old_obj.s_material)) {} - -int Bar2D::initialize(const shared_ptr& D) { - s_material = suanpan::initialized_material_copy(D, material_tag); - - access::rw(linear_density) = area * s_material->get_parameter(ParameterType::DENSITY); - - initial_stiffness.set_size(2, 2); - initial_stiffness(0, 0) = s_material->get_initial_stiffness().at(0) * area; - initial_stiffness(0, 1) = initial_stiffness(1, 0) = initial_stiffness(0, 0) * eccentricity(0); - initial_stiffness(1, 1) = initial_stiffness(0, 1) * eccentricity(0); - - trial_stiffness = current_stiffness = initial_stiffness; - - return SUANPAN_SUCCESS; -} - -unique_ptr
Bar2D::get_copy() { return make_unique(*this); } - -int Bar2D::update_trial_status(const vec& t_deformation) { - trial_deformation = t_deformation; - - if(s_material->update_trial_status(trial_deformation(0) + trial_deformation(1) * eccentricity(0)) != SUANPAN_SUCCESS) return SUANPAN_FAIL; - - trial_stiffness(0, 0) = s_material->get_trial_stiffness().at(0) * area; - trial_stiffness(0, 1) = trial_stiffness(1, 0) = trial_stiffness(0, 0) * eccentricity(0); - trial_stiffness(1, 1) = trial_stiffness(0, 1) * eccentricity(0); - - trial_resistance(0) = s_material->get_trial_stress().at(0) * area; - trial_resistance(1) = trial_resistance(0) * eccentricity(0); - - return SUANPAN_SUCCESS; -} - -int Bar2D::clear_status() { - trial_deformation = current_deformation.zeros(); - trial_resistance = current_resistance.zeros(); - trial_stiffness = current_stiffness = initial_stiffness; - return s_material->clear_status(); -} - -int Bar2D::commit_status() { - current_deformation = trial_deformation; - current_resistance = trial_resistance; - current_stiffness = trial_stiffness; - return s_material->commit_status(); -} - -int Bar2D::reset_status() { - trial_deformation = current_deformation; - trial_resistance = current_resistance; - trial_stiffness = current_stiffness; - return s_material->reset_status(); -} - -void Bar2D::print() { - suanpan_info("A 2D section that represents for example rebar in RC section.\n"); - s_material->print(); -} diff --git a/Section/Section2D/Box2D.cpp b/Section/Section2D/Box2D.cpp index b738c9348..b9a4708d3 100644 --- a/Section/Section2D/Box2D.cpp +++ b/Section/Section2D/Box2D.cpp @@ -19,10 +19,10 @@ #include Box2D::Box2D(const unsigned T, const double B, const double H, const double TH, const unsigned M, const unsigned S, const double EC) - : ISection2D(T, B, TH, B, TH, H - 2. * TH, 2. * TH, M, S, EC) {} + : ISection2D(T, B + TH, TH, B + TH, TH, H - TH, 2. * TH, M, S, EC) {} Box2D::Box2D(const unsigned T, vec&& D, const unsigned M, const unsigned S, const double EC) - : ISection2D(T, D(0), D(2), D(0), D(2), D(1) - 2. * D(2), 2. * D(2), M, S, EC) {} + : ISection2D(T, D(0) + D(2), D(2), D(0) + D(2), D(2), D(1) - D(2), 2. * D(2), M, S, EC) {} unique_ptr
Box2D::get_copy() { return make_unique(*this); } diff --git a/Section/Section2D/Box2D.h b/Section/Section2D/Box2D.h index 2abb7cd91..8e88ccfaa 100644 --- a/Section/Section2D/Box2D.h +++ b/Section/Section2D/Box2D.h @@ -33,19 +33,21 @@ class Box2D final : public ISection2D { public: - Box2D(unsigned, // tag - double, // width - double, // height - double, // thickness - unsigned, // material tag - unsigned = 6, // number of integration points - double = 0. // eccentricity + Box2D( + unsigned, // tag + double, // width + double, // height + double, // thickness + unsigned, // material tag + unsigned = 6, // number of integration points + double = 0. // eccentricity ); - Box2D(unsigned, // tag - vec&&, // dimension - unsigned, // material tag - unsigned = 6, // number of integration points - double = 0. // eccentricity + Box2D( + unsigned, // tag + vec&&, // dimension + unsigned, // material tag + unsigned = 6, // number of integration points + double = 0. // eccentricity ); unique_ptr
get_copy() override; diff --git a/Section/Section2D/CMakeLists.txt b/Section/Section2D/CMakeLists.txt index 70685e404..5e0486c09 100644 --- a/Section/Section2D/CMakeLists.txt +++ b/Section/Section2D/CMakeLists.txt @@ -1,12 +1,12 @@ set(S2D - Section2D/Section2D.cpp - Section2D/Bar2D.cpp Section2D/Box2D.cpp + Section2D/Cell2D.cpp Section2D/Circle2D.cpp Section2D/CircularHollow2D.cpp + Section2D/Fibre2D.cpp Section2D/HSection2D.cpp Section2D/ISection2D.cpp - Section2D/TSection2D.cpp Section2D/Rectangle2D.cpp - Section2D/Fibre2D.cpp - ) + Section2D/Section2D.cpp + Section2D/TSection2D.cpp +) diff --git a/Section/Section2D/Cell2D.cpp b/Section/Section2D/Cell2D.cpp new file mode 100644 index 000000000..0c626fde5 --- /dev/null +++ b/Section/Section2D/Cell2D.cpp @@ -0,0 +1,45 @@ +/******************************************************************************* + * Copyright (C) 2017-2023 Theodore Chang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + ******************************************************************************/ + +#include "Cell2D.h" +#include +#include + +// eccentricity should really be location and be stored in integration point +// here we flip the sign and use eccentricity to store it +Cell2D::Cell2D(const unsigned T, const double AR, const unsigned MT, const double EC) + : Section2D(T, MT, AR, -EC) {} + +int Cell2D::initialize(const shared_ptr& D) { + auto& material_proto = D->get_material(material_tag); + + access::rw(linear_density) = area * material_proto->get_density(); + + int_pt.clear(); + int_pt.emplace_back(0., area, material_proto->get_copy()); + + initialize_stiffness(); + + return SUANPAN_SUCCESS; +} + +unique_ptr
Cell2D::get_copy() { return make_unique(*this); } + +void Cell2D::print() { + suanpan_info("A 2D section that represents a small cell.\n"); + for(const auto& I : int_pt) I.s_material->print(); +} diff --git a/Section/Section2D/Cell2D.h b/Section/Section2D/Cell2D.h new file mode 100644 index 000000000..f12dc6afd --- /dev/null +++ b/Section/Section2D/Cell2D.h @@ -0,0 +1,54 @@ +/******************************************************************************* + * Copyright (C) 2017-2023 Theodore Chang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + ******************************************************************************/ +/** + * @class Cell2D + * @brief A Cell2D class. + * @author tlc + * @date 15/09/2023 + * @version 0.1.1 + * @file Cell2D.h + * @addtogroup Section-2D + * @ingroup Section + * @{ + */ + +#ifndef CELL2D_H +#define CELL2D_H + +#include
+ +class Cell2D final : public Section2D { +public: + Cell2D( + unsigned, // tag + double, // area + unsigned, // material tag + double = 0. // eccentricity + ); + + int initialize(const shared_ptr&) override; + + unique_ptr
get_copy() override; + + void print() override; +}; + +using Bar2D = Cell2D; + +#endif + +//! @} diff --git a/Section/Section2D/Circle2D.cpp b/Section/Section2D/Circle2D.cpp index 6c1396e84..4af43bf8a 100644 --- a/Section/Section2D/Circle2D.cpp +++ b/Section/Section2D/Circle2D.cpp @@ -28,24 +28,15 @@ Circle2D::Circle2D(const unsigned T, const double R, const unsigned M, const uns int Circle2D::initialize(const shared_ptr& D) { auto& material_proto = D->get_material(material_tag); - access::rw(linear_density) = area * material_proto->get_parameter(ParameterType::DENSITY); + access::rw(linear_density) = area * material_proto->get_density(); const IntegrationPlan plan(1, int_pt_num, IntegrationType::GAUSS); int_pt.clear(); int_pt.reserve(int_pt_num); - initial_stiffness.zeros(2, 2); - for(unsigned I = 0; I < int_pt_num; ++I) { - int_pt.emplace_back(radius * plan(I, 0), 2. * radius * radius * sqrt(1. - plan(I, 0) * plan(I, 0)) * plan(I, 1), material_proto->get_copy()); - auto tmp_a = int_pt[I].s_material->get_initial_stiffness().at(0) * int_pt[I].weight; - const auto arm = eccentricity(0) - int_pt[I].coor; - initial_stiffness(0, 0) += tmp_a; - initial_stiffness(0, 1) += tmp_a *= arm; - initial_stiffness(1, 1) += tmp_a *= arm; - } - initial_stiffness(1, 0) = initial_stiffness(0, 1); - - trial_stiffness = current_stiffness = initial_stiffness; + for(unsigned I = 0; I < int_pt_num; ++I) int_pt.emplace_back(radius * plan(I, 0), 2. * radius * radius * sqrt(1. - plan(I, 0) * plan(I, 0)) * plan(I, 1), material_proto->get_copy()); + + initialize_stiffness(); return SUANPAN_SUCCESS; } diff --git a/Section/Section2D/Circle2D.h b/Section/Section2D/Circle2D.h index 7214ae4b3..6c1df46ff 100644 --- a/Section/Section2D/Circle2D.h +++ b/Section/Section2D/Circle2D.h @@ -21,7 +21,8 @@ * @date 15/09/2017 * @version 0.1.0 * @file Circle2D.h - * @addtogroup Section + * @addtogroup Section-2D + * @ingroup Section * @{ */ @@ -36,11 +37,12 @@ class Circle2D final : public Section2D { const unsigned int_pt_num; public: - Circle2D(unsigned, // tag - double, // radius - unsigned, // material tag - unsigned = 6, // number of integration points - double = 0. // eccentricity + Circle2D( + unsigned, // tag + double, // radius + unsigned, // material tag + unsigned = 6, // number of integration points + double = 0. // eccentricity ); int initialize(const shared_ptr&) override; diff --git a/Section/Section2D/CircularHollow2D.cpp b/Section/Section2D/CircularHollow2D.cpp index 9cf6b27bf..05ef460c0 100644 --- a/Section/Section2D/CircularHollow2D.cpp +++ b/Section/Section2D/CircularHollow2D.cpp @@ -35,7 +35,7 @@ CircularHollow2D::CircularHollow2D(const unsigned T, vec&& D, const unsigned M, int CircularHollow2D::initialize(const shared_ptr& D) { auto& material_proto = D->get_material(material_tag); - access::rw(linear_density) = area * material_proto->get_parameter(ParameterType::DENSITY); + access::rw(linear_density) = area * material_proto->get_density(); const IntegrationPlan plan(1, int_pt_num, IntegrationType::GAUSS); @@ -43,21 +43,12 @@ int CircularHollow2D::initialize(const shared_ptr& D) { int_pt.clear(); int_pt.reserve(2llu * int_pt_num); - initial_stiffness.zeros(2, 2); for(unsigned I = 0; I < int_pt_num; ++I) { int_pt.emplace_back(cos(.5 * plan(I, 0) * datum::pi) * m_radius, .25 * plan(I, 1) * area, material_proto->get_copy()); int_pt.emplace_back(-cos(.5 * plan(I, 0) * datum::pi) * m_radius, .25 * plan(I, 1) * area, material_proto->get_copy()); } - for(const auto& I : int_pt) { - auto tmp_a = I.s_material->get_initial_stiffness().at(0) * I.weight; - const auto arm = eccentricity(0) - I.coor; - initial_stiffness(0, 0) += tmp_a; - initial_stiffness(0, 1) += tmp_a *= arm; - initial_stiffness(1, 1) += tmp_a *= arm; - } - initial_stiffness(1, 0) = initial_stiffness(0, 1); - trial_stiffness = current_stiffness = initial_stiffness; + initialize_stiffness(); return SUANPAN_SUCCESS; } diff --git a/Section/Section2D/CircularHollow2D.h b/Section/Section2D/CircularHollow2D.h index bad3a91c0..02720bfc2 100644 --- a/Section/Section2D/CircularHollow2D.h +++ b/Section/Section2D/CircularHollow2D.h @@ -21,7 +21,8 @@ * @date 14/03/2019 * @version 0.1.0 * @file CircularHollow2D.h - * @addtogroup Section + * @addtogroup Section-2D + * @ingroup Section * @{ */ @@ -36,18 +37,20 @@ class CircularHollow2D final : public Section2D { const unsigned int_pt_num; public: - CircularHollow2D(unsigned, // tag - double, // radius - double, // thickness - unsigned, // material tag - unsigned = 10, // number of integration points - double = 0. // eccentricity + CircularHollow2D( + unsigned, // tag + double, // radius + double, // thickness + unsigned, // material tag + unsigned = 10, // number of integration points + double = 0. // eccentricity ); - CircularHollow2D(unsigned, // tag - vec&&, // dimension - unsigned, // material tag - unsigned = 10, // number of integration points - double = 0. // eccentricity + CircularHollow2D( + unsigned, // tag + vec&&, // dimension + unsigned, // material tag + unsigned = 10, // number of integration points + double = 0. // eccentricity ); int initialize(const shared_ptr&) override; diff --git a/Section/Section2D/Fibre2D.cpp b/Section/Section2D/Fibre2D.cpp index 89d6fa573..f2dd85835 100644 --- a/Section/Section2D/Fibre2D.cpp +++ b/Section/Section2D/Fibre2D.cpp @@ -16,104 +16,8 @@ ******************************************************************************/ #include "Fibre2D.h" -#include -#include Fibre2D::Fibre2D(const unsigned T, uvec&& ST) - : Section2D(T, 0) - , fibre_tag(std::forward(ST)) {} - -Fibre2D::Fibre2D(const Fibre2D& old_obj) - : Section2D(old_obj) - , fibre_tag(old_obj.fibre_tag) { - fibre.clear(); - fibre.reserve(old_obj.fibre.size()); - if(!old_obj.fibre.empty()) for(const auto& I : old_obj.fibre) fibre.emplace_back(I->get_copy()); -} - -int Fibre2D::initialize(const shared_ptr& D) { - auto total_a = 0., total_linear_density = 0.; - - fibre.clear(); - fibre.reserve(fibre_tag.n_elem); - - for(const auto I : fibre_tag) { - fibre.emplace_back(suanpan::initialized_section_copy(D, I)); - if(nullptr == fibre.back() || SectionType::D2 != fibre.back()->get_section_type()) { - suanpan_warning("Section {} is ignored as it is not a valid 2D section.\n", I); - fibre.pop_back(); - } - else { - total_a += fibre.back()->get_parameter(ParameterType::AREA); - total_linear_density += fibre.back()->get_parameter(ParameterType::LINEARDENSITY); - } - } - - access::rw(area) = total_a; - access::rw(linear_density) = total_linear_density; - - initial_stiffness.zeros(2, 2); - - for(const auto& I : fibre) { - I->set_eccentricity(I->get_eccentricity() + eccentricity); - // reinitialize to consider new eccentricity - I->initialize_base(D); - I->initialize(D); - initial_stiffness += I->get_initial_stiffness(); - } - - trial_stiffness = current_stiffness = initial_stiffness; - - return SUANPAN_SUCCESS; -} + : Fibre(T, std::forward(ST), SectionType::D2) {} unique_ptr
Fibre2D::get_copy() { return make_unique(*this); } - -int Fibre2D::update_trial_status(const vec& t_deformation) { - trial_deformation = t_deformation; - - trial_stiffness.zeros(); - trial_resistance.zeros(); - - for(const auto& I : fibre) { - if(I->update_trial_status(t_deformation) != SUANPAN_SUCCESS) return SUANPAN_FAIL; - trial_stiffness += I->get_trial_stiffness(); - trial_resistance += I->get_trial_resistance(); - } - - suanpan_assert([&] { if(!trial_resistance.is_finite() || !trial_stiffness.is_finite()) throw invalid_argument("infinite number detected"); }); - - return SUANPAN_SUCCESS; -} - -int Fibre2D::clear_status() { - current_deformation = trial_deformation.zeros(); - current_resistance = trial_resistance.zeros(); - current_stiffness = trial_stiffness = initial_stiffness; - auto code = 0; - for(const auto& I : fibre) code += I->clear_status(); - return code; -} - -int Fibre2D::commit_status() { - current_deformation = trial_deformation; - current_resistance = trial_resistance; - current_stiffness = trial_stiffness; - auto code = 0; - for(const auto& I : fibre) code += I->commit_status(); - return code; -} - -int Fibre2D::reset_status() { - trial_deformation = current_deformation; - trial_resistance = current_resistance; - trial_stiffness = current_stiffness; - auto code = 0; - for(const auto& I : fibre) code += I->reset_status(); - return code; -} - -void Fibre2D::print() { - suanpan_info("A 2D composite section that consists of following sections.\n"); - for(const auto& I : fibre) I->print(); -} diff --git a/Section/Section2D/Fibre2D.h b/Section/Section2D/Fibre2D.h index c9bd9e8da..569629d41 100644 --- a/Section/Section2D/Fibre2D.h +++ b/Section/Section2D/Fibre2D.h @@ -18,7 +18,7 @@ * @class Fibre2D * @brief A Fibre2D class. * @author tlc - * @date 13/10/2017 + * @date 15/09/2023 * @version 0.1.0 * @file Fibre2D.h * @addtogroup Section-2D @@ -29,32 +29,13 @@ #ifndef FIBRE2D_H #define FIBRE2D_H -#include
- -class Fibre2D final : public Section2D { - uvec fibre_tag; - - vector> fibre; +#include
+class Fibre2D final : public Fibre { public: Fibre2D(unsigned, uvec&&); - Fibre2D(const Fibre2D&); - Fibre2D(Fibre2D&&) noexcept = delete; - Fibre2D& operator=(const Fibre2D&) = delete; - Fibre2D& operator=(Fibre2D&&) noexcept = delete; - ~Fibre2D() override = default; - - int initialize(const shared_ptr&) override; unique_ptr
get_copy() override; - - int update_trial_status(const vec&) override; - - int clear_status() override; - int commit_status() override; - int reset_status() override; - - void print() override; }; #endif diff --git a/Section/Section2D/HSection2D.cpp b/Section/Section2D/HSection2D.cpp index 0fd845482..9716a79ea 100644 --- a/Section/Section2D/HSection2D.cpp +++ b/Section/Section2D/HSection2D.cpp @@ -33,30 +33,25 @@ HSection2D::HSection2D(const unsigned T, const double TFW, const double TFT, con int HSection2D::initialize(const shared_ptr& D) { auto& mat_proto = D->get_material(material_tag); - access::rw(linear_density) = mat_proto->get_parameter(ParameterType::DENSITY) * area; + access::rw(linear_density) = mat_proto->get_density() * area; + + const auto web_area = web_width * web_thickness; + const auto l_flange_area = left_flange_height * left_flange_thickness; + const auto r_flange_area = right_flange_height * right_flange_thickness; const IntegrationPlan plan_flange(1, int_pt_num, IntegrationType::GAUSS); const IntegrationPlan plan_web(1, 2, IntegrationType::GAUSS); int_pt.clear(); int_pt.reserve(2llu * int_pt_num + 2); - int_pt.emplace_back(.5 * plan_web(0, 0) * web_thickness, .5 * plan_web(0, 1) * web_width * web_thickness, mat_proto->get_copy()); - int_pt.emplace_back(.5 * plan_web(1, 0) * web_thickness, .5 * plan_web(1, 1) * web_width * web_thickness, mat_proto->get_copy()); + int_pt.emplace_back(.5 * plan_web(0, 0) * web_thickness, .5 * plan_web(0, 1) * web_area, mat_proto->get_copy()); + int_pt.emplace_back(.5 * plan_web(1, 0) * web_thickness, .5 * plan_web(1, 1) * web_area, mat_proto->get_copy()); for(unsigned I = 0; I < int_pt_num; ++I) { - int_pt.emplace_back(.5 * plan_flange(I, 0) * left_flange_height, .5 * plan_flange(I, 1) * left_flange_height * left_flange_thickness, mat_proto->get_copy()); - int_pt.emplace_back(.5 * plan_flange(I, 0) * right_flange_height, .5 * plan_flange(I, 1) * right_flange_height * right_flange_thickness, mat_proto->get_copy()); + int_pt.emplace_back(.5 * plan_flange(I, 0) * left_flange_height, .5 * plan_flange(I, 1) * l_flange_area, mat_proto->get_copy()); + int_pt.emplace_back(.5 * plan_flange(I, 0) * right_flange_height, .5 * plan_flange(I, 1) * r_flange_area, mat_proto->get_copy()); } - initial_stiffness.zeros(2, 2); - for(const auto& I : int_pt) { - auto tmp_a = I.s_material->get_initial_stiffness().at(0) * I.weight; - const auto arm = eccentricity(0) - I.coor; - initial_stiffness(0, 0) += tmp_a; - initial_stiffness(0, 1) += tmp_a *= arm; - initial_stiffness(1, 1) += tmp_a *= arm; - } - initial_stiffness(1, 0) = initial_stiffness(0, 1); - trial_stiffness = current_stiffness = initial_stiffness; + initialize_stiffness(); return SUANPAN_SUCCESS; } diff --git a/Section/Section2D/HSection2D.h b/Section/Section2D/HSection2D.h index 332e23420..df7054402 100644 --- a/Section/Section2D/HSection2D.h +++ b/Section/Section2D/HSection2D.h @@ -39,16 +39,17 @@ class HSection2D final : public Section2D { const unsigned int_pt_num; public: - HSection2D(unsigned, // tag - double, // width - double, // height - double, // width - double, // height - double, // width - double, // height - unsigned, // material tag - unsigned = 6, // number of integration points - double = 0. // eccentricity + HSection2D( + unsigned, // tag + double, // width + double, // height + double, // width + double, // height + double, // width + double, // height + unsigned, // material tag + unsigned = 6, // number of integration points + double = 0. // eccentricity ); int initialize(const shared_ptr&) override; diff --git a/Section/Section2D/ISection2D.cpp b/Section/Section2D/ISection2D.cpp index 9878895c5..eee792f39 100644 --- a/Section/Section2D/ISection2D.cpp +++ b/Section/Section2D/ISection2D.cpp @@ -43,7 +43,7 @@ ISection2D::ISection2D(const unsigned T, vec&& D, const unsigned MT, const unsig int ISection2D::initialize(const shared_ptr& D) { auto& mat_proto = D->get_material(material_tag); - access::rw(linear_density) = mat_proto->get_parameter(ParameterType::DENSITY) * area; + access::rw(linear_density) = mat_proto->get_density() * area; const auto web_area = web_height * web_thickness; const auto b_flange_area = bottom_flange_width * bottom_flange_thickness; @@ -55,20 +55,10 @@ int ISection2D::initialize(const shared_ptr& D) { int_pt.clear(); int_pt.reserve(int_pt_num + 2llu * plan_flange.n_rows); for(unsigned I = 0; I < int_pt_num; ++I) int_pt.emplace_back(.5 * plan_web(I, 0) * web_height, .5 * plan_web(I, 1) * web_area, mat_proto->get_copy()); - if(b_flange_area != 0.) for(unsigned I = 0; I < plan_flange.n_rows; ++I) int_pt.emplace_back(.5 * (web_height + (1. + plan_flange(I, 0)) * bottom_flange_thickness), .5 * plan_flange(I, 1) * b_flange_area, mat_proto->get_copy()); - if(t_flange_area != 0.) for(unsigned I = 0; I < plan_flange.n_rows; ++I) int_pt.emplace_back(-.5 * (web_height + (1. + plan_flange(I, 0)) * top_flange_thickness), .5 * plan_flange(I, 1) * t_flange_area, mat_proto->get_copy()); + if(b_flange_area > 0.) for(unsigned I = 0; I < plan_flange.n_rows; ++I) int_pt.emplace_back(.5 * (web_height + (1. + plan_flange(I, 0)) * bottom_flange_thickness), .5 * plan_flange(I, 1) * b_flange_area, mat_proto->get_copy()); + if(t_flange_area > 0.) for(unsigned I = 0; I < plan_flange.n_rows; ++I) int_pt.emplace_back(-.5 * (web_height + (1. + plan_flange(I, 0)) * top_flange_thickness), .5 * plan_flange(I, 1) * t_flange_area, mat_proto->get_copy()); - initial_stiffness.zeros(2, 2); - for(const auto& I : int_pt) { - auto tmp_a = I.s_material->get_initial_stiffness().at(0) * I.weight; - const auto tmp_b = eccentricity(0) - I.coor; - initial_stiffness(0, 0) += tmp_a; - initial_stiffness(0, 1) += tmp_a *= tmp_b; - initial_stiffness(1, 1) += tmp_a *= tmp_b; - } - initial_stiffness(1, 0) = initial_stiffness(0, 1); - - trial_stiffness = current_stiffness = initial_stiffness; + initialize_stiffness(); return SUANPAN_SUCCESS; } diff --git a/Section/Section2D/ISection2D.h b/Section/Section2D/ISection2D.h index 36042015a..c3cb954e9 100644 --- a/Section/Section2D/ISection2D.h +++ b/Section/Section2D/ISection2D.h @@ -39,22 +39,24 @@ class ISection2D : public Section2D { const unsigned int_pt_num; public: - ISection2D(unsigned, // tag - double, // width - double, // height - double, // width - double, // height - double, // width - double, // height - unsigned, // material tag - unsigned = 6, // number of integration points - double = 0. // eccentricity + ISection2D( + unsigned, // tag + double, // width + double, // height + double, // width + double, // height + double, // width + double, // height + unsigned, // material tag + unsigned = 6, // number of integration points + double = 0. // eccentricity ); - ISection2D(unsigned, // tag - vec&&, // dimension - unsigned, // material tag - unsigned = 6, // number of integration points - double = 0. // eccentricity + ISection2D( + unsigned, // tag + vec&&, // dimension + unsigned, // material tag + unsigned = 6, // number of integration points + double = 0. // eccentricity ); int initialize(const shared_ptr&) override; diff --git a/Section/Section2D/Rectangle2D.cpp b/Section/Section2D/Rectangle2D.cpp index c4f1ee2b3..aa7809f14 100644 --- a/Section/Section2D/Rectangle2D.cpp +++ b/Section/Section2D/Rectangle2D.cpp @@ -29,24 +29,15 @@ Rectangle2D::Rectangle2D(const unsigned T, const double B, const double H, const int Rectangle2D::initialize(const shared_ptr& D) { auto& material_proto = D->get_material(material_tag); - access::rw(linear_density) = area * material_proto->get_parameter(ParameterType::DENSITY); + access::rw(linear_density) = area * material_proto->get_density(); const IntegrationPlan plan(1, int_pt_num, IntegrationType::GAUSS); int_pt.clear(); int_pt.reserve(int_pt_num); - initial_stiffness.zeros(2, 2); - for(unsigned I = 0; I < int_pt_num; ++I) { - int_pt.emplace_back(.5 * height * plan(I, 0), .5 * plan(I, 1) * area, material_proto->get_copy()); - auto tmp_a = int_pt[I].s_material->get_initial_stiffness().at(0) * int_pt[I].weight; - const auto tmp_b = eccentricity(0) - int_pt[I].coor; - initial_stiffness(0, 0) += tmp_a; - initial_stiffness(0, 1) += tmp_a *= tmp_b; - initial_stiffness(1, 1) += tmp_a *= tmp_b; - } - initial_stiffness(1, 0) = initial_stiffness(0, 1); - - trial_stiffness = current_stiffness = initial_stiffness; + for(unsigned I = 0; I < int_pt_num; ++I) int_pt.emplace_back(.5 * height * plan(I, 0), .5 * plan(I, 1) * area, material_proto->get_copy()); + + initialize_stiffness(); return SUANPAN_SUCCESS; } diff --git a/Section/Section2D/Rectangle2D.h b/Section/Section2D/Rectangle2D.h index b0d81a58e..7ad0b55fb 100644 --- a/Section/Section2D/Rectangle2D.h +++ b/Section/Section2D/Rectangle2D.h @@ -37,12 +37,13 @@ class Rectangle2D final : public Section2D { const unsigned int_pt_num; public: - Rectangle2D(unsigned, // tag - double, // width - double, // height - unsigned, // material tag - unsigned = 6, // number of integration points - double = 0. // eccentricity + Rectangle2D( + unsigned, // tag + double, // width + double, // height + unsigned, // material tag + unsigned = 6, // number of integration points + double = 0. // eccentricity ); int initialize(const shared_ptr&) override; diff --git a/Section/Section2D/Section2D b/Section/Section2D/Section2D index 4f80109df..14f75b541 100644 --- a/Section/Section2D/Section2D +++ b/Section/Section2D/Section2D @@ -1,11 +1,9 @@ -#include "Section2D.h" - -#include "Bar2D.h" #include "Box2D.h" +#include "Cell2D.h" #include "Circle2D.h" #include "CircularHollow2D.h" #include "Fibre2D.h" #include "HSection2D.h" #include "ISection2D.h" #include "Rectangle2D.h" -#include "TSection2D.h" \ No newline at end of file +#include "TSection2D.h" diff --git a/Section/Section2D/Section2D.cpp b/Section/Section2D/Section2D.cpp index 337f801cb..8ed39598b 100644 --- a/Section/Section2D/Section2D.cpp +++ b/Section/Section2D/Section2D.cpp @@ -23,14 +23,28 @@ Section2D::IntegrationPoint::IntegrationPoint(const double C, const double W, un , weight(W) , s_material(std::forward>(M)) {} -Section2D::IntegrationPoint::IntegrationPoint(const IntegrationPoint& old_obj) - : coor(old_obj.coor) - , weight(old_obj.weight) - , s_material(suanpan::make_copy(old_obj.s_material)) {} +void Section2D::initialize_stiffness() { + initial_stiffness.zeros(2, 2); + for(const auto& I : int_pt) { + auto ea = I.s_material->get_initial_stiffness().at(0) * I.weight; + const auto arm_y = eccentricity(0) - I.coor; + initial_stiffness(0, 0) += ea; + initial_stiffness(0, 1) += ea *= arm_y; + initial_stiffness(1, 1) += ea *= arm_y; + } + initial_stiffness(1, 0) = initial_stiffness(0, 1); + + trial_stiffness = current_stiffness = initial_stiffness; +} Section2D::Section2D(const unsigned T, const unsigned MT, const double A, const double EC) : Section(T, SectionType::D2, MT, A, vec{EC, 0.}) {} +void Section2D::set_characteristic_length(const double L) const { + Section::set_characteristic_length(L); + for(const auto& I : int_pt) I.s_material->set_characteristic_length(L); +} + int Section2D::update_trial_status(const vec& t_deformation) { if(norm((trial_deformation = t_deformation) - current_deformation) <= datum::eps) return SUANPAN_SUCCESS; @@ -38,21 +52,19 @@ int Section2D::update_trial_status(const vec& t_deformation) { trial_resistance.zeros(); for(const auto& I : int_pt) { - const auto arm = eccentricity(0) - I.coor; - if(I.s_material->update_trial_status(trial_deformation(0) + trial_deformation(1) * arm) != SUANPAN_SUCCESS) return SUANPAN_FAIL; - auto tmp_a = I.s_material->get_trial_stiffness().at(0) * I.weight; - trial_stiffness(0, 0) += tmp_a; - trial_stiffness(0, 1) += tmp_a *= arm; - trial_stiffness(1, 1) += tmp_a *= arm; - tmp_a = I.s_material->get_trial_stress().at(0) * I.weight; - trial_resistance(0) += tmp_a; - trial_resistance(1) += tmp_a * arm; + const auto arm_y = eccentricity(0) - I.coor; + if(I.s_material->update_trial_status(trial_deformation(0) + trial_deformation(1) * arm_y) != SUANPAN_SUCCESS) return SUANPAN_FAIL; + auto ea = I.s_material->get_trial_stiffness().at(0) * I.weight; + trial_stiffness(0, 0) += ea; + trial_stiffness(0, 1) += ea *= arm_y; + trial_stiffness(1, 1) += ea *= arm_y; + ea = I.s_material->get_trial_stress().at(0) * I.weight; + trial_resistance(0) += ea; + trial_resistance(1) += ea * arm_y; } trial_stiffness(1, 0) = trial_stiffness(0, 1); - suanpan_assert([&] { if(!trial_resistance.is_finite() || !trial_stiffness.is_finite()) throw invalid_argument("infinite number detected"); }); - return SUANPAN_SUCCESS; } diff --git a/Section/Section2D/Section2D.h b/Section/Section2D/Section2D.h index 6ba6e3b6b..a9f43cb0b 100644 --- a/Section/Section2D/Section2D.h +++ b/Section/Section2D/Section2D.h @@ -30,6 +30,8 @@ #define SECTION2D_H #include
+#include +#include using std::vector; @@ -37,24 +39,24 @@ class Section2D : public Section { protected: struct IntegrationPoint { double coor, weight; - unique_ptr s_material; + ResourceHolder s_material; IntegrationPoint(double, double, unique_ptr&&); - IntegrationPoint(const IntegrationPoint&); - IntegrationPoint(IntegrationPoint&&) noexcept = default; - IntegrationPoint& operator=(const IntegrationPoint&) = delete; - IntegrationPoint& operator=(IntegrationPoint&&) noexcept = delete; - ~IntegrationPoint() = default; }; vector int_pt; + void initialize_stiffness(); + public: - Section2D(unsigned, // tag - unsigned, // material tag - double = 0., // area - double = 0. // eccentricity + Section2D( + unsigned, // tag + unsigned, // material tag + double = 0., // area + double = 0. // eccentricity ); + void set_characteristic_length(double) const override; + int update_trial_status(const vec&) override; int clear_status() override; diff --git a/Section/Section2D/TSection2D.h b/Section/Section2D/TSection2D.h index b1b88ad75..5e3d02865 100644 --- a/Section/Section2D/TSection2D.h +++ b/Section/Section2D/TSection2D.h @@ -33,20 +33,22 @@ class TSection2D final : public ISection2D { public: - TSection2D(unsigned, // tag - double, // width - double, // height - double, // width - double, // height - unsigned, // material tag - unsigned = 6, // number of integration points - double = 0. // eccentricity + TSection2D( + unsigned, // tag + double, // width + double, // height + double, // width + double, // height + unsigned, // material tag + unsigned = 6, // number of integration points + double = 0. // eccentricity ); - TSection2D(unsigned, // tag - vec&&, // dimension - unsigned, // material tag - unsigned = 6, // number of integration points - double = 0. // eccentricity + TSection2D( + unsigned, // tag + vec&&, // dimension + unsigned, // material tag + unsigned = 6, // number of integration points + double = 0. // eccentricity ); unique_ptr
get_copy() override; diff --git a/Section/Section3D/Bar3D.cpp b/Section/Section3D/Bar3D.cpp deleted file mode 100644 index b21c0943f..000000000 --- a/Section/Section3D/Bar3D.cpp +++ /dev/null @@ -1,102 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2017-2023 Theodore Chang - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - ******************************************************************************/ - -#include "Bar3D.h" -#include -#include - -Bar3D::Bar3D(const unsigned T, const double AR, const unsigned MT, const double EA, const double EB) - : Section3D(T, MT, AR, vec{EA, EB}) {} - -Bar3D::Bar3D(const Bar3D& old_obj) - : Section3D(old_obj) - , s_material(suanpan::make_copy(old_obj.s_material)) {} - -int Bar3D::initialize(const shared_ptr& D) { - s_material = D->get_material(material_tag)->get_copy(); - - access::rw(linear_density) = area * s_material->get_parameter(ParameterType::DENSITY); - - initial_stiffness.set_size(3, 3); - - const auto tmp_a = s_material->get_initial_stiffness().at(0) * area; - const auto& arm_y = eccentricity(0); - const auto& arm_z = eccentricity(1); - initial_stiffness(0, 0) = tmp_a; - initial_stiffness(1, 1) = tmp_a * arm_y * arm_y; - initial_stiffness(2, 2) = tmp_a * arm_z * arm_z; - initial_stiffness(1, 0) = initial_stiffness(0, 1) = tmp_a * arm_y; - initial_stiffness(2, 0) = initial_stiffness(0, 2) = -tmp_a * arm_z; - initial_stiffness(2, 1) = initial_stiffness(1, 2) = -tmp_a * arm_y * arm_z; - - trial_stiffness = current_stiffness = initial_stiffness; - - return SUANPAN_SUCCESS; -} - -unique_ptr
Bar3D::get_copy() { return make_unique(*this); } - -int Bar3D::update_trial_status(const vec& t_deformation) { - trial_deformation = t_deformation; - - const auto& arm_y = eccentricity(0); - const auto& arm_z = eccentricity(1); - - if(s_material->update_trial_status(trial_deformation(0) + trial_deformation(1) * arm_y - trial_deformation(2) * arm_z) != SUANPAN_SUCCESS) return SUANPAN_FAIL; - - const auto tmp_a = s_material->get_trial_stiffness().at(0) * area; - trial_stiffness(0, 0) = tmp_a; - trial_stiffness(1, 1) = tmp_a * arm_y * arm_y; - trial_stiffness(2, 2) = tmp_a * arm_z * arm_z; - trial_stiffness(1, 0) = trial_stiffness(0, 1) = tmp_a * arm_y; - trial_stiffness(2, 0) = trial_stiffness(0, 2) = -tmp_a * arm_z; - trial_stiffness(2, 1) = trial_stiffness(1, 2) = -tmp_a * arm_y * arm_z; - const auto tmp_b = s_material->get_trial_stress().at(0) * area; - trial_resistance(0) = tmp_b; - trial_resistance(1) = tmp_b * arm_y; - trial_resistance(2) = -tmp_b * arm_z; - - return SUANPAN_SUCCESS; -} - -int Bar3D::clear_status() { - current_deformation.zeros(); - trial_deformation.zeros(); - current_resistance.zeros(); - trial_resistance.zeros(); - trial_stiffness = current_stiffness = initial_stiffness; - return s_material->clear_status(); -} - -int Bar3D::commit_status() { - current_deformation = trial_deformation; - current_resistance = trial_resistance; - current_stiffness = trial_stiffness; - return s_material->commit_status(); -} - -int Bar3D::reset_status() { - trial_deformation = current_deformation; - trial_resistance = current_resistance; - trial_stiffness = current_stiffness; - return s_material->reset_status(); -} - -void Bar3D::print() { - suanpan_info("A 3D section that represents for example rebar in RC section.\n"); - s_material->print(); -} diff --git a/Section/Section3D/Box3D.cpp b/Section/Section3D/Box3D.cpp index 3be9a4958..1791bb5f1 100644 --- a/Section/Section3D/Box3D.cpp +++ b/Section/Section3D/Box3D.cpp @@ -21,14 +21,14 @@ #include Box3D::Box3D(const unsigned T, const double B, const double H, const double TH, const unsigned M, const unsigned S, const double E1, const double E2) - : Section3D(T, M, 2. * TH * (B + H - 4. * TH), vec{E1, E2}) + : Section3D(T, M, 2. * TH * (B + H), vec{E1, E2}) , width(B) , height(H) , thickness(TH) , int_pt_num(S > 20 ? 20 : S) {} Box3D::Box3D(const unsigned T, vec&& D, const unsigned M, const unsigned S, vec&& EC) - : Section3D(T, M, 2. * D(2) * (D(0) + D(1) - 4. * D(2)), std::forward(EC)) + : Section3D(T, M, 2. * D(2) * (D(0) + D(1)), std::forward(EC)) , width(D(0)) , height(D(1)) , thickness(D(2)) @@ -37,16 +37,16 @@ Box3D::Box3D(const unsigned T, vec&& D, const unsigned M, const unsigned S, vec& int Box3D::initialize(const shared_ptr& D) { auto& material_proto = D->get_material(material_tag); - access::rw(linear_density) = area * material_proto->get_parameter(ParameterType::DENSITY); + access::rw(linear_density) = area * material_proto->get_density(); const IntegrationPlan plan(1, int_pt_num, IntegrationType::GAUSS); - const auto net_flange = width - 2. * thickness; - const auto net_web = height - 2. * thickness; + const auto net_web = height - thickness; + const auto net_flange = width + thickness; const auto web_area = net_web * thickness; const auto flange_area = net_flange * thickness; - const auto web_middle = .5 * (width - thickness); - const auto flange_middle = .5 * (height - thickness); + const auto web_middle = .5 * width; + const auto flange_middle = .5 * height; int_pt.clear(); int_pt.reserve(4 * static_cast(int_pt_num)); @@ -57,24 +57,7 @@ int Box3D::initialize(const shared_ptr& D) { int_pt.emplace_back(-flange_middle, .5 * plan(I, 0) * net_flange, .5 * plan(I, 1) * flange_area, material_proto->get_copy()); } - initial_stiffness.zeros(3, 3); - for(const auto& I : int_pt) { - const auto tmp_a = I.s_material->get_initial_stiffness().at(0) * I.weight; - const auto arm_y = eccentricity(0) - I.coor_y; - const auto arm_z = I.coor_z - eccentricity(1); - initial_stiffness(0, 0) += tmp_a; - initial_stiffness(0, 1) += tmp_a * arm_y; - initial_stiffness(0, 2) += tmp_a * arm_z; - initial_stiffness(1, 1) += tmp_a * arm_y * arm_y; - initial_stiffness(1, 2) += tmp_a * arm_y * arm_z; - initial_stiffness(2, 2) += tmp_a * arm_z * arm_z; - } - - initial_stiffness(1, 0) = initial_stiffness(0, 1); - initial_stiffness(2, 0) = initial_stiffness(0, 2); - initial_stiffness(2, 1) = initial_stiffness(1, 2); - - trial_stiffness = current_stiffness = initial_stiffness; + initialize_stiffness(); return SUANPAN_SUCCESS; } diff --git a/Section/Section3D/Box3D.h b/Section/Section3D/Box3D.h index 3c4c1db45..3c21c484d 100644 --- a/Section/Section3D/Box3D.h +++ b/Section/Section3D/Box3D.h @@ -37,20 +37,22 @@ class Box3D final : public Section3D { const unsigned int_pt_num; public: - Box3D(unsigned, // tag - double, // width - double, // height - double, // thickness - unsigned, // material tag - unsigned = 6, // number of integration points - double = 0., // eccentricity - double = 0. // eccentricity + Box3D( + unsigned, // tag + double, // width + double, // height + double, // thickness + unsigned, // material tag + unsigned = 6, // number of integration points + double = 0., // eccentricity + double = 0. // eccentricity ); - Box3D(unsigned, // tag - vec&&, // dimension - unsigned, // material tag - unsigned = 6, // number of integration points - vec&& = {0., 0.} // eccentricity + Box3D( + unsigned, // tag + vec&&, // dimension + unsigned, // material tag + unsigned = 6, // number of integration points + vec&& = {0., 0.} // eccentricity ); int initialize(const shared_ptr&) override; diff --git a/Section/Section3D/CMakeLists.txt b/Section/Section3D/CMakeLists.txt index 43b715446..efd2141d0 100644 --- a/Section/Section3D/CMakeLists.txt +++ b/Section/Section3D/CMakeLists.txt @@ -1,6 +1,6 @@ set(S3D - Section3D/Bar3D.cpp Section3D/Box3D.cpp + Section3D/Cell3D.cpp Section3D/Circle3D.cpp Section3D/CircularHollow3D.cpp Section3D/Fibre3D.cpp @@ -8,4 +8,4 @@ set(S3D Section3D/Rectangle3D.cpp Section3D/Section3D.cpp Section3D/TSection3D.cpp - ) +) diff --git a/Section/Section3D/Cell3D.cpp b/Section/Section3D/Cell3D.cpp new file mode 100644 index 000000000..bd79ce7eb --- /dev/null +++ b/Section/Section3D/Cell3D.cpp @@ -0,0 +1,45 @@ +/******************************************************************************* + * Copyright (C) 2017-2023 Theodore Chang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + ******************************************************************************/ + +#include "Cell3D.h" +#include +#include + +// eccentricity should really be location and be stored in integration point +// here we flip the sign and use eccentricity to store it +Cell3D::Cell3D(const unsigned T, const double AR, const unsigned MT, const double EA, const double EB) + : Section3D(T, MT, AR, vec{-EA, -EB}) {} + +int Cell3D::initialize(const shared_ptr& D) { + auto& material_proto = D->get_material(material_tag); + + access::rw(linear_density) = area * material_proto->get_density(); + + int_pt.clear(); + int_pt.emplace_back(0., 0., area, material_proto->get_copy()); + + initialize_stiffness(); + + return SUANPAN_SUCCESS; +} + +unique_ptr
Cell3D::get_copy() { return make_unique(*this); } + +void Cell3D::print() { + suanpan_info("A 3D section that represents a small cell.\n"); + for(const auto& I : int_pt) I.s_material->print(); +} diff --git a/Section/Section3D/Bar3D.h b/Section/Section3D/Cell3D.h similarity index 59% rename from Section/Section3D/Bar3D.h rename to Section/Section3D/Cell3D.h index fc1202514..a84c5e582 100644 --- a/Section/Section3D/Bar3D.h +++ b/Section/Section3D/Cell3D.h @@ -15,50 +15,41 @@ * along with this program. If not, see . ******************************************************************************/ /** - * @class Bar3D - * @brief A Bar3D class. + * @class Cell3D + * @brief A Cell3D class. * @author tlc * @date 26/07/2018 * @version 0.1.0 - * @file Bar3D.h - * @addtogroup Section + * @file Cell3D.h + * @addtogroup Section-3D + * @ingroup Section * @{ */ -#ifndef BAR3D_H -#define BAR3D_H +#ifndef CELL3D_H +#define CELL3D_H #include
-class Bar3D final : public Section3D { - unique_ptr s_material; - +class Cell3D final : public Section3D { public: - Bar3D(unsigned, // tag - double, // area - unsigned, // material tag - double = 0., // eccentricity - double = 0. // eccentricity + Cell3D( + unsigned, // tag + double, // area + unsigned, // material tag + double = 0., // eccentricity + double = 0. // eccentricity ); - Bar3D(const Bar3D&); - Bar3D(Bar3D&&) = delete; // move forbidden - Bar3D& operator=(const Bar3D&) = delete; // assign forbidden - Bar3D& operator=(Bar3D&&) = delete; // assign forbidden - ~Bar3D() override = default; int initialize(const shared_ptr&) override; unique_ptr
get_copy() override; - int update_trial_status(const vec&) override; - - int clear_status() override; - int commit_status() override; - int reset_status() override; - void print() override; }; +using Bar3D = Cell3D; + #endif //! @} diff --git a/Section/Section3D/Circle3D.cpp b/Section/Section3D/Circle3D.cpp index 3699480b8..ee49b63ff 100644 --- a/Section/Section3D/Circle3D.cpp +++ b/Section/Section3D/Circle3D.cpp @@ -28,33 +28,19 @@ Circle3D::Circle3D(const unsigned T, const double R, const unsigned M, const uns int Circle3D::initialize(const shared_ptr& D) { auto& material_proto = D->get_material(material_tag); - access::rw(linear_density) = area * material_proto->get_parameter(ParameterType::DENSITY); + access::rw(linear_density) = area * material_proto->get_density(); const IntegrationPlan plan(2, int_pt_num, IntegrationType::GAUSS); int_pt.clear(); int_pt.reserve(plan.n_rows); - initial_stiffness.zeros(3, 3); for(unsigned I = 0; I < plan.n_rows; ++I) { const auto t_angle = (plan(I, 0) + 1.) * datum::pi; const auto t_radius = .5 * radius * (plan(I, 1) + 1.); int_pt.emplace_back(cos(t_angle) * t_radius, sin(t_angle) * t_radius, .5 * plan(I, 2) * t_radius * area, material_proto->get_copy()); - const auto& c_pt = int_pt.back(); - const auto arm_y = eccentricity(0) - c_pt.coor_y; - const auto arm_z = c_pt.coor_z - eccentricity(1); - const auto tmp_a = c_pt.s_material->get_initial_stiffness().at(0) * int_pt[I].weight; - initial_stiffness(0, 0) += tmp_a; - initial_stiffness(0, 1) += tmp_a * arm_y; - initial_stiffness(0, 2) += tmp_a * arm_z; - initial_stiffness(1, 1) += tmp_a * arm_y * arm_y; - initial_stiffness(1, 2) += tmp_a * arm_y * arm_z; - initial_stiffness(2, 2) += tmp_a * arm_z * arm_z; } - initial_stiffness(1, 0) = initial_stiffness(0, 1); - initial_stiffness(2, 0) = initial_stiffness(0, 2); - initial_stiffness(2, 1) = initial_stiffness(1, 2); - trial_stiffness = current_stiffness = initial_stiffness; + initialize_stiffness(); return SUANPAN_SUCCESS; } diff --git a/Section/Section3D/Circle3D.h b/Section/Section3D/Circle3D.h index 01e21f320..61017495f 100644 --- a/Section/Section3D/Circle3D.h +++ b/Section/Section3D/Circle3D.h @@ -21,7 +21,8 @@ * @date 15/09/2017 * @version 0.1.0 * @file Circle3D.h - * @addtogroup Section + * @addtogroup Section-3D + * @ingroup Section * @{ */ @@ -36,11 +37,12 @@ class Circle3D final : public Section3D { const unsigned int_pt_num; public: - Circle3D(unsigned, // tag - double, // radius - unsigned, // material tag - unsigned = 6, // number of integration points - vec&& = {0., 0.} // eccentricity + Circle3D( + unsigned, // tag + double, // radius + unsigned, // material tag + unsigned = 6, // number of integration points + vec&& = {0., 0.} // eccentricity ); int initialize(const shared_ptr&) override; diff --git a/Section/Section3D/CircularHollow3D.cpp b/Section/Section3D/CircularHollow3D.cpp index 84383d0ba..271e48b25 100644 --- a/Section/Section3D/CircularHollow3D.cpp +++ b/Section/Section3D/CircularHollow3D.cpp @@ -35,7 +35,7 @@ CircularHollow3D::CircularHollow3D(const unsigned T, vec&& D, const unsigned M, int CircularHollow3D::initialize(const shared_ptr& D) { auto& material_proto = D->get_material(material_tag); - access::rw(linear_density) = area * material_proto->get_parameter(ParameterType::DENSITY); + access::rw(linear_density) = area * material_proto->get_density(); const IntegrationPlan plan(1, int_pt_num, IntegrationType::GAUSS); @@ -43,28 +43,13 @@ int CircularHollow3D::initialize(const shared_ptr& D) { int_pt.clear(); int_pt.reserve(2llu * int_pt_num); - initial_stiffness.zeros(3, 3); for(unsigned I = 0; I < int_pt_num; ++I) { const auto t_angle = .5 * plan(I, 0) * datum::pi; int_pt.emplace_back(cos(t_angle) * m_radius, sin(t_angle) * m_radius, .25 * plan(I, 1) * area, material_proto->get_copy()); int_pt.emplace_back(-cos(t_angle) * m_radius, -sin(t_angle) * m_radius, .25 * plan(I, 1) * area, material_proto->get_copy()); } - for(const auto& I : int_pt) { - const auto arm_y = eccentricity(0) - I.coor_y; - const auto arm_z = I.coor_z - eccentricity(1); - const auto tmp_a = I.s_material->get_initial_stiffness().at(0) * I.weight; - initial_stiffness(0, 0) += tmp_a; - initial_stiffness(0, 1) += tmp_a * arm_y; - initial_stiffness(0, 2) += tmp_a * arm_z; - initial_stiffness(1, 1) += tmp_a * arm_y * arm_y; - initial_stiffness(1, 2) += tmp_a * arm_y * arm_z; - initial_stiffness(2, 2) += tmp_a * arm_z * arm_z; - } - initial_stiffness(1, 0) = initial_stiffness(0, 1); - initial_stiffness(2, 0) = initial_stiffness(0, 2); - initial_stiffness(2, 1) = initial_stiffness(1, 2); - trial_stiffness = current_stiffness = initial_stiffness; + initialize_stiffness(); return SUANPAN_SUCCESS; } diff --git a/Section/Section3D/CircularHollow3D.h b/Section/Section3D/CircularHollow3D.h index 8fa3b3483..0ed3dcdd4 100644 --- a/Section/Section3D/CircularHollow3D.h +++ b/Section/Section3D/CircularHollow3D.h @@ -21,7 +21,8 @@ * @date 14/03/2019 * @version 0.1.0 * @file CircularHollow3D.h - * @addtogroup Section + * @addtogroup Section-3D + * @ingroup Section * @{ */ @@ -36,18 +37,20 @@ class CircularHollow3D final : public Section3D { const unsigned int_pt_num; public: - CircularHollow3D(unsigned, // tag - double, // radius - double, // thickness - unsigned, // material tag - unsigned = 10, // number of integration points - vec&& = {0., 0.} // eccentricity + CircularHollow3D( + unsigned, // tag + double, // radius + double, // thickness + unsigned, // material tag + unsigned = 10, // number of integration points + vec&& = {0., 0.} // eccentricity ); - CircularHollow3D(unsigned, // tag - vec&&, // dimension - unsigned, // material tag - unsigned = 10, // number of integration points - vec&& = {0., 0.} // eccentricity + CircularHollow3D( + unsigned, // tag + vec&&, // dimension + unsigned, // material tag + unsigned = 10, // number of integration points + vec&& = {0., 0.} // eccentricity ); int initialize(const shared_ptr&) override; diff --git a/Section/Section3D/Fibre3D.cpp b/Section/Section3D/Fibre3D.cpp index ee0be1ede..0fbc427ac 100644 --- a/Section/Section3D/Fibre3D.cpp +++ b/Section/Section3D/Fibre3D.cpp @@ -16,100 +16,8 @@ ******************************************************************************/ #include "Fibre3D.h" -#include -#include Fibre3D::Fibre3D(const unsigned T, uvec&& ST) - : Section3D(T, 0) - , fibre_tag(std::forward(ST)) {} - -Fibre3D::Fibre3D(const Fibre3D& old_obj) - : Section3D(old_obj) - , fibre_tag(old_obj.fibre_tag) { - fibre.clear(); - fibre.reserve(old_obj.fibre.size()); - for(const auto& I : old_obj.fibre) fibre.emplace_back(I->get_copy()); -} - -int Fibre3D::initialize(const shared_ptr& D) { - fibre.clear(); - fibre.reserve(fibre_tag.n_elem); - - auto total_a = 0., total_linear_density = 0.; - - for(const auto I : fibre_tag) { - fibre.emplace_back(suanpan::initialized_section_copy(D, I)); - if(nullptr == fibre.back() || SectionType::D3 != fibre.back()->get_section_type()) { - suanpan_warning("Section {} is ignored as it is not a valid 3D section.\n", I); - fibre.pop_back(); - } - else { - total_a += fibre.back()->get_parameter(ParameterType::AREA); - total_linear_density += fibre.back()->get_parameter(ParameterType::LINEARDENSITY); - } - } - - access::rw(area) = total_a; - access::rw(linear_density) = total_linear_density; - - initial_stiffness.zeros(); - access::rw(linear_density) = 0.; - for(const auto& I : fibre) { - I->set_eccentricity(I->get_eccentricity() + eccentricity); - I->initialize_base(D); - I->initialize(D); - initial_stiffness += I->get_initial_stiffness(); - } - - trial_stiffness = current_stiffness = initial_stiffness; - - return SUANPAN_SUCCESS; -} + : Fibre(T, std::forward(ST), SectionType::D3) {} unique_ptr
Fibre3D::get_copy() { return make_unique(*this); } - -int Fibre3D::update_trial_status(const vec& t_deformation) { - trial_deformation = t_deformation; - - trial_stiffness.zeros(); - trial_resistance.zeros(); - - for(const auto& I : fibre) { - if(I->update_trial_status(t_deformation) != SUANPAN_SUCCESS) return SUANPAN_FAIL; - trial_stiffness += I->get_trial_stiffness(); - trial_resistance += I->get_trial_resistance(); - } - - return SUANPAN_SUCCESS; -} - -int Fibre3D::clear_status() { - current_deformation = trial_deformation.zeros(); - current_resistance = trial_resistance.zeros(); - current_stiffness = trial_stiffness = initial_stiffness; - auto code = 0; - for(const auto& I : fibre) code += I->clear_status(); - return code; -} - -int Fibre3D::commit_status() { - current_deformation = trial_deformation; - current_resistance = trial_resistance; - current_stiffness = trial_stiffness; - auto code = 0; - for(const auto& I : fibre) code += I->commit_status(); - return code; -} - -int Fibre3D::reset_status() { - trial_deformation = current_deformation; - trial_resistance = current_resistance; - trial_stiffness = current_stiffness; - auto code = 0; - for(const auto& I : fibre) code += I->reset_status(); - return code; -} - -void Fibre3D::print() { - suanpan_info("A 3D fibre section that consists of fibres.\n"); -} diff --git a/Section/Section3D/Fibre3D.h b/Section/Section3D/Fibre3D.h index 7b0d316ef..17476189c 100644 --- a/Section/Section3D/Fibre3D.h +++ b/Section/Section3D/Fibre3D.h @@ -18,43 +18,24 @@ * @class Fibre3D * @brief A Fibre3D class. * @author tlc - * @date 10/06/2018 + * @date 15/09/2023 * @version 0.1.0 * @file Fibre3D.h - * @addtogroup Section-2D + * @addtogroup Section-3D * @ingroup Section * @{ */ -#ifndef Fibre3D_H -#define Fibre3D_H +#ifndef FIBRE3D_H +#define FIBRE3D_H -#include
- -class Fibre3D final : public Section3D { - uvec fibre_tag; - - vector> fibre; +#include
+class Fibre3D final : public Fibre { public: Fibre3D(unsigned, uvec&&); - Fibre3D(const Fibre3D&); - Fibre3D(Fibre3D&&) noexcept = delete; - Fibre3D& operator=(const Fibre3D&) = delete; - Fibre3D& operator=(Fibre3D&&) noexcept = delete; - ~Fibre3D() override = default; - - int initialize(const shared_ptr&) override; unique_ptr
get_copy() override; - - int update_trial_status(const vec&) override; - - int clear_status() override; - int commit_status() override; - int reset_status() override; - - void print() override; }; #endif diff --git a/Section/Section3D/ISection3D.cpp b/Section/Section3D/ISection3D.cpp index 214b12f07..8f8a0f751 100644 --- a/Section/Section3D/ISection3D.cpp +++ b/Section/Section3D/ISection3D.cpp @@ -43,7 +43,7 @@ ISection3D::ISection3D(const unsigned T, vec&& D, const unsigned MT, const unsig int ISection3D::initialize(const shared_ptr& D) { auto& mat_proto = D->get_material(material_tag); - access::rw(linear_density) = mat_proto->get_parameter(ParameterType::DENSITY) * area; + access::rw(linear_density) = mat_proto->get_density() * area; const auto web_area = web_height * web_thickness; const auto b_flange_area = bottom_flange_width * bottom_flange_thickness; @@ -58,23 +58,7 @@ int ISection3D::initialize(const shared_ptr& D) { if(b_flange_area != 0.) for(unsigned I = 0; I < plan_flange.n_rows; ++I) int_pt.emplace_back(.5 * (bottom_flange_thickness + web_height), .5 * plan_flange(I, 0) * bottom_flange_width, .5 * plan_flange(I, 1) * b_flange_area, mat_proto->get_copy()); if(t_flange_area != 0.) for(unsigned I = 0; I < plan_flange.n_rows; ++I) int_pt.emplace_back(-.5 * (top_flange_thickness + web_height), .5 * plan_flange(I, 0) * top_flange_width, .5 * plan_flange(I, 1) * t_flange_area, mat_proto->get_copy()); - initial_stiffness.zeros(3, 3); - for(const auto& I : int_pt) { - const auto tmp_a = I.s_material->get_initial_stiffness().at(0) * I.weight; - const auto arm_y = eccentricity(0) - I.coor_y; - const auto arm_z = I.coor_z - eccentricity(1); - initial_stiffness(0, 0) += tmp_a; - initial_stiffness(0, 1) += tmp_a * arm_y; - initial_stiffness(0, 2) += tmp_a * arm_z; - initial_stiffness(1, 1) += tmp_a * arm_y * arm_y; - initial_stiffness(1, 2) += tmp_a * arm_y * arm_z; - initial_stiffness(2, 2) += tmp_a * arm_z * arm_z; - } - initial_stiffness(1, 0) = initial_stiffness(0, 1); - initial_stiffness(2, 0) = initial_stiffness(0, 2); - initial_stiffness(2, 1) = initial_stiffness(1, 2); - - trial_stiffness = current_stiffness = initial_stiffness; + initialize_stiffness(); return SUANPAN_SUCCESS; } diff --git a/Section/Section3D/ISection3D.h b/Section/Section3D/ISection3D.h index 630a77dd2..0c2e99a2f 100644 --- a/Section/Section3D/ISection3D.h +++ b/Section/Section3D/ISection3D.h @@ -39,22 +39,24 @@ class ISection3D : public Section3D { const unsigned int_pt_num; public: - ISection3D(unsigned, // tag - double, // width - double, // height - double, // width - double, // height - double, // width - double, // height - unsigned, // material tag - unsigned = 6, // number of integration points - vec&& = {0., 0.} // eccentricity + ISection3D( + unsigned, // tag + double, // width + double, // height + double, // width + double, // height + double, // width + double, // height + unsigned, // material tag + unsigned = 6, // number of integration points + vec&& = {0., 0.} // eccentricity ); - ISection3D(unsigned, // tag - vec&&, // dimension - unsigned, // material tag - unsigned = 6, // number of integration points - vec&& = {0., 0.} // eccentricity + ISection3D( + unsigned, // tag + vec&&, // dimension + unsigned, // material tag + unsigned = 6, // number of integration points + vec&& = {0., 0.} // eccentricity ); int initialize(const shared_ptr&) override; diff --git a/Section/Section3D/Rectangle3D.cpp b/Section/Section3D/Rectangle3D.cpp index 4ffe6e784..fc57ceba5 100644 --- a/Section/Section3D/Rectangle3D.cpp +++ b/Section/Section3D/Rectangle3D.cpp @@ -29,33 +29,16 @@ Rectangle3D::Rectangle3D(const unsigned T, const double B, const double H, const int Rectangle3D::initialize(const shared_ptr& D) { auto& material_proto = D->get_material(material_tag); - access::rw(linear_density) = area * material_proto->get_parameter(ParameterType::DENSITY); + access::rw(linear_density) = area * material_proto->get_density(); const IntegrationPlan plan_y(1, int_pt_num, IntegrationType::LOBATTO); const IntegrationPlan plan_z(1, int_pt_num, IntegrationType::LOBATTO); int_pt.clear(); int_pt.reserve(static_cast(int_pt_num) * static_cast(int_pt_num)); - initial_stiffness.zeros(3, 3); - for(unsigned I = 0; I < int_pt_num; ++I) - for(unsigned J = 0; J < int_pt_num; ++J) { - int_pt.emplace_back(.5 * height * plan_y(I, 0), .5 * width * plan_z(J, 0), .25 * plan_y(I, 1) * plan_z(J, 1) * area, material_proto->get_copy()); - const auto& c_pt = int_pt.back(); - const auto tmp_a = c_pt.s_material->get_initial_stiffness().at(0) * c_pt.weight; - const auto arm_y = eccentricity(0) - c_pt.coor_y; - const auto arm_z = c_pt.coor_z - eccentricity(1); - initial_stiffness(0, 0) += tmp_a; - initial_stiffness(0, 1) += tmp_a * arm_y; - initial_stiffness(0, 2) += tmp_a * arm_z; - initial_stiffness(1, 1) += tmp_a * arm_y * arm_y; - initial_stiffness(1, 2) += tmp_a * arm_y * arm_z; - initial_stiffness(2, 2) += tmp_a * arm_z * arm_z; - } - initial_stiffness(1, 0) = initial_stiffness(0, 1); - initial_stiffness(2, 0) = initial_stiffness(0, 2); - initial_stiffness(2, 1) = initial_stiffness(1, 2); + for(unsigned I = 0; I < int_pt_num; ++I) for(unsigned J = 0; J < int_pt_num; ++J) int_pt.emplace_back(.5 * height * plan_y(I, 0), .5 * width * plan_z(J, 0), .25 * plan_y(I, 1) * plan_z(J, 1) * area, material_proto->get_copy()); - trial_stiffness = current_stiffness = initial_stiffness; + initialize_stiffness(); return SUANPAN_SUCCESS; } diff --git a/Section/Section3D/Rectangle3D.h b/Section/Section3D/Rectangle3D.h index f25a17fce..8f7822c80 100644 --- a/Section/Section3D/Rectangle3D.h +++ b/Section/Section3D/Rectangle3D.h @@ -21,7 +21,7 @@ * @date 13/10/2017 * @version 0.1.0 * @file Rectangle3D.h - * @addtogroup Section-2D + * @addtogroup Section-3D * @ingroup Section * @{ */ @@ -37,13 +37,14 @@ class Rectangle3D final : public Section3D { const unsigned int_pt_num; public: - Rectangle3D(unsigned, // tag - double, // width - double, // height - unsigned, // material tag - unsigned = 6, // number of integration points - double = 0., // eccentricity - double = 0. // eccentricity + Rectangle3D( + unsigned, // tag + double, // width + double, // height + unsigned, // material tag + unsigned = 6, // number of integration points + double = 0., // eccentricity + double = 0. // eccentricity ); int initialize(const shared_ptr&) override; diff --git a/Section/Section3D/Section3D b/Section/Section3D/Section3D index 30cc81233..cd85081e8 100644 --- a/Section/Section3D/Section3D +++ b/Section/Section3D/Section3D @@ -1,9 +1,8 @@ -#include "Bar3D.h" #include "Box3D.h" +#include "Cell3D.h" #include "Circle3D.h" #include "CircularHollow3D.h" #include "Fibre3D.h" #include "ISection3D.h" #include "Rectangle3D.h" -#include "Section3D.h" -#include "TSection3D.h" \ No newline at end of file +#include "TSection3D.h" diff --git a/Section/Section3D/Section3D.cpp b/Section/Section3D/Section3D.cpp index b346d0c15..a2a2cdf14 100644 --- a/Section/Section3D/Section3D.cpp +++ b/Section/Section3D/Section3D.cpp @@ -24,15 +24,42 @@ Section3D::IntegrationPoint::IntegrationPoint(const double CY, const double CZ, , weight(W) , s_material(std::forward>(M)) {} -Section3D::IntegrationPoint::IntegrationPoint(const IntegrationPoint& old_obj) - : coor_y(old_obj.coor_y) - , coor_z(old_obj.coor_z) - , weight(old_obj.weight) - , s_material(suanpan::make_copy(old_obj.s_material)) {} +void Section3D::initialize_stiffness() { + initial_stiffness.zeros(3, 3); + for(const auto& I : int_pt) { + const auto ea = I.s_material->get_initial_stiffness().at(0) * I.weight; + const auto arm_y = eccentricity(0) - I.coor_y; + const auto arm_z = I.coor_z - eccentricity(1); + initial_stiffness(0, 0) += ea; + initial_stiffness(0, 1) += ea * arm_y; + initial_stiffness(0, 2) += ea * arm_z; + initial_stiffness(1, 1) += ea * arm_y * arm_y; + initial_stiffness(1, 2) += ea * arm_y * arm_z; + initial_stiffness(2, 2) += ea * arm_z * arm_z; + } + initial_stiffness(1, 0) = initial_stiffness(0, 1); + initial_stiffness(2, 0) = initial_stiffness(0, 2); + initial_stiffness(2, 1) = initial_stiffness(1, 2); + + trial_stiffness = current_stiffness = initial_stiffness; +} Section3D::Section3D(const unsigned T, const unsigned MT, const double A, vec&& E) : Section(T, SectionType::D3, MT, A, std::forward(E)) {} +void Section3D::set_characteristic_length(const double L) const { + Section::set_characteristic_length(L); + for(const auto& I : int_pt) I.s_material->set_characteristic_length(L); +} + +/** + * \brief The deformation is assumed to contain the following. + * + * [0]: axial strain\n + * [1]: curvature about the z-axis (major)\n + * [2]: curvature about the y-axis (minor). + * + */ int Section3D::update_trial_status(const vec& t_deformation) { if(const vec incre_deformation = (trial_deformation = t_deformation) - current_deformation; norm(incre_deformation) <= datum::eps) return SUANPAN_SUCCESS; diff --git a/Section/Section3D/Section3D.h b/Section/Section3D/Section3D.h index 723f34457..924d87ac8 100644 --- a/Section/Section3D/Section3D.h +++ b/Section/Section3D/Section3D.h @@ -30,6 +30,8 @@ #define SECTION3D_H #include
+#include +#include using std::vector; @@ -37,24 +39,24 @@ class Section3D : public Section { protected: struct IntegrationPoint { double coor_y, coor_z, weight; - unique_ptr s_material; + ResourceHolder s_material; IntegrationPoint(double, double, double, unique_ptr&&); - IntegrationPoint(const IntegrationPoint&); - IntegrationPoint(IntegrationPoint&&) noexcept = default; - IntegrationPoint& operator=(const IntegrationPoint&) = delete; - IntegrationPoint& operator=(IntegrationPoint&&) noexcept = delete; - ~IntegrationPoint() = default; }; vector int_pt; + void initialize_stiffness(); + public: - Section3D(unsigned, // tag - unsigned, // material tag - double = 0., // area - vec&& = {0., 0.} // eccentricity + Section3D( + unsigned, // tag + unsigned, // material tag + double = 0., // area + vec&& = {0., 0.} // eccentricity ); + void set_characteristic_length(double) const override; + int update_trial_status(const vec&) override; int clear_status() override; diff --git a/Section/Section3D/TSection3D.h b/Section/Section3D/TSection3D.h index ebc8bfa57..fd38c8acd 100644 --- a/Section/Section3D/TSection3D.h +++ b/Section/Section3D/TSection3D.h @@ -33,20 +33,22 @@ class TSection3D final : public ISection3D { public: - TSection3D(unsigned, // tag - double, // width - double, // height - double, // width - double, // height - unsigned, // material tag - unsigned = 6, // number of integration points - vec&& = {0., 0.} // eccentricity + TSection3D( + unsigned, // tag + double, // width + double, // height + double, // width + double, // height + unsigned, // material tag + unsigned = 6, // number of integration points + vec&& = {0., 0.} // eccentricity ); - TSection3D(unsigned, // tag - vec&&, // dimension - unsigned, // material tag - unsigned = 6, // number of integration points - vec&& = {0., 0.} // eccentricity + TSection3D( + unsigned, // tag + vec&&, // dimension + unsigned, // material tag + unsigned = 6, // number of integration points + vec&& = {0., 0.} // eccentricity ); unique_ptr
get_copy() override; diff --git a/Section/SectionNM/CMakeLists.txt b/Section/SectionNM/CMakeLists.txt index bbfb5a1b3..e2023ed42 100644 --- a/Section/SectionNM/CMakeLists.txt +++ b/Section/SectionNM/CMakeLists.txt @@ -13,4 +13,4 @@ set(SNM SectionNM/NM3D1.cpp SectionNM/NM3D2.cpp SectionNM/NM3D3.cpp - ) +) diff --git a/Section/SectionNM/LinearHardeningNM.cpp b/Section/SectionNM/LinearHardeningNM.cpp index a8f65e86d..2ef19f64f 100644 --- a/Section/SectionNM/LinearHardeningNM.cpp +++ b/Section/SectionNM/LinearHardeningNM.cpp @@ -88,7 +88,7 @@ int LinearHardeningNM::compute_local_integration(vec& q, mat& jacobian) { const auto norm_mi = norm(m(ni)); const auto norm_mj = norm(m(nj)); - if(1 == counter) { + if(1u == counter) { gamma = residual(ge(0)) / dot(z, m); q -= gamma * m; if(has_kinematic) beta += kinematic_modulus * gamma * m; @@ -130,10 +130,10 @@ int LinearHardeningNM::compute_local_integration(vec& q, mat& jacobian) { const vec incre = solve(jacobian += prpz * (eye(d_size, d_size) - m * m.t()) / norm(z) * dzdx, residual); - auto error = norm(residual); - if(2 == counter) ref_error = std::max(1., error); - suanpan_debug("Local iteration error: {:.5E}.\n", error /= ref_error); - if(norm(incre) <= tolerance && error <= tolerance) return SUANPAN_SUCCESS; + const auto error = inf_norm(residual); + if(2u == counter) ref_error = error; + suanpan_debug("Local iteration error: {:.5E}.\n", error); + if(error < tolerance * ref_error || (inf_norm(residual) < tolerance && counter > 5u)) return SUANPAN_SUCCESS; q -= incre(ga); if(has_kinematic) beta -= incre(gb); diff --git a/Section/SectionNM/LinearHardeningNM.h b/Section/SectionNM/LinearHardeningNM.h index 9eb7136c4..55b2ad48e 100644 --- a/Section/SectionNM/LinearHardeningNM.h +++ b/Section/SectionNM/LinearHardeningNM.h @@ -42,22 +42,24 @@ class LinearHardeningNM : public NonlinearNM { [[nodiscard]] vec compute_dh(double) const override; public: - LinearHardeningNM(unsigned, // tag - double, // axial rigidity - double, // flexural rigidity - double, // isotropic hardening modulus - double, // kinematic hardening modulus - double, // linear density - vec&& + LinearHardeningNM( + unsigned, // tag + double, // axial rigidity + double, // flexural rigidity + double, // isotropic hardening modulus + double, // kinematic hardening modulus + double, // linear density + vec&& ); - LinearHardeningNM(unsigned, // tag - double, // axial rigidity - double, // flexural rigidity - double, // flexural rigidity - double, // isotropic hardening modulus - double, // kinematic hardening modulus - double, // linear density - vec&& + LinearHardeningNM( + unsigned, // tag + double, // axial rigidity + double, // flexural rigidity + double, // flexural rigidity + double, // isotropic hardening modulus + double, // kinematic hardening modulus + double, // linear density + vec&& ); }; diff --git a/Section/SectionNM/NM2D1.h b/Section/SectionNM/NM2D1.h index d864fbf63..229e88893 100644 --- a/Section/SectionNM/NM2D1.h +++ b/Section/SectionNM/NM2D1.h @@ -33,10 +33,10 @@ class NM2D1 final : public SectionNM2D { public: - NM2D1(unsigned, // tag - double, - double, - double); + NM2D1( + unsigned, // tag + double, double, double + ); unique_ptr
get_copy() override; diff --git a/Section/SectionNM/NM2D2.h b/Section/SectionNM/NM2D2.h index cc2042398..4e02ce051 100644 --- a/Section/SectionNM/NM2D2.h +++ b/Section/SectionNM/NM2D2.h @@ -39,16 +39,18 @@ class NM2D2 final : protected SurfaceNM2D, public LinearHardeningNM { [[nodiscard]] mat compute_ddf(const vec&, const vec&) const override; public: - NM2D2(unsigned, // tag - double, // EA - double, // EIS - double, // NP - double, // MP - double, // c - double, // h - double, // k - double, // linear density - mat&& = {}); + NM2D2( + unsigned, // tag + double, // EA + double, // EIS + double, // NP + double, // MP + double, // c + double, // h + double, // k + double, // linear density + mat&& = {} + ); unique_ptr
get_copy() override; }; diff --git a/Section/SectionNM/NM2D3.h b/Section/SectionNM/NM2D3.h index 9fd9d0ef7..14331cf17 100644 --- a/Section/SectionNM/NM2D3.h +++ b/Section/SectionNM/NM2D3.h @@ -39,19 +39,21 @@ class NM2D3 final : protected SurfaceNM2D, public VAFNM { [[nodiscard]] mat compute_ddf(const vec&, const vec&) const override; public: - NM2D3(unsigned, // tag - double, // EA - double, // EIS - double, // NP - double, // MP - double, // c - double, // h - double, // h - double, // h - vec&&, // k - vec&&, // k - double, // linear density - mat&& = {}); + NM2D3( + unsigned, // tag + double, // EA + double, // EIS + double, // NP + double, // MP + double, // c + double, // h + double, // h + double, // h + vec&&, // k + vec&&, // k + double, // linear density + mat&& = {} + ); unique_ptr
get_copy() override; }; diff --git a/Section/SectionNM/NM3D1.h b/Section/SectionNM/NM3D1.h index 5f8149aab..69634aa9c 100644 --- a/Section/SectionNM/NM3D1.h +++ b/Section/SectionNM/NM3D1.h @@ -33,11 +33,10 @@ class NM3D1 final : public SectionNM3D { public: - NM3D1(unsigned, // tag - double, - double, - double, - double); + NM3D1( + unsigned, // tag + double, double, double, double + ); unique_ptr
get_copy() override; diff --git a/Section/SectionNM/NM3D2.h b/Section/SectionNM/NM3D2.h index 152a67153..f0eb41b9b 100644 --- a/Section/SectionNM/NM3D2.h +++ b/Section/SectionNM/NM3D2.h @@ -39,18 +39,20 @@ class NM3D2 final : protected SurfaceNM3D, public LinearHardeningNM { [[nodiscard]] mat compute_ddf(const vec&, const vec&) const override; public: - NM3D2(unsigned, // tag - double, // EA - double, // EIS - double, // EIW - double, // NP - double, // MPS - double, // MPW - double, // c - double, // h - double, // k - double, // linear density - mat&& = {}); + NM3D2( + unsigned, // tag + double, // EA + double, // EIS + double, // EIW + double, // NP + double, // MPS + double, // MPW + double, // c + double, // h + double, // k + double, // linear density + mat&& = {} + ); unique_ptr
get_copy() override; }; diff --git a/Section/SectionNM/NM3D3.h b/Section/SectionNM/NM3D3.h index f13099071..de455dd5a 100644 --- a/Section/SectionNM/NM3D3.h +++ b/Section/SectionNM/NM3D3.h @@ -39,21 +39,23 @@ class NM3D3 final : protected SurfaceNM3D, public VAFNM { [[nodiscard]] mat compute_ddf(const vec&, const vec&) const override; public: - NM3D3(unsigned, // tag - double, // EA - double, // EIS - double, // EIW - double, // NP - double, // MPS - double, // MPW - double, // c - double, // h - double, // h - double, // h - vec&&, // k - vec&&, // k - double, // linear density - mat&& = {}); + NM3D3( + unsigned, // tag + double, // EA + double, // EIS + double, // EIW + double, // NP + double, // MPS + double, // MPW + double, // c + double, // h + double, // h + double, // h + vec&&, // k + vec&&, // k + double, // linear density + mat&& = {} + ); unique_ptr
get_copy() override; }; diff --git a/Section/SectionNM/NonlinearNM.h b/Section/SectionNM/NonlinearNM.h index 727a72655..97ddb3c69 100644 --- a/Section/SectionNM/NonlinearNM.h +++ b/Section/SectionNM/NonlinearNM.h @@ -40,7 +40,7 @@ class NonlinearNM : protected DataNonlinearNM, public SectionNM { [[nodiscard]] virtual int compute_local_integration(vec&, mat&) = 0; protected: - static constexpr unsigned max_iteration = 20; + static constexpr unsigned max_iteration = 20u; const vec yield_diag; @@ -62,20 +62,22 @@ class NonlinearNM : protected DataNonlinearNM, public SectionNM { [[nodiscard]] virtual mat compute_ddf(const vec&, const vec&) const = 0; public: - NonlinearNM(unsigned, // tag - double, // axial rigidity - double, // flexural rigidity - bool, // kinematic hardening modulus - double, // linear density - vec&& + NonlinearNM( + unsigned, // tag + double, // axial rigidity + double, // flexural rigidity + bool, // kinematic hardening modulus + double, // linear density + vec&& ); - NonlinearNM(unsigned, // tag - double, // axial rigidity - double, // flexural rigidity - double, // flexural rigidity - bool, // kinematic hardening modulus - double, // linear density - vec&& + NonlinearNM( + unsigned, // tag + double, // axial rigidity + double, // flexural rigidity + double, // flexural rigidity + bool, // kinematic hardening modulus + double, // linear density + vec&& ); int initialize(const shared_ptr&) override; diff --git a/Section/SectionNM/SectionNM b/Section/SectionNM/SectionNM index 68a9ff4f3..7e58f5cff 100644 --- a/Section/SectionNM/SectionNM +++ b/Section/SectionNM/SectionNM @@ -1,8 +1,9 @@ #include "SectionNM.h" #include "SectionNM2D.h" #include "SectionNM3D.h" -#include "NonlinearNM.h" + #include "LinearHardeningNM.h" +#include "NonlinearNM.h" #include "VAFNM.h" #include "NM2D1.h" diff --git a/Section/SectionNM/SectionNM.h b/Section/SectionNM/SectionNM.h index 2ec63c961..71899ef5a 100644 --- a/Section/SectionNM/SectionNM.h +++ b/Section/SectionNM/SectionNM.h @@ -40,9 +40,10 @@ struct DataSectionNM { }; class SectionNM : protected DataSectionNM, public Section { -public: - const double tolerance = 1E-13; +protected: + static constexpr double tolerance = 1E-14; +public: using Section::Section; void initialize_history(unsigned); diff --git a/Section/SectionNM/SectionNM2D.h b/Section/SectionNM/SectionNM2D.h index cfeae0163..c12a43d80 100644 --- a/Section/SectionNM/SectionNM2D.h +++ b/Section/SectionNM/SectionNM2D.h @@ -38,10 +38,10 @@ struct DataSectionNM2D { class SectionNM2D : protected DataSectionNM2D, public SectionNM { public: - SectionNM2D(unsigned, // tag - double, - double, - double); + SectionNM2D( + unsigned, // tag + double, double, double + ); int initialize(const shared_ptr&) override; }; diff --git a/Section/SectionNM/SectionNM3D.h b/Section/SectionNM/SectionNM3D.h index e5fb7e343..17feab1ef 100644 --- a/Section/SectionNM/SectionNM3D.h +++ b/Section/SectionNM/SectionNM3D.h @@ -39,11 +39,10 @@ struct DataSectionNM3D { class SectionNM3D : protected DataSectionNM3D, public SectionNM { public: - SectionNM3D(unsigned, // tag - double, - double, - double, - double); + SectionNM3D( + unsigned, // tag + double, double, double, double + ); int initialize(const shared_ptr&) override; }; diff --git a/Section/SectionNM/SurfaceNM2D.h b/Section/SectionNM/SurfaceNM2D.h index 4de1b740d..6c57acf1d 100644 --- a/Section/SectionNM/SurfaceNM2D.h +++ b/Section/SectionNM/SurfaceNM2D.h @@ -39,8 +39,10 @@ class SurfaceNM2D { [[nodiscard]] static vec differentiate(const mat&, uword, uword); public: - explicit SurfaceNM2D(double, // c - mat&& = {}); + explicit SurfaceNM2D( + double, // c + mat&& = {} + ); [[nodiscard]] double compute_sf(const vec&, const vec&) const; [[nodiscard]] vec compute_dsf(const vec&, const vec&) const; diff --git a/Section/SectionNM/SurfaceNM3D.h b/Section/SectionNM/SurfaceNM3D.h index aa8ef4c7d..60d93a3c9 100644 --- a/Section/SectionNM/SurfaceNM3D.h +++ b/Section/SectionNM/SurfaceNM3D.h @@ -39,8 +39,10 @@ class SurfaceNM3D { [[nodiscard]] static vec differentiate(const mat&, uword, uword); public: - explicit SurfaceNM3D(double, // c - mat&& = {}); + explicit SurfaceNM3D( + double, // c + mat&& = {} + ); [[nodiscard]] double compute_sf(const vec&, const vec&) const; [[nodiscard]] vec compute_dsf(const vec&, const vec&) const; diff --git a/Section/SectionNM/VAFNM.cpp b/Section/SectionNM/VAFNM.cpp index 4adeaaa04..9704fce76 100644 --- a/Section/SectionNM/VAFNM.cpp +++ b/Section/SectionNM/VAFNM.cpp @@ -88,7 +88,7 @@ int VAFNM::compute_local_integration(vec& q, mat& jacobian) { const auto norm_mi = norm(m(ni)); const auto norm_mj = norm(m(nj)); - if(1 == counter) { + if(1u == counter) { gamma = .5 * residual(ge(0)) / dot(m, z); q -= gamma * m; if(has_kinematic) { @@ -134,10 +134,10 @@ int VAFNM::compute_local_integration(vec& q, mat& jacobian) { const vec incre = solve(jacobian += prpz * (eye(d_size, d_size) - m * m.t()) / norm(z) * dzdx, residual); - auto error = norm(residual); - if(2 == counter) ref_error = std::max(1., error); - suanpan_debug("Local iteration error: {:.5E}.\n", error /= ref_error); - if(norm(incre) <= tolerance && error <= tolerance) return SUANPAN_SUCCESS; + const auto error = inf_norm(incre); + if(2u == counter) ref_error = error; + suanpan_debug("Local iteration error: {:.5E}.\n", error); + if(error < tolerance * ref_error || (inf_norm(residual) < tolerance && counter > 5u)) return SUANPAN_SUCCESS; q -= incre(ga); if(has_kinematic) beta -= incre(gb); diff --git a/Section/SectionNM/VAFNM.h b/Section/SectionNM/VAFNM.h index 1cf84128e..76fc1eaf8 100644 --- a/Section/SectionNM/VAFNM.h +++ b/Section/SectionNM/VAFNM.h @@ -43,28 +43,30 @@ class VAFNM : public NonlinearNM { [[nodiscard]] vec compute_dh(double) const override; public: - VAFNM(unsigned, // tag - double, // axial rigidity - double, // flexural rigidity - double, // isotropic modulus - double, // isotropic saturation - double, // isotropic decay - vec&&, // kinematic modulus - vec&&, // kinematic base - double, // linear density - vec&& + VAFNM( + unsigned, // tag + double, // axial rigidity + double, // flexural rigidity + double, // isotropic modulus + double, // isotropic saturation + double, // isotropic decay + vec&&, // kinematic modulus + vec&&, // kinematic base + double, // linear density + vec&& ); - VAFNM(unsigned, // tag - double, // axial rigidity - double, // flexural rigidity - double, // flexural rigidity - double, // isotropic modulus - double, // isotropic saturation - double, // isotropic decay - vec&&, // kinematic modulus - vec&&, // kinematic base - double, // linear density - vec&& + VAFNM( + unsigned, // tag + double, // axial rigidity + double, // flexural rigidity + double, // flexural rigidity + double, // isotropic modulus + double, // isotropic saturation + double, // isotropic decay + vec&&, // kinematic modulus + vec&&, // kinematic base + double, // linear density + vec&& ); }; diff --git a/Section/SectionOS/CMakeLists.txt b/Section/SectionOS/CMakeLists.txt new file mode 100644 index 000000000..0144d1ddf --- /dev/null +++ b/Section/SectionOS/CMakeLists.txt @@ -0,0 +1,5 @@ +set(SOS + SectionOS/SectionOS3D.cpp + SectionOS/Cell3DOS.cpp + SectionOS/Fibre3DOS.cpp +) diff --git a/Section/SectionOS/Cell3DOS.cpp b/Section/SectionOS/Cell3DOS.cpp new file mode 100644 index 000000000..99bbb1755 --- /dev/null +++ b/Section/SectionOS/Cell3DOS.cpp @@ -0,0 +1,61 @@ +/******************************************************************************* + * Copyright (C) 2017-2023 Theodore Chang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + ******************************************************************************/ + +#include "Cell3DOS.h" +#include +#include + +Cell3DOS::Cell3DOS(const unsigned T, const double AR, const double OM, const double PY, const double PZ, const unsigned MT, const double EA, const double EB) + : SectionOS3D(T, MT, AR, vec{EA, EB}) + , omega(OM) + , py(PY) + , pz(PZ) {} + +int Cell3DOS::initialize(const shared_ptr& D) { + auto& material_proto = D->get_material(material_tag); + + access::rw(linear_density) = area * material_proto->get_density(); + + int_pt.clear(); + int_pt.emplace_back(omega, py, pz, area, material_proto->get_copy()); + + const auto& arm_y = eccentricity(0); + const auto& arm_z = eccentricity(1); + + const auto os_size = static_cast(section_type); + + sp_mat de(3, os_size); + de(0, 0) = 1.; + de(0, 3) = -arm_y; + de(0, 4) = -arm_z; + de(0, 7) = omega; + de(1, 6) = py - arm_z; + de(2, 6) = pz + arm_y; + + trial_stiffness = current_stiffness = initial_stiffness = area * de.t() * int_pt.back().s_material->get_initial_stiffness() * de; + + trial_geometry = current_geometry = initial_geometry.zeros(os_size, os_size); + + return SUANPAN_SUCCESS; +} + +unique_ptr
Cell3DOS::get_copy() { return make_unique(*this); } + +void Cell3DOS::print() { + suanpan_info("A 3D open section cell.\n"); + for(const auto& I : int_pt) I.s_material->print(); +} diff --git a/Section/SectionOS/Cell3DOS.h b/Section/SectionOS/Cell3DOS.h new file mode 100644 index 000000000..98b4d8c6b --- /dev/null +++ b/Section/SectionOS/Cell3DOS.h @@ -0,0 +1,58 @@ +/******************************************************************************* + * Copyright (C) 2017-2023 Theodore Chang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + ******************************************************************************/ +/** + * @class Cell3DOS + * @brief A Cell3DOS class. + * @author tlc + * @date 15/09/2023 + * @version 0.1.0 + * @file Cell3DOS.h + * @addtogroup Section-OS + * @ingroup Section + * @{ + */ + +#ifndef CELL3DOS_H +#define CELL3DOS_H + +#include
+ +class Cell3DOS final : public SectionOS3D { + const double omega, py, pz; + +public: + Cell3DOS( + unsigned, // tag + double, // area + double, // sectional coordinate + double, // py + double, // pz + unsigned, // material tag + double, // eccentricity + double // eccentricity + ); + + int initialize(const shared_ptr&) override; + + unique_ptr
get_copy() override; + + void print() override; +}; + +#endif + +//! @} diff --git a/Section/SectionOS/Fibre3DOS.cpp b/Section/SectionOS/Fibre3DOS.cpp new file mode 100644 index 000000000..060ce7491 --- /dev/null +++ b/Section/SectionOS/Fibre3DOS.cpp @@ -0,0 +1,34 @@ +/******************************************************************************* + * Copyright (C) 2017-2023 Theodore Chang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + ******************************************************************************/ + +#include "Fibre3DOS.h" +#include + +Fibre3DOS::Fibre3DOS(const unsigned T, uvec&& ST) + : Fibre(T, std::forward(ST), SectionType::OS3D) {} + +unique_ptr
Fibre3DOS::get_copy() { return make_unique(*this); } + +std::vector Fibre3DOS::record(const OutputType P) { + if(OutputType::S == P) { + vec force(6, fill::zeros); + for(const auto& I : fibre) for(const auto& J : I->record(P)) if(!J.empty()) force += J; + return {force}; + } + + return {}; +} diff --git a/Section/SectionOS/Fibre3DOS.h b/Section/SectionOS/Fibre3DOS.h new file mode 100644 index 000000000..51a2943f2 --- /dev/null +++ b/Section/SectionOS/Fibre3DOS.h @@ -0,0 +1,45 @@ +/******************************************************************************* + * Copyright (C) 2017-2023 Theodore Chang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + ******************************************************************************/ +/** + * @class Fibre3DOS + * @brief A Fibre3DOS class. + * @author tlc + * @date 15/09/2023 + * @version 0.1.0 + * @file Fibre3DOS.h + * @addtogroup Section-OS + * @ingroup Section + * @{ + */ + +#ifndef FIBRE3DOS_H +#define FIBRE3DOS_H + +#include
+ +class Fibre3DOS final : public Fibre { +public: + Fibre3DOS(unsigned, uvec&&); + + unique_ptr
get_copy() override; + + std::vector record(OutputType) override; +}; + +#endif + +//! @} diff --git a/Section/SectionOS/SectionOS b/Section/SectionOS/SectionOS new file mode 100644 index 000000000..dac910fae --- /dev/null +++ b/Section/SectionOS/SectionOS @@ -0,0 +1,4 @@ +#include "SectionOS3D.h" + +#include "Cell3DOS.h" +#include "Fibre3DOS.h" diff --git a/Section/SectionOS/SectionOS3D.cpp b/Section/SectionOS/SectionOS3D.cpp new file mode 100644 index 000000000..ea572105b --- /dev/null +++ b/Section/SectionOS/SectionOS3D.cpp @@ -0,0 +1,186 @@ +/******************************************************************************* + * Copyright (C) 2017-2023 Theodore Chang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + ******************************************************************************/ + +#include "SectionOS3D.h" +#include +#include + +const mat SectionOS3D::weighing_mat = [] { + mat X(4, 4, fill::zeros); + X.diag().fill(1. / 15.); + X(0, 1) = X(1, 0) = X(2, 3) = X(3, 2) = -1. / 60.; + return X; +}(); + +SectionOS3D::IntegrationPoint::IntegrationPoint(const double CS, const double PY, const double PZ, const double W, unique_ptr&& M) + : omega(CS) + , py(PY) + , pz(PZ) + , weight(W) + , s_material(std::forward>(M)) {} + +SectionOS3D::SectionOS3D(const unsigned T, const unsigned MT, const double A, vec&& E) + : Section(T, SectionType::OS3D, MT, A, std::forward(E)) {} + +void SectionOS3D::set_characteristic_length(const double L) const { + Section::set_characteristic_length(L); + for(const auto& I : int_pt) I.s_material->set_characteristic_length(L); +} + +/** + * \brief The deformation is assumed to contain the following. + * + * [0]: u' \n + * [1]: v' \n + * [2]: w' \n + * [3]: v'' \n + * [4]: w'' \n + * [5]: f \n + * [6]: f' \n + * [7]: f'' \n + * [8]: theta_zi \n + * [9]: theta_zj \n + * [10]: theta_yi \n + * [11]: theta_yj \n + * + */ +int SectionOS3D::update_trial_status(const vec& t_deformation) { + if(const vec incre_deformation = (trial_deformation = t_deformation) - current_deformation; norm(incre_deformation) <= datum::eps) return SUANPAN_SUCCESS; + + const auto& up = trial_deformation(0); + // const auto& vp = trial_deformation(1); + // const auto& wp = trial_deformation(2); + const auto& vpp = trial_deformation(3); + const auto& wpp = trial_deformation(4); + const auto& f = trial_deformation(5); + const auto& fp = trial_deformation(6); + const auto& fpp = trial_deformation(7); + const auto theta = trial_deformation.tail(4); + + const rowvec factor = theta.t() * weighing_mat; + const auto base_strain = dot(factor, theta) + up; + + trial_stiffness.zeros(); + trial_resistance.zeros(); + trial_geometry.zeros(); + + for(const auto& I : int_pt) { + // note the difference here + // eccentricity stores location + const auto& arm_y = eccentricity(0); + const auto& arm_z = eccentricity(1); + + if(I.s_material->update_trial_status({base_strain - arm_y * vpp - arm_z * wpp + (arm_z * vpp - arm_y * wpp) * f + .5 * (arm_y * arm_y + arm_z * arm_z) * fp * fp + I.omega * fpp, (I.py - arm_z) * fp, (I.pz + arm_y) * fp}) != SUANPAN_SUCCESS) return SUANPAN_FAIL; + + sp_mat de(3, 12); + de(0, 0) = 1.; + // de(0, 1) = -arm_y * vp; + // de(0, 2) = arm_z * wp; + de(0, 3) = -arm_y + arm_z * f; + de(0, 4) = -arm_z - arm_y * f; + de(0, 5) = arm_z * vpp - arm_y * wpp; + de(0, 6) = (arm_y * arm_y + arm_z * arm_z) * fp; + de(0, 7) = I.omega; + de(0, 8) = 2. * factor(0); + de(0, 9) = 2. * factor(1); + de(0, 10) = 2. * factor(2); + de(0, 11) = 2. * factor(3); + de(1, 6) = I.py - arm_z; + de(2, 6) = I.pz + arm_y; + + trial_resistance += I.weight * de.t() * I.s_material->get_trial_stress(); + trial_stiffness += I.weight * de.t() * I.s_material->get_trial_stiffness() * de; + + auto axial_force = I.weight * I.s_material->get_trial_stress().at(0); + const auto major_bending = -arm_y * axial_force, minor_bending = arm_z * axial_force; + + // eq. 7.69 [u',v',w',v'',w'',f,f',f'',theta_zi,theta_zj,theta_yi,theta_yj] + // trial_geometry(1, 1) += axial_force; + // trial_geometry(2, 2) += axial_force; + trial_geometry(3, 5) += minor_bending; + trial_geometry(5, 3) += minor_bending; + trial_geometry(4, 5) += major_bending; + trial_geometry(5, 4) += major_bending; + trial_geometry(6, 6) += (arm_y * arm_y + arm_z * arm_z) * axial_force; + axial_force /= 30.; + trial_geometry(8, 9) -= axial_force; + trial_geometry(9, 8) -= axial_force; + trial_geometry(10, 11) -= axial_force; + trial_geometry(11, 10) -= axial_force; + axial_force *= 4.; + trial_geometry(8, 8) += axial_force; + trial_geometry(9, 9) += axial_force; + trial_geometry(10, 10) += axial_force; + trial_geometry(11, 11) += axial_force; + } + + return SUANPAN_SUCCESS; +} + +int SectionOS3D::clear_status() { + current_deformation = trial_deformation.zeros(); + current_resistance = trial_resistance.zeros(); + current_stiffness = trial_stiffness = initial_stiffness; + current_geometry = trial_geometry = initial_geometry; + auto code = 0; + for(const auto& I : int_pt) code += I.s_material->clear_status(); + return code; +} + +int SectionOS3D::commit_status() { + current_deformation = trial_deformation; + current_resistance = trial_resistance; + current_stiffness = trial_stiffness; + current_geometry = trial_geometry; + auto code = 0; + for(const auto& I : int_pt) code += I.s_material->commit_status(); + return code; +} + +int SectionOS3D::reset_status() { + trial_deformation = current_deformation; + trial_resistance = current_resistance; + trial_stiffness = current_stiffness; + trial_geometry = current_geometry; + auto code = 0; + for(const auto& I : int_pt) code += I.s_material->reset_status(); + return code; +} + +vector SectionOS3D::record(const OutputType P) { + if(OutputType::S == P) { + vec beam_force(6, fill::zeros); + for(const auto& I : int_pt) { + const auto& arm_y = eccentricity(0); + const auto& arm_z = eccentricity(1); + + const vec force = I.weight * I.s_material->get_current_stress(); + + const auto& axial_force = force(0); + + beam_force(0) += axial_force; + beam_force(1) -= axial_force * arm_y; + beam_force(2) += axial_force * arm_z; + beam_force(3) += axial_force * (arm_y * arm_y + arm_z * arm_z); + beam_force(4) += axial_force * I.omega; + beam_force(5) += arm_y * force(2) - arm_z * force(1); + } + return {beam_force}; + } + + return {}; +} diff --git a/Section/SectionOS/SectionOS3D.h b/Section/SectionOS/SectionOS3D.h new file mode 100644 index 000000000..051faa2bb --- /dev/null +++ b/Section/SectionOS/SectionOS3D.h @@ -0,0 +1,75 @@ +/******************************************************************************* + * Copyright (C) 2017-2023 Theodore Chang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + ******************************************************************************/ +/** + * @class SectionOS3D + * @brief A SectionOS3D class. + * + * Reference: + * 1. Distributed plasticity analysis of steel building structural systems + * + * @author tlc + * @date 15/09/2023 + * @version 0.1.0 + * @file SectionOS3D.h + * @addtogroup Section-OS + * @ingroup Section + * @{ + */ + +#ifndef SECTIONOS3D_H +#define SECTIONOS3D_H + +#include
+#include +#include + +using std::vector; + +class SectionOS3D : public Section { + static const mat weighing_mat; + +protected: + struct IntegrationPoint { + const double omega, py, pz, weight; + ResourceHolder s_material; + IntegrationPoint(double, double, double, double, unique_ptr&&); + }; + + vector int_pt; + +public: + SectionOS3D( + unsigned, // tag + unsigned, // material tag + double = 0., // area + vec&& = {0., 0.} // eccentricity + ); + + void set_characteristic_length(double) const override; + + int update_trial_status(const vec&) override; + + int clear_status() override; + int commit_status() override; + int reset_status() override; + + vector record(OutputType) override; +}; + +#endif + +//! @} diff --git a/Section/SectionParser.cpp b/Section/SectionParser.cpp index 5db7141bd..6244e9c55 100644 --- a/Section/SectionParser.cpp +++ b/Section/SectionParser.cpp @@ -21,7 +21,7 @@ #include
#include -void new_bar2d(unique_ptr
& return_obj, istringstream& command) { +void new_cell2d(unique_ptr
& return_obj, istringstream& command) { unsigned tag; if(!get_input(command, tag)) { suanpan_error("A valid tag is required.\n"); @@ -46,10 +46,10 @@ void new_bar2d(unique_ptr
& return_obj, istringstream& command) { return; } - return_obj = make_unique(tag, area, material_id, eccentricity); + return_obj = make_unique(tag, area, material_id, eccentricity); } -void new_bar3d(unique_ptr
& return_obj, istringstream& command) { +void new_cell3d(unique_ptr
& return_obj, istringstream& command) { unsigned tag; if(!get_input(command, tag)) { suanpan_error("A valid tag is required.\n"); @@ -78,7 +78,7 @@ void new_bar3d(unique_ptr
& return_obj, istringstream& command) { return; } - return_obj = make_unique(tag, area, material_id, eccentricity_a, eccentricity_b); + return_obj = make_unique(tag, area, material_id, eccentricity_a, eccentricity_b); } void new_box2d(unique_ptr
& return_obj, istringstream& command) { @@ -112,15 +112,19 @@ void new_box2d(unique_ptr
& return_obj, istringstream& command) { return; } - unsigned int_pt = 6; + auto int_pt = 6u; if(command.eof()) suanpan_debug("Six integration points assumed.\n"); - else if(!get_input(command, int_pt)) + else if(!get_input(command, int_pt)) { suanpan_error("A valid number of integration points is required.\n"); + return; + } auto eccentricity = 0.; - if(!command.eof() && !get_input(command, eccentricity)) + if(!command.eof() && !get_input(command, eccentricity)) { suanpan_error("A valid eccentricity is required.\n"); + return; + } return_obj = make_unique(tag, width, height, thickness, material_id, int_pt, eccentricity); } @@ -156,21 +160,59 @@ void new_box3d(unique_ptr
& return_obj, istringstream& command) { return; } - unsigned int_pt = 3; + auto int_pt = 6u; if(command.eof()) suanpan_debug("Six integration points assumed.\n"); - else if(!get_input(command, int_pt)) + else if(!get_input(command, int_pt)) { suanpan_error("A valid number of integration points is required.\n"); + return; + } auto eccentricity_a = 0., eccentricity_b = 0.; - if(!command.eof() && !get_input(command, eccentricity_a)) + if(!command.eof() && !get_input(command, eccentricity_a)) { suanpan_error("A valid eccentricity is required.\n"); - if(!command.eof() && !get_input(command, eccentricity_b)) + return; + } + if(!command.eof() && !get_input(command, eccentricity_b)) { suanpan_error("A valid eccentricity is required.\n"); + return; + } return_obj = make_unique(tag, width, height, thickness, material_id, int_pt, eccentricity_a, eccentricity_b); } +void new_cell3dos(unique_ptr
& return_obj, istringstream& command) { + unsigned tag; + if(!get_input(command, tag)) { + suanpan_error("A valid tag is required.\n"); + return; + } + + double area, omega, py, pz; + if(!get_input(command, area, omega, py, pz)) { + suanpan_error("A valid parameter is required.\n"); + return; + } + + unsigned material_id; + if(!get_input(command, material_id)) { + suanpan_error("A valid material tag is required.\n"); + return; + } + + auto eccentricity_a = 0., eccentricity_b = 0.; + if(!command.eof() && !get_input(command, eccentricity_a)) { + suanpan_error("A valid eccentricity is required.\n"); + return; + } + if(!command.eof() && !get_input(command, eccentricity_b)) { + suanpan_error("A valid eccentricity is required.\n"); + return; + } + + return_obj = make_unique(tag, area, omega, py, pz, material_id, eccentricity_a, eccentricity_b); +} + void new_circle1d(unique_ptr
& return_obj, istringstream& command) { unsigned tag; if(!get_input(command, tag)) { @@ -212,7 +254,7 @@ void new_circle2d(unique_ptr
& return_obj, istringstream& command) { return; } - unsigned int_pt = 6; + auto int_pt = 6u; if(!command.eof() && !get_input(command, int_pt)) { suanpan_error("A valid number of integration points is required.\n"); return; @@ -246,7 +288,7 @@ void new_circle3d(unique_ptr
& return_obj, istringstream& command) { return; } - unsigned int_pt = 6; + auto int_pt = 6u; if(!command.eof() && !get_input(command, int_pt)) { suanpan_error("A valid number of integration points is required.\n"); return; @@ -291,7 +333,7 @@ void new_circularhollow2D(unique_ptr
& return_obj, istringstream& comman return; } - unsigned int_pt = 10; + auto int_pt = 6u; if(!command.eof() && !get_input(command, int_pt)) { suanpan_error("A valid number of integration points is required.\n"); return; @@ -331,7 +373,7 @@ void new_circularhollow3D(unique_ptr
& return_obj, istringstream& comman return; } - unsigned int_pt = 10; + auto int_pt = 6u; if(!command.eof() && !get_input(command, int_pt)) { suanpan_error("A valid number of integration points is required.\n"); return; @@ -387,7 +429,7 @@ void new_fibre2d(unique_ptr
& return_obj, istringstream& command) { return_obj = make_unique(tag, std::move(tag_vector)); } -void new_fibre3d(unique_ptr
& return_obj, istringstream& command) { +void new_fibre3d(unique_ptr
& return_obj, istringstream& command, const bool if_os) { unsigned tag; if(!get_input(command, tag)) { suanpan_error("A valid tag is required.\n"); @@ -402,7 +444,8 @@ void new_fibre3d(unique_ptr
& return_obj, istringstream& command) { return; } - return_obj = make_unique(tag, std::move(tag_vector)); + if(if_os) return_obj = make_unique(tag, std::move(tag_vector)); + else return_obj = make_unique(tag, std::move(tag_vector)); } void new_hsection2d(unique_ptr
& return_obj, istringstream& command) { @@ -424,7 +467,7 @@ void new_hsection2d(unique_ptr
& return_obj, istringstream& command) { return; } - unsigned int_pt = 6; + auto int_pt = 6u; if(!command.eof() && !get_input(command, int_pt)) { suanpan_error("A valid number of integration points is required.\n"); return; @@ -439,7 +482,28 @@ void new_hsection2d(unique_ptr
& return_obj, istringstream& command) { return_obj = make_unique(tag, dim(0), dim(1), dim(2), dim(3), dim(4), dim(5), material_id, int_pt, eccentricity); } -void new_isection2d(unique_ptr
& return_obj, istringstream& command) { +double barycenter(const vec& dim) { + if(4llu == dim.n_elem) { + // dim(0): flange width + // dim(1): flange thickness + // dim(2): web height + // dim(3): web thickness + const auto flange_area = dim(0) * dim(1); + return -.5 * flange_area * (dim(1) + dim(2)) / (flange_area + dim(2) * dim(3)); + } + + // dim(0): top flange width + // dim(1): top flange thickness + // dim(2): bottom flange width + // dim(3): bottom flange thickness + // dim(4): web height + // dim(5): web thickness + const auto top_flange_area = dim(0) * dim(1); + const auto bottom_flange_area = dim(2) * dim(3); + return -.5 * (top_flange_area * (dim(1) + dim(4)) + bottom_flange_area * (dim(3) + dim(4))) / (top_flange_area + bottom_flange_area + dim(4) * dim(5)); +} + +void new_isection2d(unique_ptr
& return_obj, istringstream& command, const bool recenter) { unsigned tag; if(!get_input(command, tag)) { suanpan_error("A valid tag is required.\n"); @@ -458,14 +522,15 @@ void new_isection2d(unique_ptr
& return_obj, istringstream& command) { return; } - unsigned int_pt = 6; + auto int_pt = 6u; if(!command.eof() && !get_input(command, int_pt)) { suanpan_error("A valid number of integration points is required.\n"); return; } auto eccentricity = 0.; - if(!command.eof() && !get_input(command, eccentricity)) { + if(recenter) eccentricity = barycenter(dim); + else if(!command.eof() && !get_input(command, eccentricity)) { suanpan_error("A valid eccentricity is required.\n"); return; } @@ -473,7 +538,7 @@ void new_isection2d(unique_ptr
& return_obj, istringstream& command) { return_obj = make_unique(tag, dim(0), dim(1), dim(2), dim(3), dim(4), dim(5), material_id, int_pt, eccentricity); } -void new_isection3d(unique_ptr
& return_obj, istringstream& command) { +void new_isection3d(unique_ptr
& return_obj, istringstream& command, const bool recenter) { unsigned tag; if(!get_input(command, tag)) { suanpan_error("A valid tag is required.\n"); @@ -492,21 +557,23 @@ void new_isection3d(unique_ptr
& return_obj, istringstream& command) { return; } - unsigned int_pt = 6; + auto int_pt = 6u; if(!command.eof() && !get_input(command, int_pt)) { suanpan_error("A valid number of integration points is required.\n"); return; } - auto eccentricity_y = 0.; - if(!command.eof() && !get_input(command, eccentricity_y)) { - suanpan_error("A valid eccentricity is required.\n"); - return; - } - auto eccentricity_z = 0.; - if(!command.eof() && !get_input(command, eccentricity_z)) { - suanpan_error("A valid eccentricity is required.\n"); - return; + auto eccentricity_y = 0., eccentricity_z = 0.; + if(recenter) eccentricity_y = barycenter(dim); + else { + if(!command.eof() && !get_input(command, eccentricity_y)) { + suanpan_error("A valid eccentricity is required.\n"); + return; + } + if(!command.eof() && !get_input(command, eccentricity_z)) { + suanpan_error("A valid eccentricity is required.\n"); + return; + } } return_obj = make_unique(tag, std::move(dim), material_id, int_pt, vec{eccentricity_y, eccentricity_z}); @@ -565,15 +632,19 @@ void new_rectangle2d(unique_ptr
& return_obj, istringstream& command) { return; } - unsigned int_pt = 6; + auto int_pt = 6u; if(command.eof()) suanpan_debug("Six integration points assumed.\n"); - else if(!get_input(command, int_pt)) + else if(!get_input(command, int_pt)) { suanpan_error("A valid number of integration points is required.\n"); + return; + } auto eccentricity = 0.; - if(!command.eof() && !get_input(command, eccentricity)) + if(!command.eof() && !get_input(command, eccentricity)) { suanpan_error("A valid eccentricity is required.\n"); + return; + } return_obj = make_unique(tag, width, height, material_id, int_pt, eccentricity); } @@ -603,17 +674,23 @@ void new_rectangle3d(unique_ptr
& return_obj, istringstream& command) { return; } - unsigned int_pt = 3; + auto int_pt = 6u; if(command.eof()) suanpan_debug("Six integration points assumed.\n"); - else if(!get_input(command, int_pt)) + else if(!get_input(command, int_pt)) { suanpan_error("A valid number of integration points is required.\n"); + return; + } auto eccentricity_a = 0., eccentricity_b = 0.; - if(!command.eof() && !get_input(command, eccentricity_a)) + if(!command.eof() && !get_input(command, eccentricity_a)) { suanpan_error("A valid eccentricity is required.\n"); - if(!command.eof() && !get_input(command, eccentricity_b)) + return; + } + if(!command.eof() && !get_input(command, eccentricity_b)) { suanpan_error("A valid eccentricity is required.\n"); + return; + } return_obj = make_unique(tag, width, height, material_id, int_pt, eccentricity_a, eccentricity_b); } @@ -640,7 +717,7 @@ void new_trusssection(unique_ptr
& return_obj, istringstream& command) { return_obj = make_unique(tag, area, material_id); } -void new_tsection2d(unique_ptr
& return_obj, istringstream& command) { +void new_tsection2d(unique_ptr
& return_obj, istringstream& command, const bool recenter) { unsigned tag; if(!get_input(command, tag)) { suanpan_error("A valid tag is required.\n"); @@ -659,14 +736,15 @@ void new_tsection2d(unique_ptr
& return_obj, istringstream& command) { return; } - unsigned int_pt = 4; + auto int_pt = 6u; if(!command.eof() && !get_input(command, int_pt)) { suanpan_error("A valid number of integration points is required.\n"); return; } auto eccentricity = 0.; - if(!command.eof() && !get_input(command, eccentricity)) { + if(recenter) eccentricity = barycenter(dim); + else if(!command.eof() && !get_input(command, eccentricity)) { suanpan_error("A valid eccentricity is required.\n"); return; } @@ -674,7 +752,7 @@ void new_tsection2d(unique_ptr
& return_obj, istringstream& command) { return_obj = make_unique(tag, dim(0), dim(1), dim(2), dim(3), material_id, int_pt, eccentricity); } -void new_tsection3d(unique_ptr
& return_obj, istringstream& command) { +void new_tsection3d(unique_ptr
& return_obj, istringstream& command, const bool recenter) { unsigned tag; if(!get_input(command, tag)) { suanpan_error("A valid tag is required.\n"); @@ -693,21 +771,23 @@ void new_tsection3d(unique_ptr
& return_obj, istringstream& command) { return; } - unsigned int_pt = 3; + auto int_pt = 6u; if(!command.eof() && !get_input(command, int_pt)) { suanpan_error("A valid number of integration points is required.\n"); return; } - auto eccentricity_y = 0.; - if(!command.eof() && !get_input(command, eccentricity_y)) { - suanpan_error("A valid eccentricity is required.\n"); - return; - } - auto eccentricity_z = 0.; - if(!command.eof() && !get_input(command, eccentricity_z)) { - suanpan_error("A valid eccentricity is required.\n"); - return; + auto eccentricity_y = 0., eccentricity_z = 0.; + if(recenter) eccentricity_y = barycenter(dim); + else { + if(!command.eof() && !get_input(command, eccentricity_y)) { + suanpan_error("A valid eccentricity is required.\n"); + return; + } + if(!command.eof() && !get_input(command, eccentricity_z)) { + suanpan_error("A valid eccentricity is required.\n"); + return; + } } return_obj = make_unique(tag, std::move(dim), material_id, int_pt, vec{eccentricity_y, eccentricity_z}); @@ -726,7 +806,7 @@ void new_nm2d(unique_ptr
& return_obj, istringstream& command, const uns return; } - if(3 == size) { + if(3u == size) { return_obj = make_unique(tag, P(0), P(1), P(2)); return; } @@ -761,7 +841,7 @@ void new_nm3d(unique_ptr
& return_obj, istringstream& command, const uns return; } - if(4 == size) { + if(4u == size) { return_obj = make_unique(tag, P(0), P(1), P(2), P(3)); return; } @@ -800,7 +880,7 @@ void new_nmk(unique_ptr
& return_obj, istringstream& command, const unsi double para; while(!command.eof() && get_input(command, para)) para_set.emplace_back(para); - const auto p_size = 13 == size ? 3 : 4; + const auto p_size = 13u == size ? 3 : 4; if(para_set.size() % p_size != 0) { suanpan_error("A valid parameter set is required.\n"); @@ -1872,7 +1952,7 @@ void new_eu2d(unique_ptr
& return_obj, istringstream& command) { return; } - unsigned int_pt = 6; + auto int_pt = 6u; if(!command.eof() && !get_input(command, int_pt)) { suanpan_error("A valid number of integration points is required.\n"); return; @@ -1919,7 +1999,7 @@ void new_eu3d(unique_ptr
& return_obj, istringstream& command) { return; } - unsigned int_pt = 6; + auto int_pt = 6u; if(!command.eof() && !get_input(command, int_pt)) { suanpan_error("A valid number of integration points is required.\n"); return; @@ -1972,7 +2052,7 @@ void new_nz2d(unique_ptr
& return_obj, istringstream& command) { return; } - unsigned int_pt = 6; + auto int_pt = 6u; if(!command.eof() && !get_input(command, int_pt)) { suanpan_error("A valid number of integration points is required.\n"); return; @@ -2040,7 +2120,7 @@ void new_nz3d(unique_ptr
& return_obj, istringstream& command) { return; } - unsigned int_pt = 6; + auto int_pt = 6u; if(!command.eof() && !get_input(command, int_pt)) { suanpan_error("A valid number of integration points is required.\n"); return; @@ -2089,7 +2169,7 @@ void new_nz3d(unique_ptr
& return_obj, istringstream& command) { suanpan_error("Cannot identify section type.\n"); } -void new_us2d(unique_ptr
& return_obj, istringstream& command) { +void new_us2d(unique_ptr
& return_obj, istringstream& command, const bool recenter) { string type; if(!get_input(command, type)) { suanpan_error("A valid designation is required.\n"); @@ -2114,14 +2194,14 @@ void new_us2d(unique_ptr
& return_obj, istringstream& command) { return; } - unsigned int_pt = 6; + auto int_pt = 6u; if(!command.eof() && !get_input(command, int_pt)) { suanpan_error("A valid number of integration points is required.\n"); return; } auto eccentricity = 0.; - if(!command.eof() && !get_input(command, eccentricity)) { + if(!recenter && !command.eof() && !get_input(command, eccentricity)) { suanpan_error("A valid eccentricity is required.\n"); return; } @@ -2136,14 +2216,15 @@ void new_us2d(unique_ptr
& return_obj, istringstream& command) { dim = ustsection(type); if(!dim.is_empty()) { - return_obj = make_unique(tag, scale * dim, material_id, int_pt, eccentricity); + if(recenter) eccentricity = barycenter(dim *= scale); + return_obj = make_unique(tag, std::move(dim), material_id, int_pt, eccentricity); return; } suanpan_error("Cannot identify section type.\n"); } -void new_us3d(unique_ptr
& return_obj, istringstream& command) { +void new_us3d(unique_ptr
& return_obj, istringstream& command, const bool recenter) { string type; if(!get_input(command, type)) { suanpan_error("A valid designation is required.\n"); @@ -2168,20 +2249,20 @@ void new_us3d(unique_ptr
& return_obj, istringstream& command) { return; } - unsigned int_pt = 6; + auto int_pt = 6u; if(!command.eof() && !get_input(command, int_pt)) { suanpan_error("A valid number of integration points is required.\n"); return; } auto eccentricity_y = 0.; - if(!command.eof() && !get_input(command, eccentricity_y)) { + if(!recenter && !command.eof() && !get_input(command, eccentricity_y)) { suanpan_error("A valid eccentricity is required.\n"); return; } auto eccentricity_z = 0.; - if(!command.eof() && !get_input(command, eccentricity_z)) { + if(!recenter && !command.eof() && !get_input(command, eccentricity_z)) { suanpan_error("A valid eccentricity is required.\n"); return; } @@ -2196,7 +2277,8 @@ void new_us3d(unique_ptr
& return_obj, istringstream& command) { dim = ustsection(type); if(!dim.is_empty()) { - return_obj = make_unique(tag, scale * dim, material_id, int_pt, vec{eccentricity_y, eccentricity_z}); + if(recenter) eccentricity_y = barycenter(dim *= scale); + return_obj = make_unique(tag, std::move(dim), material_id, int_pt, vec{eccentricity_y, eccentricity_z}); return; } @@ -2212,10 +2294,11 @@ int create_new_section(const shared_ptr& domain, istringstream& comm unique_ptr
new_section = nullptr; - if(is_equal(section_id, "Bar2D")) new_bar2d(new_section, command); - else if(is_equal(section_id, "Bar3D")) new_bar3d(new_section, command); - else if(is_equal(section_id, "Box2D")) new_box2d(new_section, command); + if(is_equal(section_id, "Box2D")) new_box2d(new_section, command); else if(is_equal(section_id, "Box3D")) new_box3d(new_section, command); + else if(is_equal(section_id, "Cell2D") || is_equal(section_id, "Bar2D")) new_cell2d(new_section, command); + else if(is_equal(section_id, "Cell3D") || is_equal(section_id, "Bar3D")) new_cell3d(new_section, command); + else if(is_equal(section_id, "Cell3DOS")) new_cell3dos(new_section, command); else if(is_equal(section_id, "Circle1D")) new_circle1d(new_section, command); else if(is_equal(section_id, "Circle2D")) new_circle2d(new_section, command); else if(is_equal(section_id, "Circle3D")) new_circle3d(new_section, command); @@ -2223,16 +2306,21 @@ int create_new_section(const shared_ptr& domain, istringstream& comm else if(is_equal(section_id, "CircularHollow3D")) new_circularhollow3D(new_section, command); else if(is_equal(section_id, "Fibre1D")) new_fibre1d(new_section, command); else if(is_equal(section_id, "Fibre2D")) new_fibre2d(new_section, command); - else if(is_equal(section_id, "Fibre3D")) new_fibre3d(new_section, command); + else if(is_equal(section_id, "Fibre3D")) new_fibre3d(new_section, command, false); + else if(is_equal(section_id, "Fibre3DOS")) new_fibre3d(new_section, command, true); else if(is_equal(section_id, "HSection2D")) new_hsection2d(new_section, command); - else if(is_equal(section_id, "ISection2D")) new_isection2d(new_section, command); - else if(is_equal(section_id, "ISection3D")) new_isection3d(new_section, command); + else if(is_equal(section_id, "ISection2D")) new_isection2d(new_section, command, false); + else if(is_equal(section_id, "ISection3D")) new_isection3d(new_section, command, false); + else if(is_equal(section_id, "ISection2DC")) new_isection2d(new_section, command, true); + else if(is_equal(section_id, "ISection3DC")) new_isection3d(new_section, command, true); else if(is_equal(section_id, "Rectangle1D")) new_rectangle1d(new_section, command); else if(is_equal(section_id, "Rectangle2D")) new_rectangle2d(new_section, command); else if(is_equal(section_id, "Rectangle3D")) new_rectangle3d(new_section, command); else if(is_equal(section_id, "TrussSection")) new_trusssection(new_section, command); - else if(is_equal(section_id, "TSection2D")) new_tsection2d(new_section, command); - else if(is_equal(section_id, "TSection3D")) new_tsection3d(new_section, command); + else if(is_equal(section_id, "TSection2D")) new_tsection2d(new_section, command, false); + else if(is_equal(section_id, "TSection3D")) new_tsection3d(new_section, command, false); + else if(is_equal(section_id, "TSection2DC")) new_tsection2d(new_section, command, true); + else if(is_equal(section_id, "TSection3DC")) new_tsection3d(new_section, command, true); else if(is_equal(section_id, "NM2D1")) new_nm2d(new_section, command, 3); else if(is_equal(section_id, "NM2D2")) new_nm2d(new_section, command, 8); else if(is_equal(section_id, "NM2D3")) new_nm2d(new_section, command, 11); @@ -2245,8 +2333,10 @@ int create_new_section(const shared_ptr& domain, istringstream& comm else if(is_equal(section_id, "EU3D")) new_eu3d(new_section, command); else if(is_equal(section_id, "NZ2D")) new_nz2d(new_section, command); else if(is_equal(section_id, "NZ3D")) new_nz3d(new_section, command); - else if(is_equal(section_id, "US2D")) new_us2d(new_section, command); - else if(is_equal(section_id, "US3D")) new_us3d(new_section, command); + else if(is_equal(section_id, "US2D")) new_us2d(new_section, command, false); + else if(is_equal(section_id, "US3D")) new_us3d(new_section, command, false); + else if(is_equal(section_id, "US2DC")) new_us2d(new_section, command, true); + else if(is_equal(section_id, "US3DC")) new_us3d(new_section, command, true); else load::object(new_section, domain, section_id, command); if(new_section == nullptr || !domain->insert(std::move(new_section))) diff --git a/Section/SectionShell/CMakeLists.txt b/Section/SectionShell/CMakeLists.txt index 144e5fc2c..c2488a634 100644 --- a/Section/SectionShell/CMakeLists.txt +++ b/Section/SectionShell/CMakeLists.txt @@ -1,4 +1,4 @@ set(SS SectionShell/SectionShell.cpp SectionShell/Homogeneous.cpp - ) +) diff --git a/Section/SectionShell/Homogeneous.h b/Section/SectionShell/Homogeneous.h index f4c6d5b57..45299947d 100644 --- a/Section/SectionShell/Homogeneous.h +++ b/Section/SectionShell/Homogeneous.h @@ -48,10 +48,11 @@ class Homogeneous final : public SectionShell { vector int_pt; public: - Homogeneous(unsigned, // unique tag - unsigned, // material tag - double, // thickness - unsigned = 5 // number of IPs + Homogeneous( + unsigned, // unique tag + unsigned, // material tag + double, // thickness + unsigned = 5 // number of IPs ); int initialize(const shared_ptr&) override; diff --git a/Section/SectionShell/SectionShell b/Section/SectionShell/SectionShell index 174cdaae3..7a3df5215 100644 --- a/Section/SectionShell/SectionShell +++ b/Section/SectionShell/SectionShell @@ -1,2 +1,2 @@ #include "Homogeneous.h" -#include "SectionShell.h" \ No newline at end of file +#include "SectionShell.h" diff --git a/Section/SectionShell/SectionShell.cpp b/Section/SectionShell/SectionShell.cpp index 52d147196..c7ac2262e 100644 --- a/Section/SectionShell/SectionShell.cpp +++ b/Section/SectionShell/SectionShell.cpp @@ -17,7 +17,6 @@ #include "SectionShell.h" #include -#include SectionShell::SectionShell(const unsigned T, const unsigned MT, vec&& E) : SectionShellData{MT, std::forward(E)} @@ -71,8 +70,6 @@ const mat& SectionShell::get_initial_membrane_stiffness() const { return initial const mat& SectionShell::get_initial_plate_stiffness() const { return initial_plate_stiffness; } -double SectionShell::get_parameter(ParameterType) { return 0.; } - int SectionShell::update_incre_status(const double ME, const double PE) { const vec m_strain{ME}, p_strain{PE}; return update_incre_status(m_strain, p_strain); diff --git a/Section/SectionShell/SectionShell.h b/Section/SectionShell/SectionShell.h index 08553e8e0..91016698e 100644 --- a/Section/SectionShell/SectionShell.h +++ b/Section/SectionShell/SectionShell.h @@ -29,7 +29,6 @@ #define SECTIONSHELL_H #include -#include
enum class OutputType; @@ -71,9 +70,10 @@ class SectionShell : protected SectionShellData, public Tag { const bool initialized = false; public: - explicit SectionShell(unsigned = 0, // section tag - unsigned = 0, // material tag - vec&& = {0., 0.} // eccentricity + explicit SectionShell( + unsigned = 0, // section tag + unsigned = 0, // material tag + vec&& = {0., 0.} // eccentricity ); SectionShell(const SectionShell&) = default; // default copy ctor SectionShell(SectionShell&&) = delete; // move forbidden @@ -115,8 +115,6 @@ class SectionShell : protected SectionShellData, public Tag { virtual unique_ptr get_copy() = 0; - virtual double get_parameter(ParameterType); - int update_incre_status(double, double); int update_incre_status(double, double, double, double); int update_trial_status(double, double); diff --git a/Solver/Arnoldi.cpp b/Solver/Arnoldi.cpp index 5836d7818..cb9ed58ed 100644 --- a/Solver/Arnoldi.cpp +++ b/Solver/Arnoldi.cpp @@ -37,7 +37,7 @@ int Arnoldi::initialize() { int Arnoldi::analyze() { auto& G = get_integrator(); - const auto& D = G->get_domain(); + const auto D = G->get_domain(); auto& W = D->get_factory(); if(SUANPAN_SUCCESS != G->process_modifier()) return SUANPAN_FAIL; diff --git a/Solver/Arnoldi.h b/Solver/Arnoldi.h index ab274b645..cad4b867a 100644 --- a/Solver/Arnoldi.h +++ b/Solver/Arnoldi.h @@ -35,9 +35,10 @@ class Arnoldi final : public Solver { const char eigen_type; public: - explicit Arnoldi(unsigned = 0, // unique solver tag - unsigned = 1, // number of eigenvalues - char = 'S' // type + explicit Arnoldi( + unsigned = 0, // unique solver tag + unsigned = 1, // number of eigenvalues + char = 'S' // type ); int initialize() override; diff --git a/Solver/BFGS.cpp b/Solver/BFGS.cpp index 9a9e9483f..deccb1356 100644 --- a/Solver/BFGS.cpp +++ b/Solver/BFGS.cpp @@ -28,7 +28,7 @@ BFGS::BFGS(const unsigned T, const unsigned MH) int BFGS::analyze() { auto& C = get_converger(); auto& G = get_integrator(); - const auto& D = C->get_domain().lock(); + const auto D = C->get_domain().lock(); auto& W = D->get_factory(); suanpan_highlight(">> Current Analysis Time: {:.5f}.\n", W->get_trial_time()); @@ -36,7 +36,7 @@ int BFGS::analyze() { const auto max_iteration = C->get_max_iteration(); // iteration counter - unsigned counter = 0; + auto counter = 0u; // lambda alias auto& aux_lambda = W->modify_auxiliary_lambda(); @@ -59,6 +59,8 @@ int BFGS::analyze() { }; while(true) { + set_step_amplifier(sqrt(max_iteration / (counter + 1.))); + // update for nodes and elements if(SUANPAN_SUCCESS != G->update_trial_status()) return SUANPAN_FAIL; // process modifiers diff --git a/Solver/CMakeLists.txt b/Solver/CMakeLists.txt index e27d5f0e4..022734eef 100644 --- a/Solver/CMakeLists.txt +++ b/Solver/CMakeLists.txt @@ -16,7 +16,7 @@ add_library(${PROJECT_NAME} STATIC Solver.cpp SolverParser.cpp ${Integrator} - ) +) if (HAVE_VTK) target_link_libraries(${PROJECT_NAME} ${VTK_LIBRARIES}) diff --git a/Solver/FEAST.cpp b/Solver/FEAST.cpp index f4fcc4130..349457f99 100644 --- a/Solver/FEAST.cpp +++ b/Solver/FEAST.cpp @@ -220,7 +220,7 @@ int FEAST::initialize() { int FEAST::analyze() { auto& G = get_integrator(); - const auto& D = G->get_domain(); + const auto D = G->get_domain(); auto& W = D->get_factory(); if(SUANPAN_SUCCESS != G->process_modifier()) return SUANPAN_FAIL; diff --git a/Solver/Integrator/BatheExplicit.cpp b/Solver/Integrator/BatheExplicit.cpp index ad1fee57a..a1f3595ec 100644 --- a/Solver/Integrator/BatheExplicit.cpp +++ b/Solver/Integrator/BatheExplicit.cpp @@ -29,18 +29,20 @@ BatheExplicit::BatheExplicit(const unsigned T, const double R) bool BatheExplicit::has_corrector() const { return true; } void BatheExplicit::assemble_resistance() { - const auto& D = get_domain(); + const auto D = get_domain(); auto& W = D->get_factory(); auto fa = std::async([&] { D->assemble_resistance(); }); auto fb = std::async([&] { D->assemble_damping_force(); }); - auto fc = std::async([&] { D->assemble_inertial_force(); }); + auto fc = std::async([&] { D->assemble_nonviscous_force(); }); + auto fd = std::async([&] { D->assemble_inertial_force(); }); fa.get(); fb.get(); fc.get(); + fd.get(); - W->set_sushi(W->get_trial_resistance() + W->get_trial_damping_force() + W->get_trial_inertial_force()); + W->set_sushi(W->get_trial_resistance() + W->get_trial_damping_force() + W->get_trial_nonviscous_force() + W->get_trial_inertial_force()); } void BatheExplicit::assemble_matrix() { get_domain()->assemble_trial_mass(); } @@ -52,7 +54,7 @@ void BatheExplicit::update_incre_time(double T) { } int BatheExplicit::update_trial_status() { - const auto& D = get_domain(); + const auto D = get_domain(); if(auto& W = D->get_factory(); FLAG::FIRST == step_flag) { W->update_incre_velocity(A0 * W->get_current_acceleration()); @@ -67,7 +69,7 @@ int BatheExplicit::update_trial_status() { } int BatheExplicit::correct_trial_status() { - const auto& D = get_domain(); + const auto D = get_domain(); if(auto& W = D->get_factory(); FLAG::FIRST == step_flag) W->update_incre_velocity(A2 * W->get_incre_acceleration()); else W->update_incre_velocity(A5 * W->get_pre_acceleration() + A6 * W->get_current_acceleration() + A7 * W->get_trial_acceleration()); @@ -76,7 +78,7 @@ int BatheExplicit::correct_trial_status() { } void BatheExplicit::commit_status() { - const auto& D = get_domain(); + const auto D = get_domain(); auto& W = D->get_factory(); if(FLAG::FIRST == step_flag) { diff --git a/Solver/Integrator/BatheTwoStep.cpp b/Solver/Integrator/BatheTwoStep.cpp index 5b458e949..535519750 100644 --- a/Solver/Integrator/BatheTwoStep.cpp +++ b/Solver/Integrator/BatheTwoStep.cpp @@ -27,39 +27,45 @@ BatheTwoStep::BatheTwoStep(const unsigned T, const double R, const double G) , Q0(1. - Q1 - Q2) {} void BatheTwoStep::assemble_resistance() { - const auto& D = get_domain(); + const auto D = get_domain(); auto& W = D->get_factory(); auto fa = std::async([&] { D->assemble_resistance(); }); auto fb = std::async([&] { D->assemble_damping_force(); }); - auto fc = std::async([&] { D->assemble_inertial_force(); }); + auto fc = std::async([&] { D->assemble_nonviscous_force(); }); + auto fd = std::async([&] { D->assemble_inertial_force(); }); fa.get(); fb.get(); fc.get(); + fd.get(); - W->set_sushi(W->get_trial_resistance() + W->get_trial_damping_force() + W->get_trial_inertial_force()); + W->set_sushi(W->get_trial_resistance() + W->get_trial_damping_force() + W->get_trial_nonviscous_force() + W->get_trial_inertial_force()); } void BatheTwoStep::assemble_matrix() { - const auto& D = get_domain(); + const auto D = get_domain(); auto& W = D->get_factory(); auto fa = std::async([&] { D->assemble_trial_stiffness(); }); auto fb = std::async([&] { D->assemble_trial_geometry(); }); auto fc = std::async([&] { D->assemble_trial_damping(); }); - auto fd = std::async([&] { D->assemble_trial_mass(); }); + auto fd = std::async([&] { D->assemble_trial_nonviscous(); }); + auto fe = std::async([&] { D->assemble_trial_mass(); }); fa.get(); fb.get(); fc.get(); fd.get(); + fe.get(); + + if(W->is_nlgeom()) W->get_stiffness() += W->get_geometry(); - auto& t_stiff = W->get_stiffness(); + W->get_stiffness() += FLAG::TRAP == step_flag ? P3 * W->get_mass() : P9 * W->get_mass(); - t_stiff += W->get_geometry(); + const auto damping_coef = FLAG::TRAP == step_flag ? P2 : P8; - t_stiff += FLAG::TRAP == step_flag ? P3 * W->get_mass() + P2 * W->get_damping() : P9 * W->get_mass() + P8 * W->get_damping(); + W->get_stiffness() += W->is_nonviscous() ? damping_coef * (W->get_damping() + W->get_nonviscous()) : damping_coef * W->get_damping(); } void BatheTwoStep::update_incre_time(double T) { @@ -69,7 +75,7 @@ void BatheTwoStep::update_incre_time(double T) { } int BatheTwoStep::update_trial_status() { - const auto& D = get_domain(); + const auto D = get_domain(); if(auto& W = D->get_factory(); FLAG::TRAP == step_flag) { W->update_trial_acceleration(P3 * W->get_incre_displacement() - P4 * W->get_current_velocity() - W->get_current_acceleration()); @@ -84,7 +90,7 @@ int BatheTwoStep::update_trial_status() { } void BatheTwoStep::commit_status() { - const auto& D = get_domain(); + const auto D = get_domain(); auto& W = D->get_factory(); if(FLAG::TRAP == step_flag) { diff --git a/Solver/Integrator/CMakeLists.txt b/Solver/Integrator/CMakeLists.txt index bef24dc1b..f1e3c03ba 100644 --- a/Solver/Integrator/CMakeLists.txt +++ b/Solver/Integrator/CMakeLists.txt @@ -14,4 +14,4 @@ set(Integrator Integrator/RayleighNewmark.cpp Integrator/Tchamwa.cpp Integrator/WilsonPenzienNewmark.cpp - ) +) diff --git a/Solver/Integrator/GSSSS.cpp b/Solver/Integrator/GSSSS.cpp index 5945d83b0..c01e5a5e8 100644 --- a/Solver/Integrator/GSSSS.cpp +++ b/Solver/Integrator/GSSSS.cpp @@ -26,35 +26,43 @@ GSSSS::GSSSS(const unsigned T) , L4(1.) {} void GSSSS::assemble_resistance() { - const auto& D = get_domain(); + const auto D = get_domain(); auto& W = D->get_factory(); auto fa = std::async([&] { D->assemble_resistance(); }); auto fb = std::async([&] { D->assemble_damping_force(); }); - auto fc = std::async([&] { D->assemble_inertial_force(); }); + auto fc = std::async([&] { D->assemble_nonviscous_force(); }); + auto fd = std::async([&] { D->assemble_inertial_force(); }); fa.get(); fb.get(); fc.get(); + fd.get(); - W->set_sushi(W->get_current_resistance() + W3G3 / L3 * W->get_incre_resistance() + W->get_current_damping_force() + W2G5 / L5 * W->get_incre_damping_force() + W->get_current_inertial_force() + W1G6 * W->get_incre_inertial_force()); + W->set_sushi(W->get_current_resistance() + W3G3 / L3 * W->get_incre_resistance() + W->get_current_damping_force() + W2G5 / L5 * W->get_incre_damping_force() + W->get_current_nonviscous_force() + W2G5 / L5 * W->get_incre_nonviscous_force() + W->get_current_inertial_force() + W1G6 * W->get_incre_inertial_force()); } void GSSSS::assemble_matrix() { - const auto& D = get_domain(); + const auto D = get_domain(); auto& W = D->get_factory(); auto fa = std::async([&] { D->assemble_trial_stiffness(); }); auto fb = std::async([&] { D->assemble_trial_geometry(); }); auto fc = std::async([&] { D->assemble_trial_damping(); }); - auto fd = std::async([&] { D->assemble_trial_mass(); }); + auto fd = std::async([&] { D->assemble_trial_nonviscous(); }); + auto fe = std::async([&] { D->assemble_trial_mass(); }); fa.get(); fb.get(); fc.get(); fd.get(); + fe.get(); + + if(W->is_nlgeom()) W->get_stiffness() += W->get_geometry(); + + W->get_stiffness() += XA * W->get_mass(); - W->get_stiffness() += W->get_geometry() + XV * W->get_damping() + XA * W->get_mass(); + W->get_stiffness() += W->is_nonviscous() ? XV * (W->get_damping() + W->get_nonviscous()) : XV * W->get_damping(); } vec GSSSS::get_force_residual() { return XD * ImplicitIntegrator::get_force_residual(); } @@ -64,7 +72,7 @@ vec GSSSS::get_displacement_residual() { return XD * ImplicitIntegrator::get_dis sp_mat GSSSS::get_reference_load() { return XD * ImplicitIntegrator::get_reference_load(); } int GSSSS::process_load() { - const auto& D = get_domain(); + const auto D = get_domain(); auto& W = D->get_factory(); const sp_d auto current_time = W->get_current_time(); @@ -80,7 +88,7 @@ int GSSSS::process_load() { } int GSSSS::process_constraint() { - const auto& D = get_domain(); + const auto D = get_domain(); auto& W = D->get_factory(); const sp_d auto current_time = W->get_current_time(); @@ -96,7 +104,7 @@ int GSSSS::process_constraint() { } int GSSSS::process_load_resistance() { - const auto& D = get_domain(); + const auto D = get_domain(); auto& W = D->get_factory(); const sp_d auto current_time = W->get_current_time(); @@ -112,7 +120,7 @@ int GSSSS::process_load_resistance() { } int GSSSS::process_constraint_resistance() { - const auto& D = get_domain(); + const auto D = get_domain(); auto& W = D->get_factory(); const sp_d auto current_time = W->get_current_time(); @@ -128,7 +136,7 @@ int GSSSS::process_constraint_resistance() { } int GSSSS::update_trial_status() { - const auto& D = get_domain(); + const auto D = get_domain(); auto& W = D->get_factory(); W->update_incre_acceleration(C0 * W->get_incre_displacement() + C1 * W->get_current_velocity() + C2 * W->get_current_acceleration()); diff --git a/Solver/Integrator/GeneralizedAlpha.cpp b/Solver/Integrator/GeneralizedAlpha.cpp index 872b83a7d..06ff86df4 100644 --- a/Solver/Integrator/GeneralizedAlpha.cpp +++ b/Solver/Integrator/GeneralizedAlpha.cpp @@ -47,35 +47,43 @@ GeneralizedAlpha::GeneralizedAlpha(const unsigned T, const double AF, const doub } void GeneralizedAlpha::assemble_resistance() { - const auto& D = get_domain(); + const auto D = get_domain(); auto& W = D->get_factory(); auto fa = std::async([&] { D->assemble_resistance(); }); auto fb = std::async([&] { D->assemble_damping_force(); }); - auto fc = std::async([&] { D->assemble_inertial_force(); }); + auto fc = std::async([&] { D->assemble_nonviscous_force(); }); + auto fd = std::async([&] { D->assemble_inertial_force(); }); fa.get(); fb.get(); fc.get(); + fd.get(); - W->set_sushi(W->get_current_resistance() + F2 * W->get_incre_resistance() + W->get_current_damping_force() + F2 * W->get_incre_damping_force() + W->get_current_inertial_force() + F4 * W->get_incre_inertial_force()); + W->set_sushi(W->get_current_resistance() + F2 * W->get_incre_resistance() + W->get_current_damping_force() + F2 * W->get_incre_damping_force() + W->get_current_nonviscous_force() + F2 * W->get_incre_nonviscous_force() + W->get_current_inertial_force() + F4 * W->get_incre_inertial_force()); } void GeneralizedAlpha::assemble_matrix() { - const auto& D = get_domain(); + const auto D = get_domain(); auto& W = D->get_factory(); auto fa = std::async([&] { D->assemble_trial_stiffness(); }); auto fb = std::async([&] { D->assemble_trial_geometry(); }); auto fc = std::async([&] { D->assemble_trial_damping(); }); - auto fd = std::async([&] { D->assemble_trial_mass(); }); + auto fd = std::async([&] { D->assemble_trial_nonviscous(); }); + auto fe = std::async([&] { D->assemble_trial_mass(); }); fa.get(); fb.get(); fc.get(); fd.get(); + fe.get(); + + if(W->is_nlgeom()) W->get_stiffness() += W->get_geometry(); + + W->get_stiffness() += F5 / F2 * W->get_mass(); - W->get_stiffness() += W->get_geometry() + F5 / F2 * W->get_mass() + F6 / F2 * W->get_damping(); + W->get_stiffness() += W->is_nonviscous() ? F6 / F2 * (W->get_damping() + W->get_nonviscous()) : F6 / F2 * W->get_damping(); } vec GeneralizedAlpha::get_force_residual() { return ImplicitIntegrator::get_force_residual() / F2; } @@ -85,7 +93,7 @@ vec GeneralizedAlpha::get_displacement_residual() { return ImplicitIntegrator::g sp_mat GeneralizedAlpha::get_reference_load() { return ImplicitIntegrator::get_reference_load() / F2; } int GeneralizedAlpha::process_load() { - const auto& D = get_domain(); + const auto D = get_domain(); auto& W = D->get_factory(); const sp_d auto current_time = W->get_current_time(); @@ -101,7 +109,7 @@ int GeneralizedAlpha::process_load() { } int GeneralizedAlpha::process_constraint() { - const auto& D = get_domain(); + const auto D = get_domain(); auto& W = D->get_factory(); const sp_d auto current_time = W->get_current_time(); @@ -117,7 +125,7 @@ int GeneralizedAlpha::process_constraint() { } int GeneralizedAlpha::process_load_resistance() { - const auto& D = get_domain(); + const auto D = get_domain(); auto& W = D->get_factory(); const sp_d auto current_time = W->get_current_time(); @@ -133,7 +141,7 @@ int GeneralizedAlpha::process_load_resistance() { } int GeneralizedAlpha::process_constraint_resistance() { - const auto& D = get_domain(); + const auto D = get_domain(); auto& W = D->get_factory(); const sp_d auto current_time = W->get_current_time(); @@ -149,7 +157,7 @@ int GeneralizedAlpha::process_constraint_resistance() { } int GeneralizedAlpha::update_trial_status() { - const auto& D = get_domain(); + const auto D = get_domain(); auto& W = D->get_factory(); W->update_incre_acceleration(F7 * W->get_incre_displacement() + F8 * W->get_current_velocity() + F9 * W->get_current_acceleration()); diff --git a/Solver/Integrator/GeneralizedAlphaExplicit.cpp b/Solver/Integrator/GeneralizedAlphaExplicit.cpp index b2aa3bde8..36e63cf43 100644 --- a/Solver/Integrator/GeneralizedAlphaExplicit.cpp +++ b/Solver/Integrator/GeneralizedAlphaExplicit.cpp @@ -28,18 +28,20 @@ GeneralizedAlphaExplicit::GeneralizedAlphaExplicit(const unsigned T, const doubl bool GeneralizedAlphaExplicit::has_corrector() const { return true; } void GeneralizedAlphaExplicit::assemble_resistance() { - const auto& D = get_domain(); + const auto D = get_domain(); auto& W = D->get_factory(); auto fa = std::async([&] { D->assemble_resistance(); }); auto fb = std::async([&] { D->assemble_damping_force(); }); - auto fc = std::async([&] { D->assemble_inertial_force(); }); + auto fc = std::async([&] { D->assemble_nonviscous_force(); }); + auto fd = std::async([&] { D->assemble_inertial_force(); }); fa.get(); fb.get(); fc.get(); + fd.get(); - W->set_sushi(W->get_trial_resistance() - AF * W->get_incre_resistance() + W->get_trial_damping_force() - AF * W->get_incre_damping_force() + W->get_trial_inertial_force() - AM * W->get_incre_inertial_force()); + W->set_sushi(W->get_trial_resistance() - AF * W->get_incre_resistance() + W->get_trial_damping_force() - AF * W->get_incre_damping_force() + W->get_trial_nonviscous_force() - AF * W->get_incre_nonviscous_force() + W->get_trial_inertial_force() - AM * W->get_incre_inertial_force()); } void GeneralizedAlphaExplicit::assemble_matrix() { get_domain()->assemble_trial_mass(); } @@ -51,7 +53,7 @@ vec GeneralizedAlphaExplicit::get_displacement_residual() { return ExplicitInteg sp_mat GeneralizedAlphaExplicit::get_reference_load() { return ExplicitIntegrator::get_reference_load() / (1. - AM); } int GeneralizedAlphaExplicit::process_load() { - const auto& D = get_domain(); + const auto D = get_domain(); auto& W = D->get_factory(); const sp_d auto current_time = W->get_current_time(); @@ -67,7 +69,7 @@ int GeneralizedAlphaExplicit::process_load() { } int GeneralizedAlphaExplicit::process_constraint() { - const auto& D = get_domain(); + const auto D = get_domain(); auto& W = D->get_factory(); const sp_d auto current_time = W->get_current_time(); @@ -83,7 +85,7 @@ int GeneralizedAlphaExplicit::process_constraint() { } int GeneralizedAlphaExplicit::process_load_resistance() { - const auto& D = get_domain(); + const auto D = get_domain(); auto& W = D->get_factory(); const sp_d auto current_time = W->get_current_time(); @@ -99,7 +101,7 @@ int GeneralizedAlphaExplicit::process_load_resistance() { } int GeneralizedAlphaExplicit::process_constraint_resistance() { - const auto& D = get_domain(); + const auto D = get_domain(); auto& W = D->get_factory(); const sp_d auto current_time = W->get_current_time(); @@ -115,7 +117,7 @@ int GeneralizedAlphaExplicit::process_constraint_resistance() { } int GeneralizedAlphaExplicit::update_trial_status() { - const auto& D = get_domain(); + const auto D = get_domain(); auto& W = D->get_factory(); W->update_incre_displacement(DT * W->get_current_velocity() + (.5 - B) * DT * DT * W->get_current_acceleration()); @@ -125,7 +127,7 @@ int GeneralizedAlphaExplicit::update_trial_status() { } int GeneralizedAlphaExplicit::correct_trial_status() { - const auto& D = get_domain(); + const auto D = get_domain(); auto& W = D->get_factory(); W->update_trial_displacement_by(B * DT * DT * W->get_trial_acceleration()); diff --git a/Solver/Integrator/Integrator b/Solver/Integrator/Integrator index 1e6b9f170..217eb9c74 100644 --- a/Solver/Integrator/Integrator +++ b/Solver/Integrator/Integrator @@ -13,4 +13,4 @@ #include "OALTS.h" #include "RayleighNewmark.h" #include "Tchamwa.h" -#include "WilsonPenzienNewmark.h" \ No newline at end of file +#include "WilsonPenzienNewmark.h" diff --git a/Solver/Integrator/Integrator.cpp b/Solver/Integrator/Integrator.cpp index b23eefc3e..b55a1808f 100644 --- a/Solver/Integrator/Integrator.cpp +++ b/Solver/Integrator/Integrator.cpp @@ -59,7 +59,7 @@ int Integrator::process_load() { return database.lock()->process_load(true); } * On exit, the global stiffness matrix should be updated, the global residual vector should be updated. */ int Integrator::process_constraint() { - const auto& D = database.lock(); + const auto D = database.lock(); auto& W = D->get_factory(); const auto code = D->process_constraint(true); @@ -86,7 +86,7 @@ int Integrator::process_load_resistance() { return database.lock()->process_load * In this case, the factorised matrix cannot be modified. */ int Integrator::process_constraint_resistance() { - const auto& D = database.lock(); + const auto D = database.lock(); auto& W = D->get_factory(); const auto code = D->process_constraint(false); @@ -99,7 +99,7 @@ int Integrator::process_constraint_resistance() { void Integrator::record() const { database.lock()->record(); } void Integrator::assemble_resistance() { - const auto& D = database.lock(); + const auto D = database.lock(); auto& W = D->get_factory(); D->assemble_resistance(); W->set_sushi(W->get_trial_resistance()); @@ -110,18 +110,18 @@ void Integrator::assemble_resistance() { * For FEM applications, it is often a linear combination of stiffness, mass, damping and geometry matrices. */ void Integrator::assemble_matrix() { - const auto& D = database.lock(); + const auto D = database.lock(); auto& W = D->get_factory(); D->assemble_trial_stiffness(); D->assemble_trial_geometry(); - W->get_stiffness() += W->get_geometry(); + if(W->is_nlgeom()) W->get_stiffness() += W->get_geometry(); } /** * Assemble the global residual vector in load-controlled solving schemes. */ vec Integrator::get_force_residual() { - const auto& D = database.lock(); + const auto D = database.lock(); auto& W = D->get_factory(); vec residual = W->get_trial_load() - W->get_sushi(); @@ -136,7 +136,7 @@ vec Integrator::get_force_residual() { * Apart from the global resistance and external load vectors, the reference load vector shall also be considered. */ vec Integrator::get_displacement_residual() { - const auto& D = database.lock(); + const auto D = database.lock(); auto& W = D->get_factory(); vec residual = W->get_reference_load() * W->get_trial_load_factor() + W->get_trial_load() - W->get_sushi(); @@ -188,7 +188,7 @@ void Integrator::update_incre_time(const double T) { } int Integrator::update_trial_status() { - const auto& D = get_domain(); + const auto D = get_domain(); auto& W = D->get_factory(); return suanpan::approx_equal(norm(W->get_incre_displacement()), 0.) ? SUANPAN_SUCCESS : D->update_trial_status(); @@ -274,7 +274,7 @@ int Integrator::solve(mat& X, sp_mat&& B) { return database.lock()->get_factory( * The corresponding DoF shall be set to zero after solving the system. */ void Integrator::erase_machine_error(vec& ninja) const { - const auto& D = get_domain(); + const auto D = get_domain(); auto& W = D->get_factory(); D->erase_machine_error(ninja); diff --git a/Solver/Integrator/LeeNewmark.cpp b/Solver/Integrator/LeeNewmark.cpp index 04f670ce4..8fc9e868c 100644 --- a/Solver/Integrator/LeeNewmark.cpp +++ b/Solver/Integrator/LeeNewmark.cpp @@ -96,7 +96,7 @@ int LeeNewmark::initialize() { } int LeeNewmark::process_constraint() { - const auto& D = get_domain(); + const auto D = get_domain(); // process constraint for the first time to obtain proper stiffness if(SUANPAN_SUCCESS != LeeNewmarkBase::process_constraint()) return SUANPAN_FAIL; @@ -147,13 +147,14 @@ int LeeNewmark::process_constraint_resistance() { } void LeeNewmark::assemble_resistance() { - const auto& D = get_domain(); + const auto D = get_domain(); const auto& W = factory; D->assemble_resistance(); D->assemble_inertial_force(); // consider independent viscous device D->assemble_damping_force(); + D->assemble_nonviscous_force(); if(nullptr != current_mass) { vec internal_velocity = CM * W->get_trial_velocity(); @@ -164,7 +165,7 @@ void LeeNewmark::assemble_resistance() { W->update_trial_damping_force_by(current_mass * internal_velocity); } - W->set_sushi(W->get_trial_resistance() + W->get_trial_damping_force() + W->get_trial_inertial_force()); + W->set_sushi(W->get_trial_resistance() + W->get_trial_damping_force() + W->get_trial_nonviscous_force() + W->get_trial_inertial_force()); } void LeeNewmark::print() { diff --git a/Solver/Integrator/LeeNewmarkFull.cpp b/Solver/Integrator/LeeNewmarkFull.cpp index 47f15d5c0..30f53b97b 100644 --- a/Solver/Integrator/LeeNewmarkFull.cpp +++ b/Solver/Integrator/LeeNewmarkFull.cpp @@ -359,7 +359,7 @@ int LeeNewmarkFull::initialize() { } int LeeNewmarkFull::process_constraint() { - const auto& D = get_domain(); + const auto D = get_domain(); // process constraint for the first time to obtain proper stiffness if(SUANPAN_SUCCESS != LeeNewmarkBase::process_constraint()) return SUANPAN_FAIL; @@ -523,9 +523,5 @@ int LeeNewmarkFull::process_constraint_resistance() { } void LeeNewmarkFull::print() { - suanpan_info("A Newmark solver using Lee's damping model with adjustable bandwidth using {} stiffness. doi: 10.1016/j.compstruc.2020.106423 and 10.1016/j.compstruc.2021.106663\n", stiffness_type == StiffnessType::TRIAL - ? "tangent" - : stiffness_type == StiffnessType::CURRENT - ? "converged" - : "initial"); + suanpan_info("A Newmark solver using Lee's damping model with adjustable bandwidth using {} stiffness. doi: 10.1016/j.compstruc.2020.106423 and 10.1016/j.compstruc.2021.106663\n", stiffness_type == StiffnessType::TRIAL ? "tangent" : stiffness_type == StiffnessType::CURRENT ? "converged" : "initial"); } diff --git a/Solver/Integrator/Newmark.cpp b/Solver/Integrator/Newmark.cpp index 70ee94966..a5884fdde 100644 --- a/Solver/Integrator/Newmark.cpp +++ b/Solver/Integrator/Newmark.cpp @@ -25,39 +25,47 @@ Newmark::Newmark(const unsigned T, const double A, const double B) , gamma(B) {} void Newmark::assemble_resistance() { - const auto& D = get_domain(); + const auto D = get_domain(); auto& W = D->get_factory(); auto fa = std::async([&] { D->assemble_resistance(); }); auto fb = std::async([&] { D->assemble_damping_force(); }); - auto fc = std::async([&] { D->assemble_inertial_force(); }); + auto fc = std::async([&] { D->assemble_nonviscous_force(); }); + auto fd = std::async([&] { D->assemble_inertial_force(); }); fa.get(); fb.get(); fc.get(); + fd.get(); - W->set_sushi(W->get_trial_resistance() + W->get_trial_damping_force() + W->get_trial_inertial_force()); + W->set_sushi(W->get_trial_resistance() + W->get_trial_damping_force() + W->get_trial_nonviscous_force() + W->get_trial_inertial_force()); } void Newmark::assemble_matrix() { - const auto& D = get_domain(); + const auto D = get_domain(); auto& W = D->get_factory(); auto fa = std::async([&] { D->assemble_trial_stiffness(); }); auto fb = std::async([&] { D->assemble_trial_geometry(); }); auto fc = std::async([&] { D->assemble_trial_damping(); }); - auto fd = std::async([&] { D->assemble_trial_mass(); }); + auto fd = std::async([&] { D->assemble_trial_nonviscous(); }); + auto fe = std::async([&] { D->assemble_trial_mass(); }); fa.get(); fb.get(); fc.get(); fd.get(); + fe.get(); + + if(W->is_nlgeom()) W->get_stiffness() += W->get_geometry(); + + W->get_stiffness() += C0 * W->get_mass(); - W->get_stiffness() += W->get_geometry() + C0 * W->get_mass() + C1 * W->get_damping(); + W->get_stiffness() += W->is_nonviscous() ? C1 * (W->get_damping() + W->get_nonviscous()) : C1 * W->get_damping(); } int Newmark::update_trial_status() { - const auto& D = get_domain(); + const auto D = get_domain(); auto& W = D->get_factory(); W->update_incre_acceleration(C0 * W->get_incre_displacement() - C2 * W->get_current_velocity() - C4 * W->get_current_acceleration()); diff --git a/Solver/Integrator/OALTS.cpp b/Solver/Integrator/OALTS.cpp index 5c3152887..a41e23ab5 100644 --- a/Solver/Integrator/OALTS.cpp +++ b/Solver/Integrator/OALTS.cpp @@ -30,40 +30,54 @@ OALTS::OALTS(const unsigned T, const double R) , B20(B2 / B0) { set_time_step_switch(false); } void OALTS::assemble_resistance() { - const auto& D = get_domain(); + const auto D = get_domain(); auto& W = D->get_factory(); auto fa = std::async([&] { D->assemble_resistance(); }); auto fb = std::async([&] { D->assemble_damping_force(); }); - auto fc = std::async([&] { D->assemble_inertial_force(); }); + auto fc = std::async([&] { D->assemble_nonviscous_force(); }); + auto fd = std::async([&] { D->assemble_inertial_force(); }); fa.get(); fb.get(); fc.get(); + fd.get(); - W->set_sushi(W->get_trial_resistance() + W->get_trial_damping_force() + W->get_trial_inertial_force()); + W->set_sushi(W->get_trial_resistance() + W->get_trial_damping_force() + W->get_trial_nonviscous_force() + W->get_trial_inertial_force()); } void OALTS::assemble_matrix() { - const auto& D = get_domain(); + const auto D = get_domain(); auto& W = D->get_factory(); auto fa = std::async([&] { D->assemble_trial_stiffness(); }); auto fb = std::async([&] { D->assemble_trial_geometry(); }); auto fc = std::async([&] { D->assemble_trial_damping(); }); - auto fd = std::async([&] { D->assemble_trial_mass(); }); + auto fd = std::async([&] { D->assemble_trial_nonviscous(); }); + auto fe = std::async([&] { D->assemble_trial_mass(); }); fa.get(); fb.get(); fc.get(); fd.get(); + fe.get(); + + if(W->is_nlgeom()) W->get_stiffness() += W->get_geometry(); - if(if_starting) [[unlikely]] W->get_stiffness() += W->get_geometry() + 4. / DT / DT * W->get_mass() + 2. / DT * W->get_damping(); - else [[likely]] W->get_stiffness() += W->get_geometry() + P1 * P1 * W->get_mass() + P1 * W->get_damping(); + if(if_starting) [[unlikely]] + { + W->get_stiffness() += 4. / DT / DT * W->get_mass(); + W->get_stiffness() += W->is_nonviscous() ? 2. / DT * (W->get_damping() + W->get_nonviscous()) : 2. / DT * W->get_damping(); + } + else [[likely]] + { + W->get_stiffness() += P1 * P1 * W->get_mass(); + W->get_stiffness() += W->is_nonviscous() ? P1 * (W->get_damping() + W->get_nonviscous()) : P1 * W->get_damping(); + } } int OALTS::update_trial_status() { - const auto& D = get_domain(); + const auto D = get_domain(); auto& W = D->get_factory(); if(if_starting) [[unlikely]] diff --git a/Solver/Integrator/Tchamwa.cpp b/Solver/Integrator/Tchamwa.cpp index 47337a1a3..9cdc31f93 100644 --- a/Solver/Integrator/Tchamwa.cpp +++ b/Solver/Integrator/Tchamwa.cpp @@ -24,24 +24,26 @@ Tchamwa::Tchamwa(const unsigned T, const double R) , PHI(2. / (1. + std::max(0., std::min(1., R)))) {} void Tchamwa::assemble_resistance() { - const auto& D = get_domain(); + const auto D = get_domain(); auto& W = D->get_factory(); auto fa = std::async([&] { D->assemble_resistance(); }); auto fb = std::async([&] { D->assemble_damping_force(); }); - auto fc = std::async([&] { D->assemble_inertial_force(); }); + auto fc = std::async([&] { D->assemble_nonviscous_force(); }); + auto fd = std::async([&] { D->assemble_inertial_force(); }); fa.get(); fb.get(); fc.get(); + fd.get(); - W->set_sushi(W->get_trial_resistance() + W->get_trial_damping_force() + W->get_trial_inertial_force()); + W->set_sushi(W->get_trial_resistance() + W->get_trial_damping_force() + W->get_trial_nonviscous_force() + W->get_trial_inertial_force()); } void Tchamwa::assemble_matrix() { get_domain()->assemble_trial_mass(); } int Tchamwa::update_trial_status() { - const auto& D = get_domain(); + const auto D = get_domain(); auto& W = D->get_factory(); W->update_incre_displacement(DT * W->get_current_velocity() + PHI * DT * DT * W->get_current_acceleration()); diff --git a/Solver/Integrator/WilsonPenzienNewmark.cpp b/Solver/Integrator/WilsonPenzienNewmark.cpp index 2e70a683a..c34295db9 100644 --- a/Solver/Integrator/WilsonPenzienNewmark.cpp +++ b/Solver/Integrator/WilsonPenzienNewmark.cpp @@ -27,7 +27,7 @@ WilsonPenzienNewmark::WilsonPenzienNewmark(const unsigned T, vec&& DR, const dou int WilsonPenzienNewmark::initialize() { if(SUANPAN_SUCCESS != Newmark::initialize()) return SUANPAN_FAIL; - const auto& D = get_domain(); + const auto D = get_domain(); auto& W = D->get_factory(); theta.zeros(W->get_size(), damping_ratio.n_elem); @@ -67,7 +67,9 @@ int WilsonPenzienNewmark::process_constraint() { } // the damping matrix is addressed by using the Woodbury formula - t_stiff += C0 * t_mass + C1 * W->get_damping(); + t_stiff += C0 * t_mass; + + t_stiff += W->is_nonviscous() ? C1 * (W->get_damping() + W->get_nonviscous()) : C1 * W->get_damping(); return SUANPAN_SUCCESS; } @@ -139,39 +141,41 @@ void WilsonPenzienNewmark::reset_status() { } void WilsonPenzienNewmark::assemble_resistance() { - const auto& D = get_domain(); + const auto D = get_domain(); auto& W = D->get_factory(); auto fa = std::async([&] { D->assemble_resistance(); }); - auto fb = std::async([&] { D->assemble_damping_force(); }); // consider independent viscous device - auto fc = std::async([&] { D->assemble_inertial_force(); }); + auto fb = std::async([&] { D->assemble_damping_force(); }); // consider independent viscous device + auto fc = std::async([&] { D->assemble_nonviscous_force(); }); // consider independent viscous device + auto fd = std::async([&] { D->assemble_inertial_force(); }); fa.get(); fb.get(); fc.get(); + fd.get(); W->update_trial_damping_force_by(theta * (beta % (theta.t() * W->get_trial_velocity()))); - W->set_sushi(W->get_trial_resistance() + W->get_trial_damping_force() + W->get_trial_inertial_force()); + W->set_sushi(W->get_trial_resistance() + W->get_trial_damping_force() + W->get_trial_nonviscous_force() + W->get_trial_inertial_force()); } void WilsonPenzienNewmark::assemble_matrix() { - const auto& D = get_domain(); + const auto D = get_domain(); auto& W = D->get_factory(); auto fa = std::async([&] { D->assemble_trial_stiffness(); }); auto fb = std::async([&] { D->assemble_trial_geometry(); }); - auto fc = std::async([&] { D->assemble_trial_damping(); }); // the model may have viscous device - auto fd = std::async([&] { D->assemble_trial_mass(); }); // need a constant mass matrix + auto fc = std::async([&] { D->assemble_trial_damping(); }); // the model may have viscous device + auto fd = std::async([&] { D->assemble_trial_nonviscous(); }); // the model may have viscous device + auto fe = std::async([&] { D->assemble_trial_mass(); }); // need a constant mass matrix fa.get(); fb.get(); fc.get(); fd.get(); + fe.get(); - auto& t_stiff = W->get_stiffness(); - - t_stiff += W->get_geometry(); + if(W->is_nlgeom()) W->get_stiffness() += W->get_geometry(); } void WilsonPenzienNewmark::print() { diff --git a/Solver/MPDC.cpp b/Solver/MPDC.cpp index 7af7027c4..b89626085 100644 --- a/Solver/MPDC.cpp +++ b/Solver/MPDC.cpp @@ -10,7 +10,7 @@ MPDC::MPDC(const unsigned T) int MPDC::analyze() { auto& C = get_converger(); auto& G = get_integrator(); - const auto& D = G->get_domain(); + const auto D = G->get_domain(); auto& W = D->get_factory(); suanpan_highlight(">> Current Analysis Time: {:.5f}.\n", W->get_trial_time()); @@ -25,14 +25,21 @@ int MPDC::analyze() { const auto idx = to_uvec(W->get_reference_dof()); + if(idx.empty()) { + suanpan_error("Displacement controlled algorithm is activated but no valid displacement load is applied.\n"); + return SUANPAN_FAIL; + } + mat disp_a; wall_clock t_clock; // iteration counter - unsigned counter = 0; + auto counter = 0u; while(true) { + set_step_amplifier(sqrt(max_iteration / (counter + 1.))); + // update for nodes and elements t_clock.tic(); if(SUANPAN_SUCCESS != G->update_trial_status()) return SUANPAN_FAIL; diff --git a/Solver/Newton.cpp b/Solver/Newton.cpp index c77a93687..271055737 100644 --- a/Solver/Newton.cpp +++ b/Solver/Newton.cpp @@ -28,7 +28,7 @@ Newton::Newton(const unsigned T, const bool IS) int Newton::analyze() { auto& C = get_converger(); auto& G = get_integrator(); - const auto& D = G->get_domain(); + const auto D = G->get_domain(); auto& W = D->get_factory(); suanpan_highlight(">> Current Analysis Time: {:.5f}.\n", W->get_trial_time()); @@ -36,7 +36,7 @@ int Newton::analyze() { const auto max_iteration = C->get_max_iteration(); // iteration counter - unsigned counter = 0; + auto counter = 0u; vec samurai, pre_samurai; @@ -45,6 +45,8 @@ int Newton::analyze() { wall_clock t_clock; while(true) { + set_step_amplifier(sqrt(max_iteration / (counter + 1.))); + // update for nodes and elements t_clock.tic(); if(SUANPAN_SUCCESS != G->update_trial_status()) return SUANPAN_FAIL; @@ -83,11 +85,13 @@ int Newton::analyze() { // call solver t_clock.tic(); - auto flag = G->solve(samurai, G->get_force_residual()); + const auto residual = G->get_force_residual(); + + auto flag = G->solve(samurai, residual); suanpan_assert([&] { if(!samurai.is_finite()) { - suanpan_fatal("Infinite number detected.\n"); + suanpan_fatal("Non-finite number detected.\n"); flag = SUANPAN_FAIL; } }); @@ -98,6 +102,8 @@ int Newton::analyze() { return flag; } + if(const auto amp = amplification(samurai, residual); amp > 0.) samurai *= amp; + // deal with mpc if(const auto n_size = W->get_size(); 0 != W->get_mpc()) { auto& border = W->get_auxiliary_stiffness(); @@ -150,3 +156,19 @@ int Newton::analyze() { void Newton::print() { suanpan_info("A solver based on Newton-Raphson method{}", initial_stiffness ? " using initial stiffness for each substep.\n" : ".\n"); } + +double AICN::amplification(const vec& x, const vec& r) const { + const auto hessian_norm = dot(x, r); + if(hessian_norm <= 0.) return 0.; + const auto root_norm = l_est * std::sqrt(hessian_norm); + const auto amp = (std::sqrt(1. + 2. * root_norm) - 1.) / root_norm; + return std::isfinite(amp) ? amp : 0.; +} + +AICN::AICN(const unsigned T, const double L) + : Newton(T) + , l_est(fabs(L)) {} + +void AICN::print() { + suanpan_info("A solver based on cubic Newton method. arXiv:2211.00140\n"); +} diff --git a/Solver/Newton.h b/Solver/Newton.h index 0088d70f1..c7500b685 100644 --- a/Solver/Newton.h +++ b/Solver/Newton.h @@ -30,9 +30,11 @@ #include -class Newton final : public Solver { +class Newton : public Solver { const bool initial_stiffness; + [[nodiscard]] virtual double amplification(const vec&, const vec&) const { return 0.; } + public: explicit Newton(unsigned = 0, bool = false); @@ -41,6 +43,17 @@ class Newton final : public Solver { void print() override; }; +class AICN : public Newton { + const double l_est; + + [[nodiscard]] double amplification(const vec&, const vec&) const override; + +public: + explicit AICN(unsigned = 0, double = 1.); + + void print() override; +}; + #endif //! @} diff --git a/Solver/Ramm.cpp b/Solver/Ramm.cpp index da1473276..a17676302 100644 --- a/Solver/Ramm.cpp +++ b/Solver/Ramm.cpp @@ -21,17 +21,12 @@ #include #include -Ramm::Ramm(const unsigned T, const double L, const bool F) - : Solver(T) - , arc_length(L) - , fixed_arc_length(F) {} - int Ramm::analyze() { auto& C = get_converger(); auto& G = get_integrator(); auto& W = G->get_domain()->get_factory(); - suanpan_highlight(">> Current Load Level: {:+.5f}.\n", W->get_trial_load_factor().at(0)); + suanpan_highlight(">> Current Load Level: {:+.5f}; Arc Length {:.3e}.\n", W->get_trial_load_factor().at(0), arc_length); const auto max_iteration = C->get_max_iteration(); @@ -40,9 +35,11 @@ int Ramm::analyze() { vec samurai, disp_a, disp_ref; // iteration counter - unsigned counter = 0; + auto counter = 0u; while(true) { + set_step_amplifier(sqrt(max_iteration / (counter + 1.))); + // update for nodes and elements if(SUANPAN_SUCCESS != G->update_trial_status()) return SUANPAN_FAIL; // process modifiers @@ -88,15 +85,9 @@ int Ramm::analyze() { G->erase_machine_error(samurai); // exit if converged - if(C->is_converged(counter)) { - if(!fixed_arc_length) arc_length *= sqrt(max_iteration / static_cast(counter)); - return SUANPAN_SUCCESS; - } + if(C->is_converged(counter)) return SUANPAN_SUCCESS; // exit if maximum iteration is hit - if(++counter > max_iteration) { - if(!fixed_arc_length) arc_length *= .5; - return SUANPAN_FAIL; - } + if(++counter > max_iteration) return SUANPAN_FAIL; // update trial displacement G->update_from_ninja(); @@ -111,6 +102,8 @@ int Ramm::analyze() { } } +void Ramm::set_step_size(const double S) { arc_length = S; } + void Ramm::print() { suanpan_info("A solver using Ramm's arc length method.\n"); } diff --git a/Solver/Ramm.h b/Solver/Ramm.h index c4e07b030..f2943a49f 100644 --- a/Solver/Ramm.h +++ b/Solver/Ramm.h @@ -31,14 +31,15 @@ #include class Ramm final : public Solver { - double arc_length; - bool fixed_arc_length; + double arc_length = 1.; public: - explicit Ramm(unsigned = 0, double = .1, bool = false); + using Solver::Solver; int analyze() override; + void set_step_size(double) override; + void print() override; }; diff --git a/Solver/Solver b/Solver/Solver index a8fb80143..f089e0f66 100644 --- a/Solver/Solver +++ b/Solver/Solver @@ -6,4 +6,4 @@ #include "MPDC.h" #include "Newton.h" #include "Ramm.h" -#include "Solver.h" \ No newline at end of file +#include "Solver.h" diff --git a/Solver/Solver.cpp b/Solver/Solver.cpp index 7c6f4b85c..bc1929e86 100644 --- a/Solver/Solver.cpp +++ b/Solver/Solver.cpp @@ -38,6 +38,10 @@ int Solver::initialize() { return SUANPAN_SUCCESS; } +void Solver::set_step_amplifier(const double S) { step_amplifier = std::max(1., S); } + +double Solver::get_step_amplifier() const { return step_amplifier; } + void Solver::set_converger(const shared_ptr& C) { converger = C; } const shared_ptr& Solver::get_converger() const { return converger; } diff --git a/Solver/Solver.h b/Solver/Solver.h index 014161040..23917018a 100644 --- a/Solver/Solver.h +++ b/Solver/Solver.h @@ -39,6 +39,8 @@ class Solver : public Tag { shared_ptr converger = nullptr; shared_ptr modifier = nullptr; + double step_amplifier = 1.0; + public: explicit Solver(unsigned = 0); Solver(const Solver&) = default; @@ -51,6 +53,11 @@ class Solver : public Tag { virtual int analyze() = 0; + virtual void set_step_size(double) {} + + void set_step_amplifier(double); + [[nodiscard]] double get_step_amplifier() const; + void set_converger(const shared_ptr&); [[nodiscard]] const shared_ptr& get_converger() const; diff --git a/Solver/SolverParser.cpp b/Solver/SolverParser.cpp index 3c5fa320e..0c3b8c263 100644 --- a/Solver/SolverParser.cpp +++ b/Solver/SolverParser.cpp @@ -54,7 +54,7 @@ int create_new_integrator(const shared_ptr& domain, istringstream& c auto idx = 0llu; while(!command.eof() && idx < p.n_elem) if(!get_input(command, p(idx++))) { - suanpan_error("A valid parameter for rayleigh damping is required.\n"); + suanpan_error("A valid parameter for Rayleigh damping is required.\n"); return SUANPAN_SUCCESS; } @@ -347,6 +347,15 @@ int create_new_solver(const shared_ptr& domain, istringstream& comma auto code = 0; if(is_equal(solver_type, "Newton")) { if(domain->insert(make_shared(tag))) code = 1; } else if(is_equal(solver_type, "modifiedNewton") || is_equal(solver_type, "mNewton")) { if(domain->insert(make_shared(tag, true))) code = 1; } + else if(is_equal(solver_type, "AICN")) { + auto length = 1.; + if(!command.eof() && !get_input(command, length)) { + suanpan_error("A valid length is required.\n"); + return SUANPAN_SUCCESS; + } + + if(domain->insert(make_shared(tag, length))) code = 1; + } else if(is_equal(solver_type, "BFGS")) { if(domain->insert(make_shared(tag))) code = 1; } else if(is_equal(solver_type, "LBFGS")) { auto max_history = 20; @@ -357,21 +366,6 @@ int create_new_solver(const shared_ptr& domain, istringstream& comma if(domain->insert(make_shared(tag, max_history))) code = 1; } - else if(is_equal(solver_type, "Ramm")) { - auto arc_length = .1; - string fixed_arc_length = "False"; - - if(!command.eof() && !get_input(command, arc_length)) { - suanpan_error("A valid arc length is required.\n"); - return SUANPAN_SUCCESS; - } - if(!command.eof() && !get_input(command, fixed_arc_length)) { - suanpan_error("A valid fixed arc length switch is required.\n"); - return SUANPAN_SUCCESS; - } - - if(domain->insert(make_shared(tag, arc_length, is_true(fixed_arc_length)))) code = 1; - } else if(is_equal(solver_type, "FEAST") || is_equal(solver_type, "QuadraticFEAST")) { unsigned eigen_number; if(!get_input(command, eigen_number)) { @@ -394,6 +388,7 @@ int create_new_solver(const shared_ptr& domain, istringstream& comma if(domain->insert(make_shared(tag, eigen_number, centre, radius, is_equal(solver_type, "QuadraticFEAST")))) code = 1; } else if(is_equal(solver_type, "DisplacementControl") || is_equal(solver_type, "MPDC")) { if(domain->insert(make_shared(tag))) code = 1; } + else if(is_equal(solver_type, "Ramm")) { if(domain->insert(make_shared(tag))) code = 1; } else suanpan_error("Cannot identify the solver type.\n"); diff --git a/Step/ArcLength.cpp b/Step/ArcLength.cpp index 036403a56..7f3b3a820 100644 --- a/Step/ArcLength.cpp +++ b/Step/ArcLength.cpp @@ -23,14 +23,11 @@ #include #include -ArcLength::ArcLength(const unsigned T, const unsigned NT, const unsigned DT, const double MA) - : Step(T, 0.) - , node(NT) - , dof(DT) - , magnitude(MA) {} +ArcLength::ArcLength(const unsigned T) + : Step(T, 0.) {} int ArcLength::initialize() { - const auto& t_domain = database.lock(); + const auto t_domain = database.lock(); // converger if(nullptr == tester) tester = make_shared(); @@ -41,7 +38,7 @@ int ArcLength::initialize() { modifier->set_domain(t_domain); // solver - if(nullptr != solver) if(!dynamic_cast(solver.get())) solver = nullptr; + if(nullptr != solver && nullptr == std::dynamic_pointer_cast(solver)) solver = nullptr; if(nullptr == solver) solver = make_shared(); solver->set_converger(tester); solver->set_integrator(modifier); @@ -61,8 +58,6 @@ int ArcLength::initialize() { factory->set_reference_size(1); factory->initialize_load_factor(); - factory->modify_reference_load()(t_domain->get_node(node)->get_reordered_dof().at(dof - 1)) = magnitude; - return SUANPAN_SUCCESS; } @@ -70,21 +65,38 @@ int ArcLength::analyze() { auto& S = get_solver(); auto& G = get_integrator(); - unsigned num_iteration = 0; + auto num_iteration = 0u; + + auto arc_length = get_ini_step_size(); + const auto min_arc_length = get_min_step_size(); + const auto max_arc_length = get_max_step_size(); while(true) { if(num_iteration++ > get_max_substep()) { suanpan_warning("The maximum sub-step number {} reached.\n", get_max_substep()); return SUANPAN_FAIL; } + S->set_step_size(arc_length); if(auto code = S->analyze(); code == SUANPAN_SUCCESS) { G->stage_and_commit_status(); G->record(); + // adjust arc length, always increase + if(!is_fixed_step_size()) { + arc_length *= S->get_step_amplifier(); + if(max_arc_length > 0. && arc_length > max_arc_length) arc_length = max_arc_length; + } // if exit is returned, the analysis shall be terminated code = G->process_criterion(); if(SUANPAN_SUCCESS != code) return code; } - else if(code == SUANPAN_FAIL) G->reset_status(); + else if(code == SUANPAN_FAIL) { + G->reset_status(); + // no way to converge + if(is_fixed_step_size() || suanpan::approx_equal(arc_length, min_arc_length)) return SUANPAN_FAIL; + // decrease arc length + arc_length *= .5; + if(min_arc_length > 0. && arc_length < min_arc_length) arc_length = min_arc_length; + } else return SUANPAN_FAIL; } } diff --git a/Step/ArcLength.h b/Step/ArcLength.h index aed401a41..85b524992 100644 --- a/Step/ArcLength.h +++ b/Step/ArcLength.h @@ -35,15 +35,8 @@ #include class ArcLength final : public Step { - unsigned node, dof; - double magnitude; - public: - explicit ArcLength(unsigned = 0, // tag - unsigned = 0, // node tag - unsigned = 0, // dof tag - double = 0. // magnitude - ); + explicit ArcLength(unsigned); int initialize() override; diff --git a/Step/Buckle.cpp b/Step/Buckle.cpp index 78f739bf8..232e5fab4 100644 --- a/Step/Buckle.cpp +++ b/Step/Buckle.cpp @@ -27,7 +27,7 @@ Buckle::Buckle(const unsigned T) : Static(T, 1.) {} int Buckle::initialize() { - const auto& t_domain = database.lock(); + const auto t_domain = database.lock(); // converger if(nullptr == tester) tester = make_shared(); @@ -56,10 +56,15 @@ int Buckle::initialize() { int Buckle::analyze() { if(Static::analyze() == SUANPAN_FAIL) return SUANPAN_FAIL; - const auto& D = get_domain().lock(); + const auto D = get_domain().lock(); auto& G = get_integrator(); auto& W = get_factory(); + if(!W->is_nlgeom()) { + suanpan_error("Buckling analysis requires an active nlgeom model.\n"); + return SUANPAN_FAIL; + } + // assemble stiffness and geometry as they may be modified in solver D->assemble_trial_stiffness(); D->assemble_trial_geometry(); diff --git a/Step/CMakeLists.txt b/Step/CMakeLists.txt index 4ce485cb7..7eff64a33 100644 --- a/Step/CMakeLists.txt +++ b/Step/CMakeLists.txt @@ -8,4 +8,4 @@ target_sources(${PROJECT_NAME} PRIVATE Static.cpp Step.cpp StepParser.cpp - ) +) diff --git a/Step/Dynamic.cpp b/Step/Dynamic.cpp index 5d6611f45..e8c0a4eb9 100644 --- a/Step/Dynamic.cpp +++ b/Step/Dynamic.cpp @@ -36,7 +36,7 @@ int Dynamic::initialize() { factory->set_analysis_type(AnalysisType::DYNAMICS); - const auto& t_domain = database.lock(); + const auto t_domain = database.lock(); if(SUANPAN_SUCCESS != t_domain->restart()) return SUANPAN_FAIL; @@ -63,7 +63,7 @@ int Dynamic::initialize() { // solver // avoid arc length solver - if(nullptr != solver) if(dynamic_cast(solver.get())) solver = nullptr; + if(nullptr != solver) if(std::dynamic_pointer_cast(solver)) solver = nullptr; // automatically enable displacement controlled solver if(nullptr == solver) { auto flag = false; @@ -75,7 +75,7 @@ int Dynamic::initialize() { flag ? solver = make_shared() : solver = make_shared(); } - if(dynamic_cast(solver.get()) && dynamic_cast(modifier.get())) { + if(std::dynamic_pointer_cast(solver) && std::dynamic_pointer_cast(modifier)) { suanpan_error("BFGS solver is not supported by Lee's damping model.\n"); return SUANPAN_FAIL; } @@ -102,7 +102,7 @@ int Dynamic::analyze() { while(true) { // check if the target time point is hit - if(remain_time <= 1E-7) return SUANPAN_SUCCESS; + if(remain_time <= 1E-10) return SUANPAN_SUCCESS; // check if the maximum substep number is hit if(++num_increment > get_max_substep()) { suanpan_warning("The maximum sub-step number {} reached.\n", get_max_substep()); @@ -120,7 +120,7 @@ int Dynamic::analyze() { G->record(); if(G->allow_to_change_time_step()) { if(!is_fixed_step_size() && ++num_converged_step > 5) { - step_time = std::min(get_max_step_size(), step_time * time_step_amplification); + step_time = std::min(get_max_step_size(), step_time * S->get_step_amplifier()); num_converged_step = 0; } // check if time overflows diff --git a/Step/Dynamic.h b/Step/Dynamic.h index 89944752f..3358fcebc 100644 --- a/Step/Dynamic.h +++ b/Step/Dynamic.h @@ -33,8 +33,6 @@ enum class IntegratorType; class Dynamic final : public Step { - const double time_step_amplification = 1.2; - const IntegratorType analysis_type; public: diff --git a/Step/Frequency.cpp b/Step/Frequency.cpp index b23b00616..5cee6ccb3 100644 --- a/Step/Frequency.cpp +++ b/Step/Frequency.cpp @@ -31,7 +31,7 @@ int Frequency::initialize() { factory->set_analysis_type(AnalysisType::EIGEN); - const auto& t_domain = database.lock(); + const auto t_domain = database.lock(); // integrator modifier = make_shared(); diff --git a/Step/Static.cpp b/Step/Static.cpp index 32cf81104..83a0e69af 100644 --- a/Step/Static.cpp +++ b/Step/Static.cpp @@ -32,7 +32,7 @@ int Static::initialize() { factory->set_analysis_type(AnalysisType::STATICS); - const auto& t_domain = database.lock(); + const auto t_domain = database.lock(); if(SUANPAN_SUCCESS != t_domain->restart()) return SUANPAN_FAIL; @@ -46,14 +46,16 @@ int Static::initialize() { // solver // automatically enable displacement controlled solver - if(nullptr == solver) { - auto flag = false; - for(const auto& I : t_domain->get_load_pool()) - if(I->if_displacement_control() && I->get_start_step() == get_tag()) { - flag = true; - break; - } - flag ? solver = make_shared() : solver = make_shared(); + auto flag = false; + for(const auto& I : t_domain->get_load_pool()) + if(I->if_displacement_control() && I->get_start_step() == get_tag()) { + flag = true; + break; + } + if(nullptr == solver) flag ? solver = make_shared() : solver = make_shared(); + else if(flag && nullptr == std::dynamic_pointer_cast(solver)) { + suanpan_warning("Wrong solver assigned, using MPDC instead.\n"); + solver = make_shared(); } solver->set_integrator(modifier); @@ -77,7 +79,7 @@ int Static::analyze() { while(true) { // check if the target time point is hit - if(remain_time <= 1E-7) return SUANPAN_SUCCESS; + if(remain_time <= 1E-10) return SUANPAN_SUCCESS; // check if the maximum substep number is hit if(++num_increment > get_max_substep()) { suanpan_warning("The maximum sub-step number {} reached.\n", get_max_substep()); @@ -95,7 +97,7 @@ int Static::analyze() { // update time left which will be used in for example criterion set_time_left(remain_time -= step_time); if(!is_fixed_step_size() && ++num_converged_step > 5) { - step_time = std::min(get_max_step_size(), step_time * time_step_amplification); + step_time = std::min(get_max_step_size(), step_time * S->get_step_amplifier()); num_converged_step = 0; } // check if time overflows diff --git a/Step/Static.h b/Step/Static.h index e286af5ea..6d351b5b6 100644 --- a/Step/Static.h +++ b/Step/Static.h @@ -34,11 +34,10 @@ #include class Static : public Step { - const double time_step_amplification = 1.2; - public: - explicit Static(unsigned = 0, // tag - double = 1. // step time period + explicit Static( + unsigned = 0, // tag + double = 1. // step time period ); int initialize() override; diff --git a/Step/Step b/Step/Step index 75ad53e8d..6c7e5b95b 100644 --- a/Step/Step +++ b/Step/Step @@ -6,4 +6,4 @@ #include "Dynamic.h" #include "Frequency.h" #include "Optimization.h" -#include "Static.h" \ No newline at end of file +#include "Static.h" diff --git a/Step/Step.cpp b/Step/Step.cpp index c1c85dd95..5d375c4cb 100644 --- a/Step/Step.cpp +++ b/Step/Step.cpp @@ -35,7 +35,7 @@ Step::Step(const unsigned T, const double P) , time_period(P) {} int Step::initialize() { - const auto& t_domain = database.lock(); + const auto t_domain = database.lock(); if(sparse_mat) { // LAPACK and SPIKE are for dense only @@ -99,9 +99,8 @@ void Step::set_integrator(const shared_ptr& G) { modifier = G; } const shared_ptr& Step::get_integrator() const { return modifier; } void Step::set_time_period(const double T) { - if(fabs(time_period - T) < 1E-7) return; - time_period = T; - time_left = time_period; + if(suanpan::approx_equal(time_period, T)) return; + time_left = time_period = T; const auto t_iteration = static_cast(floor(time_period / ini_step_size)) + 1; if(t_iteration <= static_cast(max_substep) || 0 == max_substep) return; if(t_iteration > static_cast(std::numeric_limits::max())) { @@ -118,9 +117,13 @@ double Step::get_time_period() const { return time_period; } double Step::get_time_left() const { return time_left; } void Step::set_ini_step_size(const double T) { - if(fabs(ini_step_size - T) < 1E-12) return; - ini_step_size = T > time_period ? time_period : T; - if(const auto t_iteration = static_cast(floor(time_period / ini_step_size)) + 1; t_iteration > static_cast(max_substep) && max_substep != 0) set_max_substep(t_iteration); + if(suanpan::approx_equal(ini_step_size, T)) return; + if(time_period > 0.) { + // for time control + ini_step_size = T > time_period ? time_period : T; + if(const auto t_iteration = static_cast(floor(time_period / ini_step_size)) + 1; t_iteration > static_cast(max_substep) && max_substep != 0) set_max_substep(t_iteration); + } + else ini_step_size = fabs(T); // for arc-length control } void Step::set_min_step_size(const double T) { min_step_size = T; } diff --git a/Step/Step.h b/Step/Step.h index 6dca94556..6f5b68d68 100644 --- a/Step/Step.h +++ b/Step/Step.h @@ -41,9 +41,9 @@ class Step : public Tag { double time_left = time_period; - double max_step_size = time_period; // maximum step size - double min_step_size = 1E-8; // minimum step size - double ini_step_size = time_period; // initial step size + double max_step_size = time_period; // maximum step size + double min_step_size = time_period > 0. ? 1E-8 : 0.; // minimum step size + double ini_step_size = time_period > 0. ? time_period : 1.; // initial step size unsigned max_substep = 1000; // maximum increment number diff --git a/Step/StepParser.cpp b/Step/StepParser.cpp index 224e44fb2..e8a83cff8 100644 --- a/Step/StepParser.cpp +++ b/Step/StepParser.cpp @@ -97,25 +97,7 @@ int create_new_step(const shared_ptr& domain, istringstream& command suanpan_error("Cannot create new step.\n"); } else if(is_equal(step_type, "ArcLength")) { - unsigned node; - if(!get_input(command, node)) { - suanpan_error("A valid node tag is required.\n"); - return SUANPAN_SUCCESS; - } - - unsigned dof; - if(!get_input(command, dof)) { - suanpan_error("A valid dof identifier is required.\n"); - return SUANPAN_SUCCESS; - } - - double magnitude; - if(!get_input(command, magnitude)) { - suanpan_error("A valid magnitude is required.\n"); - return SUANPAN_SUCCESS; - } - - if(domain->insert(make_shared(tag, node, dof, magnitude))) domain->set_current_step_tag(tag); + if(domain->insert(make_shared(tag))) domain->set_current_step_tag(tag); else suanpan_error("Fail to create new step via \"{}\".\n", command.str()); } diff --git a/Toolbox/CMakeLists.txt b/Toolbox/CMakeLists.txt index f10ea6121..bff1c64b2 100644 --- a/Toolbox/CMakeLists.txt +++ b/Toolbox/CMakeLists.txt @@ -12,4 +12,4 @@ target_sources(${PROJECT_NAME} PRIVATE Expression.cpp ExpressionParser.cpp misc.cpp - ) +) diff --git a/Toolbox/LBFGS.hpp b/Toolbox/LBFGS.hpp index c40b751e5..3fb76db22 100644 --- a/Toolbox/LBFGS.hpp +++ b/Toolbox/LBFGS.hpp @@ -47,10 +47,8 @@ using std::deque; using std::vector; -template concept Differentiable = requires(T t, const vec& x) -{ - t.evaluate_residual(x); - t.evaluate_jacobian(x); +template concept Differentiable = requires(T t, const vec& x) { + t.evaluate_residual(x); t.evaluate_jacobian(x); }; class LBFGS final { diff --git a/Toolbox/ResourceHolder.h b/Toolbox/ResourceHolder.h index 451936351..ba9507e91 100644 --- a/Toolbox/ResourceHolder.h +++ b/Toolbox/ResourceHolder.h @@ -43,6 +43,11 @@ class ResourceHolder final { return *this; } + ResourceHolder& operator=(std::unique_ptr&& original_object) { + object = std::forward>(original_object); + return *this; + } + ResourceHolder(const ResourceHolder& old_holder) : object(old_holder.object ? old_holder.object->get_copy() : nullptr) {} diff --git a/Toolbox/argument.cpp b/Toolbox/argument.cpp index 3e9183da2..6e567a58f 100644 --- a/Toolbox/argument.cpp +++ b/Toolbox/argument.cpp @@ -22,14 +22,14 @@ #include #include #include -#include +#include #include "revision.h" #ifdef SUANPAN_WIN #include #endif #ifdef SUANPAN_MSVC -#pragma warning(disable : 4702 4996) +#pragma warning(disable:4702 4996) #endif #ifdef SUANPAN_VTK @@ -48,7 +48,7 @@ using std::ifstream; using std::ofstream; constexpr auto SUANPAN_MAJOR = 3; -constexpr auto SUANPAN_MINOR = 1; +constexpr auto SUANPAN_MINOR = 2; constexpr auto SUANPAN_PATCH = 0; constexpr auto SUANPAN_CODE = "Canopus"; @@ -80,6 +80,25 @@ bool check_debugger() { return false; } +bool support_emoji() { +#ifdef SUANPAN_WIN + NTSTATUS (WINAPI *RtlGetVersion)(LPOSVERSIONINFOEXW); + OSVERSIONINFOEXW osInfo; + const auto nt_module = GetModuleHandleA("ntdll"); + if(nullptr == nt_module) return false; + // ReSharper disable once CppCStyleCast + *(FARPROC*)&RtlGetVersion = GetProcAddress(nt_module, "RtlGetVersion"); + if(nullptr == RtlGetVersion) return false; + + osInfo.dwOSVersionInfoSize = sizeof(osInfo); + // ReSharper disable once CppFunctionResultShouldBeUsed + RtlGetVersion(&osInfo); + return osInfo.dwBuildNumber >= 22000; +#else + return true; +#endif +} + void check_version(const fs::path& path_to_executable) { auto updater_module = path_to_executable.parent_path(); @@ -156,19 +175,20 @@ void print_header() { suanpan_info("| \\__/ |__| | |__X | | all rights reserved |\n"); suanpan_info("| 10.5281/zenodo.1285221 |\n"); suanpan_info("+-----------------------------------------------------+\n"); -#ifdef SUANPAN_WIN - suanpan_info("| https://github.com/TLCFEM/suanPan |\n"); - suanpan_info("| https://tlcfem.github.io/suanPan-manual/latest |\n"); - suanpan_info("+-----------------------------------------------------+\n"); - suanpan_info("| https://gitter.im/suanPan-dev/community |\n"); -#else - static constexpr std::array POOL{"\xF0\x9F\x8C\x88", "\xF0\x9F\x8C\x8F", "\xF0\x9F\x8E\xA7", "\xF0\x9F\x8E\xB1", "\xF0\x9F\x91\xB9", "\xF0\x9F\x92\xBB", "\xF0\x9F\x94\x8B", "\xF0\x9F\x94\x94", "\xF0\x9F\x9A\x80", "\xF0\x9F\xA7\xA9"}; - arma_rng::set_seed_random(); - suanpan_info("| \xF0\x9F\xA7\xAE https://github.com/TLCFEM/suanPan |\n"); - suanpan_info("| \xF0\x9F\x93\x9A https://tlcfem.github.io/suanPan-manual/latest |\n"); - suanpan_info("+-----------------------------------------------------+\n"); - suanpan_info("| {} https://gitter.im/suanPan-dev/community |\n", POOL[randi() % POOL.size()]); -#endif + if(support_emoji() && SUANPAN_COLOR) { + static constexpr std::array POOL{"\xF0\x9F\x8C\x88", "\xF0\x9F\x8C\x8F", "\xF0\x9F\x8E\xA7", "\xF0\x9F\x8E\xB1", "\xF0\x9F\x91\xB9", "\xF0\x9F\x92\xBB", "\xF0\x9F\x94\x8B", "\xF0\x9F\x94\x94", "\xF0\x9F\x9A\x80", "\xF0\x9F\xA7\xA9"}; + arma_rng::set_seed_random(); + suanpan_info("| \xF0\x9F\xA7\xAE https://github.com/TLCFEM/suanPan |\n"); + suanpan_info("| \xF0\x9F\x93\x9A https://tlcfem.github.io/suanPan-manual/latest |\n"); + suanpan_info("+-----------------------------------------------------+\n"); + suanpan_info("| {} https://gitter.im/suanPan-dev/community |\n", POOL[randi() % POOL.size()]); + } + else { + suanpan_info("| https://github.com/TLCFEM/suanPan |\n"); + suanpan_info("| https://tlcfem.github.io/suanPan-manual/latest |\n"); + suanpan_info("+-----------------------------------------------------+\n"); + suanpan_info("| https://gitter.im/suanPan-dev/community |\n"); + } suanpan_info("+-----------------------------------------------------+\n\n"); } @@ -351,22 +371,10 @@ void cli_mode(const shared_ptr& model) { string command_line; suanpan_info("suanPan ~<> "); getline(std::cin, command_line); - if(!command_line.empty() && command_line[0] != '#' && command_line[0] != '!') { - if(const auto if_comment = command_line.find('!'); string::npos != if_comment) command_line.erase(if_comment); - for(auto& c : command_line) if(',' == c || '\t' == c || '\r' == c || '\n' == c) c = ' '; - while(!command_line.empty() && *command_line.crbegin() == ' ') command_line.pop_back(); - if(command_line.empty()) continue; - if(*command_line.crbegin() == '\\') { - command_line.back() = ' '; - all_line.append(command_line); - } - else { - all_line.append(command_line); - istringstream tmp_str(all_line); - if(output_file.is_open()) output_file << all_line << '\n'; - if(process_command(model, tmp_str) == SUANPAN_EXIT) return; - all_line.clear(); - } - } + if(!normalise_command(all_line, command_line)) continue; + // now process the command + if(output_file.is_open()) output_file << all_line << '\n'; + if(istringstream tmp_str(all_line); process_command(model, tmp_str) == SUANPAN_EXIT) return; + all_line.clear(); } } diff --git a/Toolbox/command.cpp b/Toolbox/command.cpp index 43c37ce59..fd845bbda 100644 --- a/Toolbox/command.cpp +++ b/Toolbox/command.cpp @@ -18,52 +18,49 @@ // ReSharper disable StringLiteralTypo // ReSharper disable IdentifierTypo #include "command.h" +#include #include #include +#include #include #include #include #include -#include -#include -#include -#include #include +#include +#include #include #include +#include +#include #include -#include #include #include +#include #include #include #include #include #include +#include
#include
#include
-#include #include #include +#include #include #include +#include #include +#include #include #include -#include #include #include #include -#include -#ifdef SUANPAN_MKL -#include -#endif #ifdef SUANPAN_MAGMA #include #endif -#ifdef SUANPAN_WIN -#include -#endif using std::ifstream; using std::string; @@ -168,9 +165,7 @@ void overview() { }; redirect(); - suanpan_info("Welcome to suanPan, a parallel finite element analysis software.\n\n" - "It can be used to solve various types of solid mechanics problems. It also provides a flexible platform for researchers to develop new numerical models and algorithms in a hassle-free manner.\n\n" - "The following is a quick introduction of the application, regarding its functionalities and basic usage. At any time, type in '"); + suanpan_info("Welcome to suanPan, a parallel finite element analysis software.\n\nIt can be used to solve various types of solid mechanics problems. It also provides a flexible platform for researchers to develop new numerical models and algorithms in a hassle-free manner.\n\nThe following is a quick introduction of the application, regarding its functionalities and basic usage. At any time, type in '"); suanpan_highlight("q"); suanpan_info("' to quit this introduction. First of all, type in '"); suanpan_highlight("version"); @@ -180,9 +175,7 @@ void overview() { if(SUANPAN_EXIT == guide_command("version")) return; redirect(); - suanpan_info("By invoking the application without input file, you are currently in the interactive mode, which allows you to create finite element models interactively. " - "A numerical model typically consists of nodes, elements connecting nodes, materials attached to elements, loads applied to nodes, boundary conditions imposed on nodes, etc. " - "To analyze, a number of analysis steps need to be defined with the proper convergence criteria and solvers.\n\nType in '"); + suanpan_info("By invoking the application without input file, you are currently in the interactive mode, which allows you to create finite element models interactively. A numerical model typically consists of nodes, elements connecting nodes, materials attached to elements, loads applied to nodes, boundary conditions imposed on nodes, etc. To analyze, a number of analysis steps need to be defined with the proper convergence criteria and solvers.\n\nType in '"); suanpan_highlight("example"); suanpan_info("' to check out a simple elastic cantilever example.\n"); restore(); @@ -190,15 +183,11 @@ void overview() { if(SUANPAN_EXIT == guide_command("example")) return; redirect(); - suanpan_info("If you have some experience with ABAQUS scripting, you may have realised that the structure resembles that of ABAQUS *.inp files. " - "Basically you would need to define the geometry first, then define analysis steps and finally invoke the analysis.\n\n" - "Once you get used to the syntax and modelling workflow, you are more likely to write some model input files in plain text and use the '"); + suanpan_info("If you have some experience with ABAQUS scripting, you may have realised that the structure resembles that of ABAQUS *.inp files. Basically you would need to define the geometry first, then define analysis steps and finally invoke the analysis.\n\nOnce you get used to the syntax and modelling workflow, you are more likely to write some model input files in plain text and use the '"); suanpan_highlight("-f"); suanpan_info("' option to directly perform the analysis, for example, '"); suanpan_highlight("suanPan -f some_text_file"); - suanpan_info("'.\n\n" - "To this end, a file named as 'AddAssociation.bat' (Windows) or 'suanPan.sh' (Unix) is provided to help you setup autocompletion and syntax highlighting with Sublime Text. " - "It is placed in the same directory as the executable file. Type in '"); + suanpan_info("'.\n\nTo this end, a file named as 'AddAssociation.bat' (Windows) or 'suanPan.sh' (Unix) is provided to help you setup autocompletion and syntax highlighting with Sublime Text. It is placed in the same directory as the executable file. Type in '"); suanpan_highlight("fullname"); suanpan_info("' to see where the file is located.\n"); restore(); @@ -214,8 +203,7 @@ void overview() { if(SUANPAN_EXIT == guide_command("help")) return; redirect(); - suanpan_info("In the current interactive mode, it is also possible to load an existing model file and run it directly. " - "Let's first echo a '"); + suanpan_info("In the current interactive mode, it is also possible to load an existing model file and run it directly. Let's first echo a '"); suanpan_highlight("benchmark"); suanpan_info("' command to file 'benchmark.sp' using the '"); suanpan_highlight("terminal"); @@ -239,9 +227,7 @@ void overview() { if(SUANPAN_EXIT == guide_command("file benchmark.sp")) return; redirect(); - suanpan_info("In the documentation [https://tlcfem.github.io/suanPan-manual/latest/], there is an [Example] section that provides some practical examples for you to try out. " - "The source code repository also contains a folder named [Example] in which example usages of most models/algorithms are given. Please feel free to check that out.\n\n" - "Hope you will find suanPan useful. As it aims to bring the latest finite element models/algorithms to practice, you are welcome to embed your amazing research outcomes into suanPan. Type in '"); + suanpan_info("In the documentation [https://tlcfem.github.io/suanPan-manual/latest/], there is an [Example] section that provides some practical examples for you to try out. The source code repository also contains a folder named [Example] in which example usages of most models/algorithms are given. Please feel free to check that out.\n\nHope you will find suanPan useful. As it aims to bring the latest finite element models/algorithms to practice, you are welcome to embed your amazing research outcomes into suanPan. Type in '"); suanpan_highlight("qrcode"); suanpan_info("' to display a QR code for sharing. (UTF-8 is required, on Windows, some modern terminal such as Windows Terminal [https://github.com/microsoft/terminal] is recommended.)\n"); restore(); @@ -268,7 +254,6 @@ void perform_upsampling(istringstream& command) { } string window_type = "Hamming"; - if(!get_optional_input(command, window_type)) { suanpan_error("A valid window type is required.\n"); return; @@ -434,43 +419,53 @@ int process_command(const shared_ptr& model, istringstream& command) { if(is_equal(command_id, "amplitude")) return create_new_amplitude(domain, command); if(is_equal(command_id, "expression")) return create_new_expression(domain, command); if(is_equal(command_id, "converger")) return create_new_converger(domain, command); - if(is_equal(command_id, "constraint")) return create_new_constraint(domain, command); if(is_equal(command_id, "criterion")) return create_new_criterion(domain, command); if(is_equal(command_id, "element")) return create_new_element(domain, command); - if(is_equal(command_id, "hdf5recorder")) return create_new_hdf5recorder(domain, command); + if(is_equal(command_id, "hdf5recorder")) return create_new_recorder(domain, command, true); if(is_equal(command_id, "import")) return create_new_external_module(domain, command); if(is_equal(command_id, "initial")) return create_new_initial(domain, command); if(is_equal(command_id, "integrator")) return create_new_integrator(domain, command); - if(is_equal(command_id, "load")) return create_new_load(domain, command); if(is_equal(command_id, "mass")) return create_new_mass(domain, command); if(is_equal(command_id, "material")) return create_new_material(domain, command); if(is_equal(command_id, "modifier")) return create_new_modifier(domain, command); if(is_equal(command_id, "node")) return create_new_node(domain, command); if(is_equal(command_id, "orientation")) return create_new_orientation(domain, command); - if(is_equal(command_id, "plainrecorder")) return create_new_plainrecorder(domain, command); + if(is_equal(command_id, "plainrecorder")) return create_new_recorder(domain, command, false); if(is_equal(command_id, "recorder")) return create_new_recorder(domain, command); if(is_equal(command_id, "section")) return create_new_section(domain, command); if(is_equal(command_id, "solver")) return create_new_solver(domain, command); if(is_equal(command_id, "step")) return create_new_step(domain, command); - if(is_equal(command_id, "nodegroup")) return create_new_nodegroup(domain, command); - if(is_equal(command_id, "customnodegroup")) return create_new_customnodegroup(domain, command); - if(is_equal(command_id, "elementgroup")) return create_new_elementgroup(domain, command); - if(is_equal(command_id, "groupgroup")) return create_new_groupgroup(domain, command); - if(is_equal(command_id, "generate")) return create_new_generate(domain, command); - if(is_equal(command_id, "generatebyrule")) return create_new_generatebyrule(domain, command); - if(is_equal(command_id, "generatebypoint")) return create_new_generatebypoint(domain, command); - if(is_equal(command_id, "generatebyplane")) return create_new_generatebyplane(domain, command); + // groups + auto group_handler = [&] { + command.seekg(0); + return create_new_group(domain, command); + }; + if(is_equal(command_id, "group")) return create_new_group(domain, command); + if(is_equal(command_id, "nodegroup")) return group_handler(); + if(is_equal(command_id, "customnodegroup")) return group_handler(); + if(is_equal(command_id, "elementgroup")) return group_handler(); + if(is_equal(command_id, "groupgroup")) return group_handler(); + if(is_equal(command_id, "generate")) return group_handler(); + if(is_equal(command_id, "generatebyrule")) return group_handler(); + if(is_equal(command_id, "generatebypoint")) return group_handler(); + if(is_equal(command_id, "generatebyplane")) return group_handler(); + + // loads auto load_handler = [&] { command.seekg(0); return create_new_load(domain, command); }; + if(is_equal(command_id, "load")) return create_new_load(domain, command); if(is_equal(command_id, "acceleration")) return load_handler(); if(is_equal(command_id, "bodyforce")) return load_handler(); if(is_equal(command_id, "groupbodyforce")) return load_handler(); if(is_equal(command_id, "cload")) return load_handler(); + if(is_equal(command_id, "refload")) return load_handler(); + if(is_equal(command_id, "refforce")) return load_handler(); + if(is_equal(command_id, "refereceload")) return load_handler(); if(is_equal(command_id, "groupcload")) return load_handler(); if(is_equal(command_id, "lineudl2d")) return load_handler(); if(is_equal(command_id, "lineudl3d")) return load_handler(); @@ -484,11 +479,13 @@ int process_command(const shared_ptr& model, istringstream& command) { if(is_equal(command_id, "supportvelocity")) return load_handler(); if(is_equal(command_id, "supportacceleration")) return load_handler(); + // constraints auto constraint_handler = [&] { command.seekg(0); return create_new_constraint(domain, command); }; + if(is_equal(command_id, "constraint")) return create_new_constraint(domain, command); if(is_equal(command_id, "fix")) return constraint_handler(); if(is_equal(command_id, "penaltybc")) return constraint_handler(); if(is_equal(command_id, "grouppenaltybc")) return constraint_handler(); @@ -507,6 +504,7 @@ int process_command(const shared_ptr& model, istringstream& command) { if(is_equal(command_id, "finiterestitutionwall") || is_equal(command_id, "finiterestitutionwallpenalty")) return constraint_handler(); if(is_equal(command_id, "mpc")) return constraint_handler(); + // testers if(is_equal(command_id, "materialtest1d")) return test_material(domain, command, 1); if(is_equal(command_id, "materialtest2d")) return test_material(domain, command, 3); if(is_equal(command_id, "materialtest3d")) return test_material(domain, command, 6); @@ -646,6 +644,27 @@ int process_command(const shared_ptr& model, istringstream& command) { return SUANPAN_SUCCESS; } +bool normalise_command(string& all_line, string& command_line) { + // if to parse and process immediately + auto process = true; + + // clear comment line + if(!command_line.empty() && '#' == command_line.front()) command_line.clear(); + // remove inline comment + if(const auto if_comment = command_line.find('!'); string::npos != if_comment) command_line.erase(if_comment); + // remove all delimiters + for(auto& c : command_line) if(',' == c || '\t' == c || '\r' == c || '\n' == c) c = ' '; + while(!command_line.empty() && ' ' == command_line.back()) command_line.pop_back(); + // it is a command spanning multiple lines + if(!command_line.empty() && '\\' == command_line.back()) { + while(!command_line.empty() && '\\' == command_line.back()) command_line.pop_back(); + process = false; + } + all_line.append(command_line); + + return process && !all_line.empty(); +} + int process_file(const shared_ptr& model, const char* file_name) { std::vector file_list; file_list.reserve(9); @@ -678,23 +697,12 @@ int process_file(const shared_ptr& model, const char* file_name) { } string all_line, command_line; - while(!getline(input_file, command_line).fail()) - if(!command_line.empty() && command_line[0] != '#' && command_line[0] != '!') { - if(const auto if_comment = command_line.find('!'); string::npos != if_comment) command_line.erase(if_comment); - for(auto& c : command_line) if(',' == c || '\t' == c || '\r' == c || '\n' == c) c = ' '; - while(!command_line.empty() && *command_line.crbegin() == ' ') command_line.pop_back(); - if(command_line.empty()) continue; - if(*command_line.crbegin() == '\\') { - command_line.back() = ' '; - all_line.append(command_line); - } - else { - all_line.append(command_line); - if(istringstream tmp_str(all_line); process_command(model, tmp_str) == SUANPAN_EXIT) return SUANPAN_EXIT; - all_line.clear(); - } - } - + while(!getline(input_file, command_line).fail()) { + if(!normalise_command(all_line, command_line)) continue; + // now process the command + if(istringstream tmp_str(all_line); process_command(model, tmp_str) == SUANPAN_EXIT) return SUANPAN_EXIT; + all_line.clear(); + } return SUANPAN_SUCCESS; } @@ -731,13 +739,13 @@ int disable_object(const shared_ptr& model, istringstream& command) { return SUANPAN_SUCCESS; } - if(unsigned tag; is_equal(object_type, "domain")) while(get_input(command, tag)) model->disable_domain(tag); - else if(is_equal(object_type, "amplitude")) while(get_input(command, tag)) domain->disable_amplitude(tag); - else if(is_equal(object_type, "expression")) while(get_input(command, tag)) domain->disable_expression(tag); + if(unsigned tag; is_equal(object_type, "amplitude")) while(get_input(command, tag)) domain->disable_amplitude(tag); else if(is_equal(object_type, "constraint")) while(get_input(command, tag)) domain->disable_constraint(tag); else if(is_equal(object_type, "converger")) while(get_input(command, tag)) domain->disable_converger(tag); else if(is_equal(object_type, "criterion")) while(get_input(command, tag)) domain->disable_criterion(tag); + else if(is_equal(object_type, "domain")) while(get_input(command, tag)) model->disable_domain(tag); else if(is_equal(object_type, "element")) while(get_input(command, tag)) domain->disable_element(tag); + else if(is_equal(object_type, "expression")) while(get_input(command, tag)) domain->disable_expression(tag); else if(is_equal(object_type, "group")) while(get_input(command, tag)) domain->disable_group(tag); else if(is_equal(object_type, "integrator")) while(get_input(command, tag)) domain->disable_integrator(tag); else if(is_equal(object_type, "load")) while(get_input(command, tag)) domain->disable_load(tag); @@ -767,13 +775,13 @@ int enable_object(const shared_ptr& model, istringstream& command) { return SUANPAN_SUCCESS; } - if(unsigned tag; is_equal(object_type, "domain")) while(get_input(command, tag)) model->enable_domain(tag); - else if(is_equal(object_type, "amplitude")) while(get_input(command, tag)) domain->enable_amplitude(tag); - else if(is_equal(object_type, "expression")) while(get_input(command, tag)) domain->enable_expression(tag); + if(unsigned tag; is_equal(object_type, "amplitude")) while(get_input(command, tag)) domain->enable_amplitude(tag); else if(is_equal(object_type, "constraint")) while(get_input(command, tag)) domain->enable_constraint(tag); else if(is_equal(object_type, "converger")) while(get_input(command, tag)) domain->enable_converger(tag); else if(is_equal(object_type, "criterion")) while(get_input(command, tag)) domain->enable_criterion(tag); + else if(is_equal(object_type, "domain")) while(get_input(command, tag)) model->enable_domain(tag); else if(is_equal(object_type, "element")) while(get_input(command, tag)) domain->enable_element(tag); + else if(is_equal(object_type, "expression")) while(get_input(command, tag)) domain->enable_expression(tag); else if(is_equal(object_type, "group")) while(get_input(command, tag)) domain->enable_group(tag); else if(is_equal(object_type, "integrator")) while(get_input(command, tag)) domain->enable_integrator(tag); else if(is_equal(object_type, "load")) while(get_input(command, tag)) domain->enable_load(tag); @@ -804,13 +812,13 @@ int erase_object(const shared_ptr& model, istringstream& command) { return SUANPAN_SUCCESS; } - if(unsigned tag; is_equal(object_type, "domain")) while(get_input(command, tag)) model->erase_domain(tag); - else if(is_equal(object_type, "amplitude")) while(get_input(command, tag)) domain->erase_amplitude(tag); - else if(is_equal(object_type, "expression")) while(get_input(command, tag)) domain->erase_expression(tag); + if(unsigned tag; is_equal(object_type, "amplitude")) while(get_input(command, tag)) domain->erase_amplitude(tag); else if(is_equal(object_type, "constraint")) while(get_input(command, tag)) domain->erase_constraint(tag); else if(is_equal(object_type, "converger")) while(get_input(command, tag)) domain->erase_converger(tag); else if(is_equal(object_type, "criterion")) while(get_input(command, tag)) domain->erase_criterion(tag); + else if(is_equal(object_type, "domain")) while(get_input(command, tag)) model->erase_domain(tag); else if(is_equal(object_type, "element")) while(get_input(command, tag)) domain->erase_element(tag); + else if(is_equal(object_type, "expression")) while(get_input(command, tag)) domain->erase_expression(tag); else if(is_equal(object_type, "group")) while(get_input(command, tag)) domain->erase_group(tag); else if(is_equal(object_type, "integrator")) while(get_input(command, tag)) domain->erase_integrator(tag); else if(is_equal(object_type, "load")) while(get_input(command, tag)) domain->erase_load(tag); @@ -879,13 +887,23 @@ int list_object(const shared_ptr& domain, istringstream& command) { } vector list; - if(is_equal(object_type, "converger")) for(const auto& I : domain->get_converger_pool()) list.emplace_back(I->get_tag()); + if(is_equal(object_type, "amplitude")) for(const auto& I : domain->get_amplitude_pool()) list.emplace_back(I->get_tag()); else if(is_equal(object_type, "constraint")) for(const auto& I : domain->get_constraint_pool()) list.emplace_back(I->get_tag()); + else if(is_equal(object_type, "converger")) for(const auto& I : domain->get_converger_pool()) list.emplace_back(I->get_tag()); + else if(is_equal(object_type, "criterion")) for(const auto& I : domain->get_criterion_pool()) list.emplace_back(I->get_tag()); else if(is_equal(object_type, "element")) for(const auto& I : domain->get_element_pool()) list.emplace_back(I->get_tag()); + else if(is_equal(object_type, "expression")) for(const auto& I : domain->get_expression_pool()) list.emplace_back(I->get_tag()); + else if(is_equal(object_type, "group")) for(const auto& I : domain->get_group_pool()) list.emplace_back(I->get_tag()); + else if(is_equal(object_type, "integrator")) for(const auto& I : domain->get_integrator_pool()) list.emplace_back(I->get_tag()); else if(is_equal(object_type, "load")) for(const auto& I : domain->get_load_pool()) list.emplace_back(I->get_tag()); else if(is_equal(object_type, "material")) for(const auto& I : domain->get_material_pool()) list.emplace_back(I->get_tag()); + else if(is_equal(object_type, "modifier")) for(const auto& I : domain->get_modifier_pool()) list.emplace_back(I->get_tag()); else if(is_equal(object_type, "node")) for(const auto& I : domain->get_node_pool()) list.emplace_back(I->get_tag()); + else if(is_equal(object_type, "orientation")) for(const auto& I : domain->get_orientation_pool()) list.emplace_back(I->get_tag()); else if(is_equal(object_type, "recorder")) for(const auto& I : domain->get_recorder_pool()) list.emplace_back(I->get_tag()); + else if(is_equal(object_type, "section")) for(const auto& I : domain->get_section_pool()) list.emplace_back(I->get_tag()); + else if(is_equal(object_type, "solver")) for(const auto& I : domain->get_solver_pool()) list.emplace_back(I->get_tag()); + else if(is_equal(object_type, "step")) for(const auto& I : domain->get_step_pool()) list.emplace_back(I.second->get_tag()); suanpan_info("This domain has the following {}s:", object_type); for(const auto I : list) @@ -933,199 +951,6 @@ int protect_object(const shared_ptr& domain, istringstream& command) return SUANPAN_SUCCESS; } -int create_new_nodegroup(const shared_ptr& domain, istringstream& command) { - unsigned tag; - if(!get_input(command, tag)) { - suanpan_error("A valid tag is required.\n"); - return SUANPAN_SUCCESS; - } - - uword value; - vector value_pool; - while(get_input(command, value)) value_pool.push_back(value); - - if(!domain->insert(make_shared(tag, value_pool))) - suanpan_error("Fail to create new node group.\n"); - - return SUANPAN_SUCCESS; -} - -int create_new_customnodegroup(const shared_ptr& domain, istringstream& command) { - unsigned tag, expression; - if(!get_input(command, tag, expression)) { - suanpan_error("A valid tag is required.\n"); - return SUANPAN_SUCCESS; - } - - if(!domain->insert(make_shared(tag, expression))) - suanpan_error("Fail to create new custom node group.\n"); - - return SUANPAN_SUCCESS; -} - -int create_new_elementgroup(const shared_ptr& domain, istringstream& command) { - unsigned tag; - if(!get_input(command, tag)) { - suanpan_error("A valid tag is required.\n"); - return SUANPAN_SUCCESS; - } - - uword value; - vector value_pool; - while(get_input(command, value)) value_pool.push_back(value); - - if(!domain->insert(make_shared(tag, value_pool))) - suanpan_error("Fail to create new element group.\n"); - - return SUANPAN_SUCCESS; -} - -int create_new_generate(const shared_ptr& domain, istringstream& command) { - string type; - if(!get_input(command, type)) { - suanpan_error("A valid type is required.\n"); - return SUANPAN_SUCCESS; - } - - unsigned tag; - if(!get_input(command, tag)) { - suanpan_error("A valid tag is required.\n"); - return SUANPAN_SUCCESS; - } - - int start, interval, end; - if(!get_input(command, start)) { - suanpan_error("A valid tag is required.\n"); - return SUANPAN_SUCCESS; - } - - if(!get_input(command, interval)) { - interval = 1; - end = start; - } - else if(!get_input(command, end)) { - end = interval; - interval = end > start ? 1 : -1; - } - - if(0 == interval) interval = 1; - - if(start == end) interval = 1; - else if(start < end && interval < 0 || start > end && interval > 0) interval = -interval; - - vector tag_pool; - - tag_pool.reserve(std::max(1, (end - start) / interval + 1)); - - while(start <= end) { - tag_pool.emplace_back(start); - start += interval; - } - - if(is_equal(type, "nodegroup") && !domain->insert(make_shared(tag, tag_pool))) - suanpan_error("Fail to create new node group.\n"); - else if(is_equal(type, "elementgroup") && !domain->insert(make_shared(tag, tag_pool))) - suanpan_error("Fail to create new element group.\n"); - - return SUANPAN_SUCCESS; -} - -int create_new_generatebyrule(const shared_ptr& domain, istringstream& command) { - string type; - if(!get_input(command, type)) { - suanpan_error("A valid type is required.\n"); - return SUANPAN_SUCCESS; - } - - unsigned tag; - if(!get_input(command, tag)) { - suanpan_error("A valid tag is required.\n"); - return SUANPAN_SUCCESS; - } - - unsigned dof; - if(!get_input(command, dof)) { - suanpan_error("A valid dof identifier is required.\n"); - return SUANPAN_SUCCESS; - } - - double para; - vector pool; - while(!command.eof() && get_input(command, para)) pool.emplace_back(para); - - if(is_equal(type, "nodegroup") && !domain->insert(make_shared(tag, dof, pool))) - suanpan_error("Fail to create new node group.\n"); - - return SUANPAN_SUCCESS; -} - -int create_new_generatebyplane(const shared_ptr& domain, istringstream& command) { - string type; - if(!get_input(command, type)) { - suanpan_error("A valid type is required.\n"); - return SUANPAN_SUCCESS; - } - - unsigned tag; - if(!get_input(command, tag)) { - suanpan_error("A valid tag is required.\n"); - return SUANPAN_SUCCESS; - } - - double para; - vector pool; - while(!command.eof() && get_input(command, para)) pool.emplace_back(para); - - if(pool.empty()) return SUANPAN_SUCCESS; - - if(is_equal(type, "nodegroup") && !domain->insert(make_shared(tag, pool))) - suanpan_error("Fail to create new node group.\n"); - - return SUANPAN_SUCCESS; -} - -int create_new_generatebypoint(const shared_ptr& domain, istringstream& command) { - string type; - if(!get_input(command, type)) { - suanpan_error("A valid type is required.\n"); - return SUANPAN_SUCCESS; - } - - unsigned tag; - if(!get_input(command, tag)) { - suanpan_error("A valid tag is required.\n"); - return SUANPAN_SUCCESS; - } - - double para; - vector pool; - while(!command.eof() && get_input(command, para)) pool.emplace_back(para); - - if(pool.size() % 2 == 0) { - if(const auto size = static_cast(pool.size()) / 2; is_equal(type, "nodegroup") && !domain->insert(make_shared(tag, vector(pool.begin(), pool.begin() + size), vector(pool.end() - size, pool.end())))) - suanpan_error("Fail to create new node group.\n"); - } - - return SUANPAN_SUCCESS; -} - -int create_new_groupgroup(const shared_ptr& domain, istringstream& command) { - unsigned tag; - if(!get_input(command, tag)) { - suanpan_error("A valid tag is required.\n"); - return SUANPAN_SUCCESS; - } - - uword para; - vector pool; - while(!command.eof() && get_input(command, para)) pool.emplace_back(para); - - if(!domain->insert(make_shared(tag, pool))) - suanpan_error("Fail to create new group of groups.\n"); - - return SUANPAN_SUCCESS; -} - int create_new_external_module(const shared_ptr& domain, istringstream& command) { string library_name; @@ -1647,85 +1472,60 @@ int run_example() { } int print_command() { - suanpan_info("The available commands are listed. Please check online manual for reference. https://tlcfem.gitbook.io/suanpan-manual/\n"); + suanpan_info("The available first-level commands are listed. Please check online manual for reference. https://tlcfem.github.io/suanPan-manual/latest/\n"); - constexpr auto format = " {:<30} {}\n"; - suanpan_info(format, "acceleration", "define acceleration"); - suanpan_info(format, "amplitude", "define amplitude"); + constexpr auto format = " {:>20} {}\n"; + suanpan_info(format, "amplitude", "define amplitudes"); suanpan_info(format, "analyze/analyse", "analyse the model"); - suanpan_info(format, "benchmark", "benchmark the platform for comparison"); - suanpan_info(format, "clear", "clear model"); - suanpan_info(format, "cload", "define concentrated load"); + suanpan_info(format, "benchmark", "benchmark the platform for comparisons"); + suanpan_info(format, "clear", "clear the model"); suanpan_info(format, "command", "list all commands"); - suanpan_info(format, "converger", "define converger"); - suanpan_info(format, "criterion", "define stopping criterion"); - suanpan_info(format, "customnodegroup", "define group containing node tags"); + suanpan_info(format, "constraint", "define constraints such as boundary conditions"); + suanpan_info(format, "converger", "define convergers"); + suanpan_info(format, "criterion", "define stopping criteria"); suanpan_info(format, "delete/erase/remove", "delete objects"); suanpan_info(format, "disable/mute", "disable objects"); - suanpan_info(format, "disp/displacement/dispload", "define displacement load"); - suanpan_info(format, "domain", "create/switch to domains"); - suanpan_info(format, "element", "define element"); - suanpan_info(format, "elementgroup", "define group containing element tags"); + suanpan_info(format, "domain", "create/switch to other problem domains"); + suanpan_info(format, "element", "define elements"); suanpan_info(format, "enable", "enable objects"); suanpan_info(format, "example", "establish and execute a minimum example"); - suanpan_info(format, "exit/quit", "exit program"); + suanpan_info(format, "exit/quit", "exit the program"); suanpan_info(format, "file", "load external files"); - suanpan_info(format, "finiterigidwall", "define rigid wall constraint with finite dimensions"); - suanpan_info(format, "fix/penaltybc", "define boundary conditions by penalty method"); - suanpan_info(format, "fix2/multiplierbc", "define boundary conditions by multiplier method"); suanpan_info(format, "fullname", "print the full path of the program"); - suanpan_info(format, "generate", "generate node or element group by fixed interval"); - suanpan_info(format, "generatebyplane", "generate node or element group by plane"); - suanpan_info(format, "generatebypoint", "generate node or element group by line segment"); - suanpan_info(format, "generatebyrule", "generate node or element group by polynomial"); - suanpan_info(format, "groupcload", "define concentrated load based on given group"); - suanpan_info(format, "groupdisp", "define displacement load based on given group"); - suanpan_info(format, "groupmultiplierbc", "define boundary conditions by multiplier method based on given group"); - suanpan_info(format, "grouppenaltybc", "define boundary conditions by penalty method based on given group"); - suanpan_info(format, "hdf5recorder", "define recorder using hdf5 format"); - suanpan_info(format, "help", "print help information"); - suanpan_info(format, "import", "import external module"); - suanpan_info(format, "initial", "define initial condition"); - suanpan_info(format, "integrator", "define time integration algorithm"); + suanpan_info(format, "group", "define groups via various rules"); + suanpan_info(format, "hdf5recorder", "define recorders using hdf5 format"); + suanpan_info(format, "help", "print the help information"); + suanpan_info(format, "import", "import external modules"); + suanpan_info(format, "initial", "define initial conditions for nodes and materials"); + suanpan_info(format, "integrator", "define time integration algorithms"); suanpan_info(format, "list", "list objects in the current domain"); - suanpan_info(format, "mass", "define point mass"); - suanpan_info(format, "material", "define material"); - suanpan_info(format, "materialtest1d", "test independent material model using displacement/strain input"); - suanpan_info(format, "materialtest2d", "test independent material model using displacement/strain input"); - suanpan_info(format, "materialtest3d", "test independent material model using displacement/strain input"); - suanpan_info(format, "materialtestwithbase3d", "test independent material model using displacement/strain input"); - suanpan_info(format, "materialtestbyload1d", "test independent material model using force/stress input"); - suanpan_info(format, "materialtestbyload2d", "test independent material model using force/stress input"); - suanpan_info(format, "materialtestbyload3d", "test independent material model using force/stress input"); - suanpan_info(format, "materialtestbyloadwithbase3d", "test independent material model using force/stress input"); - suanpan_info(format, "modifier", "define modifier that modifies existing model properties"); - suanpan_info(format, "mpc", "define multi-point constraint"); - suanpan_info(format, "node", "define node"); - suanpan_info(format, "nodegroup", "define group containing node tags"); - suanpan_info(format, "orientation", "define beam section orientation"); + suanpan_info(format, "material", "define materials"); + suanpan_info(format, "materialtest*", "test materials without creating a finite element model"); + suanpan_info(format, "modifier", "define modifiers that modify the existing model properties"); + suanpan_info(format, "node", "define nodes"); + suanpan_info(format, "orientation", "define beam section orientations"); suanpan_info(format, "overview", "walk thorugh a quick overview of the application"); - suanpan_info(format, "particlecollision", "define collision constraint between particles"); - suanpan_info(format, "peek", "peek current information of target object"); - suanpan_info(format, "plainrecorder", "define recorder using plain text format"); - suanpan_info(format, "plot", "plot and optionally save model"); - suanpan_info(format, "precheck", "check the model without analyse"); + suanpan_info(format, "peek", "peek the current information of the target object"); + suanpan_info(format, "plainrecorder", "define recorders using plain text format"); + suanpan_info(format, "plot", "plot and optionally save the model with VTK"); + suanpan_info(format, "precheck", "check the model without the actual analysis"); suanpan_info(format, "protect", "protect objects from being disabled"); - suanpan_info(format, "pwd", "print/change current working folder"); + suanpan_info(format, "pwd", "print/change the current working folder"); suanpan_info(format, "qrcode", "print a qr code"); - suanpan_info(format, "recorder", "define recorder"); - suanpan_info(format, "reset", "reset model to the previously converged state"); - suanpan_info(format, "rigidwall", "define rigid wall constraint with infinite dimensions"); + suanpan_info(format, "recorder", "define recorders"); + suanpan_info(format, "reset", "reset the model to the previously converged state"); + suanpan_info(format, "response_spectrum", "compute the response spectrum of a given ground motion"); suanpan_info(format, "save", "save objects"); - suanpan_info(format, "section", "define section"); - suanpan_info(format, "sectiontest1d", "test independent section model using deformation input"); - suanpan_info(format, "sectiontest2d", "test independent section model using deformation input"); - suanpan_info(format, "sectiontest3d", "test independent section model using deformation input"); - suanpan_info(format, "set", "set properties of analysis"); - suanpan_info(format, "solver", "define solver"); - suanpan_info(format, "step", "define step"); - suanpan_info(format, "summary", "print summary for the current domain"); - suanpan_info(format, "suspend", "suspend object in current step"); - suanpan_info(format, "terminal", "execute command in terminal"); + suanpan_info(format, "sdof_response", "compute the sdof response of a given ground motion"); + suanpan_info(format, "section", "define sections"); + suanpan_info(format, "sectiontest*", "test sections without creating a finite element model"); + suanpan_info(format, "set", "set properties of the analysis/model"); + suanpan_info(format, "solver", "define solvers"); + suanpan_info(format, "step", "define steps"); + suanpan_info(format, "summary", "print summary for the current problem domain"); + suanpan_info(format, "suspend", "suspend objects in the current step"); + suanpan_info(format, "terminal", "execute commands in terminal"); + suanpan_info(format, "upsampling", "upsample the given ground motion with various filters"); suanpan_info(format, "version", "print version information"); return SUANPAN_SUCCESS; diff --git a/Toolbox/command.h b/Toolbox/command.h index 0a7e7d75e..7f82b69fc 100644 --- a/Toolbox/command.h +++ b/Toolbox/command.h @@ -36,6 +36,8 @@ class DomainBase; int process_command(const shared_ptr&, istringstream&); +bool normalise_command(string&, string&); + int process_file(const shared_ptr&, const char*); int run_example(); @@ -52,14 +54,6 @@ int suspend_object(const shared_ptr&, istringstream&); int protect_object(const shared_ptr&, istringstream&); int create_new_external_module(const shared_ptr&, istringstream&); -int create_new_nodegroup(const shared_ptr&, istringstream&); -int create_new_customnodegroup(const shared_ptr&, istringstream&); -int create_new_elementgroup(const shared_ptr&, istringstream&); -int create_new_generate(const shared_ptr&, istringstream&); -int create_new_generatebyrule(const shared_ptr&, istringstream&); -int create_new_generatebyplane(const shared_ptr&, istringstream&); -int create_new_generatebypoint(const shared_ptr&, istringstream&); -int create_new_groupgroup(const shared_ptr&, istringstream&); int create_new_initial(const shared_ptr&, istringstream&); int create_new_node(const shared_ptr&, istringstream&); diff --git a/Toolbox/feast-src/CMakeLists.txt b/Toolbox/feast-src/CMakeLists.txt index e3b007400..58f033e1d 100644 --- a/Toolbox/feast-src/CMakeLists.txt +++ b/Toolbox/feast-src/CMakeLists.txt @@ -19,7 +19,7 @@ set(SPIKE_SRC spike-src/sspike_smp.f90 spike-src/zpivul.f spike-src/zspike_smp.f90 - ) +) if (USE_MKL) add_definitions(-DMKL) diff --git a/Toolbox/fext/CMakeLists.txt b/Toolbox/fext/CMakeLists.txt index 96333b0b5..2be2ba411 100644 --- a/Toolbox/fext/CMakeLists.txt +++ b/Toolbox/fext/CMakeLists.txt @@ -14,7 +14,7 @@ if (USE_MPI) $ $ $ - ) + ) else () add_library(${PROJECT_NAME} ${LIBRARY_TYPE} $ @@ -25,7 +25,7 @@ else () $ $ $ - ) + ) endif () target_link_libraries(${PROJECT_NAME} metis) diff --git a/Toolbox/misc.cpp b/Toolbox/misc.cpp index 15ca3d0e8..afe28be92 100644 --- a/Toolbox/misc.cpp +++ b/Toolbox/misc.cpp @@ -21,10 +21,9 @@ void save_result(const mat& result) { #ifdef SUANPAN_HDF5 if(!result.save("RESULT.h5", hdf5_binary_trans)) suanpan_error("Fail to save to file.\n"); -#else +#endif if(!result.save("RESULT.txt", raw_ascii)) suanpan_error("Fail to save to file.\n"); -#endif } void save_gnuplot() { diff --git a/Toolbox/mumps-src/CMakeLists.txt b/Toolbox/mumps-src/CMakeLists.txt index e003b257a..ed8c55344 100644 --- a/Toolbox/mumps-src/CMakeLists.txt +++ b/Toolbox/mumps-src/CMakeLists.txt @@ -123,7 +123,7 @@ set(mumps_mod ssol_omp_m.F sstatic_ptr_m.F smumps_mpi3_mod.F - ) +) set(mumps_mpi_c elapse.c mpic.c) set(mumps_mpi_f mpi.F) diff --git a/Toolbox/ridders.hpp b/Toolbox/ridders.hpp new file mode 100644 index 000000000..49eceb49d --- /dev/null +++ b/Toolbox/ridders.hpp @@ -0,0 +1,68 @@ +/******************************************************************************* + * Copyright (C) 2017-2023 Theodore Chang + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + ******************************************************************************/ + +#ifndef RIDDERS_HPP +#define RIDDERS_HPP + +#include + +template T> double ridders(const T& func, double x1, double f1, double x2, double f2, const double tolerance) { + double target; + + auto counter = 0u; + while(true) { + counter += 2u; + + const auto x3 = .5 * (x1 + x2); + const auto f3 = func(x3); + if(std::fabs(f3) < tolerance || fabs(x2 - x1) < tolerance) { + target = x3; + break; + } + + const auto dx = (x3 - x1) * f3 / std::sqrt(f3 * f3 - f1 * f2); + + const auto x4 = f1 > f2 ? x3 + dx : x3 - dx; + const auto f4 = func(x4); + if(std::fabs(f4) < tolerance) { + target = x4; + break; + } + + // one end is x4 + // pick the other from x3, x2, x1 + if(f4 * f3 < 0.) { + x1 = x3; + f1 = f3; + } + else if(f4 * f2 < 0.) { + x1 = x2; + f1 = f2; + } + + x2 = x4; + f2 = f4; + } + + suanpan_debug("Ridders' method initial guess {:.5E} with {} iterations.\n", target, counter); + + return target; +} + +#endif + +//! @} diff --git a/Toolbox/tensor.h b/Toolbox/tensor.h index cb4ec9e84..7a5fa00a6 100644 --- a/Toolbox/tensor.h +++ b/Toolbox/tensor.h @@ -147,8 +147,6 @@ namespace transform { template Mat rodrigues(const Mat& R) { return arma::expmat(transform::skew_symm(R)); } - template Mat rodrigues(const subview_col& R) { return arma::expmat(transform::skew_symm(R)); } - template Quaternion to_quaternion(const Mat& R) { if(3 == R.n_elem) { const auto angle = arma::norm(R); diff --git a/Toolbox/thread_pool.hpp b/Toolbox/thread_pool.hpp index 8948bf883..8bf10dedc 100644 --- a/Toolbox/thread_pool.hpp +++ b/Toolbox/thread_pool.hpp @@ -108,20 +108,19 @@ class [[nodiscard]] thread_pool { template, std::decay_t...>> [[nodiscard]] std::future submit(F&& task, A&&... args) { std::function task_function = std::bind(std::forward(task), std::forward(args)...); std::shared_ptr> task_promise = std::make_shared>(); - push_task( - [task_function, task_promise] { - try { - if constexpr(std::is_void_v) { - std::invoke(task_function); - task_promise->set_value(); - } - else { task_promise->set_value(std::invoke(task_function)); } + push_task([task_function, task_promise] { + try { + if constexpr(std::is_void_v) { + std::invoke(task_function); + task_promise->set_value(); } - catch(...) { - try { task_promise->set_exception(std::current_exception()); } - catch(...) {} - } - }); + else { task_promise->set_value(std::invoke(task_function)); } + } + catch(...) { + try { task_promise->set_exception(std::current_exception()); } + catch(...) {} + } + }); return task_promise->get_future(); } diff --git a/Toolbox/utility.cpp b/Toolbox/utility.cpp index d5ef44e9b..0ade01204 100644 --- a/Toolbox/utility.cpp +++ b/Toolbox/utility.cpp @@ -127,3 +127,5 @@ bool is_true(const string& S) { return is_true(S.c_str()); } bool is_false(const string& S) { return is_false(S.c_str()); } bool is_integer(const string& S) { return !S.empty() && std::all_of(S.cbegin(), S.cend(), isdigit); } + +double perturb(const double input) { return input * (1. + randu() * 1E-5); } diff --git a/Toolbox/utility.h b/Toolbox/utility.h index 6dabb5145..a1f790e73 100644 --- a/Toolbox/utility.h +++ b/Toolbox/utility.h @@ -82,6 +82,12 @@ template bool get_input(istringstream& I, Col& O) { return code; } +template bool get_input(istringstream& I, std::vector& O) { + T value; + while(get_input(I, value)) O.emplace_back(value); + return true; +} + template bool get_input(istringstream& I, T& O, U&... R) { return static_cast(I >> O) ? get_input(I, R...) : false; } template T get_input(istringstream& I) { @@ -136,4 +142,6 @@ bool is_false(const string&); bool is_integer(const string&); +double perturb(double); + #endif diff --git a/UnitTest/CMakeLists.txt b/UnitTest/CMakeLists.txt index 9f1d21914..fc6e00e3a 100644 --- a/UnitTest/CMakeLists.txt +++ b/UnitTest/CMakeLists.txt @@ -16,4 +16,4 @@ target_sources(${PROJECT_NAME} PRIVATE TestSurfaceNM.cpp TestTensor.cpp TestUtility.cpp - ) +) diff --git a/UnitTest/TestExpression.cpp b/UnitTest/TestExpression.cpp index 2d923b1cf..afa25808e 100644 --- a/UnitTest/TestExpression.cpp +++ b/UnitTest/TestExpression.cpp @@ -3,11 +3,7 @@ #include TEST_CASE("Variable Split", "[Utility.Expression]") { - for(const auto test_list = std::vector{ - "x|y|d_z", - "\"x|y|d_z\"", - R"("x""y""d_z")" - }; const auto& I : test_list) { + for(const auto test_list = std::vector{"x|y|d_z", "\"x|y|d_z\"", R"("x""y""d_z")"}; const auto& I : test_list) { const auto variable_list = suanpan::expression::split(I); REQUIRE(variable_list.size() == 3); diff --git a/UnitTest/TestShape.cpp b/UnitTest/TestShape.cpp index 3d2556091..da37c72ea 100644 --- a/UnitTest/TestShape.cpp +++ b/UnitTest/TestShape.cpp @@ -6,3 +6,21 @@ TEST_CASE("Compute Area By Shoelace", "[Utility.Shape]") { REQUIRE(Approx(30) == area::shoelace(C)); } + +TEST_CASE("Small Sparse", "[Utility.Shape]") { + for(auto I = 2; I <= 20; I += 2) { + const auto B = sprandu(6, 6 * I, .3); + const auto D = mat(6, 6, fill::randn); + const auto BB = mat(B); + + BENCHMARK("Sparse BTDB") { + mat A = B.t() * D * B; + return A; + }; + + BENCHMARK("Dense BTDB") { + mat A = BB.t() * D * BB; + return A; + }; + } +} diff --git a/snapcraft.yaml b/snapcraft.yaml index 37aa2970a..df9f6781b 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -9,7 +9,7 @@ issues: https://github.com/TLCFEM/suanPan/issues license: GPL-3.0 source-code: https://github.com/TLCFEM/suanPan summary: An Open Source, Parallel and Heterogeneous Finite Element Analysis Framework -version: "3.1" +version: "3.2" website: https://bit.ly/suanpan-doc description: | [**suanPan**](https://github.com/TLCFEM/suanPan) is a finite element method (FEM) simulation platform for applications @@ -40,7 +40,7 @@ parts: - -DCMAKE_BUILD_TYPE=Release - -DBUILD_MULTITHREAD=ON - -DUSE_HDF5=ON - - -DUSE_EXTERNAL_VTK=ON + - -DUSE_VTK=ON - -DVTK_DIR=$CRAFT_PART_BUILD/lib/cmake/vtk-9.2/ - -DUSE_MKL=ON - -DMKLROOT=/opt/intel/oneapi/mkl/latest diff --git a/suanPan.h b/suanPan.h index ba4630d8d..d6328ecc1 100644 --- a/suanPan.h +++ b/suanPan.h @@ -347,4 +347,6 @@ namespace std::ranges { } // namespace std::ranges #endif +template [[nodiscard]] typename enable_if2::value, typename T1::pod_type>::result inf_norm(const T1& X) { return arma::norm(X, "inf"); } + #endif