{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/adjoint-method-and-inverse-design-for","title":"Adjoint method and inverse design for nonlinear nanophotonic devices","arxiv_id":"1811.01255","date":"2018-11-03","proceeding":null,"authors":["Tyler W. Hughes","Momchil Minkov","Ian A. D. Williamson","Shanhui Fan"],"abstract":"The development of inverse design, where computational optimization techniques are used to design devices based on certain specifications, has led to the discovery of many compact, non-intuitive structures with superior performance. Among various methods, large-scale, gradient-based optimization techniques have been one of the most important ways to design a structure containing a vast number of degrees of freedom. These techniques are made possible by the adjoint method, in which the gradient of an objective function with respect to all design degrees of freedom can be computed using only two full-field simulations. However, this approach has so far mostly been applied to linear photonic devices. Here, we present an extension of this method to modeling nonlinear devices in the frequency domain, with the nonlinear response directly included in the gradient computation. As illustrations, we use the method to devise compact photonic switches in a Kerr nonlinear material, in which low-power and high-power pulses are routed in different directions. Our technique may lead to the development of novel compact nonlinear photonic devices.","url_abs":"http://arxiv.org/abs/1811.01255v1","url_pdf":"http://arxiv.org/pdf/1811.01255v1.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"links_only","authors_date_abstract":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license), from the Kaggle arXiv metadata snapshot of 2026-09-12"},"code_links":[{"paper_slug":"adjoint-method-and-inverse-design-for","repo_url":"https://github.com/fancompute/angler","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=1811.01255","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1811.01255"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/fancompute/angler","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"unverified":12},"by_repo_kind":{"official":{"samples":12,"ran":0,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"858120866a57644b","entry":"born_solve","repo":"fancompute/angler","repo_kind":"official","path":"angler/nonlinear_solvers.py","file_url":"https://github.com/fancompute/angler/blob/HEAD/angler/nonlinear_solvers.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"858120866a57644b"}},{"code_sha256_prefix":"dc2c0c3d4d350bfa","entry":"dL","repo":"fancompute/angler","repo_kind":"official","path":"angler/linalg.py","file_url":"https://github.com/fancompute/angler/blob/HEAD/angler/linalg.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"dc2c0c3d4d350bfa"}},{"code_sha256_prefix":"1744298ad3e56411","entry":"dist","repo":"fancompute/angler","repo_kind":"official","path":"angler/filter.py","file_url":"https://github.com/fancompute/angler/blob/HEAD/angler/filter.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"1744298ad3e56411"}},{"code_sha256_prefix":"4c7f7884cc19ebaa","entry":"grid_average","repo":"fancompute/angler","repo_kind":"official","path":"angler/linalg.py","file_url":"https://github.com/fancompute/angler/blob/HEAD/angler/linalg.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"4c7f7884cc19ebaa"}},{"code_sha256_prefix":"6ef0316ccb7b56e1","entry":"is_equal","repo":"fancompute/angler","repo_kind":"official","path":"angler/linalg.py","file_url":"https://github.com/fancompute/angler/blob/HEAD/angler/linalg.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"6ef0316ccb7b56e1"}},{"code_sha256_prefix":"48aecec5cf1aeabd","entry":"n2_from_chi3","repo":"fancompute/angler","repo_kind":"official","path":"angler/constants.py","file_url":"https://github.com/fancompute/angler/blob/HEAD/angler/constants.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"48aecec5cf1aeabd"}},{"code_sha256_prefix":"70512aecf1fcccae","entry":"plt_base","repo":"fancompute/angler","repo_kind":"official","path":"angler/plot.py","file_url":"https://github.com/fancompute/angler/blob/HEAD/angler/plot.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"70512aecf1fcccae"}},{"code_sha256_prefix":"5e50b8fea4fe1aa1","entry":"plt_base_ani","repo":"fancompute/angler","repo_kind":"official","path":"angler/plot.py","file_url":"https://github.com/fancompute/angler/blob/HEAD/angler/plot.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"5e50b8fea4fe1aa1"}},{"code_sha256_prefix":"584f88181a408f8f","entry":"plt_base_eps","repo":"fancompute/angler","repo_kind":"official","path":"angler/plot.py","file_url":"https://github.com/fancompute/angler/blob/HEAD/angler/plot.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"584f88181a408f8f"}},{"code_sha256_prefix":"0ee590fb57528f3d","entry":"sub2ind","repo":"fancompute/angler","repo_kind":"official","path":"angler/filter.py","file_url":"https://github.com/fancompute/angler/blob/HEAD/angler/filter.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"0ee590fb57528f3d"}},{"code_sha256_prefix":"0132cc60f8abaa57","entry":"unpack_derivs","repo":"fancompute/angler","repo_kind":"official","path":"angler/derivatives.py","file_url":"https://github.com/fancompute/angler/blob/HEAD/angler/derivatives.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"0132cc60f8abaa57"}},{"code_sha256_prefix":"ac5bb54e71bb72e1","entry":"wrap","repo":"fancompute/angler","repo_kind":"official","path":"angler/filter.py","file_url":"https://github.com/fancompute/angler/blob/HEAD/angler/filter.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"ac5bb54e71bb72e1"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}