1 function model_data = comsol_evol_gen_model_data(model)
2 %
function model_data = comsol_stat_gen_model_data(model)
4 % This
function which extracts and computes the model_data from the comsol_model
7 % - the operators needed
for detailed_simulation
8 % - inner-product matrices
11 % Oliver Zeeb, 04.06.13
13 if model.use_comsol %let comsol
do all the work!
14 comsol_model = mphload(model.comsol_model_name);
15 comsol_model = comsol_set_mu_from_rbmatlab_model(model,comsol_model);
17 %disable scaling so that alle the extracted matrices can be combined.
18 comsol_model.sol(model.comsol_tags.sol).feature(
'v1').set(
'scalemethod',
'none');
20 model_data.comsol_model = comsol_model;
21 comsol_model.mesh(model.comsol_tags.mesh).run;
22 comsol_model.sol(model.comsol_tags.sol).runAll;
23 model_data.grid_info = mphxmeshinfo(comsol_model);%,
'solname', model.comsol_tags.sol);
24 model_data.operators.init_values = mphgetu(comsol_model,
'solnum',1);
25 model_data.comsol_tags = model.comsol_tags;
27 %extract the operators from COMSOL and store them in model_data
28 model.decomp_mode = 1;
29 [L_I_comp, L_E_comp, b_comp] = model.operators_ptr(model,model_data);
30 model_data.operators.L_I_comp = L_I_comp;
31 model_data.operators.L_E_comp = L_E_comp;
32 model_data.operators.b_comp = b_comp;
33 if model.compute_output_functional
34 [v, s_l2norm] = model.operators_output(model, model_data);
35 model_data.operators.operators_output = v;
36 model_data.operators.output_operator_l2norm = s_l2norm;
39 %compute index vectors
40 str = mphmatrix(comsol_model,
'sol1',
'Out',{
'Null'},
'initmethod',
'init',
'initsol',
'zero');
41 model_data.ind_vectors.Null = str.Null;
42 model_data.ind_vectors.com_DBC_ind = find(sum(str.Null,2)==0);
43 model_data.ind_vectors.com_DOF_ind = find(sum(str.Null,2)~=0);
45 % inner product matrices:
46 model_data.inner_product_matrices = comsol_calculate_inner_product_matrices(model,model_data);
50 else %
do the work by hand --> use only matlab! --> load model data from file
51 load([model.comsol_model_name
' '_model_data
']);