GradJCompute

PURPOSE ^

Recover flag_y_s0:

SYNOPSIS ^

function gradients=GradJCompute(m,params, inputs, u_g_obs,control_types,analysis);

DESCRIPTION ^

Recover flag_y_s0:

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function gradients=GradJCompute(m,params, inputs, u_g_obs,control_types,analysis);
0002 
0003 %Recover flag_y_s0:
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 %Recover solution for this stiffness and right hand side:
0015 [u_g K_ff0 K_fs0 ]=cielodiagnostic_core_nonlinear(m,params,inputs,'diagnostic_horiz'); u_g=full(u_g);
0016 
0017 %Buid Du, difference between observed velocity and model velocity.
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 %Reduce adjoint load from g-set to f-set
0021 [Du_f] = Reducerightside( Du_g, m.G_mn, K_fs0, m.y_s0, flag_y_s0, m.uset); %y_s0 for no velocity at the dirichlet boundary.
0022 
0023 %Solve for adjoint vector:
0024 lambda_f=Solver(K_ff0,Du_f,'general');
0025 
0026 %Merge back to g set
0027 lambda_g= Mergesolvec( lambda_f, m.G_mn, m.y_s0, m.uset ); lambda_g=full(lambda_g); 
0028 
0029 %Compute gradJ for each parameter
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

Generated on Sun 29-Mar-2009 20:22:55 by m2html © 2003