Changeset 4115


Ignore:
Timestamp:
06/22/10 08:40:18 (15 years ago)
Author:
Eric.Larour
Message:

Finished created solvers for serial solutions

Location:
issm/trunk/src/m/solvers
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/m/solvers/solver_diagnostic_nonlinear.m

    r4114 r4115  
    1 function [femmodel ug varargout]=diagnostic_core_nonlinear(femmodel,conserve_loads)
    2 %DIAGNOSTIC_CORE_NONLINEAR - core solution of diagnostic non-linear
     1function [femmodel ug varargout]=solver_diagnostic_nonlinear(femmodel,conserve_loads)
     2%SOLVER_DIAGNOSTIC_NONLINEAR - core solver of diagnostic run
    33%
    44%   Usage:
    5 %      [femmodel ug varargout]=diagnostic_core_nonlinear(femmodel,conserve_loads)
     5%      [femmodel ug varargout]=solver_diagnostic_nonlinear(femmodel,conserve_loads)
    66       
    77
     
    4444
    4545                %Update inputs using new solution
    46                 femmodel.elements=UpdateInputsFromSolution(femmodel.elements,femmodel.nodes,femmodel.vertices,loads,femmodel.materials,femmodel.parameters,ug);
     46                femmodel.elements=InputUpdateFromSolution(femmodel.elements,femmodel.nodes,femmodel.vertices,loads,femmodel.materials,femmodel.parameters,ug);
    4747               
    4848                displaystring(femmodel.parameters.Verbose,'%s','   penalty constraints');
  • issm/trunk/src/m/solvers/solver_linear.m

    r4114 r4115  
    1 function u_g=diagnostic_core_linear(m,analysis_type,sub_analysis_type)
    2 %DIAGNOSTIC_CORE_LINEAR - linear solution sequence
     1function [femmodel u_g]=solver_linear(femmodel)
     2%SOLVER_LINEAR - core solver of any linear solution sequence
    33%
    44%   Usage:
    5 %      u_g=diagnostic_core_linear(m,analysis_type,sub_analysis_type)
     5%      [femmodel, u_g]=solver_linear(femmodel)
    66
    77        %stiffness and load generation only:
    8         m.parameters.Kflag=1; m.parameters.Pflag=1;
     8        femmodel.parameters.Kflag=1; femmodel.parameters.Pflag=1;
    99
    1010        %system matrices
    11         [K_gg, p_g]=SystemMatrices(m.elements,m.nodes,m.vertices,m.loads,m.materials,m.parameters,analysis_type,sub_analysis_type);
    12         [K_gg, p_g,kmax]=PenaltySystemMatrices(K_gg,p_g,m.elements,m.nodes,m.vertices,m.loads,m.materials,m.parameters,analysis_type,sub_analysis_type);
     11        [K_gg, p_g]=SystemMatrices(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters);
     12        [K_gg, p_g,kmax]=PenaltySystemMatrices(K_gg,p_g,femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters);
    1313       
    1414        %Reduce tangent matrix from g size to f size
    15         [K_ff, K_fs] = Reducematrixfromgtof( K_gg, m.Gmn, m.nodesets);
    16         displaystring(m.parameters.Verbose>1,'%s%g','      condition number of stiffness matrix: ',condest(K_ff));
     15        [K_ff, K_fs] = Reducematrixfromgtof( K_gg, femmodel.Gmn, femmodel.nodesets);
     16        displaystring(femmodel.parameters.Verbose>1,'%s%g','      condition number of stiffness matrix: ',condest(K_ff));
    1717       
    1818        %Reduce load from g size to f size
    19         [p_f] = Reduceloadfromgtof( p_g, m.Gmn, K_fs, m.ys, m.nodesets);
     19        p_f = Reduceloadfromgtof( p_g, femmodel.Gmn, K_fs, femmodel.ys, femmodel.nodesets);
    2020
    2121        %Solve 
    22         [u_f]=Solver(K_ff,p_f,[],m.parameters);
     22        u_f=Solver(K_ff,p_f,[],femmodel.parameters);
    2323       
    2424        %Merge back to g set
    25         [u_g]= Mergesolutionfromftog( u_f, m.Gmn, m.ys, m.nodesets );
    26 
    27 end %end function
     25        u_g= Mergesolutionfromftog( u_f, femmodel.Gmn, femmodel.ys, femmodel.nodesets );
  • issm/trunk/src/m/solvers/solver_thermal_nonlinear.m

    r4114 r4115  
    1 function [t_g ,loads, melting_offset]=thermal_core_nonlinear(m,analysis_type,sub_analysis_type)
    2 %THERMAL_CORE_NONLINEAR - core of thermal solution sequence.
    3 %   model is return together with temperature
     1function [femmodel t_g ,melting_offset]=solver_thermal_nonlinear(femmodel)
     2%SOLVER_THERMAL_NONLINEAR - core of thermal solution sequence.
     3%   femmodel is returned together with temperature and melting_offset, in case loads have been modified
    44%
    55%   Usage:
    6 %      [t_g ,loads, melting_offset]=thermal_core_nonlinear(m,analysis_type,sub_analysis_type);
     6%      [femmodel t_g melting_offset]=solver_thermal_nonlinear(femmodel)
    77
    88        count=1;
    99        converged=0;
    1010
    11 %   we are going to return the loads, make them a variable of this routine
    12         loads=m.loads;
     11        %stiffness and load generation only:
     12        femmodel.parameters.Kflag=1; femmodel.parameters.Pflag=1;
    1313
    14         %stiffness and load generation only:
    15         m.parameters.Kflag=1; m.parameters.Pflag=1;
    16 
    17         displaystring(m.parameters.Verbose,'\n%s',['   starting direct shooting method']);
    18        
     14        displaystring(femmodel.parameters.Verbose,'\n%s',['   starting direct shooting method']);
    1915        while(~converged),
    2016
    2117                %Update inputs in datasets
    2218                if count==1 reset_penalties=0; else reset_penalties=1; end
    23                 [m.elements m.loads]=UpdateInputsFromConstant(m.elements,m.nodes,m.vertices,loads,m.materials,m.parameters,reset_penalties,ResetPenaltiesEnum);
     19                InputUpdateFromConstant(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,reset_penalties,ResetPenaltiesEnum);
    2420
    2521                %system matrices
    26                 if ~m.parameters.Lowmem
    27                         if count==1
    28                                 displaystring(m.parameters.Verbose,'%s',['   system matrices']);
    29                                 [K_gg_nopenalty, p_g_nopenalty]=SystemMatrices(m.elements,m.nodes,m.vertices,loads,m.materials,m.parameters,analysis_type,sub_analysis_type);
    30                         end
    31                         displaystring(m.parameters.Verbose,'%s',['   penalty system matrices']);
    32                         [K_gg , p_g, melting_offset]=PenaltySystemMatrices(K_gg_nopenalty,p_g_nopenalty,m.elements,m.nodes,m.vertices,loads,m.materials,m.parameters,analysis_type,sub_analysis_type);
    33                 else
    34                                 m.parameters.Verbose
    35                         displaystring(m.parameters.Verbose,'%s',['   system matrices']);
    36                         [K_gg , p_g]=SystemMatrices(m.elements,m.nodes,m.vertices,loads,m.materials,m.parameters,analysis_type,sub_analysis_type);
    37                         displaystring(m.parameters.Verbose,'%s',['   penalty system matrices']);
    38                         [K_gg , p_g, melting_offset]=PenaltySystemMatrices(K_gg,p_g,m.elements,m.nodes,m.vertices,loads,m.materials,m.parameters,analysis_type,sub_analysis_type);
     22                if count==1
     23                        displaystring(femmodel.parameters.Verbose,'%s',['   system matrices']);
     24                        [K_gg_nopenalty, p_g_nopenalty]=SystemMatrices(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,analysis_type,sub_analysis_type);
    3925                end
     26                displaystring(femmodel.parameters.Verbose,'%s',['   penalty system matrices']);
     27                [K_gg , p_g, melting_offset]=PenaltySystemMatrices(K_gg_nopenalty,p_g_nopenalty,femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,analysis_type,sub_analysis_type);
    4028
    4129                %Reduce tangent matrix from g size to f size
    42                 [K_ff, K_fs] = Reducematrixfromgtof( K_gg, m.Gmn, m.nodesets);
     30                [K_ff, K_fs] = Reducematrixfromgtof( K_gg, femmodel.Gmn, femmodel.nodesets);
    4331
    4432                %Reduce load from g size to f size
    45                 [p_f] = Reduceloadfromgtof( p_g, m.Gmn, K_fs, m.ys, m.nodesets);
     33                p_f = Reduceloadfromgtof( p_g, femmodel.Gmn, K_fs, femmodel.ys, femmodel.nodesets);
    4634
    47                 %Solve 
    48                 displaystring(m.parameters.Verbose,'%s%g','   condition number of stiffness matrix: ',condest(K_ff));
    49                 [t_f]=Solver(K_ff,p_f,[],m.parameters);
     35                displaystring(femmodel.parameters.Verbose,'%s%g','   condition number of stiffness matrix: ',condest(K_ff));
     36                t_f=Solver(K_ff,p_f,[],femmodel.parameters);
    5037
    51                 %Merge back to g set
    52                 displaystring(m.parameters.Verbose,'%s',['   merging solution back to g set']);
    53                 [t_g]= Mergesolutionfromftog( t_f, m.Gmn, m.ys, m.nodesets );
     38                displaystring(femmodel.parameters.Verbose,'%s',['   merging solution back to g set']);
     39                t_g= Mergesolutionfromftog( t_f, femmodel.Gmn, femmodel.ys, femmodel.nodesets );
    5440
    55                 %Update inputs in datasets
    56                 displaystring(m.parameters.Verbose,'%s',['   update inputs']);
    57                 [m.elements,m.nodes,m.vertices,loads,m.materials,m.parameters] = UpdateInputsFromVector(m.elements,m.nodes,m.vertices,loads,m.materials,m.parameters,t_g,TemperatureEnum, VertexEnum);
     41                displaystring(femmodel.parameters.Verbose,'%s',['   update inputs']);
     42                femmodel.elements=InputUpdateFromSolution(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,t_g);
    5843       
    5944                %penalty constraints
    60                 displaystring(m.parameters.Verbose,'%s',['   penalty constraints']);
    61                 [loads,constraints_converged,num_unstable_constraints] =PenaltyConstraints(m.elements,m.nodes,m.vertices,loads, m.materials,m.parameters,analysis_type,sub_analysis_type);
     45                displaystring(femmodel.parameters.Verbose,'%s',['   penalty constraints']);
     46                [femmodel.loads,constraints_converged,num_unstable_constraints] =PenaltyConstraints(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads, femmodel.materials,femmodel.parameters,analysis_type,sub_analysis_type);
    6247       
    6348                if ~converged,
    64                         displaystring(m.parameters.Verbose,'%s%i','   #unstable constraints ',num_unstable_constraints);
     49                        displaystring(femmodel.parameters.Verbose,'%s%i','   #unstable constraints ',num_unstable_constraints);
    6550                       
    66                         if num_unstable_constraints<=m.parameters.MinThermalConstraints,
     51                        if num_unstable_constraints<=femmodel.parameters.MinThermalConstraints,
    6752                                converged=1;
    6853                        end
Note: See TracChangeset for help on using the changeset viewer.