Changeset 3837
- Timestamp:
- 05/19/10 09:31:48 (15 years ago)
- 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 59 59 60 60 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()); 62 62 63 63 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)1 function [u_g varargout]=diagnostic_core_nonlinear(fem,input_loads,analysis_type,sub_analysis_type) 2 2 %DIAGNOSTIC_CORE_NONLINEAR - core solution of diagnostic non-linear 3 3 % 4 4 % 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) 6 6 7 7 % 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; 9 9 10 10 % 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 12 19 13 20 % initialize solution vector 14 21 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 node16 22 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); 21 25 22 displaystring( m.parameters.Verbose,'\n%s',[' starting direct shooting method']);26 displaystring(fem.parameters.Verbose,'\n%s',[' starting direct shooting method']); 23 27 while(~converged), 24 28 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; 35 31 36 32 %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); 38 34 39 35 %penalties … … 88 84 if nout==2, 89 85 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; 91 87 [K_gg, p_g]=SystemMatrices(m.elements,m.nodes,m.vertices,loads,m.materials,m.parameters,inputs,analysis_type,sub_analysis_type); 92 88 [K_ff, K_fs] = Reducematrixfromgtof( K_gg, m.Gmn, m.nodesets);
Note:
See TracChangeset
for help on using the changeset viewer.