Completing the CGNS Solution Description Dr. Ken Alabi TTC Technologies Inc. New York.
Outline • Convergence Data • Flow Equations Description • Reference States • Dimensional information and units • User Defined Data • Examples
Convergence Data • Flow solver convergence history information is described by the ConvergenceHistory_t structure. This structure contains the number of iterations and a list of data arrays containing convergence information at each iteration
Convergence Data ConvergenceHistory_t := { Descriptor_t NormDefinitions ; (o) List( Descriptor_t Descriptor1 ... DescriptorN ) ; (o) int Iterations ; (r) List( DataArray_t<DataType, 1, Iterations> DataArray1 ... DataArrayN ) ; (o) DataClass_t DataClass ; (o) DimensionalUnits_t DimensionalUnits ; (o) List( UserDefinedData_t UserDefinedData1 ... UserDefinedDataN ) ; (o) } ; 1. Default names for the Descriptor_t, DataArray_t, and UserDefinedData_t lists are as shown; users may choose other legitimate names. Legitimate names must be unique within a given instance of ConvergenceHistory_t and shall not include the names DataClass, DimensionalUnits, or NormDefinitions. 2. Iterations is the only required field for ConvergenceHistory_t. 3. Iterations identifies the number of iterations for which convergence information is recorded. This value is also passed into each of the DataArray_t entities, defining the length of the data arrays. 4. DataClass defines the default for the class of data contained in the convergence history. If any convergence- history data is dimensional, DimensionalUnits may be used to describe the system of dimensional units employed. If present, these two entities take precedence of all corresponding entities at higher levels of the hierarchy, following the standard precedence rules. 5. The UserDefinedData_t data structure allows arbitrary user-defined data to be stored in Descriptor_t and DataArray_t children without the restrictions or implicit meanings imposed on these node types at other node locations.
Flow Equations Description • The following types of governing equations can be described in a CGNS data file: Governing Equation Type SID Structure Flow Equation Set Structure FlowEquationSet_t Governing Equations Structure GoverningEquations_t Thermodynamic Gas Model Structure GasModel_t Molecular Viscosity Model Structure ViscosityModel_t Thermal Conductivity Model Structure ThermalConductivityModel_t Turbulence Structure Thermal Relaxation Model Structure ThermalRelaxationModel_t Chemical Kinetics Model Structure ChemicalKineticsModel_t Electromagnetics Structure
Flow Equations (cont’d) FlowEquationSet_t< int CellDimension > := { List( Descriptor_t Descriptor1 ... DescriptorN ) ; (o) int EquationDimension ; (o) GoverningEquations_t<CellDimension> GoverningEquations ; (o) GasModel_t GasModel ; (o) ViscosityModel_t ViscosityModel ; (o) ThermalConductivityModel_t ThermalConductivityModel ; (o) TurbulenceClosure_t TurbulenceClosure ; (o) TurbulenceModel_t<CellDimension> TurbulenceModel ; (o) ThermalRelaxationModel_t ThermalRelaxationModel ; (o) ChemicalKineticsModel_t ChemicalKineticsModel ; (o) EMElectricFieldModel_t EMElectricFieldModel ; (o) EMMagneticFieldModel_t EMMagneticFieldModel ; (o) EMConductivityModel_t EMConductivityModel ; (o) DataClass_t DataClass ; (o) DimensionalUnits_t DimensionalUnits ; (o) List( UserDefinedData_t UserDefinedData1 ... UserDefinedDataN ) ; (o) } ;
Flow Equations (cont’d) GoverningEquationsType_t := Enumeration( Null, FullPotential, Euler, NSLaminar, NSTurbulent, NSLaminarIncompressible, NSTurbulentIncompressible, UserDefined ) ; GoverningEquations_t< int CellDimension > := { List( Descriptor_t Descriptor1 ... DescriptorN ) ; (o) GoverningEquationsType_t GoverningEquationsType ; (r) int[CellDimension*(CellDimension + 1)/2] DiffusionModel ; (o) List( UserDefinedData_t UserDefinedData1 ... UserDefinedDataN ) ; (o) } ;
Flow Equations (cont’d) GasModelType_t := Enumeration( Null, Ideal, VanderWaals, CaloricallyPerfect, ThermallyPerfect, ConstantDensity, RedlichKwong, UserDefined ) ; GasModel_t := { List( Descriptor_t Descriptor1 ... DescriptorN ) ; (o) GasModelType_t GasModelType ; (r) List( DataArray_t<DataType, 1, 1> DataArray1 ... DataArrayN ) ; (o) DataClass_t DataClass ; (o) DimensionalUnits_t DimensionalUnits ; (o) List( UserDefinedData_t UserDefinedData1 ... UserDefinedDataN ) ; (o) } ;
Flow Equations (cont’d) ViscosityModelType_t := Enumeration( Null, Constant, PowerLaw, SutherlandLaw, UserDefined ) ; ViscosityModel_t := { List( Descriptor_t Descriptor1 ... DescriptorN ) ; (o) ViscosityModelType_t ViscosityModelType ; (r) List( DataArray_t<DataType, 1, 1> DataArray1 ... DataArrayN ) ; (o) DataClass_t DataClass ; (o) DimensionalUnits_t DimensionalUnits ; (o) List( UserDefinedData_t UserDefinedData1 ... UserDefinedDataN ) ; (o) } ;
Flow Equations (cont’d) ThermalConductivityModelType_t := Enumeration( Null, ConstantPrandtl, PowerLaw, SutherlandLaw, UserDefined ) ; ThermalConductivityModel_t := { List( Descriptor_t Descriptor1 ... DescriptorN ) ; (o) ThermalConductivityModelType_t ThermalConductivityModelType ; (r) List( DataArray_t<DataType, 1, 1> DataArray1 ... DataArrayN ) ; (o) DataClass_t DataClass ; (o) DimensionalUnits_t DimensionalUnits ; (o) List( UserDefinedData_t UserDefinedData1 ... UserDefinedDataN ) ; (o) } ;
Flow Equations (cont’d) TurbulenceClosureType_t := Enumeration( Null, EddyViscosity, ReynoldsStress, ReynoldsStressAlgebraic, UserDefined ) ; TurbulenceClosure_t := { List( Descriptor_t Descriptor1 ... DescriptorN ) ; (o) TurbulenceClosureType_t TurbulenceClosureType ; (r) List( DataArray_t<DataType, 1, 1> DataArray1 ... DataArrayN ) ; (o) DataClass_t DataClass ; (o) DimensionalUnits_t DimensionalUnits ; (o) List( UserDefinedData_t UserDefinedData1 ... UserDefinedDataN ) ; (o) } ;
Flow Equations (cont’d) TurbulenceModelType_t := Enumeration( Null, Algebraic_BaldwinLomax, Algebraic_CebeciSmith, HalfEquation_JohnsonKing, OneEquation_BaldwinBarth, OneEquation_SpalartAllmaras, TwoEquation_JonesLaunder, TwoEquation_MenterSST, TwoEquation_Wilcox, UserDefined ) ; TurbulenceModel_t< int CellDimension > := { List( Descriptor_t Descriptor1 ... DescriptorN ) ; (o) TurbulenceModelType_t TurbulenceModelType ; (r) List( DataArray_t<DataType, 1, 1> DataArray1 ... DataArrayN ) ; (o) int[CellDimension*(CellDimension + 1)/2] DiffusionModel ; (o) DataClass_t DataClass ; (o) DimensionalUnits_t DimensionalUnits ; (o) List( UserDefinedData_t UserDefinedData1 ... UserDefinedDataN ) ; (o) } ;
Flow Equations (cont’d) TurbulenceModelType_t := Enumeration( Null, Algebraic_BaldwinLomax, Algebraic_CebeciSmith, HalfEquation_JohnsonKing, OneEquation_BaldwinBarth, OneEquation_SpalartAllmaras, TwoEquation_JonesLaunder, TwoEquation_MenterSST, TwoEquation_Wilcox, UserDefined ) ; TurbulenceModel_t< int CellDimension > := { List( Descriptor_t Descriptor1 ... DescriptorN ) ; (o) TurbulenceModelType_t TurbulenceModelType ; (r) List( DataArray_t<DataType, 1, 1> DataArray1 ... DataArrayN ) ; (o) int[CellDimension*(CellDimension + 1)/2] DiffusionModel ; (o) DataClass_t DataClass ; (o) DimensionalUnits_t DimensionalUnits ; (o) List( UserDefinedData_t UserDefinedData1 ... UserDefinedDataN ) ; (o) } ;
Recommend
More recommend