Changeset 3837


Ignore:
Timestamp:
05/19/10 09:31:48 (15 years ago)
Author:
seroussi
Message:

some changes in diagnostic solution

Location:
issm/trunk/src/m/solutions/jpl
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/m/solutions/jpl/diagnostic_core.m

    r3793 r3837  
    5959
    6060        displaystring(verbose,'\n%s',['computing horizontal velocities...']);
    61         [u_g m_dh.loads]=diagnostic_core_nonlinear(m_dh,DiagnosticAnalysisEnum(),HorizAnalysisEnum());
     61        [u_g m_dh.loads]=diagnostic_core_nonlinear(m_dh,m_dh.loads,DiagnosticAnalysisEnum(),HorizAnalysisEnum());
    6262
    6363        if dim==2,
  • issm/trunk/src/m/solutions/jpl/diagnostic_core_nonlinear.m

    r3799 r3837  
    1 function [u_g varargout]=diagnostic_core_nonlinear(m,analysis_type,sub_analysis_type)
     1function [u_g varargout]=diagnostic_core_nonlinear(fem,input_loads,analysis_type,sub_analysis_type)
    22%DIAGNOSTIC_CORE_NONLINEAR - core solution of diagnostic non-linear
    33%
    44%   Usage:
    5 %      [u_g varargout]=diagnostic_core_nonlinear(m,analysis_type,sub_analysis_type)
     5%      [u_g varargout]=diagnostic_core_nonlinear(fem,analysis_type,sub_analysis_type)
    66       
    77%   first off! We are going to modify the loads dataset. We need to shield the loads from those changes once we return;
    8         loads=m.loads;
     8        loads=fem.loads;
    99
    1010%       stiffness and load generation only:
    11         m.parameters.kflag=1; m.parameters.pflag=1;
     11        fem.parameters.Kflag=1; fem.parameters.Pflag=1;
     12
     13%       Were loads requested as outputs ?
     14        if isempty(loads),
     15                loads=fem.loads;
     16        else
     17                loads=input_loads;
     18        end
    1219
    1320%   initialize solution vector
    1421        converged=0; count=1;
    15         soln(count).u_g=get(inputs,'velocity',[1 1 (m.parameters.NumberOfDofsPerNode>=3) (m.parameters.NumberOfDofsPerNode>=3)]); %only keep vz if running with more than 3 dofs per node
    1622
    17         soln(count).u_f= Reducevectorgtof(soln(count).u_g,m.nodesets);
    18                
    19         %add converged=0 flag first in inputs.
    20         inputs=add(inputs,'converged',converged,'double');
     23        ug=GetSolutionFromInputs(fem.elements, fem.nodes, fem.vertices, fem.loads, fem.materials, fem.parameters, analysis_type, sub_analysis_type);
     24        uf=Reducevectorgtof( ug, fem.nodesets);
    2125
    22         displaystring(m.parameters.Verbose,'\n%s',['   starting direct shooting method']);
     26        displaystring(fem.parameters.Verbose,'\n%s',['   starting direct shooting method']);
    2327        while(~converged),
    2428               
    25                 %add velocity to inputs
    26                 inputs=add(inputs,'velocity',soln(count).u_g,'doublevec',m.parameters.NumberOfDofsPerNode,m.parameters.NumberOfNodes);
    27                 if count>1,
    28                         inputs=add(inputs,'old_velocity',soln(count-1).u_g,'doublevec',m.parameters.NumberOfDofsPerNode,m.parameters.NumberOfNodes);
    29                 else
    30                         inputs=add(inputs,'old_velocity',soln(count).u_g,'doublevec',m.parameters.NumberOfDofsPerNode,m.parameters.NumberOfNodes);
    31                 end
    32                
    33                 %Update inputs in datasets
    34                 [m.elements,m.nodes,m.vertices, loads,m.materials,m.parameters]=UpdateFromInputs(m.elements,m.nodes,m.vertices, loads,m.materials,m.parameters,inputs);
     29                old_ug=ug;
     30                old_uf=uf;
    3531               
    3632                %system matrices
    37                 [K_gg_nopenalty , p_g_nopenalty]=SystemMatrices(m.elements,m.nodes,m.vertices,loads,m.materials,m.parameters,inputs,analysis_type,sub_analysis_type);
     33                [K_gg_nopenalty , p_g_nopenalty]=SystemMatrices(fem.elements,fem.nodes,fem.vertices,loads,fem.materials,fem.parameters,analysis_type,sub_analysis_type);
    3834       
    3935                %penalties
     
    8884        if nout==2,
    8985                inputs=add(inputs,'velocity',u_g,'doublevec',m.parameters.NumberOfDofsPerNode,m.parameters.NumberOfNodes);
    90                 m.parameters.kflag=1; m.parameters.pflag=0;
     86                m.parameters.Kflag=1; m.parameters.Pflag=0;
    9187                [K_gg, p_g]=SystemMatrices(m.elements,m.nodes,m.vertices,loads,m.materials,m.parameters,inputs,analysis_type,sub_analysis_type);
    9288                [K_ff, K_fs] = Reducematrixfromgtof( K_gg, m.Gmn, m.nodesets);
Note: See TracChangeset for help on using the changeset viewer.