From eacad3d6ab81bd52c1b4c51438b3ec8fe5c1ba21 Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Wed, 24 Sep 2008 18:27:56 +0200 Subject: [PATCH 1/7] blockMeshDict.m4 files: print *not* printf, don't need POSIX with Math::Trig --- .../sloshingTank2D/constant/polyMesh/blockMeshDict.m4 | 4 ++-- .../sloshingTank2D3DoF/constant/polyMesh/blockMeshDict.m4 | 4 ++-- .../sloshingTank3D/constant/polyMesh/blockMeshDict.m4 | 4 ++-- .../sloshingTank3D3DoF/constant/polyMesh/blockMeshDict.m4 | 4 ++-- .../sloshingTank3D6DoF/constant/polyMesh/blockMeshDict.m4 | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/tutorials/interDyMFoam/sloshingTank2D/constant/polyMesh/blockMeshDict.m4 b/tutorials/interDyMFoam/sloshingTank2D/constant/polyMesh/blockMeshDict.m4 index 0473efbc15..b6c1cdd4ad 100644 --- a/tutorials/interDyMFoam/sloshingTank2D/constant/polyMesh/blockMeshDict.m4 +++ b/tutorials/interDyMFoam/sloshingTank2D/constant/polyMesh/blockMeshDict.m4 @@ -15,8 +15,8 @@ FoamFile // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // General m4 macros -changecom(//)changequote([,]) -define(calc, [esyscmd(perl -e 'use Math::Trig; use POSIX; printf ($1)')]) +changecom(//)changequote([,]) dnl> +define(calc, [esyscmd(perl -e 'use Math::Trig; print ($1)')]) dnl> define(VCOUNT, 0) define(vlabel, [[// ]Vertex $1 = VCOUNT define($1, VCOUNT)define([VCOUNT], incr(VCOUNT))]) diff --git a/tutorials/interDyMFoam/sloshingTank2D3DoF/constant/polyMesh/blockMeshDict.m4 b/tutorials/interDyMFoam/sloshingTank2D3DoF/constant/polyMesh/blockMeshDict.m4 index 5f286a9a6b..b6c1cdd4ad 100644 --- a/tutorials/interDyMFoam/sloshingTank2D3DoF/constant/polyMesh/blockMeshDict.m4 +++ b/tutorials/interDyMFoam/sloshingTank2D3DoF/constant/polyMesh/blockMeshDict.m4 @@ -15,8 +15,8 @@ FoamFile // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // General m4 macros -changecom(//)changequote([,]) -define(calc, [esyscmd(perl -e 'use Math::Trig; use POSIX; print ($1)')]) +changecom(//)changequote([,]) dnl> +define(calc, [esyscmd(perl -e 'use Math::Trig; print ($1)')]) dnl> define(VCOUNT, 0) define(vlabel, [[// ]Vertex $1 = VCOUNT define($1, VCOUNT)define([VCOUNT], incr(VCOUNT))]) diff --git a/tutorials/interDyMFoam/sloshingTank3D/constant/polyMesh/blockMeshDict.m4 b/tutorials/interDyMFoam/sloshingTank3D/constant/polyMesh/blockMeshDict.m4 index d001104991..f97859e6bf 100644 --- a/tutorials/interDyMFoam/sloshingTank3D/constant/polyMesh/blockMeshDict.m4 +++ b/tutorials/interDyMFoam/sloshingTank3D/constant/polyMesh/blockMeshDict.m4 @@ -15,8 +15,8 @@ FoamFile // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // General m4 macros -changecom(//)changequote([,]) -define(calc, [esyscmd(perl -e 'use Math::Trig; use POSIX; printf ($1)')]) +changecom(//)changequote([,]) dnl> +define(calc, [esyscmd(perl -e 'use Math::Trig; print ($1)')]) dnl> define(VCOUNT, 0) define(vlabel, [[// ]Vertex $1 = VCOUNT define($1, VCOUNT)define([VCOUNT], incr(VCOUNT))]) diff --git a/tutorials/interDyMFoam/sloshingTank3D3DoF/constant/polyMesh/blockMeshDict.m4 b/tutorials/interDyMFoam/sloshingTank3D3DoF/constant/polyMesh/blockMeshDict.m4 index 0b91b83dd2..f97859e6bf 100644 --- a/tutorials/interDyMFoam/sloshingTank3D3DoF/constant/polyMesh/blockMeshDict.m4 +++ b/tutorials/interDyMFoam/sloshingTank3D3DoF/constant/polyMesh/blockMeshDict.m4 @@ -15,8 +15,8 @@ FoamFile // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // General m4 macros -changecom(//)changequote([,]) -define(calc, [esyscmd(perl -e 'use Math::Trig; use POSIX; print ($1)')]) +changecom(//)changequote([,]) dnl> +define(calc, [esyscmd(perl -e 'use Math::Trig; print ($1)')]) dnl> define(VCOUNT, 0) define(vlabel, [[// ]Vertex $1 = VCOUNT define($1, VCOUNT)define([VCOUNT], incr(VCOUNT))]) diff --git a/tutorials/interDyMFoam/sloshingTank3D6DoF/constant/polyMesh/blockMeshDict.m4 b/tutorials/interDyMFoam/sloshingTank3D6DoF/constant/polyMesh/blockMeshDict.m4 index 0b91b83dd2..f97859e6bf 100644 --- a/tutorials/interDyMFoam/sloshingTank3D6DoF/constant/polyMesh/blockMeshDict.m4 +++ b/tutorials/interDyMFoam/sloshingTank3D6DoF/constant/polyMesh/blockMeshDict.m4 @@ -15,8 +15,8 @@ FoamFile // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // General m4 macros -changecom(//)changequote([,]) -define(calc, [esyscmd(perl -e 'use Math::Trig; use POSIX; print ($1)')]) +changecom(//)changequote([,]) dnl> +define(calc, [esyscmd(perl -e 'use Math::Trig; print ($1)')]) dnl> define(VCOUNT, 0) define(vlabel, [[// ]Vertex $1 = VCOUNT define($1, VCOUNT)define([VCOUNT], incr(VCOUNT))]) From e0bb935efb08afea0ba070d7263028fb09095bd4 Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Fri, 26 Sep 2008 18:39:30 +0200 Subject: [PATCH 2/7] wmakeLnInclude: improvements and bugfix - fixed typo: had skipped '-Make' instead of 'Make' directory - remove broken links first * helps when file locations have changed - filter out trailing 'lnInclude' from the spec * this makes it easier to update existing lnInclude dirs: find -name lnInclude -exec wmakeLnInclude -f {} \; - reduced output noise when re-creating an identical link --- wmake/wcleanLnIncludeAll | 2 +- wmake/wmakeLnInclude | 45 ++++++++++++++++++++++++++++------------ 2 files changed, 33 insertions(+), 14 deletions(-) diff --git a/wmake/wcleanLnIncludeAll b/wmake/wcleanLnIncludeAll index 7d7d0059c1..67da4d0bb0 100755 --- a/wmake/wcleanLnIncludeAll +++ b/wmake/wcleanLnIncludeAll @@ -24,7 +24,7 @@ # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # # Script -# wmakeLnInclude +# wcleanLnIncludeAll # # Description # Delete all the lnInclude directories in the tree. diff --git a/wmake/wmakeLnInclude b/wmake/wmakeLnInclude index fcf3bfbf50..ad63d6bca9 100755 --- a/wmake/wmakeLnInclude +++ b/wmake/wmakeLnInclude @@ -80,8 +80,18 @@ do done baseDir=$1 +# convert incorrect path/dir/lnInclude to something sensible +while [ "${baseDir##*/}" = lnInclude ] +do + baseDir="${baseDir%/*}" + if [ "$baseDir" = lnInclude ] + then + baseDir="." + fi +done incDir=$baseDir/lnInclude + if [ $# -eq 1 ] then lnOpt="-s" @@ -89,7 +99,7 @@ elif [ $# -eq 2 ] then lnOpt="$2" else - usage "ERROR: wrong number of arguments" + usage "ERROR: incorrect number of arguments" fi @@ -101,7 +111,6 @@ fi if [ -d $incDir ] then - # could change force to remove lnInclude first if [ ! "$forceUpdate" ] then # echo $Script: include directory $incDir already exists, exiting. @@ -117,24 +126,34 @@ then exit 0 fi +cd $incDir || exit 1 + # Link include files # ~~~~~~~~~~~~~~~~~~ echo $Script: linking include files to $incDir -echo - -cd $incDir - -find .. $findOpt \ - \( -name lnInclude -o -name -Make -o -name config \) -prune \ - -o \( -name '*.[CHh]' -o -name '*.[ch]xx' -o -name '*.[ch]pp' -o -name '*.type' \) \ - -a ! -name ".#*" \ - -exec ln $lnOpt {} . \; - # -# remove any broken links +# remove any broken links first (this helps when file locations have moved) # find -L . -type l -exec rm \{\} \; +# +# create links, avoid recreating links unless necessary +# +find .. $findOpt \ + \( -name lnInclude -o -name Make -o -name config \) -prune \ + -o \( -name '*.[CHh]' -o -name '*.[ch]xx' -o -name '*.[ch]pp' -o -name '*.type' \) \ + -a ! -name ".#*" \ + -print | \ + while read src + do + link=$(readlink ${src##*/}) + if [ "$link" != "$src" ] + then + rm $link 2>/dev/null + ln $lnOpt $src . + fi + done + #------------------------------------------------------------------------------ From 3ac92339f1f8a869ea8e1e8fe7a8917b805494af Mon Sep 17 00:00:00 2001 From: henry Date: Tue, 30 Sep 2008 17:35:58 +0100 Subject: [PATCH 3/7] Changed the SquareMatrix construction from initial size and value and corrected usages of it. --- .../matrices/LUscalarMatrix/LUscalarMatrix.C | 4 ++-- .../matrices/SquareMatrix/SquareMatrix.H | 5 +++-- .../matrices/SquareMatrix/SquareMatrixI.H | 20 ++++++++++++++++--- 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/src/OpenFOAM/matrices/LUscalarMatrix/LUscalarMatrix.C b/src/OpenFOAM/matrices/LUscalarMatrix/LUscalarMatrix.C index f425accf72..3e8fc3fe0f 100644 --- a/src/OpenFOAM/matrices/LUscalarMatrix/LUscalarMatrix.C +++ b/src/OpenFOAM/matrices/LUscalarMatrix/LUscalarMatrix.C @@ -101,7 +101,7 @@ Foam::LUscalarMatrix::LUscalarMatrix nCells += lduMatrices[i].size(); } - scalarSquareMatrix m(nCells, 0.0); + scalarSquareMatrix m(nCells, nCells, 0.0); transfer(m); convert(lduMatrices); } @@ -109,7 +109,7 @@ Foam::LUscalarMatrix::LUscalarMatrix else { label nCells = ldum.lduAddr().size(); - scalarSquareMatrix m(nCells, 0.0); + scalarSquareMatrix m(nCells, nCells, 0.0); transfer(m); convert(ldum, interfaceCoeffs, interfaces); } diff --git a/src/OpenFOAM/matrices/SquareMatrix/SquareMatrix.H b/src/OpenFOAM/matrices/SquareMatrix/SquareMatrix.H index 6239781d85..27160dc239 100644 --- a/src/OpenFOAM/matrices/SquareMatrix/SquareMatrix.H +++ b/src/OpenFOAM/matrices/SquareMatrix/SquareMatrix.H @@ -69,9 +69,10 @@ public: // It checks that m == n. inline SquareMatrix(const label m, const label n); - //- Construct with given number of rows/columns + //- Construct with given number of rows and rows // and value for all elements. - inline SquareMatrix(const label n, const Type&); + // It checks that m == n. + inline SquareMatrix(const label m, const label n, const Type&); //- Construct from Istream. inline SquareMatrix(Istream&); diff --git a/src/OpenFOAM/matrices/SquareMatrix/SquareMatrixI.H b/src/OpenFOAM/matrices/SquareMatrix/SquareMatrixI.H index a7371a6a2e..d3ee1cd6bf 100644 --- a/src/OpenFOAM/matrices/SquareMatrix/SquareMatrixI.H +++ b/src/OpenFOAM/matrices/SquareMatrix/SquareMatrixI.H @@ -53,10 +53,24 @@ inline Foam::SquareMatrix::SquareMatrix(const label m, const label n) } template -inline Foam::SquareMatrix::SquareMatrix(const label n, const Type& t) +inline Foam::SquareMatrix::SquareMatrix +( + const label m, + const label n, + const Type& t +) : - Matrix, Type>(n, t) -{} + Matrix, Type>(m, n, t) +{ + if (m != n) + { + FatalErrorIn + ( + "SquareMatrix::SquareMatrix" + "(const label m, const label n, const Type&)" + ) << "m != n for constructing a square matrix" << exit(FatalError); + } +} template inline Foam::SquareMatrix::SquareMatrix(Istream& is) From 4c159d306f8de8bdc22dd27ad2aa810b0ff7bb4b Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Tue, 30 Sep 2008 19:08:00 +0200 Subject: [PATCH 4/7] use -f option wherever wmakeLnInclude is explicitly called in Allwmake scripts --- src/Allwmake | 2 +- src/turbulenceModels/LES/Allwmake | 3 ++- src/turbulenceModels/LES/compressible/Make/options | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/Allwmake b/src/Allwmake index 2c532a41aa..57eb012eff 100755 --- a/src/Allwmake +++ b/src/Allwmake @@ -2,7 +2,7 @@ cd ${0%/*} || exit 1 # run from this directory set -x -( cd OpenFOAM && wmakeLnInclude . ) +( cd OpenFOAM && wmakeLnInclude -f . ) ( cd Pstream && ./Allwmake ) wmake libo OSspecific/$WM_OS diff --git a/src/turbulenceModels/LES/Allwmake b/src/turbulenceModels/LES/Allwmake index bd99dd1f4e..a2521d21f0 100755 --- a/src/turbulenceModels/LES/Allwmake +++ b/src/turbulenceModels/LES/Allwmake @@ -2,8 +2,9 @@ cd ${0%/*} || exit 1 # run from this directory set -x +wmakeLnInclude -f incompressible + wmake libso LESfilters -wmakeLnInclude incompressible wmake libso LESdeltas wmake libso incompressible wmake libso compressible diff --git a/src/turbulenceModels/LES/compressible/Make/options b/src/turbulenceModels/LES/compressible/Make/options index 9f0da00e30..c148a902e0 100644 --- a/src/turbulenceModels/LES/compressible/Make/options +++ b/src/turbulenceModels/LES/compressible/Make/options @@ -1,6 +1,6 @@ EXE_INC = \ -I$(LIB_SRC)/finiteVolume/lnInclude \ - -I$(LIB_SRC)/meshTools/lnInclude \ + -I$(LIB_SRC)/meshTools/lnInclude \ -I../LESdeltas/lnInclude \ -I../LESfilters/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude From f8823b684b123bd899cbbc7b54f67e644f1688ac Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Tue, 30 Sep 2008 19:32:13 +0200 Subject: [PATCH 5/7] wcleanAll - provide some information about the progress - move tutorial cleanup to the end in case the user wishes to abort the wcleanAll script - adjusted wcleanAlmostAll according, but don't know if it's really needed any more --- tutorials/Allclean | 10 +++++----- wmake/wcleanAll | 11 +++++++++-- wmake/wcleanAlmostAll | 18 ++++++++++++------ 3 files changed, 26 insertions(+), 13 deletions(-) diff --git a/tutorials/Allclean b/tutorials/Allclean index c72811f9fa..2a79bb7ec4 100755 --- a/tutorials/Allclean +++ b/tutorials/Allclean @@ -32,15 +32,15 @@ cd ${0%/*} || exit 1 # run from this directory -echo "Cleaning backup files" +echo "--------" +echo "Cleaning tutorials ..." +echo "Removing backup files" find . -type f \( -name "*~" -o -name "*.bak" \) -exec rm {} \; find . \( -name 'core' -o -name 'core.[1-9]*' \) -exec rm {} \; find . \( -name '*.pvs' -o -name '*.OpenFOAM' \) -exec rm {} \; -rm logs > /dev/null 2>&1 -rm testLoopReport > /dev/null 2>&1 - -echo "" +rm logs testLoopReport > /dev/null 2>&1 foamCleanTutorials cases +echo "--------" # ----------------------------------------------------------------- end-of-file diff --git a/wmake/wcleanAll b/wmake/wcleanAll index e7d3477cb7..e9b36bc375 100755 --- a/wmake/wcleanAll +++ b/wmake/wcleanAll @@ -39,20 +39,27 @@ for dir in lib applications/bin do + echo "Removing $dir/" [ -d $dir ] && rm -rf $dir/* done -( cd tutorials && ./Allclean ) - +echo "Removing *~ backup files" find . -name '*~' -exec rm {} \; + +echo "Removing .dep files" find . -name '*.dep' -exec rm {} \; +echo "Cleaning Make subdirectories" find `find . -depth \( -name "Make.[A-Za-z]*" -o -name "Make" \) -type d -print` -depth \( -type d ! -name "*Make.[A-Za-z]*" ! -name "*Make" \) -exec rm -rf {} \; +echo "Removing lnInclude and intermediate directories" find . -depth -type d \( -name lnInclude -o -name ii_files -o -name Templates.DB \) -exec rm -rf {} \; +echo "Removing misc files" find . \( -name exe -o -name log -o -name so_locations \) -exec rm {} \; # rm -rf src/mpich-${MPICH_VERSION}/platforms +( cd tutorials && ./Allclean ) + #------------------------------------------------------------------------------ diff --git a/wmake/wcleanAlmostAll b/wmake/wcleanAlmostAll index 515c3110d8..8bd5291600 100755 --- a/wmake/wcleanAlmostAll +++ b/wmake/wcleanAlmostAll @@ -24,11 +24,10 @@ # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # # Script -# wmakeAlmostAll +# wcleanAlmostAll # # Description -# script that searches all the directories below the current for the -# object file directories of all machines and then deletes them. +# as per wcleanAll, but retains "*~" backup files # #------------------------------------------------------------------------------ @@ -39,18 +38,25 @@ for dir in lib applications/bin do + echo "Removing $dir/" [ -d $dir ] && rm -rf $dir/* done -( cd tutorials && ./Allclean ) +echo "Retaining *~ backup files" +## find . -name '*~' -exec rm {} \; -# find . -name '*~' -exec rm {} \; +echo "Removing .dep files" find . -name '*.dep' -exec rm {} \; -find `find . -depth \( -name "Make[.A-Za-z]*" -o -name "Make" \) -type d -print` -depth \( -type d ! -name "*Make[.A-Za-z]*" ! -name "*Make" \) -exec rm -r {} \; +echo "Cleaning Make subdirectories" +find `find . -depth \( -name "Make.[A-Za-z]*" -o -name "Make" \) -type d -print` -depth \( -type d ! -name "*Make.[A-Za-z]*" ! -name "*Make" \) -exec rm -rf {} \; +echo "Removing lnInclude and intermediate directories" find . -depth -type d \( -name lnInclude -o -name ii_files -o -name Templates.DB \) -exec rm -rf {} \; +echo "Removing misc files" find . \( -name exe -o -name log -o -name so_locations \) -exec rm {} \; +( cd tutorials && ./Allclean ) + #------------------------------------------------------------------------------ From 736a04cf5fe3f655c2aea2a81b3565abc77ed85a Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Tue, 30 Sep 2008 19:42:09 +0200 Subject: [PATCH 6/7] new regex wrapper requires wmakeLnInclude OSspecific/.. before making Pstream --- src/Allwmake | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Allwmake b/src/Allwmake index 57eb012eff..341ee2ed6f 100755 --- a/src/Allwmake +++ b/src/Allwmake @@ -2,7 +2,8 @@ cd ${0%/*} || exit 1 # run from this directory set -x -( cd OpenFOAM && wmakeLnInclude -f . ) +wmakeLnInclude -f OpenFOAM +wmakeLnInclude -f OSspecific/$WM_OS ( cd Pstream && ./Allwmake ) wmake libo OSspecific/$WM_OS From 911c46169924f197bd98ecec0efa998a26f8bc5c Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Wed, 1 Oct 2008 12:20:42 +0200 Subject: [PATCH 7/7] triSurface Nastran reader: bugfix and enhancement - handle long format (GRID*), even when fields are not separated by spaces - added support for Hypermesh "$HMNAME COMP" extension --- .../triSurface/interfaces/NAS/readNAS.C | 156 ++++++++++-------- 1 file changed, 83 insertions(+), 73 deletions(-) diff --git a/src/triSurface/triSurface/interfaces/NAS/readNAS.C b/src/triSurface/triSurface/interfaces/NAS/readNAS.C index 2ec15c6706..1440c2d15d 100644 --- a/src/triSurface/triSurface/interfaces/NAS/readNAS.C +++ b/src/triSurface/triSurface/interfaces/NAS/readNAS.C @@ -23,10 +23,16 @@ License Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Description - Nastran surface reader. Does Ansa $ANSA_NAME extension to get name - of patch. Handles Ansa coordinates like: + Nastran surface reader. + - Uses the Ansa "$ANSA_NAME" or the Hypermesh "$HMNAME COMP" extensions + to obtain patch names. + - Handles Nastran short and long formats, but not free format. + - Properly handles the Nastran compact floating point notation: \n + @verbatim GRID 28 10.20269-.030265-2.358-8 + @endverbatim + \*---------------------------------------------------------------------------*/ @@ -49,13 +55,13 @@ static scalar parseNASCoord(const string& s) if (expSign != string::npos && expSign > 0 && !isspace(s[expSign-1])) { scalar mantissa = readScalar(IStringStream(s.substr(0, expSign))()); - scalar exp = readScalar(IStringStream(s.substr(expSign+1))()); + scalar exponent = readScalar(IStringStream(s.substr(expSign+1))()); if (s[expSign] == '-') { - exp = -exp; + exponent = -exponent; } - return mantissa*pow(10, exp); + return mantissa*pow(10, exponent); } else { @@ -64,14 +70,14 @@ static scalar parseNASCoord(const string& s) } -bool triSurface::readNAS(const fileName& OBJfileName) +bool triSurface::readNAS(const fileName& fName) { - IFstream OBJfile(OBJfileName); + IFstream is(fName); - if (!OBJfile.good()) + if (!is.good()) { FatalErrorIn("triSurface::readNAS(const fileName&)") - << "Cannot read file " << OBJfileName + << "Cannot read file " << fName << exit(FatalError); } @@ -90,17 +96,17 @@ bool triSurface::readNAS(const fileName& OBJfileName) // Ansa tags. Denoted by $ANSA_NAME. These will appear just before the // first use of a type. We read them and store the pshell types which // are used to name the patches. - label ansaID = -1; + label ansaId = -1; word ansaType; string ansaName; - // Done warnings per unrecognized command + // A single warning per unrecognized command HashSet unhandledCmd; - while (OBJfile.good()) + while (is.good()) { string line; - OBJfile.getLine(line); + is.getLine(line); // Ansa extension if (line.substr(0, 10) == "$ANSA_NAME") @@ -116,14 +122,14 @@ bool triSurface::readNAS(const fileName& OBJfileName) && sem2 != string::npos ) { - ansaID = readLabel + ansaId = readLabel ( IStringStream(line.substr(sem0+1, sem1-sem0-1))() ); ansaType = line.substr(sem1+1, sem2-sem1-1); string nameString; - OBJfile.getLine(ansaName); + is.getLine(ansaName); if (ansaName[ansaName.size()-1] == '\r') { ansaName = ansaName.substr(1, ansaName.size()-2); @@ -132,13 +138,37 @@ bool triSurface::readNAS(const fileName& OBJfileName) { ansaName = ansaName.substr(1, ansaName.size()-1); } - //Pout<< "ANSA tag for NastranID:" << ansaID - // << " of type " << ansaType - // << " name " << ansaName << endl; + + // Info<< "ANSA tag for NastranID:" << ansaId + // << " of type " << ansaType + // << " name " << ansaName << endl; } } + // Hypermesh extension + // $HMNAME COMP 1"partName" + if + ( + line.substr(0, 12) == "$HMNAME COMP" + && line.find ('"') != string::npos + ) + { + label groupId = readLabel + ( + IStringStream(line.substr(16, 16))() + ); + + IStringStream lineStream(line.substr(32)); + + string rawName; + lineStream >> rawName; + + groupToName.insert(groupId, string::validate(rawName)); + Info<< "group " << groupId << " => " << rawName << endl; + } + + if (line.size() == 0 || line[0] == '$') { // Skip empty or comment @@ -153,7 +183,7 @@ bool triSurface::readNAS(const fileName& OBJfileName) while (true) { string buf; - OBJfile.getLine(buf); + is.getLine(buf); if (buf.size() > 72 && buf[72]=='+') { @@ -174,26 +204,21 @@ bool triSurface::readNAS(const fileName& OBJfileName) if (cmd == "CTRIA3") { - //label index, group, a, b, c; - //lineStream >> index >> group >> a >> b >> c; - label group = readLabel(IStringStream(line.substr(16,8))()); + label groupId = readLabel(IStringStream(line.substr(16,8))()); label a = readLabel(IStringStream(line.substr(24,8))()); label b = readLabel(IStringStream(line.substr(32,8))()); label c = readLabel(IStringStream(line.substr(40,8))()); // Convert group into patch - Map