0001 function gradients=GradJCompute(m,params, inputs, u_g_obs,control_types,analysis);
0002
0003
0004 if ~isempty(m.y_s0),
0005 if size(m.y_s0,1)==0,
0006 flag_y_s0= 0;
0007 else
0008 flag_y_s0= 1;
0009 end
0010 else
0011 flag_y_s0= 0;
0012 end
0013
0014
0015 [u_g K_ff0 K_fs0 ]=cielodiagnostic_core_nonlinear(m,params,inputs,'diagnostic_horiz'); u_g=full(u_g);
0016
0017
0018 [Du_g]=Du(m.bgpdt,m.bgpdtb, m.est,m.ept, m.mpt, m.lst, u_g,u_g_obs,inputs,analysis);
0019
0020
0021 [Du_f] = Reducerightside( Du_g, m.G_mn, K_fs0, m.y_s0, flag_y_s0, m.uset);
0022
0023
0024 lambda_f=Solver(K_ff0,Du_f,'general');
0025
0026
0027 lambda_g= Mergesolvec( lambda_f, m.G_mn, m.y_s0, m.uset ); lambda_g=full(lambda_g);
0028
0029
0030 num_params=length(control_types);
0031 gradients=cell(num_params,1);
0032 for i=1:num_params,
0033 gradients{i}=Gradj(m.bgpdt,m.bgpdtb, m.est,m.ept, m.mpt, m.lst, u_g, lambda_g,inputs,control_types{i},analysis);
0034 end