Пример #1
0
        public static string Setup(
            string inputJson,
            List <int> cpus,
            string method,
            string caseType,
            List <string> materials,
            string epwFile,
            string overrides = null
            )
        {
            var inputData = new Inputs().FromJson(inputJson);

            var materials_ = materials.Select(material => new RadianceMaterial().FromJson(material)).ToList();

            if (!File.Exists(epwFile) && (method == "three_phase" || method == "solar_radiation" || method == "mean_radiant_temperature"))
            {
                throw new FileNotFoundException($"EPW file: {epwFile} does not exist!");
            }

            var solution = new types.RadiationSolution
            {
                CPUs      = cpus,
                Method    = method,
                CaseType  = caseType,
                Materials = materials_,
                EPWFile   = epwFile,
                Overrides = overrides != null? new RadiationSolutionOverrides().FromJson(overrides): null,
            };

            inputData.RadiationSolution = solution;
            return(inputData.ToJson());
        }
        public static Task CreateRadianceTask(
            AuthTokens tokens,
            string url,
            Task parentTask,
            Task dependentOnTask,
            Project project,
            types.RadiationSolution solution,
            string caseDir,
            bool create
            )
        {
            var taskConfig = new Dictionary <string, object>
            {
                { "task_type", "radiance" },
                { "cmd", solution.Method },
                { "case_type", solution.CaseType },
                { "cpus", solution.CPUs },
                { "case_dir", caseDir },
                { "probes", solution.Probes },
            };

            if (solution.Overrides != null)
            {
                taskConfig.Add("overrides", solution.Overrides.ToDict());
            }

            if (!string.IsNullOrEmpty(solution.EPWFile))
            {
                taskConfig.Add("epw_file", Path.GetFileName(solution.EPWFile));
            }
            var createParams = new Dictionary <string, object>
            {
                {
                    "config", taskConfig
                }
            };
            var radianceTask = TaskViews.GetCreateOrUpdateTask(
                tokens,
                url,
                $"/api/task/",
                new Dictionary <string, object>
            {
                { "name", Utils.SnakeCaseToHumanCase(solution.Method) },
                { "parent", parentTask.UID },
                { "dependent_on", dependentOnTask.UID },
                { "project", project.UID }
            },
                createParams,
                create
                );

            if (radianceTask.ErrorMessages != null && radianceTask.ErrorMessages.Count > 0)
            {
                throw new Exception(radianceTask.ErrorMessages.First());
            }

            return(radianceTask);
        }
        public static Task CreateRadianceActionTask(
            AuthTokens tokens,
            string url,
            Task parentTask,
            Task probeTask,
            Project project,
            types.RadiationSolution solution,
            string caseDir,
            bool create
            )
        {
            var actionTaskQueryParams = new Dictionary <string, object>
            {
                { "name", "Actions" },
                { "parent", parentTask.UID },
                { "project", project.UID }
            };

            if (probeTask != null)
            {
                actionTaskQueryParams.Add("dependent_on", probeTask.UID);
            }

            var actionTaskConfig = new Dictionary <string, object>
            {
                { "task_type", "magpy" },
                { "cmd", "radiance.io.tasks.write_rad" },
                { "materials", solution.Materials.Select(material => material.ToDict()).ToList() },
                { "case_dir", caseDir },
                { "method", solution.Method },
            };

            if (solution.Overrides != null && solution.Overrides.ReinhartDivisions > 1)
            {
                actionTaskConfig.Add("reinhart_divisions", solution.Overrides.ReinhartDivisions);
            }

            // Tasks to Handle MagPy Celery Actions
            // First Action to create Mesh Files
            var actionTask = TaskViews.GetCreateOrUpdateTask(
                tokens,
                url,
                $"/api/task/",
                actionTaskQueryParams,
                new Dictionary <string, object>
            {
                {
                    "config", actionTaskConfig
                }
            },
                create
                );

            if (actionTask.ErrorMessages == null || actionTask.ErrorMessages.Count <= 0)
            {
                return(actionTask);
            }

            if (actionTask.ErrorMessages.First() == "No object found.")
            {
                return(null);
            }
            throw new Exception(actionTask.ErrorMessages.First());
        }