Changeset 472


Ignore:
Timestamp:
05/18/09 11:53:23 (15 years ago)
Author:
Eric.Larour
Message:

New thermal solution. Still missing the thermal elements

Location:
issm/trunk/src
Files:
11 added
7 deleted
23 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/EnumDefinitions/AnalysisTypeAsEnum.cpp

    r465 r472  
    5757                return VertAnalysisEnum();
    5858        }
     59        else if (strcmp(analysis_type,"steady")==0){
     60                return SteadyAnalysisEnum();
     61        }
     62        else if (strcmp(analysis_type,"transient")==0){
     63                return TransientAnalysisEnum();
     64        }
    5965        else if (strcmp(analysis_type,"")==0){
    6066                return NoneAnalysisEnum();
  • issm/trunk/src/c/EnumDefinitions/EnumDefinitions.cpp

    r465 r472  
    3030int VertAnalysisEnum(void){ return                      33; }
    3131int NoneAnalysisEnum(void){ return                      34; }
     32int SteadyAnalysisEnum(void){          return           35; }
     33int TransientAnalysisEnum(void){          return        36; }
    3234
    3335/*datasets: */
  • issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h

    r465 r472  
    4949int VertAnalysisEnum(void);
    5050int NoneAnalysisEnum(void);
     51int SteadyAnalysisEnum(void);
     52int TransientAnalysisEnum(void);
    5153
    5254
  • issm/trunk/src/c/Makefile.am

    r465 r472  
    162162                                        ./io/FetchRifts.cpp\
    163163                                        ./io/ParameterInputsInit.cpp\
     164                                        ./io/pfopen.cpp\
     165                                        ./io/pfclose.cpp\
    164166                                        ./EnumDefinitions/EnumDefinitions.h\
    165167                                        ./EnumDefinitions/EnumDefinitions.cpp\
     
    406408                                        ./io/FetchRifts.cpp\
    407409                                        ./io/ParameterInputsInit.cpp\
     410                                        ./io/pfopen.cpp\
     411                                        ./io/pfclose.cpp\
    408412                                        ./EnumDefinitions/EnumDefinitions.h\
    409413                                        ./EnumDefinitions/EnumDefinitions.cpp\
     
    493497                                        ./parallel/diagnostic_core_linear.cpp\
    494498                                        ./parallel/diagnostic_core_nonlinear.cpp\
     499                                        ./parallel/thermal_core.cpp\
    495500                                        ./parallel/CreateFemModel.cpp\
    496501                                        ./parallel/OutputDiagnostic.cpp\
     
    498503                                        ./parallel/control.cpp\
    499504                                        ./parallel/OutputControl.cpp\
     505                                        ./parallel/OutputThermal.cpp\
    500506                                        ./parallel/objectivefunctionC.cpp\
    501507                                        ./parallel/GradJCompute.cpp
  • issm/trunk/src/c/PenaltySystemMatricesx/PenaltySystemMatricesx.cpp

    r465 r472  
    1313#include "../EnumDefinitions/EnumDefinitions.h"
    1414
    15 void PenaltySystemMatricesx(Mat Kgg, Vec pg,DataSet* elements,DataSet* nodes,DataSet* loads,DataSet* materials,
     15void PenaltySystemMatricesx(Mat Kgg, Vec pg,double* pkmax,DataSet* elements,DataSet* nodes,DataSet* loads,DataSet* materials,
    1616                int kflag,int pflag,ParameterInputs* inputs,int analysis_type,int sub_analysis_type){
    1717       
     
    5252        #endif
    5353
    54 
     54        /*Assign output pointers:*/
     55        if(pkmax)*pkmax=kmax;
    5556
    5657}
  • issm/trunk/src/c/PenaltySystemMatricesx/PenaltySystemMatricesx.h

    r465 r472  
    1010
    1111/* local prototypes: */
    12 void PenaltySystemMatricesx(Mat Kgg, Vec pg,DataSet* elements,DataSet* nodes,DataSet* loads,DataSet* materials,
     12void PenaltySystemMatricesx(Mat Kgg, Vec pg,double* pkmax, DataSet* elements,DataSet* nodes,DataSet* loads,DataSet* materials,
    1313                int kflag,int pflag,ParameterInputs* inputs,int analysis_type,int sub_analysis_type);
    1414
  • issm/trunk/src/c/io/io.h

    r117 r472  
    4545int FetchRifts(int** priftsnumpenaltypairs,double*** priftspenaltypairs,int** priftsfill,double** priftsfriction,ConstDataHandle model_handle,int numrifts);
    4646
     47/*File I/O: */
     48FILE* pfopen(char* filename,char* format);
     49void* pfclose(FILE* fid,char* filename);
     50
    4751#endif  /* _IMDB_H */
    4852
  • issm/trunk/src/c/parallel/OutputControl.cpp

    r317 r472  
    3838        /* Open output file to write raw binary data: */
    3939        if(my_rank==0){
    40                 fid=fopen(filename,"wb");
    41                 if(fid==NULL)throw ErrorException(__FUNCT__,exprintf("%s%s%s","could not open file ",filename," for binary writing."));
     40                fid=pfopen(filename,"wb");
    4241
    4342                /*Write solution type: */
     
    6261
    6362                /*Close file: */
    64                 if(fclose(fid)!=0)throw ErrorException(__FUNCT__,exprintf("%s%s","could not close file ",filename));
     63                pfclose(fid,filename);
    6564        }
    6665
  • issm/trunk/src/c/parallel/OutputDiagnostic.cpp

    r434 r472  
    5050        /* Open output file to write raw binary data: */
    5151        if(my_rank==0){
    52                 fid=fopen(filename,"wb");
    53                 if(fid==NULL)throw ErrorException(__FUNCT__,exprintf("%s%s%s","could not open file ",filename," for binary writing."));
     52                fid=pfopen(filename,"wb");
    5453
    5554                /*Write solution type: */
     
    6766       
    6867                /*Close file: */
    69                 if(fclose(fid)!=0)throw ErrorException(__FUNCT__,exprintf("%s%s","could not close file ",filename));
     68                pfclose(fid,filename);
    7069        }
    7170
  • issm/trunk/src/c/parallel/control.cpp

    r465 r472  
    7575
    7676        /*Open handle to data on disk: */
    77         fid=fopen(inputfilename,"rb");
    78         if(fid==NULL) throw ErrorException(__FUNCT__,exprintf("%s%s%s","could not open file ",inputfilename," for binary reading"));
     77        fid=pfopen(inputfilename,"rb");
    7978       
    8079        _printf_("read and create finite element model:\n");
  • issm/trunk/src/c/parallel/diagnostic.cpp

    r465 r472  
    5454
    5555        /*Open handle to data on disk: */
    56         fid=fopen(inputfilename,"rb");
    57         if(fid==NULL) throw ErrorException(__FUNCT__,exprintf("%s%s%s","could not open file ",inputfilename," for binary reading"));
     56        fid=pfopen(inputfilename,"rb");
    5857
    5958        _printf_("read and create finite element model:\n");
  • issm/trunk/src/c/parallel/diagnostic_core_nonlinear.cpp

    r465 r472  
    8888                if (debug) _printf_("   Generating penalty matrices\n");
    8989                //*Generate penalty system matrices
    90                 PenaltySystemMatricesx(Kgg, pg,fem->elements,fem->nodes,loads,fem->materials,kflag,pflag,inputs,analysis_type,sub_analysis_type);
     90                PenaltySystemMatricesx(Kgg, pg,NULL,fem->elements,fem->nodes,loads,fem->materials,kflag,pflag,inputs,analysis_type,sub_analysis_type);
    9191
    9292                if (debug) _printf_("   reducing matrix from g to f set\n");
  • issm/trunk/src/c/parallel/parallel.h

    r465 r472  
    1414void diagnostic_core_nonlinear(Vec* pug,Mat* pK_ff0,Mat* pK_fs0, FemModel* fem,ParameterInputs* inputs,int analysis_type,int sub_analysis_type);
    1515void diagnostic_core_linear(Vec* ppg,FemModel* fem,ParameterInputs* inputs,int  analysis_type,int sub_analysis_type);
    16 int cielothermal_core(Vec** pt_g,ParameterInputs* inputs,FemModel* femmodel);
     16void thermal_core(Vec* pt_g,double* pmelting_offset,FemModel* femmodel,ParameterInputs* inputs,int analysis_type,int sub_analysis_type);
    1717
    1818//int GradJOrth(WorkspaceParams* workspaceparams);
     
    2929//int ParameterUpdate(double* search_vector,int step, WorkspaceParams* workspaceparams,BatchParams* batchparams);
    3030void OutputDiagnostic(Vec u_g,Vec p_g, FemModel* femmodels,char* filename);
    31 int OutputThermal(Vec* t_g,Vec* tpartition,char* filename,char* analysis_type,int sub_analysis_type);
     31void OutputThermal(Vec* t_g,Vec* m_g, FemModel* femmodels,char* filename);
    3232void OutputControl(Vec u_g,double* p_g, double* J, int nsteps, Vec partition,char* filename,NodeSets* nodesets);
    3333void WriteLockFile(char* filename);
  • issm/trunk/src/c/parallel/thermal.cpp

    r465 r472  
    1717int main(int argc,char* *argv){
    1818
     19        int i,n;
     20       
    1921        /*I/O: */
    2022        FILE* fid=NULL;
     
    3032        Vec u_g=NULL;
    3133        Vec p_g=NULL;
     34        double dt;
     35        double ndt;
     36        int    nsteps;
     37        int    debug=0;
    3238
    33        
    3439        /*solution vectors: */
    35         Vec t_g=NULL;
    36         Vec m_g=NULL;
     40        Vec* t_g=NULL;
     41        Vec* m_g=NULL;
    3742
    3843        ParameterInputs* inputs=NULL;
     44        Param*  param=NULL;
     45
    3946        int waitonlock=0;
     47        int sub_analysis_type;
     48        double melting_offset;
    4049       
    4150        MODULEBOOT();
     
    5160        MPI_Comm_size(MPI_COMM_WORLD,&num_procs);
    5261
    53         _printf_("recover , input file name and output file name:\n");
    5462        inputfilename=argv[2];
    5563        outputfilename=argv[3];
     
    5765
    5866        /*Open handle to data on disk: */
    59         fid=fopen(inputfilename,"rb");
    60         if(fid==NULL) throw ErrorException(__FUNCT__,exprintf("%s%s%s","could not open file ",inputfilename," for binary reading"));
     67        fid=pfopen(inputfilename,"rb");
    6168
    62         _printf_("read and create finite element model:\n");
     69        _printf_("read and create thermal finite element model:\n");
    6370        CreateFemModel(&femmodels[0],fid,"thermal","");
     71        _printf_("read and create melting finite element model:\n");
    6472        CreateFemModel(&femmodels[1],fid,"melting","");
    6573
     
    6876        femmodels[0].parameters->FindParam((void*)&p_g,"p_g");
    6977        femmodels[0].parameters->FindParam((void*)&numberofnodes,"numberofnodes");
     78        femmodels[0].parameters->FindParam((void*)&dt,"dt");
     79        femmodels[0].parameters->FindParam((void*)&ndt,"ndt");
     80        femmodels[0].parameters->FindParam((void*)&waitonlock,"waitonlock");
     81        femmodels[0].parameters->FindParam((void*)&sub_analysis_type,"sub_analysis_type");
     82        femmodels[0].parameters->FindParam((void*)&debug,"debug");
    7083
    7184        inputs=new ParameterInputs;
    72         //inputs->Add("velocity",u_g_initial,3,numberofnodes);
     85        inputs->Add("velocity",u_g,3,numberofnodes);
     86        inputs->Add("pressure",p_g,1,numberofnodes);
     87        inputs->Add("dt",dt);
    7388
    74         //erase velocities:
    75         //param=(Param*)femmodels[0].parameters->FindParamObject("u_g");
    76         //femmodels[0].parameters->DeleteObject((Object*)param);
     89        //erase velocities and pressure embedded in parameters
     90        param=(Param*)femmodels[0].parameters->FindParamObject("u_g");
     91        femmodels[0].parameters->DeleteObject((Object*)param);
     92        param=(Param*)femmodels[0].parameters->FindParamObject("p_g");
     93        femmodels[0].parameters->DeleteObject((Object*)param);
     94        param=(Param*)femmodels[1].parameters->FindParamObject("u_g");
     95        femmodels[1].parameters->DeleteObject((Object*)param);
     96        param=(Param*)femmodels[1].parameters->FindParamObject("p_g");
     97        femmodels[1].parameters->DeleteObject((Object*)param);
    7798
    78         _printf_("call computational core:\n");
    79         diagnostic_core(&u_g,&p_g,femmodels,inputs);
     99        if(sub_analysis_type==SteadyAnalysisEnum()){
     100                if(debug)_printf_("computing temperatures:\n");
     101                thermal_core(&t_g[0],&melting_offset,&femmodels[0],inputs,ThermalAnalysisEnum(),SteadyAnalysisEnum());
     102       
     103                inputs->Add("temperature",t_g[0],1,numberofnodes);
     104                inputs->Add("melting_offset",melting_offset);
     105               
     106                if(debug)_printf_("computing melting:\n");
     107                diagnostic_core_linear(&m_g[0],&femmodels[1],inputs,MeltingAnalysisEnum(),SteadyAnalysisEnum());
     108        }
     109        else{
     110               
     111                nsteps=(int)(ndt/dt);
     112
     113                /*allocate t_g and m_g arrays: */
     114                t_g=(Vec*)xmalloc((nsteps+1)*sizeof(Vec));
     115                m_g=(Vec*)xmalloc((nsteps+1)*sizeof(Vec));
     116
     117                //initialize temperature and melting
     118                femmodels[0].parameters->FindParam((void*)&t_g[0],"t_g");
     119                femmodels[1].parameters->FindParam((void*)&m_g[0],"m_g");
     120
     121                //erase temperature and melting embedded in parameters
     122                param=(Param*)femmodels[0].parameters->FindParamObject("t_g");
     123                femmodels[0].parameters->DeleteObject((Object*)param);
     124                param=(Param*)femmodels[1].parameters->FindParamObject("m_g");
     125                femmodels[1].parameters->DeleteObject((Object*)param);
     126
     127                for(i=0;i<nsteps;i++){
     128                        if(debug)_printf_("time step: %i/%i\n",n,nsteps);
     129                       
     130                        if(debug)_printf_("computing temperatures:\n");
     131                        inputs->Add("temperature",t_g[i],1,numberofnodes);
     132                        thermal_core(&t_g[i+1],&melting_offset,&femmodels[0],inputs,ThermalAnalysisEnum(),TransientAnalysisEnum());
     133                       
     134                        if(debug)_printf_("computing melting:\n");
     135                        inputs->Add("temperature",t_g[i+1],1,numberofnodes);
     136                        inputs->Add("melting_offset",melting_offset);
     137                        diagnostic_core_linear(&m_g[0],&femmodels[1],inputs,MeltingAnalysisEnum(),TransientAnalysisEnum());
     138                }
     139        }
    80140
    81141        _printf_("write results to disk:\n");
    82         OutputDiagnostic(u_g,p_g,&femmodels[0],outputfilename);
     142        OutputThermal(t_g,m_g,&femmodels[0],outputfilename);
    83143
    84144        _printf_("write lock file:\n");
  • issm/trunk/src/m/classes/public/loadresultsfromdisk.m

    r471 r472  
    1 function md=loadresultsfromdisk(md,filename,analysis_type)
     1function md=loadresultsfromdisk(md,filename)
    22%LOADRESULTSFROMDISK - load results of solution sequence from disk file "filename"           
    33%
  • issm/trunk/src/m/classes/public/solve.m

    r471 r472  
    33%
    44%   Usage:
    5 %      md=solve(md,varargin)
    6 %      where varargin is a lit of paired arguments.
    7 %      arguments can be: 'analysis_type': 'diagnostic','thermal','prognostic','transient'
    8 %      arguments can be: 'sub_analysis_type': 'transient',''
    9 %      arguments can be: 'package': 'macayeal','ice','cielo'
     5%       md=solve(md,varargin)
     6%       where varargin is a lit of paired arguments.
     7%       arguments can be: 'analysis_type': 'diagnostic','thermal','prognostic','transient'
     8%       arguments can be: 'sub_analysis_type': 'transient',''
     9%       arguments can be: 'package': 'macayeal','ice','cielo'
    1010%
    1111%   Examples:
     
    8787addpath(genpath_ice([ISSM_DIR '/src/m/solutions/cielo']));
    8888addpath(genpath_ice([ISSM_DIR '/bin']));
     89
     90function solveusage();
     91disp(' ');
     92disp('   Solve usage: md=solve(md,md.analysis_type,package)');
     93disp('         md.analysis_type can be ''diagnostic'',''transient'', ''thermal'',''thermaltransient'',''parameters'',''mesh2grid''  or ''control''');
     94disp('         package is either ''cielo'' or ''ice''');
  • issm/trunk/src/m/solutions/cielo/diagnostic_core_linear.m

    r469 r472  
    1313        %system matrices
    1414        [K_gg, p_g]=SystemMatrices(m.elements,m.nodes,m.loads,m.materials,m.parameters,inputs,analysis_type,sub_analysis_type);
     15        [K_gg, p_g,kmax]=PenaltySystemMatrices(K_gg,p_g,m.elements,m.nodes,m.loads,m.materials,m.parameters,inputs,analysis_type,sub_analysis_type);
    1516       
    1617        %Reduce tangent matrix from g size to f size
  • issm/trunk/src/m/solutions/cielo/diagnostic_core_nonlinear.m

    r465 r472  
    3333               
    3434                %penalties
    35                 [K_gg , p_g]=PenaltySystemMatrices(K_gg_nopenalty,p_g_nopenalty,m.elements,m.nodes,loads,m.materials,m.parameters,inputs,analysis_type,sub_analysis_type);
     35                [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);
    3636
    3737
  • issm/trunk/src/m/solutions/cielo/thermal.m

    r465 r472  
    2828       
    2929                displaystring(debug,'\n%s',['computing temperatures...']);
    30                 [t_g loads_t melting_offset]=thermal_core(m_t,inputs,'thermal','steady');
     30                [t_g m_t.loads melting_offset]=thermal_core(m_t,inputs,'thermal','steady');
    3131               
    3232                displaystring(debug,'\n%s',['computing melting...']);
    3333                inputs=add(inputs,'melting_offset',melting_offset,'double');
    34                 melting_g=melting_core(m_m,inputs,'melting','steady');
     34                inputs=add(inputs,'temperature',t_g,'doublevec',1,m_t.parameters.numberofnodes);
     35                melting_g=diagnostic_core_linear(m_m,inputs,'melting','steady');
    3536               
    3637                displaystring(debug,'\n%s',['load results...']);
     
    4041        else
    4142
    42                 %initialize velocity, pressure, temperature and melting
    43                 u_g=m_t.parameters.u_g;
    44                 p_g=m_t.parameters.p_g;
     43                %initialize temperature and melting
    4544                t_g=m_t.parameters.t_g;
    4645                melting_g=m_t.parameters.melting_g;
     
    5857                        displaystring(debug,'\n%s',['    computing temperatures...']);
    5958                        inputs=add(inputs,'temperature',soln(n).t_g,'doublevec',1,m_t.parameters.numberofnodes);
    60                         [soln(n+1).t_g loads_t melting_offset]=thermal_core(m_t,inputs);
     59                        [soln(n+1).t_g m_t.loads melting_offset]=thermal_core(m_t,inputs);
    6160                       
    6261                        disp('   computing melting...');
    63                         inputs=struct('pressure',p_g,'temperature',soln(n).t_g,'dt',m_t.parameters.dt);
    64                         soln(n+1).melting_g=melting_core(m_m,inputs);
     62                        inputs=add(inputs,'temperature',soln(n).t_g,'doublevec',1,m_t.parameters.numberofnodes);
     63                        inputs=add(inputs,'melting_offset',melting_offset,'double');
     64                        soln(n+1).melting_g=diagnostic_core_linear(m_m,inputs);
    6565                       
    6666                end
  • issm/trunk/src/m/solutions/cielo/thermal_core.m

    r163 r472  
    1 function [t_g ,m]=thermal_core(m,inputs)
     1function [t_g ,loads, melting_offset]=thermal_core(m,inputs,analysis_type,sub_analysis_type)
    22%THERMAL_CORE - core of thermal solution sequence.
    33%   model is return together with temperature
     
    55%
    66%   Usage:
    7 %      [t_g,m]=thermal_core(m,inputs)
     7%      [t_g ,loads, melting_offset]=thermal_core(m,inputs,analysis_type,sub_analysis_type);
    88%   
    99%     
     
    1212        converged=0;
    1313
     14%   we are going to return the loads, make them a variable of this routine
     15        loads=m.loads;
     16
    1417        %stiffness and load generation only:
    1518        m.parameters.kflag=1; m.parameters.pflag=1;
    1619
    17         disp(sprintf('%s','   starting direct shooting method'));
     20        displaystring(m.parameters.debug,'\n%s',['   starting direct shooting method']);
     21       
    1822        while(~converged),
    1923
     
    2327                %system matrices
    2428                [K_gg_ , p_g_]=SystemMatrices(m.elements,m.nodes,loads,m.materials,m.parameters,inputs);
     29                [K_gg_ , p_g_]=SystemMatrices(K_gg,p_g,m.elements,m.nodes,loads,m.materials,m.parameters,inputs);
    2530
    2631                %Reduce tangent matrix from g size to f size
     
    3136
    3237                %Solve 
    33                 if m.parameters.debug,
    34                         disp(sprintf('%s%g','      condition number of stiffness matrix: ',condest(K_ff)));
    35                 end
     38                displaystring(m.parameters.debug,'\n%s',['   condition number of stiffness matrix: ',condest(K_ff)]);
    3639                [t_f]=Solver(K_ff,p_f,[],m.parameters);
    3740
     
    4043
    4144                %Update inputs in datasets
    42                 inputs.temperature=t_g;
     45                inputs=add(inputs,'temperature',t_g,'doublevec',m.parameters.numberofdofspernode,m.parameters.numberofnodes);
    4346                [m.elements,m.nodes, loads,m.materials]=UpdateFromInputs(m.elements,m.nodes, loads,m.materials,inputs);
    4447       
     
    4750       
    4851                if ~converged,
    49                         if m.parameters.debug, disp(sprintf('   %s %i','#unstable constraints ',num_unstable_constraints));end;
     52                        displaystring(m.parameters.debug,'\n%s%i','#unstable constraints ',num_unstable_constraints);
    5053                       
    51                         if num_unstable_constraints<thermalparams.min_thermal_constraints,
     54                        if num_unstable_constraints<m.parameters.min_thermal_constraints,
    5255                                converged=1;
    5356                        end
  • issm/trunk/src/m/solutions/ice/thermal.m

    r34 r472  
    3333        gridset=m_t.gridset;
    3434        inputs=struct('pressure',pressure,'velocity',velocity,'dt',md.dt);
    35         [t_g loads_t melting_offset]=thermal_core(m_t,analysis_type,inputs);
     35        [t_g m_t.loads_t melting_offset]=thermal_core(m_t,analysis_type,inputs);
    3636       
    3737        %Call core melting computation
     
    6969                gridset=m_t.gridset;
    7070                inputs=struct('pressure',pressure,'temperature',soln(n).t_g,'velocity',velocity,'dt',md.dt);
    71                 [soln(n+1).t_g loads_t  melting_offset]=thermal_core(m_t,analysis_type,inputs);
     71                [soln(n+1).t_g m_t.loads_t  melting_offset]=thermal_core(m_t,analysis_type,inputs);
    7272
    7373                %Call core melting computation
  • issm/trunk/src/mex/PenaltySystemMatrices/PenaltySystemMatrices.cpp

    r465 r472  
    99        /*diverse: */
    1010        int   noerr=1;
     11
     12        /*output: */
     13        double kmax;
    1114
    1215        /*input datasets: */
     
    5356
    5457        /*!Generate stiffnesses from penalties: */
    55         PenaltySystemMatricesx(Kgg, pg,elements,nodes,loads,materials,kflag,pflag,inputs,analysis_type,sub_analysis_type);
     58        PenaltySystemMatricesx(Kgg, pg,&kmax,elements,nodes,loads,materials,kflag,pflag,inputs,analysis_type,sub_analysis_type);
    5659
    5760        /*write output datasets: */
    5861        WriteData(KGG,Kgg,0,0,"Matrix",NULL);
    5962        WriteData(PG,pg,0,0,"Vector",NULL);
     63        WriteData(KMAX,&kmax,0,0,"Scalar",NULL);
    6064       
    6165        /*Free ressources: */
  • issm/trunk/src/mex/PenaltySystemMatrices/PenaltySystemMatrices.h

    r465 r472  
    3131#define KGG (mxArray**)&plhs[0]
    3232#define PG (mxArray**)&plhs[1]
     33#define KMAX (mxArray**)&plhs[2]
    3334
    3435/* serial arg counts: */
    3536#undef NLHS
    36 #define NLHS  2
     37#define NLHS  3
    3738#undef NRHS
    3839#define NRHS  10
Note: See TracChangeset for help on using the changeset viewer.