nastranWriter Class Reference

A surface writer for the Nastran file format - both surface mesh and fields. More...

Inheritance diagram for nastranWriter:
[legend]
Collaboration diagram for nastranWriter:
[legend]

Public Types

using fieldFormat = Foam::fileFormats::NASCore::fieldFormat
 File field formats. More...
 
using loadFormat = Foam::fileFormats::NASCore::loadFormat
 Output load format. More...
 

Public Member Functions

 TypeNameNoDebug ("nastran")
 Declare type-name, virtual type (with debug switch) More...
 
 nastranWriter ()
 Default construct. Default SHORT format. More...
 
 nastranWriter (const dictionary &options)
 Construct with some output options. Default LONG format. More...
 
 nastranWriter (const meshedSurf &surf, const fileName &outputPath, bool parallel=Pstream::parRun(), const dictionary &options=dictionary())
 Construct from components. More...
 
 nastranWriter (const pointField &points, const faceList &faces, const fileName &outputPath, bool parallel=Pstream::parRun(), const dictionary &options=dictionary())
 Construct from components. More...
 
virtual ~nastranWriter ()=default
 Destructor. More...
 
virtual bool usesFaceIds () const
 Format uses faceIds as part of its output. More...
 
virtual fileName write ()
 Write surface geometry to file. More...
 
 declareSurfaceWriterWriteMethod (label)
 
 declareSurfaceWriterWriteMethod (scalar)
 
 declareSurfaceWriterWriteMethod (vector)
 
 declareSurfaceWriterWriteMethod (sphericalTensor)
 
 declareSurfaceWriterWriteMethod (symmTensor)
 
 declareSurfaceWriterWriteMethod (tensor)
 
template<class Type >
Foam::OstreamwriteValue (Ostream &os, const Type &value) const
 
template<class Type >
Foam::OstreamwriteFaceValue (Ostream &os, const loadFormat format, const Type &value, const label elemId) const
 
- Public Member Functions inherited from surfaceWriter
 TypeName ("surfaceWriter")
 Runtime type information. More...
 
 declareRunTimeSelectionTable (autoPtr, surfaceWriter, word,(),())
 
 declareRunTimeSelectionTable (autoPtr, surfaceWriter, wordDict,(const dictionary &writeOpts),(writeOpts))
 
 surfaceWriter ()
 Default construct. More...
 
 surfaceWriter (const dictionary &options)
 Default construct with specified options. More...
 
virtual ~surfaceWriter ()
 Destructor. Calls close() More...
 
virtual bool enabled () const
 
virtual bool separateGeometry () const
 True if the surface format requires geometry in a separate file. More...
 
virtual bool usesFaceIds () const
 True if the writer format uses faceIds as part of its output. More...
 
virtual bool needsUpdate () const
 Does the writer need an update (eg, lagging behind surface changes) More...
 
virtual bool wroteData () const
 Geometry or fields written since the last open? More...
 
virtual bool expire ()
 
virtual void clear ()
 
virtual void setSurface (const meshedSurf &surf, bool parallel)
 
virtual void setSurface (const pointField &points, const faceList &faces, bool parallel)
 
virtual void setSurface (const meshedSurf &surf)
 
virtual void setSurface (const pointField &points, const faceList &faces)
 
bool is_open () const noexcept
 Test if outputPath has been set. More...
 
bool hasSurface () const
 Writer is associated with a surface. More...
 
bool empty () const
 The surface to write is empty if the global number of faces is zero. More...
 
label size () const
 The global number of faces for the associated surface. More...
 
label nFields () const noexcept
 The number of expected output fields. More...
 
label nFields (const label n) noexcept
 Set the number of expected output fields. More...
 
bool isPointData () const noexcept
 Are the field data to be treated as point data? More...
 
bool isPointData (const bool on) noexcept
 Set handling of field data to face/point data. More...
 
bool useTimeDir () const noexcept
 Should a time directory be spliced into the output path? More...
 
bool useTimeDir (const bool on) noexcept
 Enable/disable use of spliced output path. More...
 
bool verbose () const noexcept
 Get output verbosity. More...
 
bool verbose (const bool on) noexcept
 Enable/disable verbose output. More...
 
scalar mergeDim () const noexcept
 The current value of the point merge dimension (metre) More...
 
scalar mergeDim (const scalar dist) noexcept
 Change the point merge dimension (metre) More...
 
scalar scale () const noexcept
 The current value of the geometry scaling. More...
 
scalar scale (const scalar factor) noexcept
 Change the geometry scaling. More...
 
const coordSystem::cartesiantransform () const noexcept
 The current (cartesian) coordinate system transformation. More...
 
bool hasTime () const
 True if there is a known time. More...
 
const wordtimeName () const
 The current time value/name. More...
 
scalar timeValue () const
 The current time value/name. More...
 
void setTime (const instant &inst)
 Set the current time. More...
 
void setTime (scalar timeValue)
 Set current time from timeValue, auto generating the name. More...
 
void setTime (scalar timeValue, const word &timeName)
 Set current time from timeValue and timeName. More...
 
void unsetTime ()
 Clear the current time. More...
 
virtual void beginTime (const Time &t)
 Begin a time-step. More...
 
virtual void beginTime (const instant &inst)
 Begin a time-step. More...
 
virtual void endTime ()
 End a time-step. More...
 
virtual void open (const fileName &outputPath)
 Open for output on specified path, using existing surface. More...
 
virtual void open (const pointField &points, const faceList &faces, const fileName &outputPath, bool parallel)
 Open from components. More...
 
virtual void open (const meshedSurf &surf, const fileName &outputPath, bool parallel)
 Open from components. More...
 
virtual void open (const pointField &points, const faceList &faces, const fileName &outputPath)
 Open from components, with the current parallel/serial treatment. More...
 
virtual void open (const meshedSurf &surf, const fileName &outputPath)
 Open from components, with the current parallel/serial treatment. More...
 
virtual void close ()
 Finish output, performing any necessary cleanup. More...
 
virtual fileName write ()=0
 Write separate surface geometry to file. More...
 
virtual fileName write (const word &fieldName, const Field< label > &values)=0
 Write field of label (per face or vertex) More...
 
virtual fileName write (const word &fieldName, const Field< scalar > &values)=0
 Write field of scalar (per face or vertex) More...
 
virtual fileName write (const word &fieldName, const Field< vector > &values)=0
 Write field of vector (per face or vertex) More...
 
virtual fileName write (const word &fieldName, const Field< sphericalTensor > &values)=0
 Write field of sphericalTensor (per face or vertex) More...
 
virtual fileName write (const word &fieldName, const Field< symmTensor > &values)=0
 Write field of symmTensor (per face or vertex) More...
 
virtual fileName write (const word &fieldName, const Field< tensor > &values)=0
 Write field of tensor (per face or vertex) More...
 
virtual InfoProxy< surfaceWriterinfo () const
 Return info proxy. More...
 
template<class Type >
Foam::tmp< Foam::Field< Type > > mergeFieldTemplate (const Field< Type > &fld) const
 
template<class Type >
Foam::tmp< Foam::Field< Type > > adjustFieldTemplate (const word &fieldName, const tmp< Field< Type > > &tfield) const
 

Additional Inherited Members

- Static Public Member Functions inherited from surfaceWriter
static bool supportedType (const word &writeType)
 True if New is likely to succeed for this writeType. More...
 
static autoPtr< surfaceWriterNew (const word &writeType)
 Return a reference to the selected surfaceWriter. More...
 
static autoPtr< surfaceWriterNew (const word &writeType, const dictionary &writeOptions)
 Return a reference to the selected surfaceWriter. More...
 
- Static Public Attributes inherited from surfaceWriter
static scalar defaultMergeDim = 1e-8
 The default merge dimension (1e-8) More...
 
- Protected Member Functions inherited from surfaceWriter
void checkOpen () const
 Verify that the outputPath_ has been set or FatalError. More...
 
virtual bool merge () const
 
const meshedSurfsurface () const
 
const meshedSurfRefadjustSurface () const
 
template<class Type >
tmp< Field< Type > > mergeFieldTemplate (const Field< Type > &fld) const
 Gather (merge) fields with renumbering and shrinking for point data. More...
 
template<class Type >
tmp< Field< Type > > adjustFieldTemplate (const word &fieldName, const tmp< Field< Type > > &tfield) const
 Apply refLevel and fieldScaling. More...
 
tmp< Field< label > > mergeField (const Field< label > &fld) const
 
tmp< Field< label > > adjustField (const word &fieldName, const tmp< Field< label > > &tfield) const
 
tmp< Field< scalar > > mergeField (const Field< scalar > &fld) const
 
tmp< Field< scalar > > adjustField (const word &fieldName, const tmp< Field< scalar > > &tfield) const
 
tmp< Field< vector > > mergeField (const Field< vector > &fld) const
 
tmp< Field< vector > > adjustField (const word &fieldName, const tmp< Field< vector > > &tfield) const
 
tmp< Field< sphericalTensor > > mergeField (const Field< sphericalTensor > &fld) const
 
tmp< Field< sphericalTensor > > adjustField (const word &fieldName, const tmp< Field< sphericalTensor > > &tfield) const
 
tmp< Field< symmTensor > > mergeField (const Field< symmTensor > &fld) const
 
tmp< Field< symmTensor > > adjustField (const word &fieldName, const tmp< Field< symmTensor > > &tfield) const
 
tmp< Field< tensor > > mergeField (const Field< tensor > &fld) const
 
tmp< Field< tensor > > adjustField (const word &fieldName, const tmp< Field< tensor > > &tfield) const
 
template<class Type >
fileName writeTemplate (const word &fieldName, const Field< Type > &localValues)
 Dummy templated write operation. More...
 
- Protected Attributes inherited from surfaceWriter
meshedSurfRef surf_
 Reference to surface or surface components. More...
 
mergedSurf mergedSurf_
 Surface after merging (parallel) More...
 
meshedSurfRef adjustedSurf_
 The surface after point coordinate transforms and scaling. More...
 
scalar mergeDim_
 Dimension for merging. More...
 
scalar geometryScale_
 Output geometry scaling after rotate/translate. More...
 
coordSystem::cartesian geometryTransform_
 Local coordinate system transformation. More...
 
bool upToDate_
 The topology/surface is up-to-date? More...
 
bool wroteGeom_
 Track if geometry has been written since the last open. More...
 
bool parallel_
 Writing in parallel (via master) More...
 
bool useTimeDir_
 Insert additional time sub-directory in the output path. More...
 
bool isPointData_
 Is point vs cell data. More...
 
bool verbose_
 Additional output verbosity. More...
 
label nFields_
 The number of fields. More...
 
instant currTime_
 The current time value/name. More...
 
fileName outputPath_
 The full output directory and file (surface) name. More...
 
dictionary fieldLevel_
 Field level to remove (on output) More...
 
dictionary fieldScale_
 Field scaling (on output) More...
 

Detailed Description

A surface writer for the Nastran file format - both surface mesh and fields.

The formatOptions for nastran:

Property Description Reqd Default
fields Field pairs for PLOAD2/PLOAD4 yes
format Nastran format (short/long/free) no long
scale Output geometry scaling no 1
transform Output coordinate transform no
fieldLevel Subtract field level before scaling no empty dict
fieldScale Output field scaling no empty dict
commonGeometry use separate geometry files no false

For example,

    formatOptions
    {
        nastran
        {
            // OpenFOAM field name to NASTRAN load types
            fields
            (
                (pMean  PLOAD2)
                (p      PLOAD4)
            );

            format  free;     // format type

            scale   1000;     // [m] -> [mm]
            fieldScale
            {
               "p.*"   0.01;  // [Pa] -> [mbar]
            }
        }
    }

file locations

The rootdir normally corresponds to something like postProcessing/<name>

Geometry

    rootdir
    `-- <time>
        |-- surfaceName0.{nas}
        `-- surfaceName1.{nas}

Fields

    rootdir
    `-- <time>
        `-- field0
        |   |-- surfaceName0.{bdf}
        |   `-- surfaceName1.{bdf}
        `-- field1
            |-- surfaceName0.{bdf}
            `-- surfaceName1.{bdf}
Note
Output variable scaling does not apply to integer types such as Ids. Field pairs default to PLOAD2 for scalars and PLOAD4 for vectors etc.
Source files

Definition at line 161 of file nastranSurfaceWriter.H.

Member Typedef Documentation

◆ fieldFormat

File field formats.

Definition at line 168 of file nastranSurfaceWriter.H.

◆ loadFormat

Output load format.

Definition at line 171 of file nastranSurfaceWriter.H.

Constructor & Destructor Documentation

◆ nastranWriter() [1/4]

Default construct. Default SHORT format.

Definition at line 307 of file nastranSurfaceWriter.C.

◆ nastranWriter() [2/4]

nastranWriter ( const dictionary options)
explicit

Construct with some output options. Default LONG format.

Definition at line 322 of file nastranSurfaceWriter.C.

References HashTable< T, Key, Hash >::insert(), NASCore::loadFormatNames, and dictionary::readEntry().

Here is the call graph for this function:

◆ nastranWriter() [3/4]

nastranWriter ( const meshedSurf surf,
const fileName outputPath,
bool  parallel = Pstream::parRun(),
const dictionary options = dictionary() 
)

Construct from components.

Definition at line 361 of file nastranSurfaceWriter.C.

References surfaceWriter::open().

Here is the call graph for this function:

◆ nastranWriter() [4/4]

nastranWriter ( const pointField points,
const faceList faces,
const fileName outputPath,
bool  parallel = Pstream::parRun(),
const dictionary options = dictionary() 
)

Construct from components.

Definition at line 375 of file nastranSurfaceWriter.C.

References surfaceWriter::open(), and points.

Here is the call graph for this function:

◆ ~nastranWriter()

virtual ~nastranWriter ( )
virtualdefault

Destructor.

Member Function Documentation

◆ TypeNameNoDebug()

TypeNameNoDebug ( "nastran"  )

Declare type-name, virtual type (with debug switch)

◆ usesFaceIds()

virtual bool usesFaceIds ( ) const
inlinevirtual

Format uses faceIds as part of its output.

Reimplemented from surfaceWriter.

Definition at line 296 of file nastranSurfaceWriter.H.

◆ write()

Foam::fileName write ( )
virtual

Write surface geometry to file.

Implements surfaceWriter.

Definition at line 392 of file nastranSurfaceWriter.C.

References Foam::endl(), fileName::ext(), Foam::Info, Foam::isDir(), splitCell::master(), Foam::mkDir(), Foam::nl, os(), fileName::path(), NASCore::setPrecision(), timeName, and writeGeometry().

Here is the call graph for this function:

◆ declareSurfaceWriterWriteMethod() [1/6]

declareSurfaceWriterWriteMethod ( label  )

◆ declareSurfaceWriterWriteMethod() [2/6]

declareSurfaceWriterWriteMethod ( scalar  )

◆ declareSurfaceWriterWriteMethod() [3/6]

declareSurfaceWriterWriteMethod ( vector  )

◆ declareSurfaceWriterWriteMethod() [4/6]

declareSurfaceWriterWriteMethod ( sphericalTensor  )

◆ declareSurfaceWriterWriteMethod() [5/6]

declareSurfaceWriterWriteMethod ( symmTensor  )

◆ declareSurfaceWriterWriteMethod() [6/6]

declareSurfaceWriterWriteMethod ( tensor  )

◆ writeValue()

Foam::Ostream & writeValue ( Ostream os,
const Type &  value 
) const

Definition at line 37 of file nastranSurfaceWriterImpl.C.

References os(), and Foam::setw().

Here is the call graph for this function:

◆ writeFaceValue()

Foam::Ostream & writeFaceValue ( Ostream os,
const loadFormat  format,
const Type &  value,
const label  elemId 
) const

Definition at line 69 of file nastranSurfaceWriterImpl.C.

References Foam::component(), format(), NASCore::loadFormatNames, Foam::mag(), Foam::nl, and os().

Here is the call graph for this function:

The documentation for this class was generated from the following files: