예제 #1
0
        public void MapList()
        {
            var x = new FvSchemesData(true);
            var y = new VSchemes();

            x.ddtSchemes.Add(new TimeScheme()
            {
                function  = "default1",
                isDefault = false,
                psi       = 128,
                scheme    = "abcd",
                type      = TimeSchemeType.CrankNicholson
            });
            x.ddtSchemes.Add(new TimeScheme()
            {
                function  = "default2",
                isDefault = false,
                psi       = 256,
                scheme    = "efgh",
                type      = TimeSchemeType.Euler
            });

            /*
             * var mapper = ObjectMapperManager.DefaultInstance.GetMapper<TimeScheme, VTimeScheme>();
             * //y.ddtSchemes = x.ddtSchemes.Select(mapper.Map);
             * foreach (var a in x.ddtSchemes)
             * {
             *  y.ddtSchemes.Add(mapper.Map(a));
             * }
             */
            ListMapper <TimeScheme, VTimeScheme>(x.ddtSchemes, y.ddtSchemes);
            x.divSchemes.Clear();
        }
예제 #2
0
        public Action GetSaveCommand()
        {
            return(() =>
            {
                var path = _fileHandler.GetPath(_vProject.ProjectDir);
                var d = new FvSchemesData(true);

                foreach (var x in schemes.cInterpolation)
                {
                    d.interpolationSchemes.Add(new InterpolationScheme()
                    {
                        scheme = x.Scheme,
                        use_default = (x.Scheme == "default"),
                        function = x.Function,
                        interpolation = x.InterpolationType,
                        view = x.BoundView,
                        lower_limit = (x.BoundView != BoundView.None) ? x.LowerLimit : 0,
                        upper_limit = (x.BoundView != BoundView.None) ? x.UpperLimit : 0,
                        flux = x.Flux,
                        psi = x.Psi
                    });
                }
                foreach (var x in schemes.cSnGrad)
                {
                    d.snGradSchemes.Add(new SurfaceNormalGradientScheme()
                    {
                        scheme = x.Scheme,
                        use_default = (x.Scheme == "default"),
                        function = x.Function,
                        type = x.SurfaceNoramGradientType,
                        psi = x.Psi
                    });
                }
                foreach (var x in schemes.cGradient)
                {
                    d.gradSchemes.Add(new GradientScheme()
                    {
                        scheme = x.Scheme,
                        use_default = (x.Scheme == "default"),
                        function = x.Function,
                        interpolation = x.InterpolationType,
                        discretisation = x.DiscretisationType,
                        limited = x.LimitedType,
                        psi = x.Psi
                    });
                }
                foreach (var x in schemes.cDivergence)
                {
                    d.divSchemes.Add(new DivergenceScheme()
                    {
                        scheme = x.Scheme,
                        use_default = (x.Scheme == "default"),
                        function = x.Function,
                        discretisation = x.DiscretisationType,
                        interpolation = x.InterpolationType,
                        view = x.BoundView,
                        lower_limit = (x.BoundView != BoundView.None) ? x.LowerLimit : 0,
                        upper_limit = (x.BoundView != BoundView.None) ? x.UpperLimit : 0,
                        psi = x.Psi
                    });
                }
                foreach (var x in schemes.cLaplacian)
                {
                    d.laplacianSchemes.Add(new LaplacianScheme()
                    {
                        scheme = x.Scheme,
                        use_default = (x.Scheme == "default"),
                        function = x.Function,
                        interpolation = x.InterpolationType,
                        discretisation = x.DiscretisationType,
                        snGradScheme = x.SurfaceNoramGradientType,
                        psi = x.Psi
                    });
                }
                foreach (var x in schemes.cTime)
                {
                    d.ddtSchemes.Add(new TimeScheme()
                    {
                        scheme = x.Scheme,
                        use_default = (x.Scheme == "default"),
                        function = x.Function,
                        type = x.TimeSchemeType,
                        psi = x.Psi
                    });
                }
                foreach (var x in schemes.cFlux)
                {
                    d.fluxCalculation.Add(new FluxCalculation()
                    {
                        flux = x.Flux,
                        enable = x.Enable
                    });
                }
                _fileHandler.Write(path, d);
                schemes.AcceptChanges();
            });
        }