3 %
function creating a simple model
for a linear convection diffusion problem
5 % This model describes a linear fuelcell problem with three parameters.
7 model = lin_evol_model_default;
9 model.name =
'convdiff_model';
10 model.rb_problem_type =
'lin_evol';
11 %% data that is definitely used outside of the detailed simulations
12 model.mu_names = {
'c_init',
'beta',
'k'};
13 model.mu_ranges = {[0 1],[0 1],[0 5e-8]};
15 %% data that might be of interest outside of the detailed simulations
23 %model.RB_numintervals;
25 model.xrange = [0,1000e-6]; % grid x-coordinate range
26 model.yrange = [0,200e-6]; % grid y-coordinate range
27 model.xnumintervals = 200; % number of grid cellls in x-direction
28 model.ynumintervals = 40; % number of grid cellls in y-direction
30 model.operators_ptr = @fv_operators_implicit_explicit;
35 % init values algorithm
36 model.init_values_algorithm = @fv_init_values;
37 % model.init_values_algorithm = @(model,detailed_data) ...
38 % model.x0_function_ptr(model,detailed_data);
40 %% specify initial data
function
41 % name_init_values =
'homogeneous';
43 model.init_values_ptr = @init_values_wave;
44 model.freq_x = 5*2*pi/1000e-6;
47 % name_init_values =
'homogeneous';
50 % name_init_values =
'leftright';
53 % init_middle = (params.xrange(2)+params.xrange(1))/2;
55 %% convective flux specification
58 model.lxf_lambda = 1.0194e+003;
59 model.divclean_mode =
false;
60 model.flux_quad_degree = 1;
61 model.use_velocity_matrixfile = 1;
63 %model.velocity_matrixfile;
64 model.filecache_velocity_matrixfile_extract = 0;
66 %% data that is relevant
for detailed simulations only
69 % generate cartesian grid
70 model.gridtype =
'rectgrid';
72 %% specify dirichlet boundary values
73 model.dirichlet_values_ptr = @dirichlet_values_weighted_boxes;
74 model.c_dir = 1.0; % maximum value
75 model.beta = 0.0; % weighting parameter: 1=box1, 0 = box2
77 %% specify neuman boundary values
78 model.neumann_values_ptr = @neumann_values_rightflow;
79 % name_neuman_values =
'zero';
80 % name_neuman_values =
'homogeneous';
83 %% specify further data functions
84 model.flux_linear = 1;
85 model.diffusivity_ptr = @diffusivity_homogeneous;
86 % k = 0.000000; % diffusion coefficient
87 % k = 0.000001; % diffusion coefficient
88 % k = 1e-15; % diffusion coefficient
89 % k = 1e-10; % diffusion coefficient
90 model.k = 1e-8; % diffusion coefficient
92 % precomputed, divcleaned velocity field
93 model.name_flux =
'gdl2';
95 model.lambda = 2.0e-7; % v = - lambda * grad p
96 model.inner_product_matrix_algorithm = @fv_inner_product_matrix;
97 model.mass_matrix = @fv_mass_matrix;
98 model.energy_norm_gamma = 0.5;
99 model.alpha_over_k = 1.9915e7;
100 model.coercivity_bound_ptr = @fv_coercivity_bound;
103 % fields to ignore, such that filecaching works in basis generation
104 model.filecache_ignore_fields_in_model = {
'N',
'Nmax'};
105 model.filecache_ignore_fields_in_detailed_data = {
'RB_info'};
107 model.RB_generation_mode =
'greedy_uniform_fixed';
108 % choose extension method
110 %
'RB_extension_max_error_snapshot'};
111 model.RB_stop_timeout = 60*60; % 1 hour
112 model.RB_stop_Nmax = 20;
113 model.RB_stop_max_val_train_ratio = inf;
115 % target accuracy epsilon:
117 model.RB_stop_epsilon = 1e-9; % 0.003 is already realized by init data!!
118 %params.stop_on_val_train_ratio = 0;
120 % decide, whether estimator or
true error is error-indicator
for greedy
121 % params.RB_error_indicator =
'error'; %
true error
122 model.RB_error_indicator =
'estimator'; % Delta from rb_simulation
125 model.RB_detailed_test_savepath =
'test_data_100';
126 model.RB_test_size = 1000;
130 %bnd_rect_index = [];
132 model.bnd_rect_corner1 = [ model.xrange(1) , model.yrange(2) ; ...
133 model.xrange(1)+ 250e-6 , model.yrange(2); ...
134 model.xrange(1) , model.yrange(1); ...
135 model.xrange(1) , model.yrange(1);
136 model.xrange(2) , model.yrange(1)
138 model.bnd_rect_corner1 = model.bnd_rect_corner1
' - eps;
139 model.bnd_rect_corner2 = [ model.xrange(2), model.yrange(2); ...
140 model.xrange(2)-250e-6, model.yrange(2); ...
141 model.xrange(2), model.yrange(1);
142 model.xrange(1), model.yrange(2);
143 model.xrange(2), model.yrange(2)
145 model.bnd_rect_corner2 = model.bnd_rect_corner2' + eps;
146 model.bnd_rect_index = [-1, -2, -2 , -1, -2 ...
149 model.use_velocity_matrixfile = 1;
151 %in
case of later matrix generation: downscale original velocities
152 % model.divclean_downscale = 1;
153 % model.divclean_downscale_quota = 0.04;
155 % set matrix-file name
for optional generation or reading of file
156 model.velocity_matrixfile = [
'vel_', model.name_flux,
'_',...
157 num2str( model.xnumintervals ),
'x',...
158 num2str( model.ynumintervals ),...
159 '_l',num2str( model.lambda),
'.mat'];
161 model.dir_box_xrange = {[ model.xrange(1)-eps, ...
162 0.5*( model.xrange(1) + model.xrange(2) )], ...
163 [ 0.5*( model.xrange(1) + model.xrange(2) )-eps, ...
166 model.dir_box_yrange = {[ model.yrange(2)-eps, model.yrange(2)+eps], ...
167 [ model.yrange(2)-eps, model.yrange(2)+eps] ...
170 model.RB_numintervals = 4 * ones(size(model.mu_names));
174 model.save_time_indices = 0:model.nt;
function [ RBext , dummy ] = RB_extension_PCA_fixspace(model, detailed_data)
function computing a RB basis extension for given parameters by the POD-Greedy algorithm.
function [ L_I_diff , bdir_I_diff ] = fv_operators_diff_implicit_gradient(model, model_data, U, NU_ind)
computes diffusion contributions to finite volume time evolution matrices, or their Frechet derivati...
function model = convdiff_model(dummy)
function creating a simple model for a linear convection diffusion problem
function [ L_E_neu , b_E_neu ] = fv_operators_neumann_explicit(model, model_data, U, NU_ind)
computes a neumann contribution matrix for finite volume time evolution operators, or their Frechet derivative
function [ flux , lambda ] = conv_flux_gdl2(glob, U, params)
Function computing the convective flux of a convection problem.
function model = model_default(model, T, nt)
model = model_default(model)
function [ flux , lambda ] = conv_flux_velocity_matrixfile(glob, U, params)
function computing the convective flux of a convection problem.
function [ L_E_conv , bdir_E_conv ] = fv_operators_conv_explicit_lax_friedrichs(model, model_data, U, NU_ind)
computes convection contribution to finite volume time evolution matrices, or their Frechet derivati...