Changeset 1667


Ignore:
Timestamp:
08/13/09 13:15:05 (16 years ago)
Author:
Mathieu Morlighem
Message:

cleaned up convergence criterion

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/m/solutions/cielo/diagnostic_core_nonlinear.m

    r1666 r1667  
    99
    1010%   initialize solution vector
    11         count=1;
    12         converged=0;
    13 
     11        converged=0; count=1;
    1412        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
    1513        soln(count).u_f= Reducevectorgtof(soln(count).u_g,m.nodesets);
     
    3533                [K_gg , p_g, kmax]=PenaltySystemMatrices(K_gg_nopenalty,p_g_nopenalty,m.elements,m.nodes,loads,m.materials,m.parameters,inputs,analysis_type,sub_analysis_type);
    3634
    37 
    3835                %Reduce tangent matrix from g size to f size
    3936                [K_ff, K_fs] = Reducematrixfromgtof( K_gg, m.Gmn, m.nodesets);
     
    4643
    4744                %Solve 
    48                 displaystring(m.parameters.debug>1,'%s%g','      condition number of stiffness matrix: ',condest(K_ff));
    4945                [soln(count).u_f]=Solver(K_ff,p_f,[],m.parameters);
    5046
     
    5955
    6056                %Figure out if convergence have been reached
    61 
    62                 %Solver
    63                 solver_residue=norm(K_ff*soln(count).u_f-p_f,2)/norm(p_f,2);
    64                 displaystring(m.parameters.debug>1,'%-60s%g','      convergence criterion: norm(K[n]U[n]-F)/norm(F)',solver_residue);
    65 
    66                 %Force equilibrium
    67                 res=norm(K_ff*soln(count-1).u_f-p_f,2)/norm(p_f,2);
    68                 if (res<=m.parameters.eps_res),
    69                         displaystring(m.parameters.debug,'%-60s%g%s%g%s','      mechanical equilibrium convergence criterion',res*100,' < ',m.parameters.eps_res*100,' %');
    70                         converged=1;
    71                 else
    72                         displaystring(m.parameters.debug,'%-60s%g%s%g%s','      mechanical equilibrium convergence criterion',res*100,' > ',m.parameters.eps_res*100,' %');
    73                         converged=1; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%ATTTENETIONHiohfiow
    74                 end
    75 
    76                 %Relative criterion
    77                 dug=soln(count).u_g-soln(count-1).u_g;
    78                 ndu=norm(dug,2);
    79                 nu=norm(soln(count-1).u_g,2);
    80                 if (ndu/nu<=m.parameters.eps_rel),
    81                         displaystring(m.parameters.debug,'%-60s%g%s%g%s','      relative convergence criterion: norm(du)/norm(u)',ndu/nu*100,' < ',m.parameters.eps_rel*100,' %');
    82                         converged=1;
    83                 else
    84                         displaystring(m.parameters.debug,'%-60s%g%s%g%s','      relative convergence criterion: norm(du)/norm(u)',ndu/nu*100,' > ',m.parameters.eps_rel*100,' %');
    85                         converged=0;
    86                 end
    87 
    88                 %Absolute criterion
    89                 nduinf=norm(dug,inf)*m.parameters.yts;
    90                 if ~isnan(m.parameters.eps_abs),
    91                         if (nduinf<=m.parameters.eps_abs),
    92                                 displaystring(m.parameters.debug,'%-60s%g%s%g%s','      absolute convergence criterion: max(du)',nduinf,' < ',m.parameters.eps_abs,' m/yr');
    93                         else
    94                                 displaystring(m.parameters.debug,'%-60s%g%s%g%s','      absolute convergence criterion: max(du)',nduinf,' > ',m.parameters.eps_abs,' m/yr');
    95                                 converged=0;
    96                         end
    97                 end
    98                 disp(' ')
     57                converged=convergence(K_ff,p_f,soln(count).u_f,soln(count-1).u_f,m.parameters);
    9958
    10059                %rift convergence criterion
Note: See TracChangeset for help on using the changeset viewer.