def write_n2(configuration_file_path: str, n2_file_path: str = None, overwrite: bool = False): """ Write the N2 diagram of the problem in file n2.html :param configuration_file_path: :param n2_file_path: :param overwrite: """ if not n2_file_path: n2_file_path = pth.join(pth.dirname(configuration_file_path), "n2.html") n2_file_path = pth.abspath(n2_file_path) if not overwrite and pth.exists(n2_file_path): raise FastFileExistsError( "N2-diagram file %s not written because it already exists. " "Use overwrite=True to bypass." % n2_file_path, n2_file_path, ) make_parent_dir(n2_file_path) problem = FASTOADProblemConfigurator(configuration_file_path).get_problem() problem.setup() problem.final_setup() om.n2(problem, outfile=n2_file_path, show_browser=False) _LOGGER.info("N2 diagram written in %s", n2_file_path)
def write_xdsm( configuration_file_path: str, xdsm_file_path: str = None, overwrite: bool = False, depth: int = 2, wop_server_url=None, api_key=None, ): """ :param configuration_file_path: :param xdsm_file_path: :param overwrite: :param depth: :param wop_server_url: :param api_key: :return: """ if not xdsm_file_path: xdsm_file_path = pth.join(pth.dirname(configuration_file_path), "xdsm.html") xdsm_file_path = pth.abspath(xdsm_file_path) if not overwrite and pth.exists(xdsm_file_path): raise FastFileExistsError( "XDSM-diagram file %s not written because it already exists. " "Use overwrite=True to bypass." % xdsm_file_path, xdsm_file_path, ) make_parent_dir(xdsm_file_path) problem = FASTOADProblemConfigurator(configuration_file_path).get_problem() problem.setup() problem.final_setup() wop = WhatsOpt(url=wop_server_url, login=False) try: ok = wop.login(api_key=api_key, echo=False) except requests.exceptions.ConnectionError: if not wop_server_url and wop.url == PROD_URL: used_url = wop.url # If connection failed while attempting to reach the wop default URL, # that is the internal ONERA server, try with the external server try: wop = WhatsOpt(url=DEFAULT_WOP_URL) ok = wop.login(api_key=api_key, echo=False) except requests.exceptions.ConnectionError: _LOGGER.warning("Failed to connect to %s and %s", used_url, DEFAULT_WOP_URL) return else: _LOGGER.warning("Failed to connect to %s", wop.url) return if ok: xdsm = wop.push_mda(problem, { "--xdsm": True, "--name": None, "--dry-run": False, "--depth": depth }) generate_xdsm_html(xdsm, xdsm_file_path) else: wop.logout() _LOGGER.warning("Could not login to %s", wop.url)