From 21e6464e0cf3a82c948f8ee86441213bbb2f79c3 Mon Sep 17 00:00:00 2001 From: p15806732 Date: Sat, 5 Nov 2022 00:38:59 +0800 Subject: [PATCH] 2022.11.5 Commit --- Linear_TO/TO_Obj.py | 22 ----------------- Linear_TO/image/TONR_Network.png | Bin 0 -> 105186 bytes README.md | 39 +++++++++++++++++++++++++++++++ 3 files changed, 39 insertions(+), 22 deletions(-) delete mode 100644 Linear_TO/TO_Obj.py create mode 100644 Linear_TO/image/TONR_Network.png create mode 100644 README.md diff --git a/Linear_TO/TO_Obj.py b/Linear_TO/TO_Obj.py deleted file mode 100644 index e3b6e2c..0000000 --- a/Linear_TO/TO_Obj.py +++ /dev/null @@ -1,22 +0,0 @@ -# -*- coding: utf-8 -*- -''' -@ Copyright (c) 2022 by Zeyu Zhang, All Rights Reserved. -@ Author : Zeyu Zhang -@ Email : zhangzeyu_work@outlook.com -@ Date : 2022-10-25 09:30:27 -@ LastEditTime : 2022-10-25 09:34:00 -@ FilePath : /ZZY_CODE/Env_JAX/IDRL/Linear_TO/TO_Obj.py -@ -@ Description : -@ Reference : -''' -import jax.numpy as jnp -from jax import jit - - -# @jit -def compliance(young, young_min, ke, xPhys_1D, edofMat, penal, disp): - ce = jnp.sum(jnp.matmul(disp[edofMat], ke) * disp[edofMat], 1) - ce = (young_min + xPhys_1D ** penal * (young - young_min)) * ce - obj = jnp.sum(ce) - return obj diff --git a/Linear_TO/image/TONR_Network.png b/Linear_TO/image/TONR_Network.png new file mode 100644 index 0000000000000000000000000000000000000000..388221bb45118a531b3f2360ef95af0c524b3c9e GIT binary patch literal 105186 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%0AbK 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 literal 0 HcmV?d00001 diff --git a/README.md b/README.md new file mode 100644 index 0000000..60f6c12 --- /dev/null +++ b/README.md @@ -0,0 +1,39 @@ + +# Topology Optimization via Neural Reparameterization and Automatic Differentiation + +## Introduction +The rapid development of deep learning has brought new opportunities for the exploration of topology optimization methods. The combination of deep learning and topology optimization has become one of the hottest research fields at the moment. In this work, the neural network is directly used for topology optimization. The update of the design variables (pseudo-density) in the conventional topology optimization method is transformed into the update of the neural network's parameters, which is called **_Neural Reparameterization_**. The sensitivity analysis in the conventional topology optimization method is realized by the powerful **_Automatic Differentiation_** technology. + +![TONR_Network.png](https://cdn.nlark.com/yuque/0/2022/png/2749792/1667579895206-092a68b8-95f2-43fa-9eb1-3c7fe8a44913.png#averageHue=%23190d05&clientId=ua5033e87-1d9a-4&crop=0&crop=0&crop=1&crop=1&from=ui&id=ub6e7ca67&margin=%5Bobject%20Object%5D&name=TONR_Network.png&originHeight=593&originWidth=1943&originalType=binary&ratio=1&rotation=0&showTitle=false&size=105186&status=done&style=none&taskId=u6fd64eb9-ae53-40ea-9587-2de67e727e4&title=) + +## Codes +An educational code for structural topology optimization based on AuTONR. + + +## Running Requirement + +- Python +- Jax +- Jaxlib +- Optax +- Flax + + +## Citation +**Please contact to ** [zhangzeyu_work@outlook.com](zhangzeyu_work@outlook.com)
**Disclaimer**: The author reserves all rights but does not guarantee that the code is free from errors. Furthermore, we shall not be liable in any event. +```markdown +@article{Zhang_TONRExploration_2021, + title = {{{TONR}}: {{An}} Exploration for a Novel Way Combining Neural Network with Topology Optimization}, + shorttitle = {{{TONR}}}, + author = {Zhang, Zeyu and Li, Yu and Zhou, Weien and Chen, Xiaoqian and Yao, Wen and Zhao, Yong}, + year = {2021}, + month = dec, + journal = {Computer Methods in Applied Mechanics and Engineering}, + volume = {386}, + pages = {114083}, + issn = {00457825}, + doi = {10.1016/j.cma.2021.114083}, + langid = {english}, + } +``` +