Update TO_Problem.py

This commit is contained in:
p15806732 2022-11-04 11:26:18 +08:00
parent 19b64de76e
commit 6d2171b3af
1 changed files with 11 additions and 51 deletions

View File

@ -1,11 +1,15 @@
# -*- coding: utf-8 -*-
"""
Created on Tue Aug 11 14:20:11 2020
@author: zzy
定义设计域
"""
'''
@ 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:33:20
@ FilePath : /ZZY_CODE/Env_JAX/IDRL/Linear_TO/TO_Problem.py
@
@ Description :
@ Reference :
'''
import jax.ops as jops
import numpy as np
@ -81,49 +85,5 @@ def cantilever_single_NN(TopOpt):
return model_kwargs
def cantilever_single_big():
L = 1.6
W = 0.8
nelx = 160
nely = 80
design_condition = 2
Total_dof = 2*(nelx+1)*(nely+1)
ele_length = L/nelx
ele_width = W/nely
ele_thickness = 1.0
volfrac = 0.5
dofs = np.arange(Total_dof)
loaddof = Total_dof-1
# fext = jnp.zeros(Total_dof)
# fext = jops.index_update(fext, jops.index[loaddof], -1.)
fext = np.zeros(Total_dof)
fext[loaddof] = -1
fixeddofs = np.array(dofs[0:2*(nely+1):1])
freedofs = np.setdiff1d(dofs, fixeddofs)
filter_width = 3.0
design_map = np.ones([nely, nelx], dtype=np.int64)
return ToProblem(L, W, nelx, nely, design_condition, ele_length, ele_width, ele_thickness, volfrac, fixeddofs, freedofs, fext, filter_width, design_map)
def cantilever_single_big_NN(TopOpt):
dense_input_channel = 128
dense_init_scale = 1.0
conv_input_0 = 32
up_sampling_scale = (1, 2, 2, 2, 2)
total_resize = int(np.prod(up_sampling_scale))
h = TopOpt.nely // total_resize
w = TopOpt.nelx // total_resize
dense_output_channel = h * w * conv_input_0
dense_scale_init = dense_init_scale * \
jnp.sqrt(jnp.maximum(dense_output_channel / dense_input_channel, 1))
model_kwargs = {
'h': h,
'w': w,
'dense_scale_init': dense_scale_init,
'dense_output_channel': dense_output_channel,
'dense_input_channel': dense_input_channel,
'conv_input_0': conv_input_0,
'up_sampling_scale': up_sampling_scale,
}
return model_kwargs