rbmatlab  1.16.09
 All Classes Namespaces Files Functions Variables Modules Pages
convdiff_model.m
Go to the documentation of this file.
1 function model=convdiff_model(dummy)
2 % function model=convdiff_model(dummy)
3 % function creating a simple model for a linear convection diffusion problem
4 %
5 % This model describes a linear fuelcell problem with three parameters.
6 
7  model = lin_evol_model_default;
8 
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]};
14 
15  %% data that might be of interest outside of the detailed simulations
16  model.T = 0.5;
17  model.nt = 200;
18  %model.dt;
19  %model.mu;
20 
21  %model.N;
22  %model.Nmax;
23  %model.RB_numintervals;
24 
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
29 
30  model.operators_ptr = @fv_operators_implicit_explicit;
31  model.operators_diff_implicit = @fv_operators_diff_implicit_gradient;
32  model.operators_conv_explicit = @fv_operators_conv_explicit_lax_friedrichs;
33  model.operators_neumann_explicit = @fv_operators_neumann_explicit;
34 
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);
39 
40  %% specify initial data function
41  % name_init_values = 'homogeneous';
42  % c_init = 0.0;
43  model.init_values_ptr = @init_values_wave;
44  model.freq_x = 5*2*pi/1000e-6;
45  model.freq_y = 0;
46  model.c_init = 1.0;
47  % name_init_values = 'homogeneous';
48  % c_init = 0.3;
49 
50  % name_init_values = 'leftright';
51  % c_init_left = 0.3;
52  % c_init_right = 0.7;
53  % init_middle = (params.xrange(2)+params.xrange(1))/2;
54 
55  %% convective flux specification
56  % conv_flux_ptr = @conv_flux_gdl2;
57  model.conv_flux_ptr = @conv_flux_velocity_matrixfile;
58  model.lxf_lambda = 1.0194e+003;
59  model.divclean_mode = false;
60  model.flux_quad_degree = 1;
61  model.use_velocity_matrixfile = 1;
62 
63  %model.velocity_matrixfile;
64  model.filecache_velocity_matrixfile_extract = 0;
65 
66  %% data that is relevant for detailed simulations only
67 
68  %% specify grid type
69  % generate cartesian grid
70  model.gridtype = 'rectgrid';
71 
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
76 
77  %% specify neuman boundary values
78  model.neumann_values_ptr = @neumann_values_rightflow;
79  % name_neuman_values = 'zero';
80  % name_neuman_values = 'homogeneous';
81  % c_neu = 0;
82 
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
91 
92  % precomputed, divcleaned velocity field
93  model.name_flux = 'gdl2';
94 
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;
101 
102 
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'};
106 
107  model.RB_generation_mode = 'greedy_uniform_fixed';
108  % choose extension method
109  model.RB_extension_algorithm = @RB_extension_PCA_fixspace;
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;
114 
115  % target accuracy epsilon:
116 
117  model.RB_stop_epsilon = 1e-9; % 0.003 is already realized by init data!!
118  %params.stop_on_val_train_ratio = 0;
119 
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
123 
124  % test parameters
125  model.RB_detailed_test_savepath = 'test_data_100';
126  model.RB_test_size = 1000;
127 
128  %bnd_rect_corner1;
129  %bnd_rect_corner2;
130  %bnd_rect_index = [];
131 
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)
137  ];
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)
144  ];
145  model.bnd_rect_corner2 = model.bnd_rect_corner2' + eps;
146  model.bnd_rect_index = [-1, -2, -2 , -1, -2 ...
147  ];
148 
149  model.use_velocity_matrixfile = 1;
150 
151  %in case of later matrix generation: downscale original velocities
152  % model.divclean_downscale = 1;
153  % model.divclean_downscale_quota = 0.04;
154 
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'];
160 
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, ...
164  model.xrange(2)]...
165  };
166  model.dir_box_yrange = {[ model.yrange(2)-eps, model.yrange(2)+eps], ...
167  [ model.yrange(2)-eps, model.yrange(2)+eps] ...
168  };
169 
170  model.RB_numintervals = 4 * ones(size(model.mu_names));
171 
172  model = model_default(model);
173 
174  model.save_time_indices = 0:model.nt;
175 
176  model.verbose = 5;
177  model.debug = 0;
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)
Definition: model_default.m:17
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...