Changeset 5246


Ignore:
Timestamp:
08/13/10 11:05:27 (15 years ago)
Author:
Mathieu Morlighem
Message:

control_methods are more general now

Location:
issm/trunk/src/m
Files:
1 added
4 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/m/classes/public/ismodelselfconsistent.m

    r5134 r5246  
    346346                error('model not consistent: control_type should be a string');
    347347        end
    348         if ~(strcmpi(md.control_type,'rheology_B') | strcmpi(md.control_type,'drag_coefficient')),
     348        if ~(strcmpi(md.control_type,'rheology_B') | strcmpi(md.control_type,'drag_coefficient') | strcmpi(md.control_type,'dhdt')),
    349349                error('model not consistent: control_type should be rheology_B or drag_coefficient');
    350350        end
  • issm/trunk/src/m/solutions/SolutionConfiguration.m

    r5103 r5246  
    55%      [analyses, numanalyses, solutioncore]=SolutionConfiguration(solutiontype);
    66
     7%get solution_core string
     8solutioncore=CorePointerFromSolutionEnum(solutiontype);
     9
    710switch solutiontype,
    811
     
    1013                numanalyses=6;
    1114                analyses=[DiagnosticHorizAnalysisEnum;DiagnosticVertAnalysisEnum;DiagnosticStokesAnalysisEnum;DiagnosticHutterAnalysisEnum;SurfaceSlopeAnalysisEnum;BedSlopeAnalysisEnum];
    12                 solutioncore='diagnostic_core';
    1315
    1416        case SteadystateSolutionEnum,
    1517                numanalyses=8;
    1618                analyses=[DiagnosticHorizAnalysisEnum;DiagnosticVertAnalysisEnum;DiagnosticStokesAnalysisEnum;DiagnosticHutterAnalysisEnum;SurfaceSlopeAnalysisEnum;BedSlopeAnalysisEnum;ThermalAnalysisEnum;MeltingAnalysisEnum];
    17                 solutioncore='steadystate_core';
    1819
    1920        case ThermalSolutionEnum,
    2021                numanalyses=2;
    2122                analyses=[ThermalAnalysisEnum;MeltingAnalysisEnum];
    22                 solutioncore='thermal_core';
    2323
    2424        case PrognosticSolutionEnum,
    2525                numanalyses=1;
    2626                analyses=[PrognosticAnalysisEnum];
    27                 solutioncore='prognostic_core';
    2827
    2928        case BalancedthicknessSolutionEnum,
    3029                numanalyses=1;
    3130                analyses=[BalancedthicknessAnalysisEnum];
    32                 solutioncore='balancedthickness_core';
    3331
    3432        case BalancedvelocitiesSolutionEnum,
    3533                numanalyses=1;
    3634                analyses=[BalancedvelocitiesAnalysisEnum];
    37                 solutioncore='balancedvelocities_core';
    3835
    3936        case SurfaceSlopeSolutionEnum,
    4037                numanalyses=1;
    4138                analyses=[SurfaceSlopeAnalysisEnum];
    42                 solutioncore='surfaceslope_core';
    4339
    4440        case BedSlopeSolutionEnum,
    4541                numanalyses=1;
    4642                analyses=[BedSlopeAnalysisEnum];
    47                 solutioncore='bedslope_core';
    4843
    4944        case Transient2DSolutionEnum,
    5045                numanalyses=7;
    5146                analyses=[DiagnosticHorizAnalysisEnum;DiagnosticVertAnalysisEnum;DiagnosticStokesAnalysisEnum;DiagnosticHutterAnalysisEnum;SurfaceSlopeAnalysisEnum;BedSlopeAnalysisEnum;PrognosticAnalysisEnum];
    52                 solutioncore='transient2d_core';
    5347
    5448        case Transient3DSolutionEnum,
    5549                numanalyses=9;
    5650                analyses=[DiagnosticHorizAnalysisEnum;DiagnosticVertAnalysisEnum;DiagnosticStokesAnalysisEnum;DiagnosticHutterAnalysisEnum;SurfaceSlopeAnalysisEnum;BedSlopeAnalysisEnum;PrognosticAnalysisEnum;ThermalAnalysisEnum;MeltingAnalysisEnum];
    57                 solutioncore='transient3d_core';
    5851
    5952        otherwise
  • issm/trunk/src/m/solutions/balancedvelocities_core.m

    r4903 r5246  
    1818        if solution_type==BalancedvelocitiesSolutionEnum,
    1919                displaystring(verbose,'\n%s',['saving results...']);
    20                 femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,VxEnum);
    21                 femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,VyEnum);
     20                femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,VelEnum);
    2221        end
    2322
  • issm/trunk/src/m/solutions/control_core.m

    r4967 r5246  
    66%
    77
    8         %Preprocess models
    9         femmodel=stokescontrolinit(femmodel);
    10 
    118        %recover parameters common to all solutions
    129        verbose=femmodel.parameters.Verbose;
    1310        nsteps=femmodel.parameters.NSteps;
    1411        control_type=femmodel.parameters.ControlType;
     12        solution_type=femmodel.parameters.SolutionType;
    1513        fit=femmodel.parameters.Fit;
    1614        optscal=femmodel.parameters.OptScal;
     
    2018        tolx=femmodel.parameters.TolX;
    2119        cm_gradient=femmodel.parameters.CmGradient;
    22         control_steady=femmodel.parameters.ControlSteady;
    2320        dim=femmodel.parameters.Dim;
    2421
     
    3027        J=zeros(nsteps,1);
    3128
     29        %Get core from solution type
     30        solutioncore=CorePointerFromSolutionEnum(solution_type);
     31
     32        %Preprocess models
     33        if(solution_type==SteadystateSolutionEnum || solution_type==DiagnosticSolutionEnum)
     34                femmodel=stokescontrolinit(femmodel);
     35        end
     36
    3237        for n=1:nsteps,
    3338
     
    3641
    3742                %In case we are running a steady state control method, compute new temperature field using new parameter distribution:
    38                 if control_steady;
     43                if (solution_type==SteadystateSolutionEnum)
    3944                        femmodel=steadystate_core(femmodel);
    4045                end
     
    6772        %generate output
    6873        displaystring(verbose,'\n%s',['      preparing final velocity solution...']);
    69         if control_steady,
    70                 femmodel=steadystate_core(femmodel);
    71         else
    72                 femmodel=diagnostic_core(femmodel);
    73         end
     74        eval(['femmodel=' solutioncore '(femmodel);']);
    7475
    7576        %Some results not computed by diagnostic or steadystate
Note: See TracChangeset for help on using the changeset viewer.