예제 #1
0
#pragma warning restore 649

        /// <summary>
        /// creates heat equation related fields
        /// </summary>
        public void CreateHeatFields()
        {
            int D = this.GridData.SpatialDimension;

            this.Temperature = new XDGField(new XDGBasis(this.LsTrk, this.Control.FieldOptions[VariableNames.Temperature].Degree), VariableNames.Temperature);
            base.RegisterField(this.Temperature);
            this.ResidualHeat = new XDGField(this.Temperature.Basis, "ResidualHeat");
            base.RegisterField(this.ResidualHeat);

            this.HeatFlux = new VectorField <XDGField>(D.ForLoop(d => new XDGField(new XDGBasis(this.LsTrk, this.Control.FieldOptions[VariableNames.HeatFluxVectorComponent(d)].Degree), VariableNames.HeatFluxVectorComponent(d))));
            base.RegisterField(this.HeatFlux);
            if (this.Control.conductMode != ConductivityInSpeciesBulk.ConductivityMode.SIP)
            {
                this.ResidualAuxHeatFlux = new VectorField <XDGField>(D.ForLoop(d => new XDGField(new XDGBasis(this.LsTrk, this.Control.FieldOptions[VariableNames.HeatFluxVectorComponent(d)].Degree), VariableNames.ResidualAuxHeatFluxVectorComponent(d))));
                base.RegisterField(this.ResidualAuxHeatFlux);
            }

            this.DisjoiningPressure = new SinglePhaseField(new Basis(this.GridData, this.Control.FieldOptions[VariableNames.Pressure].Degree), "DisjoiningPressure");
            if (this.Control.DisjoiningPressureFunc != null)
            {
                DisjoiningPressure.ProjectField(this.Control.DisjoiningPressureFunc);
            }
            base.RegisterField(this.DisjoiningPressure);
        }