Skip to content

Commit f480a71

Browse files
committed
SolverSettings constructor complete
1 parent 892a241 commit f480a71

File tree

2 files changed

+41
-8
lines changed

2 files changed

+41
-8
lines changed

data/vsm_settings.yaml

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,14 @@ Model:
22
VSM: Vortex Step Method
33
LLT: Lifting Line Theory
44
PanelDistribution:
5-
LINEAR: Linear distribution
6-
COSINE: Cosine distribution
7-
COSINE_VAN_GARREL: van Garrel cosine distribution
8-
SPLIT_PROVIDED: Split provided sections
9-
UNCHANGED: Keep original sections
5+
LINEAR: Linear distribution
6+
COSINE: Cosine distribution
7+
COSINE_VAN_GARREL: van Garrel cosine distribution
8+
SPLIT_PROVIDED: Split provided sections
9+
UNCHANGED: Keep original sections
10+
InitialGammaDistribution:
11+
ELLIPTIC: Elliptic distribution
12+
ZEROS: Constant distribution
1013

1114
wings:
1215
- name: main_wing
@@ -16,5 +19,18 @@ wings:
1619
spanwise_direction: [0.0, 1.0, 0.0]
1720
remove_nan: true
1821
solver_settings:
22+
n_panels: 40
23+
n_groups: 40
1924
aerodynamic_model_type: VSM
20-
max_iterations: 1000
25+
density: 1.225 # air density [kg/m³]
26+
max_iterations: 1500
27+
rtol: 1e-5 # relative error [-]
28+
tol_reference_error: 0.001
29+
relaxation_factor: 0.03 # relaxation factor for convergence
30+
artificial_damping: false # whether to apply artificial damping
31+
k2: 0.1 # artificial damping parameter
32+
k4: 0.0 # artificial damping parameter
33+
type_initial_gamma_distribution: ELLIPTIC
34+
core_radius_fraction: 1e-20
35+
mu: 1.81e-5 # dynamic viscosity [N·s/m²]
36+
calc_only_f_and_gamma: false # whether to only output f and gamma

src/settings.jl

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,25 @@ end
3333
function vs(filename)
3434
res = VSMSettings()
3535
data = YAML.load_file(joinpath("data", filename))
36-
res.solver_settings.max_iterations = data["solver_settings"]["max_iterations"]
37-
res.solver_settings.aerodynamic_model_type = eval(Symbol(data["solver_settings"]["aerodynamic_model_type"]))
36+
# update solver settings
37+
solver = data["solver_settings"]
38+
res.solver_settings.n_panels = solver["n_panels"]
39+
res.solver_settings.n_groups = solver["n_groups"]
40+
res.solver_settings.aerodynamic_model_type = eval(Symbol(solver["aerodynamic_model_type"]))
41+
res.solver_settings.density = solver["density"]
42+
res.solver_settings.max_iterations = solver["max_iterations"]
43+
res.solver_settings.rtol = solver["rtol"]
44+
res.solver_settings.tol_reference_error = solver["tol_reference_error"]
45+
res.solver_settings.relaxation_factor = solver["relaxation_factor"]
46+
res.solver_settings.artificial_damping = solver["artificial_damping"]
47+
res.solver_settings.k2 = solver["k2"]
48+
res.solver_settings.k4 = solver["k4"]
49+
res.solver_settings.type_initial_gamma_distribution = eval(Symbol(solver["type_initial_gamma_distribution"]))
50+
res.solver_settings.core_radius_fraction = solver["core_radius_fraction"]
51+
res.solver_settings.mu = solver["mu"]
52+
res.solver_settings.calc_only_f_and_gamma = solver["calc_only_f_and_gamma"]
53+
54+
# add and update wing settings
3855
for (i, wing) in pairs(data["wings"])
3956
push!(res.wings, WingSettings())
4057
res.wings[i].name = wing["name"]

0 commit comments

Comments
 (0)