14 changed files with 841 additions and 353 deletions
@ -0,0 +1,26 @@ |
|||||
|
from .base_options import BaseOptions |
||||
|
|
||||
|
|
||||
|
class TopoptOption(BaseOptions): |
||||
|
"""This class includes test options. |
||||
|
|
||||
|
It also includes shared options defined in BaseOptions. |
||||
|
""" |
||||
|
|
||||
|
def initialize(self, parser): |
||||
|
parser = BaseOptions.initialize(self, parser) # define shared options |
||||
|
parser.add_argument('--phase', type=str, default='topopt', help='train, val, test, etc') |
||||
|
parser.add_argument('--pretrained_model_path', type=str, default='./checkpoints/ANN_mod1_231224-222338/ANN_mod1_opt.pt', help='pretrained model file load path') |
||||
|
parser.add_argument('--mod_idx', type=str, default='mod1', help='mod_idx for identify save path') |
||||
|
|
||||
|
parser.add_argument('--nelx_to', type=int, default=180, help='num of elements on x-axis') |
||||
|
parser.add_argument('--nely_to', type=int, default=60, help='num of elements on y-axis') |
||||
|
parser.add_argument('--ms_ratio_to', type=int, default=5, help='multiscale ratio') |
||||
|
parser.add_argument('--volfrac', type=float, default=0.4, help='volfrac') |
||||
|
parser.add_argument('--rmin', type=float, default=5.4, help='rmin') |
||||
|
parser.add_argument('--penal', type=float, default=3.0, help='penal') |
||||
|
parser.add_argument('--ft', type=int, default=1, help='ft') |
||||
|
|
||||
|
|
||||
|
self.isTrain = False |
||||
|
return parser |
@ -0,0 +1,28 @@ |
|||||
|
import numpy as np |
||||
|
|
||||
|
def Ms_u_reshape(u_data, coarse_nelx, coarse_nely, m): |
||||
|
nelx=coarse_nelx*m |
||||
|
nely=coarse_nely*m |
||||
|
|
||||
|
u_data = u_data.reshape(coarse_nelx,coarse_nely,m+1,m+1,2) |
||||
|
u_data = u_data.swapaxes(1,2).reshape(coarse_nelx*(m+1), coarse_nely*(m+1), 2) |
||||
|
|
||||
|
idx_x=np.arange(coarse_nelx*(m+1))[::m+1] |
||||
|
idx_x=np.delete(idx_x,0) |
||||
|
idx_x=np.delete(np.arange(coarse_nelx*(m+1)),idx_x) |
||||
|
idx_y=np.arange(coarse_nely*(m+1))[::m+1] |
||||
|
idx_y=np.delete(idx_y,0) |
||||
|
idx_y=np.delete(np.arange(coarse_nely*(m+1)),idx_y) |
||||
|
|
||||
|
return u_data[idx_x.reshape(nelx+1,1),idx_y.reshape(1,nely+1)] |
||||
|
|
||||
|
|
||||
|
if __name__=='__main__': |
||||
|
pred=np.load('results/pred.npy') |
||||
|
u=np.load('datasets/train/180_60/u/mod2.npy') |
||||
|
|
||||
|
print(u.shape) |
||||
|
print(pred.shape) |
||||
|
|
||||
|
recv_u = Ms_u_reshape(pred, 36, 12, 5) |
||||
|
print(recv_u-u.reshape(181,61,2)) |
@ -0,0 +1,35 @@ |
|||||
|
from mpl_toolkits.mplot3d import Axes3D |
||||
|
import matplotlib.pyplot as plt |
||||
|
import numpy as np |
||||
|
|
||||
|
def surf_plot(dp,ny,nx,save_path,UorV='sqrt',non_dp=False): |
||||
|
fig = plt.figure() |
||||
|
ax = fig.add_subplot(projection='3d') |
||||
|
|
||||
|
# Make data |
||||
|
# 生成网格数据 |
||||
|
X, Y = np.meshgrid(np.arange(nx), np.arange(ny)) |
||||
|
|
||||
|
if non_dp: |
||||
|
Z = Z_x = Z_y = dp.reshape(ny,nx) |
||||
|
else: |
||||
|
Z = dp.reshape(ny,nx,2) |
||||
|
Z_x = Z[:,:,0].reshape(ny,nx) |
||||
|
Z_y = Z[:,:,1].reshape(ny,nx) |
||||
|
|
||||
|
if UorV == 'u': |
||||
|
ax.plot_surface(X, Y, Z_x, rstride = 1, cstride = 1, cmap='rainbow') |
||||
|
elif UorV == 'v': |
||||
|
ax.plot_surface(X, Y, Z_y, rstride = 1, cstride = 1, cmap='rainbow') |
||||
|
else: |
||||
|
ax.plot_surface(X, Y, Z_x*Z_x+Z_y*Z_y, rstride = 1, cstride = 1, cmap='rainbow') |
||||
|
|
||||
|
plt.savefig(save_path) |
||||
|
plt.show() |
||||
|
|
||||
|
|
||||
|
if __name__=='__main__': |
||||
|
print('nothing') |
||||
|
# surf_plot(global_displace,nely+1,nelx+1,'u') |
||||
|
# surf_plot(global_displace,nely+1,nelx+1,'v') |
||||
|
# surf_plot(global_displace,nely+1,nelx+1,'sqrt') |
File diff suppressed because one or more lines are too long
Loading…
Reference in new issue