-
Notifications
You must be signed in to change notification settings - Fork 2
/
model_updateV.m
42 lines (42 loc) · 1.37 KB
/
model_updateV.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
%-------------------------------------------------------------
% This is the file model_updateV.m
%
% Version Nov 2019.
% Simone Coniglio <simone.coniglio@airbus.com>
% Propulsion Airframe Stress Transverse,
% 31300 Toulouse, France.
%
function [rho,drho_ddelta,drho_dm]=model_updateV(delta,p,X)
% update local densities
m=X(6:6:end);
nc=length(m);
m=repmat(m(:),1,size(delta,2));
switch p.method
case 'MMC'
rho=delta;
drho_ddelta=ones(size(delta));
drho_ddelta=repmat(drho_ddelta,size(m,1),1);
drho_dm=0*m;
case 'GP'
hatdelta=delta.*m.^p.gammav;
[rho,drho_dhatdelta]=Aggregation_Pi(hatdelta,p);
if p.saturation
[rho,ds]=smooth_sat(rho,p,nc);
drho_dhatdelta=ds.*drho_dhatdelta;
end
dhatdelta_ddelta=m.^p.gammav;
dhatdelta_dm=p.gammav*delta.*m.^(p.gammav-1);
drho_ddelta=dhatdelta_ddelta.*drho_dhatdelta;
drho_dm=drho_dhatdelta.*dhatdelta_dm;
case 'MNA'
hatdelta=delta.*m.^p.gammav;
[rho,drho_dhatdelta]=Aggregation_Pi(hatdelta,p);
if p.saturation
[rho,ds]=smooth_sat(rho,p,nc);
drho_dhatdelta=ds.*drho_dhatdelta;
end
dhatdelta_ddelta=m.^p.gammav;
dhatdelta_dm=p.gammav*delta.*m.^(p.gammav-1);
drho_ddelta=dhatdelta_ddelta.*drho_dhatdelta;
drho_dm=drho_dhatdelta.*dhatdelta_dm;
end