Skip to content

Commit f6d0dce

Browse files
committed
Various smalles updates to species opt tutorial
1. Switch to FFD_CONTROL_POINT_2D 2. add create-sym-links file for visualization 3. better gradNorm csv output 4. Small cleanups in cfg's 5. Using the inital restart solution for gradVal and Opt runs
1 parent d4964e3 commit f6d0dce

10 files changed

Lines changed: 72 additions & 46 deletions

File tree

incompressible_flow/Inc_Species_Transport/2__mesh-deform-test/species3_primitiveVenturi_deform.cfg

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ FFD_CONTINUITY= USER_INPUT
179179
180180
% ----------------------- DESIGN VARIABLE PARAMETERS --------------------------%
181181
%
182-
DV_KIND= FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT
182+
DV_KIND= FFD_CONTROL_POINT_2D, FFD_CONTROL_POINT_2D, FFD_CONTROL_POINT_2D, FFD_CONTROL_POINT_2D, FFD_CONTROL_POINT_2D, FFD_CONTROL_POINT_2D, FFD_CONTROL_POINT_2D, FFD_CONTROL_POINT_2D, FFD_CONTROL_POINT_2D, FFD_CONTROL_POINT_2D
183183
%
184184
% Marker of the surface in which we are going apply the shape deformation
185185
% NOTE: for deformation the outlet should be a MARKER_SYM to hinder the mesh being ripped apart.
@@ -188,9 +188,9 @@ DV_MARKER= ( wall )
188188
% Parameters of the shape deformation
189189
% - FFD_SETTING ( 1.0 )
190190
% - FFD_CONTROL_POINT ( FFD_BoxTag, i_Ind, j_Ind, k_Ind, x_Disp, y_Disp, z_Disp )
191-
DV_PARAM= (BOX, 2, 0, 0, 0.0, 1.0, 0.0 ); (BOX, 3, 0, 0, 0.0, 1.0, 0.0 ); (BOX, 4, 0, 0, 0.0, 1.0, 0.0 ); (BOX, 5, 0, 0, 0.0, 1.0, 0.0 ); (BOX, 6, 0, 0, 0.0, 1.0, 0.0 ); (BOX, 2, 1, 0, 0.0, 1.0, 0.0 ); (BOX, 3, 1, 0, 0.0, 1.0, 0.0 ); (BOX, 4, 1, 0, 0.0, 1.0, 0.0 ); (BOX, 5, 1, 0, 0.0, 1.0, 0.0 ); (BOX, 6, 1, 0, 0.0, 1.0, 0.0 )
192-
% Excluded FFD points that are fixed to keep a nice geometry and mesh
193-
%DV_PARAM= (BOX, 0, 0, 0, 0.0, 1.0, 0.0 ); (BOX, 1, 0, 0, 0.0, 1.0, 0.0 ); (BOX, 0, 1, 0, 0.0, 1.0, 0.0 ); (BOX, 1, 1, 0, 0.0, 1.0, 0.0 );
191+
DV_PARAM= (BOX, 2, 0, 0.0, 1.0); (BOX, 3, 0, 0.0, 1.0); (BOX, 4, 0, 0.0, 1.0); (BOX, 5, 0, 0.0, 1.0); (BOX, 6, 0, 0.0, 1.0); (BOX, 2, 1, 0.0, 1.0); (BOX, 3, 1, 0.0, 1.0); (BOX, 4, 1, 0.0, 1.0); (BOX, 5, 1, 0.0, 1.0); (BOX, 6, 1, 0.0, 1.0)
192+
% Excluded FFD points that are fixed to keep a nice geometry
193+
%DV_PARAM= (BOX, 0, 0, 0.0, 1.0); (BOX, 1, 0, 0.0, 1.0); (BOX, 0, 1, 0.0, 1.0); (BOX, 1, 1, 0.0, 1.0);
194194
%
195195
% Value of the shape deformation
196196
% first row: lower row y-direction

incompressible_flow/Inc_Species_Transport/3__gradient-validation/gradient_validation.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
direct.setMaxTries(max_tries)
5252
direct.addConfig(configMaster)
5353
direct.addData("DEFORM/mesh_out.su2",destination=meshName)
54+
direct.addData("solution.csv")
5455
direct.addExpected("restart.csv")
5556
direct.addParameter(enable_direct)
5657
direct.addParameter(enable_not_def)
@@ -94,9 +95,9 @@
9495

9596
driver.setWorkingDirectory("DOE")
9697
driver.preprocessVariables()
97-
driver.setStorageMode(True,"DESIGN_")
98+
driver.setStorageMode(True,"DSN_")
9899

99-
his = open("doe.his","w",1)
100+
his = open("doe.csv","w",1)
100101
driver.setHistorian(his)
101102

102103
# Simulation Runs ------------------------------------------------------ #
@@ -105,7 +106,7 @@
105106
for iLoop in range(0, nDV, 1):
106107
print("Computing deformed primal ", iLoop, "/", nDV-1)
107108
x = driver.getInitial()
108-
x[iLoop] = 1e-6 # DV_VALUE, FD-step
109+
x[iLoop] = 1e-8 # DV_VALUE, FD-step
109110
driver.fun(x)
110111
#end
111112

incompressible_flow/Inc_Species_Transport/3__gradient-validation/postprocess.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@ def printGradVal(FDgrad, DAgrad):
3737

3838
if __name__ == "__main__":
3939

40-
# These have to match with
41-
FDstep = 1e-6
40+
# FDStep has to match with the value in the gradient_validation script
41+
FDstep = 1e-8
4242

4343
# Load Discrete Adjont gradient
4444
DAvals_specVar = pd.read_csv("DOE/DOT/of_grad.csv")
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../solution.csv

incompressible_flow/Inc_Species_Transport/3__gradient-validation/species3_primitiveVenturi.cfg

Lines changed: 6 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,6 @@ CFL_REDUCTION_TURB= 1.0
7272
%
7373
% Run commented Iter for good results
7474
ITER= 1000
75-
%ITER= 5
7675
%
7776
% ------------------------ LINEAR SOLVER DEFINITION ---------------------------%
7877
%
@@ -136,7 +135,7 @@ OUTPUT_WRT_FREQ= 1000
136135
%
137136
GRAD_OBJFUNC_FILENAME= of_grad.csv
138137
%
139-
RESTART_SOL= NO
138+
%__DIRECT__RESTART_SOL= YES
140139
READ_BINARY_RESTART= NO
141140
RESTART_FILENAME= restart
142141
SOLUTION_FILENAME= solution
@@ -167,14 +166,13 @@ FFD_DEFINITION= (BOX, \
167166
0.0, 0.0, 0.0, \
168167
0.0, 0.0, 0.0 )
169168
%
170-
% FFD box degree: 3D case (x_degree, y_degree, z_degree)
171-
% 2D case (x_degree, y_degree, 0)
169+
% FFD box degree: 3D case (i_degree, j_degree, k_degree)
170+
% 2D case (i_degree, j_degree, 0)
172171
FFD_DEGREE= (6, 1, 0)
173172
%
174173
% Surface grid continuity at the intersection with the faces of the FFD boxes.
175174
% To keep a particular level of surface continuity, SU2 automatically freezes the right
176175
% number of control point planes (NO_DERIVATIVE, 1ST_DERIVATIVE, 2ND_DERIVATIVE, USER_INPUT)
177-
%FFD_CONTINUITY= NO_DERIVATIVE
178176
FFD_CONTINUITY= USER_INPUT
179177
%
180178
% Definition of the FFD planes to be frozen in the FFD (x,y,z).
@@ -185,24 +183,18 @@ FFD_CONTINUITY= USER_INPUT
185183
186184
% ----------------------- DESIGN VARIABLE PARAMETERS --------------------------%
187185
%
188-
% Kind of deformation (NO_DEFORMATION, SCALE_GRID, TRANSLATE_GRID, ROTATE_GRID,
189-
% FFD_SETTING, FFD_NACELLE,
190-
% FFD_CONTROL_POINT, FFD_CAMBER, FFD_THICKNESS, FFD_TWIST
191-
% FFD_CONTROL_POINT_2D, FFD_CAMBER_2D, FFD_THICKNESS_2D,
192-
% FFD_TWIST_2D, HICKS_HENNE, SURFACE_BUMP, SURFACE_FILE)
193-
DV_KIND= FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT
186+
DV_KIND= FFD_CONTROL_POINT_2D, FFD_CONTROL_POINT_2D, FFD_CONTROL_POINT_2D, FFD_CONTROL_POINT_2D, FFD_CONTROL_POINT_2D, FFD_CONTROL_POINT_2D, FFD_CONTROL_POINT_2D, FFD_CONTROL_POINT_2D, FFD_CONTROL_POINT_2D, FFD_CONTROL_POINT_2D
194187
%
195188
% Marker of the surface in which we are going apply the shape deformation
196189
% NOTE: for deformation the outlet should be a MARKER_SYM to hinder the mesh being ripped apart.
197190
DV_MARKER= ( wall )
198191
%
199192
% Parameters of the shape deformation
200-
% - NO_DEFORMATION ( 1.0 )
201193
% - FFD_SETTING ( 1.0 )
202194
% - FFD_CONTROL_POINT ( FFD_BoxTag, i_Ind, j_Ind, k_Ind, x_Disp, y_Disp, z_Disp )
203-
DV_PARAM= (BOX, 2, 0, 0, 0.0, 1.0, 0.0 ); (BOX, 3, 0, 0, 0.0, 1.0, 0.0 ); (BOX, 4, 0, 0, 0.0, 1.0, 0.0 ); (BOX, 5, 0, 0, 0.0, 1.0, 0.0 ); (BOX, 6, 0, 0, 0.0, 1.0, 0.0 ); (BOX, 2, 1, 0, 0.0, 1.0, 0.0 ); (BOX, 3, 1, 0, 0.0, 1.0, 0.0 ); (BOX, 4, 1, 0, 0.0, 1.0, 0.0 ); (BOX, 5, 1, 0, 0.0, 1.0, 0.0 ); (BOX, 6, 1, 0, 0.0, 1.0, 0.0 )
195+
DV_PARAM= (BOX, 2, 0, 0.0, 1.0); (BOX, 3, 0, 0.0, 1.0); (BOX, 4, 0, 0.0, 1.0); (BOX, 5, 0, 0.0, 1.0); (BOX, 6, 0, 0.0, 1.0); (BOX, 2, 1, 0.0, 1.0); (BOX, 3, 1, 0.0, 1.0); (BOX, 4, 1, 0.0, 1.0); (BOX, 5, 1, 0.0, 1.0); (BOX, 6, 1, 0.0, 1.0)
204196
% Excluded FFD points that are fixed to keep a nice geometry
205-
%DV_PARAM= (BOX, 0, 0, 0, 0.0, 1.0, 0.0 ); (BOX, 1, 0, 0, 0.0, 1.0, 0.0 ); (BOX, 0, 1, 0, 0.0, 1.0, 0.0 ); (BOX, 1, 1, 0, 0.0, 1.0, 0.0 );
197+
%DV_PARAM= (BOX, 0, 0, 0.0, 1.0); (BOX, 1, 0, 0.0, 1.0); (BOX, 0, 1, 0.0, 1.0); (BOX, 1, 1, 0.0, 1.0);
206198
%
207199
% Value of the shape deformation
208200
% first row: lower row y-direction
@@ -240,6 +232,3 @@ DEFORM_STIFFNESS_TYPE= WALL_DISTANCE
240232
% Deform the grid only close to the surface. It is possible to specify how much
241233
% of the volumetric grid is going to be deformed in meters or inches (1E6 by default)
242234
DEFORM_LIMIT = 1E6
243-
%
244-
% FFD_CONTROL_POINT (Y)
245-
%DEFINITION_DV= ( 11, 1.0 | wall | BOX, 0, 0, 0, 0.0, 1.0, 0.0 ); ( 11, 1.0 | wall | BOX, 1, 0, 0, 0.0, 1.0, 0.0 ); ( 11, 1.0 | wall | BOX, 2, 0, 0, 0.0, 1.0, 0.0 ); ( 11, 1.0 | wall | BOX, 3, 0, 0, 0.0, 1.0, 0.0 ); ( 11, 1.0 | wall | BOX, 4, 0, 0, 0.0, 1.0, 0.0 ); ( 11, 1.0 | wall | BOX, 5, 0, 0, 0.0, 1.0, 0.0 ); ( 11, 1.0 | wall | BOX, 6, 0, 0, 0.0, 1.0, 0.0 ); ( 11, 1.0 | wall | BOX, 0, 1, 0, 0.0, 1.0, 0.0 ); ( 11, 1.0 | wall | BOX, 1, 1, 0, 0.0, 1.0, 0.0 ); ( 11, 1.0 | wall | BOX, 2, 1, 0, 0.0, 1.0, 0.0 ); ( 11, 1.0 | wall | BOX, 3, 1, 0, 0.0, 1.0, 0.0 ); ( 11, 1.0 | wall | BOX, 4, 1, 0, 0.0, 1.0, 0.0 ); ( 11, 1.0 | wall | BOX, 5, 1, 0, 0.0, 1.0, 0.0 ); ( 11, 1.0 | wall | BOX, 6, 1, 0, 0.0, 1.0, 0.0 )
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# 06.12.2021 T. Kattmann
2+
#
3+
# Create symlinks for primal solution and FFD-Box of all desings in a separate folder.
4+
# The links are renamed, such that the optimization progress can be visualized as a time series.
5+
# Currently for PARAVIEW_MULTIBLOCK.
6+
7+
import os
8+
import shutil
9+
10+
def make_dst_filename(i, front_string, trailing_string):
11+
if i<10:
12+
number= "00" + str(i)
13+
elif i<100:
14+
number= "0" + str(i)
15+
elif i<1000:
16+
number= str(i)
17+
else:
18+
raise ValueError("More than 1000 Designs.")
19+
20+
return front_string + number + trailing_string
21+
22+
if __name__ == '__main__':
23+
# create folder to link files into
24+
dir= "visu_files"
25+
if os.path.exists(dir):
26+
shutil.rmtree(dir)
27+
os.makedirs(dir)
28+
29+
# create list with folder names
30+
baseFolder = "./"
31+
sub_folders = [name for name in os.listdir(baseFolder) if os.path.isdir(os.path.join(baseFolder, name))]
32+
DSN_folders = [folder for folder in sub_folders if 'DSN' in folder]
33+
print(DSN_folders)
34+
35+
# loop trough folders and symlink files
36+
for i,folder in enumerate(DSN_folders):
37+
# check if file exists
38+
sym_file= DSN_folders[i] + "/DIRECT/species3_primitiveVenturi/zone_0/Internal.vtu"
39+
sym_file2= DSN_folders[i] + "/DEFORM/ffd_boxes_def_0.vtk"
40+
if os.path.exists(sym_file):
41+
os.symlink("../" + sym_file, dir + make_dst_filename(i, "/visu_", ".vtu"))
42+
os.symlink("../" + sym_file2, dir + make_dst_filename(i, "/ffd_", ".vtk"))

incompressible_flow/Inc_Species_Transport/4__optimization/gradient_norm.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,5 @@
2929
gradientNormVector[i] = np.nan
3030

3131
print(gradientNormVector)
32-
np.savetxt("gradient_norm.csv", gradientNormVector)
32+
df = pd.DataFrame({"ITER" : range(len(DSN_folders)), "Gradient Norm" : gradientNormVector})
33+
df.to_csv("gradient_norm.csv", index=False)

incompressible_flow/Inc_Species_Transport/4__optimization/optimization.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
nDV = 10
88
ffd = InputVariable(0.0,PreStringHandler("DV_VALUE="),nDV)
9-
ffd = InputVariable(np.zeros((nDV,)),ArrayLabelReplacer("__FFD_PTS__"), 0, np.ones(nDV), -0.01,0.01)
9+
ffd = InputVariable(np.zeros((nDV,)),ArrayLabelReplacer("__FFD_PTS__"), 0, np.ones(nDV), -0.0075,0.0075)
1010

1111
# Parameters ----------------------------------------------------------- #
1212

@@ -52,6 +52,7 @@
5252
direct.setMaxTries(max_tries)
5353
direct.addConfig(configMaster)
5454
direct.addData("DEFORM/mesh_out.su2",destination=meshName)
55+
direct.addData("solution.csv")
5556
direct.addExpected("restart.csv")
5657
direct.addParameter(enable_direct)
5758
direct.addParameter(enable_not_def)
@@ -110,7 +111,7 @@
110111
# SOFT = if func eval fails, just the default val will be taken
111112
driver.setFailureMode("SOFT")
112113

113-
his = open("optim.his","w",1)
114+
his = open("optim.csv","w",1)
114115
driver.setHistorian(his)
115116

116117
# Optimization, SciPy -------------------------------------------------- #
@@ -120,7 +121,7 @@
120121
driver.preprocess()
121122
x = driver.getInitial()
122123

123-
options = {'disp': True, 'ftol': 1e-17, 'maxiter': 100}
124+
options = {'disp': True, 'ftol': 1e-10, 'maxiter': 25}
124125

125126
optimum = scipy.optimize.minimize(driver.fun, x, method="SLSQP", jac=driver.grad,\
126127
constraints=driver.getConstraints(), bounds=driver.getBounds(), options=options)
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../solution.csv

incompressible_flow/Inc_Species_Transport/4__optimization/species3_primitiveVenturi.cfg

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ OUTPUT_WRT_FREQ= 1000
135135
%
136136
GRAD_OBJFUNC_FILENAME= of_grad.csv
137137
%
138-
RESTART_SOL= NO
138+
%__DIRECT__RESTART_SOL= YES
139139
READ_BINARY_RESTART= NO
140140
RESTART_FILENAME= restart
141141
SOLUTION_FILENAME= solution
@@ -166,14 +166,13 @@ FFD_DEFINITION= (BOX, \
166166
0.0, 0.0, 0.0, \
167167
0.0, 0.0, 0.0 )
168168
%
169-
% FFD box degree: 3D case (x_degree, y_degree, z_degree)
170-
% 2D case (x_degree, y_degree, 0)
169+
% FFD box degree: 3D case (i_degree, j_degree, k_degree)
170+
% 2D case (i_degree, j_degree, 0)
171171
FFD_DEGREE= (6, 1, 0)
172172
%
173173
% Surface grid continuity at the intersection with the faces of the FFD boxes.
174174
% To keep a particular level of surface continuity, SU2 automatically freezes the right
175175
% number of control point planes (NO_DERIVATIVE, 1ST_DERIVATIVE, 2ND_DERIVATIVE, USER_INPUT)
176-
%FFD_CONTINUITY= NO_DERIVATIVE
177176
FFD_CONTINUITY= USER_INPUT
178177
%
179178
% Definition of the FFD planes to be frozen in the FFD (x,y,z).
@@ -184,24 +183,18 @@ FFD_CONTINUITY= USER_INPUT
184183
185184
% ----------------------- DESIGN VARIABLE PARAMETERS --------------------------%
186185
%
187-
% Kind of deformation (NO_DEFORMATION, SCALE_GRID, TRANSLATE_GRID, ROTATE_GRID,
188-
% FFD_SETTING, FFD_NACELLE,
189-
% FFD_CONTROL_POINT, FFD_CAMBER, FFD_THICKNESS, FFD_TWIST
190-
% FFD_CONTROL_POINT_2D, FFD_CAMBER_2D, FFD_THICKNESS_2D,
191-
% FFD_TWIST_2D, HICKS_HENNE, SURFACE_BUMP, SURFACE_FILE)
192-
DV_KIND= FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT, FFD_CONTROL_POINT
186+
DV_KIND= FFD_CONTROL_POINT_2D, FFD_CONTROL_POINT_2D, FFD_CONTROL_POINT_2D, FFD_CONTROL_POINT_2D, FFD_CONTROL_POINT_2D, FFD_CONTROL_POINT_2D, FFD_CONTROL_POINT_2D, FFD_CONTROL_POINT_2D, FFD_CONTROL_POINT_2D, FFD_CONTROL_POINT_2D
193187
%
194188
% Marker of the surface in which we are going apply the shape deformation
195189
% NOTE: for deformation the outlet should be a MARKER_SYM to hinder the mesh being ripped apart.
196190
DV_MARKER= ( wall )
197191
%
198192
% Parameters of the shape deformation
199-
% - NO_DEFORMATION ( 1.0 )
200193
% - FFD_SETTING ( 1.0 )
201194
% - FFD_CONTROL_POINT ( FFD_BoxTag, i_Ind, j_Ind, k_Ind, x_Disp, y_Disp, z_Disp )
202-
DV_PARAM= (BOX, 2, 0, 0, 0.0, 1.0, 0.0 ); (BOX, 3, 0, 0, 0.0, 1.0, 0.0 ); (BOX, 4, 0, 0, 0.0, 1.0, 0.0 ); (BOX, 5, 0, 0, 0.0, 1.0, 0.0 ); (BOX, 6, 0, 0, 0.0, 1.0, 0.0 ); (BOX, 2, 1, 0, 0.0, 1.0, 0.0 ); (BOX, 3, 1, 0, 0.0, 1.0, 0.0 ); (BOX, 4, 1, 0, 0.0, 1.0, 0.0 ); (BOX, 5, 1, 0, 0.0, 1.0, 0.0 ); (BOX, 6, 1, 0, 0.0, 1.0, 0.0 )
195+
DV_PARAM= (BOX, 2, 0, 0.0, 1.0); (BOX, 3, 0, 0.0, 1.0); (BOX, 4, 0, 0.0, 1.0); (BOX, 5, 0, 0.0, 1.0); (BOX, 6, 0, 0.0, 1.0); (BOX, 2, 1, 0.0, 1.0); (BOX, 3, 1, 0.0, 1.0); (BOX, 4, 1, 0.0, 1.0); (BOX, 5, 1, 0.0, 1.0); (BOX, 6, 1, 0.0, 1.0)
203196
% Excluded FFD points that are fixed to keep a nice geometry
204-
%DV_PARAM= (BOX, 0, 0, 0, 0.0, 1.0, 0.0 ); (BOX, 1, 0, 0, 0.0, 1.0, 0.0 ); (BOX, 0, 1, 0, 0.0, 1.0, 0.0 ); (BOX, 1, 1, 0, 0.0, 1.0, 0.0 );
197+
%DV_PARAM= (BOX, 0, 0, 0.0, 1.0); (BOX, 1, 0, 0.0, 1.0); (BOX, 0, 1, 0.0, 1.0); (BOX, 1, 1, 0.0, 1.0);
205198
%
206199
% Value of the shape deformation
207200
% first row: lower row y-direction
@@ -240,6 +233,3 @@ DEFORM_STIFFNESS_TYPE= WALL_DISTANCE
240233
% Deform the grid only close to the surface. It is possible to specify how much
241234
% of the volumetric grid is going to be deformed in meters or inches (1E6 by default)
242235
DEFORM_LIMIT = 1E6
243-
%
244-
% FFD_CONTROL_POINT (Y)
245-
%DEFINITION_DV= ( 11, 1.0 | wall | BOX, 0, 0, 0, 0.0, 1.0, 0.0 ); ( 11, 1.0 | wall | BOX, 1, 0, 0, 0.0, 1.0, 0.0 ); ( 11, 1.0 | wall | BOX, 2, 0, 0, 0.0, 1.0, 0.0 ); ( 11, 1.0 | wall | BOX, 3, 0, 0, 0.0, 1.0, 0.0 ); ( 11, 1.0 | wall | BOX, 4, 0, 0, 0.0, 1.0, 0.0 ); ( 11, 1.0 | wall | BOX, 5, 0, 0, 0.0, 1.0, 0.0 ); ( 11, 1.0 | wall | BOX, 6, 0, 0, 0.0, 1.0, 0.0 ); ( 11, 1.0 | wall | BOX, 0, 1, 0, 0.0, 1.0, 0.0 ); ( 11, 1.0 | wall | BOX, 1, 1, 0, 0.0, 1.0, 0.0 ); ( 11, 1.0 | wall | BOX, 2, 1, 0, 0.0, 1.0, 0.0 ); ( 11, 1.0 | wall | BOX, 3, 1, 0, 0.0, 1.0, 0.0 ); ( 11, 1.0 | wall | BOX, 4, 1, 0, 0.0, 1.0, 0.0 ); ( 11, 1.0 | wall | BOX, 5, 1, 0, 0.0, 1.0, 0.0 ); ( 11, 1.0 | wall | BOX, 6, 1, 0, 0.0, 1.0, 0.0 )

0 commit comments

Comments
 (0)