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()); }