Changeset 5057


Ignore:
Timestamp:
08/07/10 21:19:41 (15 years ago)
Author:
Eric.Larour
Message:

Took out rgbs, simplifies the code a lot

Location:
issm/trunk
Files:
7 deleted
46 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/Container/Constraints.cpp

    r4220 r5057  
    4343
    4444/*Numerics: */
    45 /*FUNCTION Constraints::NumberOfLocalRgbs{{{1*/
    46 int   Constraints::NumberOfLocalRgbs(int analysis_type){
    47 
    48         int i;
    49         int  count=0;
    50 
    51         for(i=0;i<this->Size();i++){
    52 
    53                 Object* object=(Object*)this->GetObjectByOffset(i);
    54 
    55                 /*Check this is a single point constraint (spc): */
    56                 if (object->Enum()==RgbEnum){
    57 
    58                         Rgb* rgb=(Rgb*)object;
    59                         if(rgb->InAnalysis(analysis_type))count++;
    60                 }
    61         }
    62 
    63         return count;
    64 }
    65 /*}}}*/
    6645/*FUNCTION Constraints::NumberOfConstraints{{{1*/
    6746int Constraints::NumberOfConstraints(void){
     
    127106}
    128107/*}}}*/
    129 /*FUNCTION Constraints::SetupMpcs{{{1*/
    130 void Constraints::SetupMpcs(Mat Rmg,Nodes* nodes,int analysis_type){
    131 
    132         int i;
    133 
    134         int  nodeid1;
    135         int  nodeid2;
    136         int  dof;
    137 
    138         int  dof1;
    139         int  dof2;
    140 
    141 
    142         Node* node1=NULL;
    143         Node* node2=NULL;
    144 
    145         int count=-1;
    146 
    147         for(i=0;i<this->Size();i++){
    148 
    149                 Object* object=(Object*)this->GetObjectByOffset(i);
    150 
    151                 /*Check this is a mutiple point constraint (spc): */
    152                 if(object->Enum()==RgbEnum){
    153 
    154                         Rgb* rgb=(Rgb*)object;
    155 
    156                         if(rgb->InAnalysis(analysis_type)){
    157 
    158                                 /*we found an rgb, increment counter, so that row index for Rmg is up to date: */
    159                                 count++;
    160 
    161 
    162                                 nodeid1=rgb->GetNodeId1();
    163                                 nodeid2=rgb->GetNodeId2();
    164                                 dof=rgb->GetDof();
    165 
    166                                 /*For this rgb, find the nodes that go with it: */
    167                                 node1=(Node*)nodes->GetObjectById(NULL,nodeid1);
    168                                 node2=(Node*)nodes->GetObjectById(NULL,nodeid2);
    169 
    170                                 if ((node1 && !node2) || (!node1 && node2)){
    171                                         /*we are missing one node, not good!*/
    172                                         ISSMERROR("%s%p%s%p"," in Rgb, missing one node. node1: ",node1," node2: ",node2);
    173                                 }
    174 
    175                                 if(!node1 && !node2){
    176                                         /*That's ok, this Rgb can't find those nodes, so leave them alone. They are probably not on this
    177                                          * cpu!*/
    178                                 }
    179                                 else{
    180                                         /*Ok, this cpu owns both nodes. Put dof for node1 into m set, unless it is already there,
    181                                          * in which case node2 gets into the m set: */
    182                                         if(node1->DofIsInMSet(dof-1)){
    183                                                 node2->DofInMSet(dof-1);
    184                                         }
    185                                         else{
    186                                                 node1->DofInMSet(dof-1);
    187                                         }
    188 
    189                                         /*Plug values into Rmg. We essentially want dofs from node1 and node2 to be the
    190                                          *same: */
    191                                         dof1=node1->GetDof(dof-1); //matlab indexing
    192                                         dof2=node2->GetDof(dof-1); //matlab indexing
    193 
    194                                         MatSetValue(Rmg,count,dof1,1.0,INSERT_VALUES);
    195                                         MatSetValue(Rmg,count,dof2,-1.0,INSERT_VALUES);
    196 
    197                                 }
    198                         }
    199                 }
    200         }
    201 }
    202 /*}}}*/
  • issm/trunk/src/c/Container/Constraints.h

    r4236 r5057  
    2727                /*}}}*/
    2828                /*numerics: {{{1*/
    29                 int   NumberOfLocalRgbs(int analysis_type);
    3029                int   NumberOfConstraints(void);
    3130                void  SetupSpcs(Nodes* nodes,Vec yg,int analysis_type);
    32                 void  SetupMpcs(Mat Rmg,Nodes* nodes,int analysis_type);
    3331                /*}}}*/
    3432
  • issm/trunk/src/c/Container/DataSet.cpp

    r5016 r5057  
    294294                        dataset->AddObject(numericalflux);
    295295                }
    296                 else if(enum_type==RgbEnum){
    297                         Rgb* rgb=NULL;
    298                         rgb=new Rgb();
    299                         rgb->Demarshall(&marshalled_dataset);
    300                         dataset->AddObject(rgb);
    301                 }
    302296                else if(enum_type==RiftfrontEnum){
    303297                        Riftfront* riftfront=NULL;
  • issm/trunk/src/c/Container/Nodes.cpp

    r4547 r5057  
    174174/*}}}*/
    175175/*FUNCTION Nodes::FlagNodeSets{{{1*/
    176 void Nodes::FlagNodeSets(Vec pv_g, Vec pv_m, Vec pv_n, Vec pv_f, Vec pv_s,int analysis_type){
     176void Nodes::FlagNodeSets(Vec pv_g, Vec pv_f, Vec pv_s,int analysis_type){
    177177
    178178        int i;
     
    186186
    187187                        /*Plug set values intp our 4 set vectors: */
    188                         node->CreateVecSets(pv_g,pv_m,pv_n,pv_f,pv_s);
     188                        node->CreateVecSets(pv_g,pv_f,pv_s);
    189189                }
    190190        }
     
    193193        VecAssemblyBegin(pv_g);
    194194        VecAssemblyEnd(pv_g);
    195 
    196         VecAssemblyBegin(pv_m);
    197         VecAssemblyEnd(pv_m);
    198 
    199         VecAssemblyBegin(pv_n);
    200         VecAssemblyEnd(pv_n);
    201195
    202196        VecAssemblyBegin(pv_f);
  • issm/trunk/src/c/Container/Nodes.h

    r4236 r5057  
    2121                void  DistributeDofs(int numberofnodes,int numdofspernode,int analysis_type);
    2222                void  FlagClones(int numberofnodes,int analysis_type);
    23                 void  FlagNodeSets(Vec pv_g, Vec pv_m, Vec pv_n, Vec pv_f, Vec pv_s,int analysis_type);
     23                void  FlagNodeSets(Vec pv_g, Vec pv_f, Vec pv_s,int analysis_type);
    2424                int   NumberOfDofs(int analysis_type);
    2525                int   NumberOfNodes(int analysis_type);
  • issm/trunk/src/c/Makefile.am

    r5032 r5057  
    161161                                        ./objects/Constraints/Spc.cpp\
    162162                                        ./objects/Constraints/Spc.h\
    163                                         ./objects/Constraints/Rgb.cpp\
    164                                         ./objects/Constraints/Rgb.h\
    165163                                        ./objects/Loads/Penpair.cpp\
    166164                                        ./objects/Loads/Penpair.h\
     
    474472                                        ./modules/SpcNodesx/SpcNodesx.h\
    475473                                        ./modules/SpcNodesx/SpcNodesx.cpp\
    476                                         ./modules/MpcNodesx/MpcNodesx.h\
    477                                         ./modules/MpcNodesx/MpcNodesx.cpp\
    478474                                        ./modules/InterpFromGridToMeshx/InterpFromGridToMeshx.cpp\
    479475                                        ./modules/InterpFromGridToMeshx/InterpFromGridToMeshx.h\
     
    510506                                        ./modules/Reducevectorgtofx/Reducevectorgtofx.h\
    511507                                        ./modules/Reducematrixfromgtofx/Reducematrixfromgtofx.cpp\
    512                                         ./modules/Reducematrixfromgtofx/Reducematrixfromgton.cpp\
    513508                                        ./modules/Reducematrixfromgtofx/Reducematrixfromgtofx.h\
    514509                                        ./modules/Reduceloadfromgtofx/Reduceloadfromgtofx.h\
    515510                                        ./modules/Reduceloadfromgtofx/Reduceloadfromgtofx.cpp\
    516                                         ./modules/NormalizeConstraintsx/NormalizeConstraintsx.cpp\
    517                                         ./modules/NormalizeConstraintsx/NormalizeConstraintsx.h\
    518511                                        ./modules/NodeConnectivityx/NodeConnectivityx.cpp\
    519512                                        ./modules/NodeConnectivityx/NodeConnectivityx.h\
     
    703696                                        ./objects/Constraints/Spc.cpp\
    704697                                        ./objects/Constraints/Spc.h\
    705                                         ./objects/Constraints/Rgb.cpp\
    706                                         ./objects/Constraints/Rgb.h\
    707698                                        ./objects/Loads/Penpair.cpp\
    708699                                        ./objects/Loads/Penpair.h\
     
    10131004                                        ./modules/SpcNodesx/SpcNodesx.h\
    10141005                                        ./modules/SpcNodesx/SpcNodesx.cpp\
    1015                                         ./modules/MpcNodesx/MpcNodesx.h\
    1016                                         ./modules/MpcNodesx/MpcNodesx.cpp\
    10171006                                        ./modules/InterpFromGridToMeshx/InterpFromGridToMeshx.cpp\
    10181007                                        ./modules/InterpFromGridToMeshx/InterpFromGridToMeshx.h\
     
    10471036                                        ./modules/Reducevectorgtofx/Reducevectorgtofx.h\
    10481037                                        ./modules/Reducematrixfromgtofx/Reducematrixfromgtofx.cpp\
    1049                                         ./modules/Reducematrixfromgtofx/Reducematrixfromgton.cpp\
    10501038                                        ./modules/Reducematrixfromgtofx/Reducematrixfromgtofx.h\
    10511039                                        ./modules/Reduceloadfromgtofx/Reduceloadfromgtofx.h\
    10521040                                        ./modules/Reduceloadfromgtofx/Reduceloadfromgtofx.cpp\
    1053                                         ./modules/NormalizeConstraintsx/NormalizeConstraintsx.cpp\
    1054                                         ./modules/NormalizeConstraintsx/NormalizeConstraintsx.h\
    10551041                                        ./modules/MassFluxx/MassFluxx.cpp\
    10561042                                        ./modules/MassFluxx/MassFluxx.h\
  • issm/trunk/src/c/io/FetchNodeSets.cpp

    r3332 r5057  
    1919        /*output: */
    2020        NodeSets* nodesets=NULL;
    21         double* pv_m=NULL;
    22         double* pv_n=NULL;
    2321        double* pv_f=NULL;
    2422        double* pv_s=NULL;
    2523        int gsize;
    26         int msize;
    27         int nsize;
    2824        int fsize;
    2925        int ssize;
     
    3430        else{
    3531
    36                 FetchData(&pv_m,NULL,mxGetField(dataref,0,"pv_m"));
    37                 FetchData(&pv_n,NULL,mxGetField(dataref,0,"pv_n"));
    3832                FetchData(&pv_f,NULL,mxGetField(dataref,0,"pv_f"));
    3933                FetchData(&pv_s,NULL,mxGetField(dataref,0,"pv_s"));
    4034               
    4135                gsize=(int)mxGetScalar(mxGetField(dataref,0,"gsize"));
    42                 msize=(int)mxGetScalar(mxGetField(dataref,0,"msize"));
    43                 nsize=(int)mxGetScalar(mxGetField(dataref,0,"nsize"));
    4436                fsize=(int)mxGetScalar(mxGetField(dataref,0,"fsize"));
    4537                ssize=(int)mxGetScalar(mxGetField(dataref,0,"ssize"));
    4638
    47                 nodesets=new NodeSets( pv_m,pv_n,pv_f,pv_s,gsize,msize,nsize,fsize,ssize);
     39                nodesets=new NodeSets( pv_f,pv_s,gsize,fsize,ssize);
    4840        }
    4941
  • issm/trunk/src/c/io/WriteNodeSets.cpp

    r3332 r5057  
    2121        mxArray* dataref=NULL;
    2222        int gsize=0;
    23         int msize=0;
    24         int nsize=0;
    2523        int fsize=0;
    2624        int ssize=0;
    27         const mwSize nfields=9;
     25        const mwSize nfields=5;
    2826        const   char*   fnames[nfields];
    2927        mwSize          onebyone[2] = {1,1};
     
    3230       
    3331        /*intermediary: */
    34         double* pv_m=NULL;
    35         double* pv_n=NULL;
    3632        double* pv_f=NULL;
    3733        double* pv_s=NULL;
     
    4137                /*Recover data from the nodesets class: */
    4238                gsize=nodesets->GetGSize();
    43                 msize=nodesets->GetMSize();
    44                 nsize=nodesets->GetNSize();
    4539                fsize=nodesets->GetFSize();
    4640                ssize=nodesets->GetSSize();
    4741
    48                 if(msize){
    49                         pv_m=(double*)xmalloc(msize*sizeof(double));
    50                         memcpy(pv_m,nodesets->GetPV_M(),msize*sizeof(double));
    51                 }
    52                 if(nsize){
    53                         pv_n=(double*)xmalloc(nsize*sizeof(double));
    54                         memcpy(pv_n,nodesets->GetPV_N(),nsize*sizeof(double));
    55                 }
    5642                if(fsize){
    5743                        pv_f=(double*)xmalloc(fsize*sizeof(double));
     
    6551                /*Build structure in matlab workspace with all these fields: */
    6652                fnames[0] = "gsize";
    67                 fnames[1] = "msize";
    68                 fnames[2] = "nsize";
    69                 fnames[3] = "fsize";
    70                 fnames[4] = "ssize";
    71                 fnames[5] = "pv_m";
    72                 fnames[6] = "pv_n";
    73                 fnames[7] = "pv_f";
    74                 fnames[8] = "pv_s";
     53                fnames[1] = "fsize";
     54                fnames[2] = "ssize";
     55                fnames[3] = "pv_f";
     56                fnames[4] = "pv_s";
    7557
    7658                dataref=mxCreateStructArray( ndim,onebyone,nfields,fnames);
    7759               
    7860                mxSetField( dataref, 0, "gsize",mxCreateDoubleScalar((double)gsize));
    79                 mxSetField( dataref, 0, "msize",mxCreateDoubleScalar((double)msize));
    80                 mxSetField( dataref, 0, "nsize",mxCreateDoubleScalar((double)nsize));
    8161                mxSetField( dataref, 0, "fsize",mxCreateDoubleScalar((double)fsize));
    8262                mxSetField( dataref, 0, "ssize",mxCreateDoubleScalar((double)ssize));
    8363
    84                 if(msize){
    85                         field = mxCreateDoubleMatrix(0,0,mxREAL);
    86                         mxSetM(field,msize); mxSetN(field,1); mxSetPr(field,pv_m);
    87                 }
    88                 else{
    89                         field = mxCreateDoubleMatrix(0,0,mxREAL);
    90                 }
    91                 mxSetField( dataref, 0, "pv_m",field);
    92 
    93                 if(nsize){
    94                         field = mxCreateDoubleMatrix(0,0,mxREAL);
    95                         mxSetM(field,nsize); mxSetN(field,1); mxSetPr(field,pv_n);
    96                 }
    97                 else{
    98                         field = mxCreateDoubleMatrix(0,0,mxREAL);
    99                 }
    100                 mxSetField( dataref, 0, "pv_n",field);
    101 
    102                
    10364                if(fsize){
    10465                        field = mxCreateDoubleMatrix(0,0,mxREAL);
  • issm/trunk/src/c/modules/BuildNodeSetsx/BuildNodeSetsx.cpp

    r4229 r5057  
    1616        /*output: */
    1717        NodeSets* nodesets=NULL;
    18         int gsize,msize,nsize,fsize,ssize;
    19         double* pv_m=NULL;
    20         double* pv_n=NULL;
     18        int gsize,fsize,ssize;
    2119        double* pv_f=NULL;
    2220        double* pv_s=NULL;
    2321       
    2422        /*intermdiary flags: */
    25         Vec vec_pv_m=NULL;
    26         Vec vec_pv_n=NULL;
    2723        Vec vec_pv_f=NULL;
    2824        Vec vec_pv_s=NULL;
    2925       
    3026        Vec flag_pv_g=NULL;
    31         Vec flag_pv_m=NULL;
    32         Vec flag_pv_n=NULL;
    3327        Vec flag_pv_f=NULL;
    3428        Vec flag_pv_s=NULL;
     
    4135                /*Now, allocate parallel vectors for all the sets: */
    4236                flag_pv_g=NewVec(gsize);
    43                 flag_pv_m=NewVec(gsize);
    44                 flag_pv_n=NewVec(gsize);
    4537                flag_pv_f=NewVec(gsize);
    4638                flag_pv_s=NewVec(gsize);
    4739
    4840                /*Now, go through all nodes and have every node plug into
    49                  * pv_m, pv_n, pv_f and pv_s, their own set flags, for each dof: */
    50                 nodes->FlagNodeSets(flag_pv_g,flag_pv_m,flag_pv_n,flag_pv_f,flag_pv_s,analysis_type);
     41                 * pv_f and pv_s, their own set flags, for each dof: */
     42                nodes->FlagNodeSets(flag_pv_g,flag_pv_f,flag_pv_s,analysis_type);
    5143
    52                 /*Now, every cpu has 4 flag vectors, of size gsize. Create partition vectors (like a pos=find(flag_pv_g) in matlab*/
    53                 PartitionSets(&vec_pv_m,&vec_pv_n,flag_pv_g,flag_pv_m,flag_pv_n,gsize); /*! split g set into m and n sets*/
    54                 PartitionSets(&vec_pv_f,&vec_pv_s,flag_pv_n,flag_pv_f,flag_pv_s,gsize); /*! split n set into f and s sets*/
     44                /*Now, every cpu has 2 flag vectors, of size gsize. Create partition vectors (like a pos=find(flag_pv_g) in matlab*/
     45                PartitionSets(&vec_pv_f,&vec_pv_s,flag_pv_g,flag_pv_f,flag_pv_s,gsize); /*! split g set into f and s sets*/
    5546               
    5647                /*Free ressources:*/
    5748                VecFree(&flag_pv_g);
    58                 VecFree(&flag_pv_m);
    59                 VecFree(&flag_pv_n);
    6049                VecFree(&flag_pv_f);
    6150                VecFree(&flag_pv_s);
    6251
    6352                /*Serialize vectors: */
    64                 VecGetSize(vec_pv_m,&msize);
    65                 VecGetSize(vec_pv_n,&nsize);
    6653                VecGetSize(vec_pv_f,&fsize);
    6754                VecGetSize(vec_pv_s,&ssize);
    68                 VecToMPISerial(&pv_m,vec_pv_m);
    69                 VecToMPISerial(&pv_n,vec_pv_n);
    7055                VecToMPISerial(&pv_f,vec_pv_f);
    7156                VecToMPISerial(&pv_s,vec_pv_s);
    7257
    7358                /*Free ressources:*/
    74                 VecFree(&vec_pv_m);
    75                 VecFree(&vec_pv_n);
    7659                VecFree(&vec_pv_f);
    7760                VecFree(&vec_pv_s);
    7861
    7962                /*Create NodeSets* object: */
    80                 nodesets=new NodeSets(pv_m,pv_n,pv_f,pv_s,gsize,msize,nsize,fsize,ssize);
     63                nodesets=new NodeSets(pv_f,pv_s,gsize,fsize,ssize);
    8164        }
    8265
  • issm/trunk/src/c/modules/Mergesolutionfromftogx/Mergesolutionfromftogx.cpp

    r4954 r5057  
    55#include "./Mergesolutionfromftogx.h"
    66
    7 void    Mergesolutionfromftogx( Vec* pug, Vec uf, Mat Gmn, Vec ys, NodeSets* nodesets,bool flag_ys0){
     7void    Mergesolutionfromftogx( Vec* pug, Vec uf, Vec ys, NodeSets* nodesets,bool flag_ys0){
    88
    99        /*output: */
     
    1313        /*intermediary*/
    1414        Vec ys0=NULL;
    15         Vec u_m=NULL;
    16         Vec u_n=NULL;
    17         int u_n_local_size;
    18         int Gmn_localm,Gmn_localn;
    1915       
    20        
    21         /*Merge f set back into n set: */
    22         u_n=NewVec(nodesets->GetNSize());
    23         if(uf) VecMerge(u_n,uf,nodesets->GetPV_F(),nodesets->GetFSize());
     16        /*Merge f set back into g set: */
     17        ug=NewVec(nodesets->GetGSize());
     18        if(uf) VecMerge(ug,uf,nodesets->GetPV_F(),nodesets->GetFSize());
    2419
    25         /*merge single point constraints into n set: */
     20        /*merge single point constraints into g set: */
    2621        if(ys){
    2722                if (flag_ys0){
     
    3328                        VecAssemblyEnd(ys0);
    3429
    35                         VecMerge(u_n,ys0,nodesets->GetPV_S(),nodesets->GetSSize());
     30                        VecMerge(ug,ys0,nodesets->GetPV_S(),nodesets->GetSSize());
    3631                }
    3732                else{
    38                         VecMerge(u_n,ys,nodesets->GetPV_S(),nodesets->GetSSize());
     33                        VecMerge(ug,ys,nodesets->GetPV_S(),nodesets->GetSSize());
    3934                }
    4035        }
    4136
    42         /* Merge n_set and m_set to g_set:*/
    43         ug=NewVec(nodesets->GetGSize());
    44         VecMerge(ug,u_n,nodesets->GetPV_N(),nodesets->GetNSize());
    45 
    46         /*Merge m set into g set: */
    47         if(nodesets->GetMSize()){
    48                 MatGetLocalSize(Gmn,&Gmn_localm,&Gmn_localn);
    49                 u_m=NewVecFromLocalSize(Gmn_localm);
    50                 MatMultPatch(Gmn,u_n,u_m);
    51                 VecMerge(ug,u_m,nodesets->GetPV_M(),nodesets->GetMSize());
    52         }
    53        
    54                
    5537        /*Free ressources:*/
    5638        VecFree(&ys0);
    57         VecFree(&u_m);
    58         VecFree(&u_n);
    5939
    6040        /*Assign correct pointer*/
  • issm/trunk/src/c/modules/Mergesolutionfromftogx/Mergesolutionfromftogx.h

    r3959 r5057  
    99
    1010/* local prototypes: */
    11 void    Mergesolutionfromftogx( Vec* pug, Vec uf, Mat Gmn, Vec ys, NodeSets* nodesets,bool flag_ys0=false);
     11void    Mergesolutionfromftogx( Vec* pug, Vec uf,Vec ys, NodeSets* nodesets,bool flag_ys0=false);
    1212
    1313#endif  /* _MERGESOLUTIONFROMFTOGX_H */
  • issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateConstraintsDiagnosticHoriz.cpp

    r4887 r5057  
    2020        Constraints* constraints = NULL;
    2121        Spc*    spc  = NULL;
    22         Rgb*    rgb  = NULL;
    2322        int     node1,node2;
    2423
     
    6564        count=0;
    6665
    67 //      if(iomodel->numpenalties){
    68 //
    69 //              for (i=0;i<iomodel->numpenalties;i++){
    70 //
    71 //                      for(j=1;j<iomodel->numlayers;j++){
    72 //     
    73 //                              /*We are pairing nodes along a vertical profile.*/
    74 //                              node1=(int)*(iomodel->penalties+iomodel->numlayers*i)+iomodel->nodecounter;
    75 //                              node2=(int)*(iomodel->penalties+iomodel->numlayers*i+j)+iomodel->nodecounter;
    76 //
    77 //                              constraints->AddObject(new Rgb(iomodel->constraintcounter+count+1,node1,node2,1,DiagnosticHorizAnalysisEnum));  //add count'th Rgb on dof 1 between node1 and node2
    78 //                             
    79 //                              count++;
    80 //                             
    81 //                              constraints->AddObject(new Rgb(iomodel->constraintcounter+count+1,node1,node2,2,DiagnosticHorizAnalysisEnum));  //add count'th Rgb on dof 1 between node1 and node2
    82 //
    83 //                      }
    84 //              }
    85 //      }
    86 
    8766        /*Free data: */
    8867        xfree((void**)&iomodel->penalties);
  • issm/trunk/src/c/modules/Reduceloadfromgtofx/Reduceloadfromgtofx.cpp

    r4954 r5057  
    1111#include "./Reduceloadfromgtofx.h"
    1212
    13 void    Reduceloadfromgtofx( Vec* ppf, Vec pg, Mat G_mn, Mat Kfs, Vec y_s, NodeSets* nodesets,bool flag_ys0){
     13void    Reduceloadfromgtofx( Vec* ppf, Vec pg, Mat Kfs, Vec y_s, NodeSets* nodesets,bool flag_ys0){
    1414
    1515        /*output: */
     
    1919        Vec y_s0=NULL;
    2020        Vec pn=NULL;
    21         Vec pm=NULL;
    22         Mat tG_mn=NULL;
    23         int tG_mnm,tG_mnn;
    24         Vec tG_mnpm=NULL;
    2521        Vec Kfsy_s=NULL;
    2622        int Kfsm,Kfsn;
     
    3430
    3531                /* Reduce pg to pn:*/
    36                 if (nodesets->GetMSize()){
    37 
    38                         VecPartition(&pn, pg, nodesets->GetPV_N(), nodesets->GetNSize());
    39                         VecPartition(&pm, pg, nodesets->GetPV_M(), nodesets->GetMSize());
    40                
    41                         /*Create G_mn'*/
    42                         #if _PETSC_VERSION_ == 2
    43                         MatTranspose(G_mn,&tG_mn); 
    44                         #else
    45                         MatTranspose(G_mn,MAT_INITIAL_MATRIX,&tG_mn); 
    46                         #endif
    47 
    48                         /*Create G_mn' * pm*/
    49                         MatGetLocalSize(tG_mn,&tG_mnm,&tG_mnn);
    50                         tG_mnpm=NewVecFromLocalSize(tG_mnm);
    51                         MatMultPatch(tG_mn,pm,tG_mnpm);
    52 
    53                         /*add pn to G_mn' * pm*/
    54                         a=1;
    55                         VecAXPY(pn,a,tG_mnpm); 
    56                 }
    57                 else{
    58                         VecDuplicate(pg,&pn); 
    59                         VecCopy(pg,pn); 
    60                 }
     32                VecDuplicate(pg,&pn); 
     33                VecCopy(pg,pn); 
    6134               
    6235                /*% Reduce pn to pf:*/
     
    10578        VecFree(&y_s0);
    10679        VecFree(&pn);
    107         VecFree(&pm);
    108         MatFree(&tG_mn);
    109         VecFree(&tG_mnpm);
    11080        VecFree(&Kfsy_s);
    11181
  • issm/trunk/src/c/modules/Reduceloadfromgtofx/Reduceloadfromgtofx.h

    r3959 r5057  
    99
    1010/* local prototypes: */
    11 void    Reduceloadfromgtofx( Vec* ppf, Vec pg, Mat Gmn, Mat Kfs, Vec ys, NodeSets* nodesets, bool flag_ys0=false);
     11void    Reduceloadfromgtofx( Vec* ppf, Vec pg, Mat Kfs, Vec ys, NodeSets* nodesets, bool flag_ys0=false);
    1212
    1313#endif  /* _REDUCELOADFROMGTOFX_H */
  • issm/trunk/src/c/modules/Reducematrixfromgtofx/Reducematrixfromgtofx.cpp

    r4954 r5057  
    55#include "./Reducematrixfromgtofx.h"
    66
    7 void Reducematrixfromgtofx( Mat* pKff, Mat* pKfs,Mat Kgg,Mat Gmn,NodeSets* nodesets){
     7void Reducematrixfromgtofx( Mat* pKff, Mat* pKfs,Mat Kgg,NodeSets* nodesets){
    88
    99        /*output: */
     
    1111        Mat Kfs=NULL;
    1212
    13         /*intermediary: */
    14         Mat Knn=NULL;
    15        
    16         /*Reduce to n set: */
    17         Reducematrixfromgton( &Knn, Kgg, Gmn, nodesets->GetPV_M(), nodesets->GetMSize(),nodesets->GetPV_N(),nodesets->GetNSize(), 2 );
    18 
    19         //Reduce matrix from n-size to f-size
     13        //Reduce matrix from g-size to f-size
    2014        if(nodesets->GetSSize()){
    2115
    2216                if(nodesets->GetFSize()){
    23                         MatPartition(&Kff, Knn, nodesets->GetPV_F(),nodesets->GetFSize(),nodesets->GetPV_F(),nodesets->GetFSize());
    24                         MatPartition(&Kfs, Knn, nodesets->GetPV_F(),nodesets->GetFSize(),nodesets->GetPV_S(),nodesets->GetSSize());
     17                        MatPartition(&Kff, Kgg, nodesets->GetPV_F(),nodesets->GetFSize(),nodesets->GetPV_F(),nodesets->GetFSize());
     18                        MatPartition(&Kfs, Kgg, nodesets->GetPV_F(),nodesets->GetFSize(),nodesets->GetPV_S(),nodesets->GetSSize());
    2519                }
    2620        }
    2721        else{
    28                 MatDuplicate(Knn,MAT_COPY_VALUES,&Kff);
     22                MatDuplicate(Kgg,MAT_COPY_VALUES,&Kff);
    2923                Kfs=NULL;
    3024        }
    3125
    32         /*Free ressources:*/
    33         MatFree(&Knn);
    34        
    3526        /*Assign output pointers:*/
    3627        *pKff=Kff;
  • issm/trunk/src/c/modules/Reducematrixfromgtofx/Reducematrixfromgtofx.h

    r3913 r5057  
    1010
    1111/* local prototypes: */
    12 void    Reducematrixfromgtofx( Mat* pKff, Mat* pKfs,Mat Kgg,Mat Gmn,NodeSets* nodesets);
    13 void    Reducematrixfromgton(Mat* pKnn,Mat Kgg,Mat Gmn,double* pv_m,int msize, double* pv_n,int nsize,int flag);
     12void    Reducematrixfromgtofx( Mat* pKff, Mat* pKfs,Mat Kgg,NodeSets* nodesets);
    1413
    1514#endif  /* _REDUCEMATRIXFROMGTOFX_H */
  • issm/trunk/src/c/modules/Reducevectorgtofx/Reducevectorgtofx.cpp

    r3332 r5057  
    1111        Vec uf=NULL;
    1212
    13         /*intermediary: */
    14         Vec un=NULL;
    15 
    1613        if(nodesets){
    1714
    1815
    19                 if (nodesets->GetNSize() && nodesets->GetFSize()){
     16                if (nodesets->GetGSize() && nodesets->GetFSize()){
    2017
    21                         VecPartition(&un,ug,nodesets->GetPV_N(),nodesets->GetNSize());
    22                
    23                         VecPartition(&uf,un,nodesets->GetPV_F(),nodesets->GetFSize());
     18                        VecPartition(&uf,ug,nodesets->GetPV_F(),nodesets->GetFSize());
    2419               
    2520                }
    26 
    27                 /*Free ressources:*/
    28                 VecFree(&un);
    2921        }
    3022       
  • issm/trunk/src/c/modules/Reducevectorgtosx/Reducevectorgtosx.cpp

    r3959 r5057  
    1111        Vec ys=NULL;
    1212
    13         /*intermediary: */
    14         Vec yn=NULL;
    15 
    1613        if(nodesets){
    17 
    18 
    19                 if (nodesets->GetNSize() && nodesets->GetSSize()){
    20 
    21                         VecPartition(&yn,yg,nodesets->GetPV_N(),nodesets->GetNSize());
    22                
    23                         VecPartition(&ys,yn,nodesets->GetPV_S(),nodesets->GetSSize());
    24                
     14                if (nodesets->GetGSize() && nodesets->GetSSize()){
     15                        VecPartition(&ys,yg,nodesets->GetPV_S(),nodesets->GetSSize());
    2516                }
    26 
    27                 /*Free ressources:*/
    28                 VecFree(&yn);
    2917        }
    3018       
  • issm/trunk/src/c/modules/modules.h

    r5032 r5057  
    5757#include "./Misfitx/Misfitx.h"
    5858#include "./ModelProcessorx/ModelProcessorx.h"
    59 #include "./MpcNodesx/MpcNodesx.h"
    6059#include "./NodeConnectivityx/NodeConnectivityx.h"
    6160#include "./NodesDofx/NodesDofx.h"
    62 #include "./NormalizeConstraintsx/NormalizeConstraintsx.h"
    6361#include "./Orthx/Orthx.h"
    6462#include "./OutputResultsx/OutputResultsx.h"
  • issm/trunk/src/c/objects/DofIndexing.cpp

    r4248 r5057  
    2727        for (i=0;i<MAXDOFSPERNODE;i++){
    2828                /*assume dof is free, no constraints, no rigid body constraint: */
    29                 this->m_set[i]=0;
    30                 this->n_set[i]=1;
    3129                this->f_set[i]=1;
    3230                this->s_set[i]=0;
     
    4846
    4947        for(i=0;i<MAXDOFSPERNODE;i++){
    50                 this->m_set[i]=in->m_set[i];
    51                 this->n_set[i]=in->n_set[i];
    5248                this->f_set[i]=in->f_set[i];
    5349                this->s_set[i]=in->s_set[i];
     
    6965        for (i=0;i<MAXDOFSPERNODE;i++){
    7066                /*assume dof is free, no constraints, no rigid body constraint: */
    71                 this->m_set[i]=0;
    72                 this->n_set[i]=1;
    7367                this->f_set[i]=1;
    7468                this->s_set[i]=0;
     
    9892        printf("   clone: %i\n",clone);
    9993       
    100         printf("   set membership: m,n,f,s sets \n");
     94        printf("   set membership: f,s sets \n");
    10195        for(i=0;i<numberofdofs;i++){
    10296                if(i>MAXDOFSPERNODE)break;
    103                 printf("      dof %i: %i %i %i %i\n",i,m_set[i],n_set[i],f_set[i],s_set[i]);
     97                printf("      dof %i: %i %i\n",i,f_set[i],s_set[i]);
    10498        }
    10599        printf("\n");
     
    128122        memcpy(&numberofdofs,marshalled_dataset,sizeof(numberofdofs));marshalled_dataset+=sizeof(numberofdofs);
    129123        memcpy(&clone,marshalled_dataset,sizeof(clone));marshalled_dataset+=sizeof(clone);
    130         memcpy(&m_set,marshalled_dataset,sizeof(m_set));marshalled_dataset+=sizeof(m_set);
    131         memcpy(&n_set,marshalled_dataset,sizeof(n_set));marshalled_dataset+=sizeof(n_set);
    132124        memcpy(&f_set,marshalled_dataset,sizeof(f_set));marshalled_dataset+=sizeof(f_set);
    133125        memcpy(&s_set,marshalled_dataset,sizeof(s_set));marshalled_dataset+=sizeof(s_set);
     
    157149        memcpy(marshalled_dataset,&numberofdofs,sizeof(numberofdofs));marshalled_dataset+=sizeof(numberofdofs);
    158150        memcpy(marshalled_dataset,&clone,sizeof(clone));marshalled_dataset+=sizeof(clone);
    159         memcpy(marshalled_dataset,&m_set,sizeof(m_set));marshalled_dataset+=sizeof(m_set);
    160         memcpy(marshalled_dataset,&n_set,sizeof(n_set));marshalled_dataset+=sizeof(n_set);
    161151        memcpy(marshalled_dataset,&f_set,sizeof(f_set));marshalled_dataset+=sizeof(f_set);
    162152        memcpy(marshalled_dataset,&s_set,sizeof(s_set));marshalled_dataset+=sizeof(s_set);
     
    172162        return sizeof(numberofdofs)+
    173163                sizeof(clone)+
    174                 sizeof(m_set)+
    175                 sizeof(n_set)+
    176164                sizeof(f_set)+
    177165                sizeof(s_set)+
  • issm/trunk/src/c/objects/DofIndexing.h

    r4248 r5057  
    1818
    1919                /*boundary conditions sets: */
    20                 int     m_set[MAXDOFSPERNODE];
    21                 int     n_set[MAXDOFSPERNODE];
    2220                int     f_set[MAXDOFSPERNODE];
    2321                int     s_set[MAXDOFSPERNODE];
  • issm/trunk/src/c/objects/FemModel.cpp

    r4575 r5057  
    3737        /*Dynamically allocate whatever is a list of length nummodels: */
    3838        analysis_type_list=(int*)xmalloc(nummodels*sizeof(int));
    39         m_Rmg=(Mat*)xmalloc(nummodels*sizeof(Mat));
    40         m_Gmn=(Mat*)xmalloc(nummodels*sizeof(Mat));
    4139        m_nodesets=(NodeSets**)xmalloc(nummodels*sizeof(NodeSets*));
    4240        m_yg=(Vec*)xmalloc(nummodels*sizeof(Vec));
     
    4543        /*Initialize: */
    4644        for(i=0;i<nummodels;i++)analysis_type_list[i]=analyses[i];
    47         for(i=0;i<nummodels;i++)m_Rmg[i]=NULL;
    48         for(i=0;i<nummodels;i++)m_Gmn[i]=NULL;
    4945        for(i=0;i<nummodels;i++)m_nodesets[i]=NULL;
    5046        for(i=0;i<nummodels;i++)m_yg[i]=NULL;
     
    6864                SpcNodesx( &m_yg[i], nodes,constraints,analysis_type);
    6965
    70                 _printf_("      create rigid body constraints\n");
    71                 MpcNodesx( &m_Rmg[i], nodes,constraints,analysis_type);
    72 
    7366                _printf_("      create node sets\n");
    7467                BuildNodeSetsx(&m_nodesets[i], nodes,analysis_type);
     
    7669                _printf_("      reducing single point constraints vector\n");
    7770                Reducevectorgtosx(&m_ys[i], m_yg[i],m_nodesets[i]);
    78 
    79                 _printf_("      normalizing rigid body constraints matrix\n");
    80                 NormalizeConstraintsx(&m_Gmn[i], m_Rmg[i],m_nodesets[i]);
    8171
    8272                _printf_("      configuring element and loads\n");
     
    10595
    10696        for(i=0;i<nummodels;i++){
    107                 Mat temp_Rmg=m_Rmg[i];
    108                 MatFree(&temp_Rmg);
    109                 Mat temp_Gmn=m_Gmn[i];
    110                 MatFree(&temp_Gmn);
    11197                NodeSets* temp_nodesets=m_nodesets[i];
    11298                delete temp_nodesets;
     
    118104
    119105        /*Delete dynamically allocated arrays: */
    120         xfree((void**)&m_Rmg);
    121         xfree((void**)&m_Gmn);
    122106        xfree((void**)&m_nodesets);
    123107        xfree((void**)&m_yg);
     
    162146
    163147        /*activate matrices/vectors: */
    164         Rmg=m_Rmg[analysis_counter];
    165         Gmn=m_Gmn[analysis_counter];
    166148        nodesets=m_nodesets[analysis_counter];
    167149        yg=m_yg[analysis_counter];
  • issm/trunk/src/c/objects/FemModel.h

    r4356 r5057  
    4040               
    4141                //multiple  sets of matrices/vectors for each analysis_type. m stands for multiple
    42                 Mat*                 m_Rmg; //rigid body motions matrices
    43                 Mat*                 m_Gmn;
    4442                NodeSets**           m_nodesets; //boundary conditions dof sets
    4543                Vec*                 m_yg; //boundary conditions in global g-set
     
    4745
    4846                //pointers to point to sets of matrices/vectors, for a certain analysis type. activated in SetCurrentAnalysis
    49                 Mat                  Rmg;
    50                 Mat                  Gmn;
    5147                NodeSets*            nodesets;
    5248                Vec                  yg;
  • issm/trunk/src/c/objects/Node.cpp

    r4983 r5057  
    410410/*}}}*/
    411411/*FUNCTION Node::CreateVecSets {{{1*/
    412 void  Node::CreateVecSets(Vec pv_g,Vec pv_m,Vec pv_n,Vec pv_f,Vec pv_s){
     412void  Node::CreateVecSets(Vec pv_g,Vec pv_f,Vec pv_s){
    413413
    414414        double gvalue=1.0; //all nodes are in the g set;
     
    422422                VecSetValues(pv_g,1,&indexing.doflist[i],&gvalue,INSERT_VALUES);
    423423               
    424                 /*m set: */
    425                 value=(double)this->indexing.m_set[i];
    426                 VecSetValues(pv_m,1,&indexing.doflist[i],&value,INSERT_VALUES);
    427 
    428                 /*n set: */
    429                 value=(double)this->indexing.n_set[i];
    430                 VecSetValues(pv_n,1,&indexing.doflist[i],&value,INSERT_VALUES);
    431 
    432424                /*f set: */
    433425                value=(double)this->indexing.f_set[i];
     
    443435}
    444436/*}}}*/
    445 /*FUNCTION Node::DofInMSet{{{1*/
    446 void  Node::DofInMSet(int dof){
    447 
    448         /*Put dof for this node into the m set (m set is for rigid body modes)*/
    449 
    450         this->indexing.m_set[dof]=1; //m and n are mutually exclusive (m for rigid body modes)
    451         this->indexing.n_set[dof]=0;
    452         this->indexing.f_set[dof]=0; //n splits into f (for which we solve) and s (single point constraints)
    453         this->indexing.s_set[dof]=0;
    454 }
    455 /*}}}*/
    456437/*FUNCTION Node::DofInSSet {{{1*/
    457438void  Node::DofInSSet(int dof){
     
    460441         * to a fixed value during computations. */
    461442
    462         this->indexing.m_set[dof]=0; //m and n are mutually exclusive (m for rigid body modes)
    463         this->indexing.n_set[dof]=1;
    464443        this->indexing.f_set[dof]=0; //n splits into f (for which we solve) and s (single point constraints)
    465444        this->indexing.s_set[dof]=1;
    466 }
    467 /*}}}*/
    468 /*FUNCTION Node::DofIsInMSet{{{1*/
    469 int  Node::DofIsInMSet(int dof){
    470 
    471         if (this->indexing.m_set[dof])return 1;
    472         else return 0;
    473 
    474445}
    475446/*}}}*/
  • issm/trunk/src/c/objects/Node.h

    r4983 r5057  
    7272                void  ApplyConstraint(Vec yg,int dof,double value);
    7373                void  DofInSSet(int dof);
    74                 void  DofInMSet(int dof);
    75                  int  DofIsInMSet(int dof);
    7674                int   GetDof(int dofindex);
    77                 void  CreateVecSets(Vec pv_g,Vec pv_m,Vec pv_n,Vec pv_f,Vec pv_s);
     75                void  CreateVecSets(Vec pv_g,Vec pv_f,Vec pv_s);
    7876                int   GetConnectivity();
    7977                void  GetDofList(int* outdoflist,int* pnumberofdofspernode);
  • issm/trunk/src/c/objects/NodeSets.cpp

    r4546 r5057  
    99/*constructors and destructors*/
    1010/*FUNCTION NodeSets::NodeSets{{{1*/
    11 NodeSets::NodeSets( double* nodesets_pv_m,double* nodesets_pv_n,double* nodesets_pv_f,double* nodesets_pv_s,
    12                 int nodesets_gsize,int nodesets_msize,int nodesets_nsize,int nodesets_fsize,int nodesets_ssize){
     11NodeSets::NodeSets( double* nodesets_pv_f,double* nodesets_pv_s, int nodesets_gsize,int nodesets_fsize,int nodesets_ssize){
    1312
    1413        gsize=nodesets_gsize;
    15         msize=nodesets_msize;
    16         nsize=nodesets_nsize;
    1714        fsize=nodesets_fsize;
    1815        ssize=nodesets_ssize;
    1916
    20         pv_m=nodesets_pv_m;
    21         pv_n=nodesets_pv_n;
    2217        pv_f=nodesets_pv_f;
    2318        pv_s=nodesets_pv_s;
     
    2722NodeSets::~NodeSets(void){
    2823
    29         xfree((void**)&pv_m);
    30         xfree((void**)&pv_n);
    3124        xfree((void**)&pv_f);
    3225        xfree((void**)&pv_s);
     
    4235        printf("\nNodeSets echo:\n");
    4336        printf(" gsize: %i\n",gsize);
    44         printf(" msize: %i\n",msize);
    45         printf(" nsize: %i\n",nsize);
    4637        printf(" fsize: %i\n",fsize);
    4738        printf(" ssize: %i\n",ssize);
    4839
    49         if(pv_m){
    50                 printf("m set:\n");
    51                 for(i=0;i<msize;i++){
    52                         printf("%g\n",pv_m[i]);
    53                 }
    54         }
    55                
    56         if(pv_n){
    57                 printf("n set:\n");
    58                 for(i=0;i<nsize;i++){
    59                         printf("%g\n",pv_n[i]);
    60                 }
    61         }
    62        
    6340        if(pv_f){
    6441                printf("f set:\n");
     
    7956        return gsize;
    8057}/*}}}*/
    81 /*FUNCTION NodeSets::GetMSize{{{1*/
    82 int NodeSets::GetMSize(){
    83         return msize;
    84 }/*}}}*/
    85 /*FUNCTION NodeSets::GetNSize{{{1*/
    86 int NodeSets::GetNSize(){
    87         return nsize;
    88 }/*}}}*/
    8958/*FUNCTION NodeSets::GetFSize{{{1*/
    9059int NodeSets::GetFSize(){
     
    9463int NodeSets::GetSSize(){
    9564        return ssize;
    96 }/*}}}*/
    97 /*FUNCTION NodeSets::GetPV_M{{{1*/
    98 double* NodeSets::GetPV_M(){
    99         return pv_m;
    100 }/*}}}*/
    101 /*FUNCTION NodeSets::GetPV_N{{{1*/
    102 double* NodeSets::GetPV_N(){
    103         return pv_n;
    10465}/*}}}*/
    10566/*FUNCTION NodeSets::GetPV_F{{{1*/
  • issm/trunk/src/c/objects/NodeSets.h

    r3681 r5057  
    1414        private:
    1515                int gsize;
    16                 int msize;
    17                 int nsize;
    1816                int fsize;
    1917                int ssize;
    2018
    21                 double* pv_m;
    22                 double* pv_n;
    2319                double* pv_f;
    2420                double* pv_s;
     
    2622        public:
    2723
    28         NodeSets( double* pv_m,double* pv_n,double* pv_f,double* pv_s,int gsize,int msize,int nsize,int fsize,int ssize);
     24        NodeSets( double* pv_f,double* pv_s,int gsize,int fsize,int ssize);
    2925        ~NodeSets();
    3026
    3127        void Echo();
    3228        int GetGSize();
    33         int GetMSize();
    34         int GetNSize();
    3529        int GetFSize();
    3630        int GetSSize();
    37         double* GetPV_M();
    38         double* GetPV_N();
    3931        double* GetPV_F();
    4032        double* GetPV_S();
  • issm/trunk/src/c/objects/objects.h

    r4927 r5057  
    2222/*Constraints: */
    2323#include "./Constraints/Spc.h"
    24 #include "./Constraints/Rgb.h"
    2524
    2625/*Loads: */
  • issm/trunk/src/c/solvers/solver_adjoint_linear.cpp

    r4839 r5057  
    4343        /*!Reduce matrix from g to f size:*/
    4444        if(verbose)_printf_("   reducing matrix from g to f set\n");
    45         Reducematrixfromgtofx(&Kff,&Kfs,Kgg,fem->Gmn,fem->nodesets); MatFree(&Kgg);
     45        Reducematrixfromgtofx(&Kff,&Kfs,Kgg,fem->nodesets); MatFree(&Kgg);
    4646
    4747        /*!Reduce load from g to f size: */
    4848        if(verbose)_printf_("   reducing load from g to f set\n"); //true means spc = 0
    49         Reduceloadfromgtofx(&pf, pg, fem->Gmn, Kfs, fem->ys, fem->nodesets,true);VecFree(&pg); MatFree(&Kfs);
     49        Reduceloadfromgtofx(&pf, pg, Kfs, fem->ys, fem->nodesets,true);VecFree(&pg); MatFree(&Kfs);
    5050
    5151        /*Solve: */
     
    5555        //Merge back to g set
    5656        if(verbose)_printf_("   merging solution from f to g set\n");//true means spc=0
    57         Mergesolutionfromftogx(&ug, uf,fem->Gmn,fem->ys,fem->nodesets,true);VecFree(&uf);
     57        Mergesolutionfromftogx(&ug, uf,fem->ys,fem->nodesets,true);VecFree(&uf);
    5858
    5959        //Update inputs using new solution:
  • issm/trunk/src/c/solvers/solver_diagnostic_nonlinear.cpp

    r4839 r5057  
    7878               
    7979                if(verbose)_printf_("   reducing matrix from g to f set\n");
    80                 Reducematrixfromgtofx(&Kff,&Kfs,Kgg,femmodel->Gmn,femmodel->nodesets);
     80                Reducematrixfromgtofx(&Kff,&Kfs,Kgg,femmodel->nodesets);
    8181
    8282                /*Free ressources: */
     
    8484       
    8585                if(verbose)_printf_("   reducing load from g to f set\n");
    86                 Reduceloadfromgtofx(&pf, pg, femmodel->Gmn, Kfs, femmodel->ys, femmodel->nodesets);
     86                Reduceloadfromgtofx(&pf, pg, Kfs, femmodel->ys, femmodel->nodesets);
    8787
    8888                //no need for pg and Kfs anymore
     
    9494
    9595                if(verbose)_printf_("   merging solution from f to g set\n");
    96                 Mergesolutionfromftogx(&ug, uf,femmodel->Gmn,femmodel->ys,femmodel->nodesets);
     96                Mergesolutionfromftogx(&ug, uf,femmodel->ys,femmodel->nodesets);
    9797
    9898                //Update inputs using new solution:
  • issm/trunk/src/c/solvers/solver_linear.cpp

    r4837 r5057  
    4141        /*!Reduce matrix from g to f size:*/
    4242        if(verbose)_printf_("   reducing matrix from g to f set\n");
    43         Reducematrixfromgtofx(&Kff,&Kfs,Kgg,fem->Gmn,fem->nodesets); MatFree(&Kgg);
     43        Reducematrixfromgtofx(&Kff,&Kfs,Kgg,fem->nodesets); MatFree(&Kgg);
    4444
    4545        /*!Reduce load from g to f size: */
    4646        if(verbose)_printf_("   reducing load from g to f set\n");
    47         Reduceloadfromgtofx(&pf, pg, fem->Gmn, Kfs, fem->ys, fem->nodesets);VecFree(&pg); MatFree(&Kfs);
     47        Reduceloadfromgtofx(&pf, pg, Kfs, fem->ys, fem->nodesets);VecFree(&pg); MatFree(&Kfs);
    4848
    4949        /*Solve: */
     
    5353        //Merge back to g set
    5454        if(verbose)_printf_("   merging solution from f to g set\n");
    55         Mergesolutionfromftogx(&ug, uf,fem->Gmn,fem->ys,fem->nodesets);VecFree(&uf);
     55        Mergesolutionfromftogx(&ug, uf,fem->ys,fem->nodesets);VecFree(&uf);
    5656
    5757        //Update inputs using new solution:
  • issm/trunk/src/c/solvers/solver_thermal_nonlinear.cpp

    r4839 r5057  
    7878
    7979                /*!Reduce matrix from g to f size:*/
    80                 Reducematrixfromgtofx(&Kff,&Kfs,Kgg,fem->Gmn,fem->nodesets);
     80                Reducematrixfromgtofx(&Kff,&Kfs,Kgg,fem->nodesets);
    8181
    8282                /*Free ressources: */
     
    8484       
    8585                if(verbose)_printf_("   reducing load from g to f set\n");
    86                 Reduceloadfromgtofx(&pf, pg, fem->Gmn, Kfs, fem->ys, fem->nodesets);
     86                Reduceloadfromgtofx(&pf, pg, Kfs, fem->ys, fem->nodesets);
    8787
    8888                //no need for pg and Kfs anymore
     
    100100
    101101                if(verbose)_printf_("   merging solution from f to g set\n");
    102                 Mergesolutionfromftogx(&tg, tf,fem->Gmn,fem->ys,fem->nodesets);
     102                Mergesolutionfromftogx(&tg, tf,fem->ys,fem->nodesets);
    103103
    104104                //Update inputs using new solution:
  • issm/trunk/src/m/solutions/NewFemModel.m

    r4545 r5057  
    2020        %Initialize some fiels with empty celils
    2121        femmodel.m_yg=cell(nummodels,1);
    22         femmodel.m_Rmg=cell(nummodels,1);
    2322        femmodel.m_nodesets=cell(nummodels,1);
    2423        femmodel.m_ys=cell(nummodels,1);
    25         femmodel.m_Gmn=cell(nummodels,1);
    2624        femmodel.results=struct([]);
    2725
     
    4341                [femmodel.nodes,femmodel.m_yg{i}]=SpcNodes(femmodel.nodes,femmodel.constraints,analysis_type);
    4442
    45                 displaystring(md.verbose,'%s','      generating rigid body constraints...');
    46                 [femmodel.m_Rmg{i},femmodel.nodes]=MpcNodes(femmodel.nodes,femmodel.constraints,analysis_types);
    47 
    4843                displaystring(md.verbose,'%s','      generating node sets...');
    4944                femmodel.m_nodesets{i}=BuildNodeSets(femmodel.nodes,analysis_type);
     
    5247                femmodel.m_ys{i}=Reducevectorgtos(femmodel.m_yg{i},femmodel.m_nodesets{i});
    5348
    54                 displaystring(md.verbose,'%s','      normalizing rigid body constraints matrix...');
    55                 femmodel.m_Gmn{i}= NormalizeConstraints(femmodel.m_Rmg{i},femmodel.m_nodesets{i});
    56 
    5749                displaystring(md.verbose,'%s','      configuring elements and loads...');
    5850                [femmodel.elements,femmodel.loads,femmodel.nodes,femmodel.parameters] = ConfigureObjects( femmodel.elements, femmodel.loads, femmodel.nodes, femmodel.vertices,femmodel.materials,femmodel.parameters);
  • issm/trunk/src/m/solutions/SetCurrentConfiguration.m

    r4573 r5057  
    3838       
    3939        %activate matrices and vectors:
    40         femmodel.Rmg=femmodel.m_Rmg{found};
    41         femmodel.Gmn=femmodel.m_Gmn{found};
    4240        femmodel.nodesets=femmodel.m_nodesets{found};
    4341        femmodel.yg=femmodel.m_yg{found};
  • issm/trunk/src/m/solvers/solver_adjoint_linear.m

    r4839 r5057  
    1313       
    1414        %Reduce tangent matrix from g size to f size
    15         [K_ff, K_fs] = Reducematrixfromgtof( K_gg, femmodel.Gmn, femmodel.nodesets);
     15        [K_ff, K_fs] = Reducematrixfromgtof( K_gg, femmodel.nodesets);
    1616        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, femmodel.Gmn, K_fs, femmodel.ys, femmodel.nodesets,true);
     19        p_f = Reduceloadfromgtof( p_g, K_fs, femmodel.ys, femmodel.nodesets,true);
    2020
    2121        %Solve 
     
    2323       
    2424        %Merge back to g set
    25         u_g= Mergesolutionfromftog( u_f, femmodel.Gmn, femmodel.ys, femmodel.nodesets,true);
     25        u_g= Mergesolutionfromftog( u_f, femmodel.ys, femmodel.nodesets,true);
    2626
    2727        %Update inputs using new solution
  • issm/trunk/src/m/solvers/solver_diagnostic_nonlinear.m

    r4954 r5057  
    3737
    3838                displaystring(femmodel.parameters.Verbose,'%s','   reducing matrix from g to f set');
    39                 [K_ff, K_fs] = Reducematrixfromgtof( K_gg, femmodel.Gmn, femmodel.nodesets);
     39                [K_ff, K_fs] = Reducematrixfromgtof( K_gg, femmodel.nodesets);
    4040               
    4141                displaystring(femmodel.parameters.Verbose,'%s','   reduce load from g size to f size');
    42                 p_f = Reduceloadfromgtof( p_g, femmodel.Gmn, K_fs, femmodel.ys, femmodel.nodesets);
     42                p_f = Reduceloadfromgtof( p_g, K_fs, femmodel.ys, femmodel.nodesets);
    4343
    4444                displaystring(femmodel.parameters.Verbose,'%s','   solving');
     
    4646
    4747                displaystring(femmodel.parameters.Verbose,'%s','   merge back to g set');
    48                 ug= Mergesolutionfromftog( uf, femmodel.Gmn, femmodel.ys, femmodel.nodesets );
     48                ug= Mergesolutionfromftog( uf, femmodel.ys, femmodel.nodesets );
    4949
    5050                %Update inputs using new solution
  • issm/trunk/src/m/solvers/solver_linear.m

    r4839 r5057  
    1313       
    1414        %Reduce tangent matrix from g size to f size
    15         [K_ff, K_fs] = Reducematrixfromgtof( K_gg, femmodel.Gmn, femmodel.nodesets);
     15        [K_ff, K_fs] = Reducematrixfromgtof( K_gg, femmodel.nodesets);
    1616        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, femmodel.Gmn, K_fs, femmodel.ys, femmodel.nodesets);
     19        p_f = Reduceloadfromgtof( p_g, K_fs, femmodel.ys, femmodel.nodesets);
    2020
    2121        %Solve 
     
    2323       
    2424        %Merge back to g set
    25         u_g= Mergesolutionfromftog( u_f, femmodel.Gmn, femmodel.ys, femmodel.nodesets );
     25        u_g= Mergesolutionfromftog( u_f, femmodel.ys, femmodel.nodesets );
    2626
    2727        %Update inputs using new solution
  • issm/trunk/src/m/solvers/solver_thermal_nonlinear.m

    r4839 r5057  
    2828
    2929                %Reduce tangent matrix from g size to f size
    30                 [K_ff, K_fs] = Reducematrixfromgtof( K_gg, femmodel.Gmn, femmodel.nodesets);
     30                [K_ff, K_fs] = Reducematrixfromgtof( K_gg, femmodel.nodesets);
    3131
    3232                %Reduce load from g size to f size
    33                 p_f = Reduceloadfromgtof( p_g, femmodel.Gmn, K_fs, femmodel.ys, femmodel.nodesets);
     33                p_f = Reduceloadfromgtof( p_g, K_fs, femmodel.ys, femmodel.nodesets);
    3434
    3535                displaystring(femmodel.parameters.Verbose,'%s%g','   condition number of stiffness matrix: ',condest(K_ff));
     
    3737
    3838                displaystring(femmodel.parameters.Verbose,'%s',['   merging solution back to g set']);
    39                 t_g= Mergesolutionfromftog( t_f, femmodel.Gmn, femmodel.ys, femmodel.nodesets );
     39                t_g= Mergesolutionfromftog( t_f, femmodel.ys, femmodel.nodesets );
    4040
    4141                displaystring(femmodel.parameters.Verbose,'%s',['   updating inputs']);
  • issm/trunk/src/mex/Makefile.am

    r5032 r5057  
    4242                                Misfit \
    4343                                ModelProcessor \
    44                                 MpcNodes\
    4544                                NodeConnectivity\
    4645                                NodesDof\
    47                                 NormalizeConstraints\
    4846                                Orth\
    4947                                OutputRifts\
     
    216214                                  Misfit/Misfit.h
    217215
    218 MpcNodes_SOURCES = MpcNodes/MpcNodes.cpp\
    219                           MpcNodes/MpcNodes.h
    220 
    221 NormalizeConstraints_SOURCES = NormalizeConstraints/NormalizeConstraints.cpp\
    222                           NormalizeConstraints/NormalizeConstraints.h
    223 
    224216NodeConnectivity_SOURCES = NodeConnectivity/NodeConnectivity.cpp\
    225217                          NodeConnectivity/NodeConnectivity.h
  • issm/trunk/src/mex/Mergesolutionfromftog/Mergesolutionfromftog.cpp

    r4453 r5057  
    1010        bool flag_ys0;
    1111        Vec uf=NULL;
    12         Mat Gmn=NULL;
    1312        Vec ys=NULL;
    1413        NodeSets* nodesets=NULL;
     
    2120
    2221        /*checks on arguments on the matlab side: */
    23         if((nlhs!=NLHS) || (nrhs!=4 && nrhs!=5)){
     22        if((nlhs!=NLHS) || (nrhs!=3 && nrhs!=4)){
    2423                MergesolutionfromftogUsage();
    2524                ISSMERROR(" usage. See above");
     
    2827        /*Input datasets: */
    2928        FetchData(&uf,UF);
    30         FetchData(&Gmn,GMN);
    3129        FetchData(&ys,YS);
    3230        FetchNodeSets(&nodesets,NODESETS);
    3331
    3432        /*!Reduce vector: */
    35         if (nrhs==4){
    36                 Mergesolutionfromftogx(&ug, uf,Gmn,ys,nodesets);
     33        if (nrhs==3){
     34                Mergesolutionfromftogx(&ug, uf,ys,nodesets);
    3735        }
    3836        else{
    3937                FetchData(&flag_ys0,YSFLAG);
    40                 Mergesolutionfromftogx(&ug, uf,Gmn,ys,nodesets,flag_ys0);
     38                Mergesolutionfromftogx(&ug, uf,ys,nodesets,flag_ys0);
    4139        }
    4240
     
    4644        /*Free ressources: */
    4745        VecFree(&uf);
    48         MatFree(&Gmn);
    4946        VecFree(&ys);
    5047        delete nodesets;
     
    5855{
    5956        _printf_("\n");
    60         _printf_("   usage: [ug] = %s(uf,Gmn,ys,nodesets);\n",__FUNCT__);
     57        _printf_("   usage: [ug] = %s(uf,ys,nodesets);\n",__FUNCT__);
    6158        _printf_("\n");
    6259}
  • issm/trunk/src/mex/Mergesolutionfromftog/Mergesolutionfromftog.h

    r4236 r5057  
    2020/* serial input macros: */
    2121#define UF (mxArray*)prhs[0]
    22 #define GMN (mxArray*)prhs[1]
    23 #define YS (mxArray*)prhs[2]
    24 #define NODESETS (mxArray*)prhs[3]
    25 #define YSFLAG (mxArray*)prhs[4]
     22#define YS (mxArray*)prhs[1]
     23#define NODESETS (mxArray*)prhs[2]
     24#define YSFLAG (mxArray*)prhs[3]
    2625
    2726/* serial output macros: */
     
    3231#define NLHS  1
    3332#undef NRHS
    34 #define NRHS  5
     33#define NRHS  3
    3534
    3635#endif  /* _MERGESOLUTIONFROMFTOG_H */
  • issm/trunk/src/mex/Reduceloadfromgtof/Reduceloadfromgtof.cpp

    r4453 r5057  
    1010        bool flag_ys0;
    1111        Vec pg=NULL;
    12         Mat Gmn=NULL;
    1312        Mat Kfs=NULL;
    1413        Vec ys=NULL;
     
    2221
    2322        /*checks on arguments on the matlab side: */
    24         if((nlhs!=NLHS) || (nrhs!=5 && nrhs!=6)){
     23        if((nlhs!=NLHS) || (nrhs!=4 && nrhs!=5)){
    2524                ReduceloadfromgtofUsage();
    2625                ISSMERROR(" usage. See above");
     
    2928        /*Input datasets: */
    3029        FetchData(&pg,PG);
    31         FetchData(&Gmn,GMN);
    3230        FetchData(&Kfs,KFS);
    3331        FetchData(&ys,YS);
     
    3533
    3634        /*!Reduce load from g to f size: */
    37         if (nrhs==5){
    38                 Reduceloadfromgtofx(&pf, pg, Gmn, Kfs, ys, nodesets);
     35        if (nrhs==4){
     36                Reduceloadfromgtofx(&pf, pg, Kfs, ys, nodesets);
    3937        }
    4038        else{
    4139                FetchData(&flag_ys0,YSFLAG);
    42                 Reduceloadfromgtofx(&pf, pg, Gmn, Kfs, ys, nodesets,flag_ys0);
     40                Reduceloadfromgtofx(&pf, pg, Kfs, ys, nodesets,flag_ys0);
    4341        }
    4442
     
    4947        /*Free ressources: */
    5048        VecFree(&pg);
    51         MatFree(&Gmn);
    5249        MatFree(&Kfs);
    5350        VecFree(&ys);
     
    6158{
    6259        _printf_("\n");
    63         _printf_("   usage: [pf] = %s(pg,Gmn,Kfs,ys,nodesets);\n",__FUNCT__);
     60        _printf_("   usage: [pf] = %s(pg,Kfs,ys,nodesets);\n",__FUNCT__);
    6461        _printf_("\n");
    6562}
  • issm/trunk/src/mex/Reduceloadfromgtof/Reduceloadfromgtof.h

    r4236 r5057  
    2020/* serial input macros: */
    2121#define PG (mxArray*)prhs[0]
    22 #define GMN (mxArray*)prhs[1]
    23 #define KFS (mxArray*)prhs[2]
    24 #define YS (mxArray*)prhs[3]
    25 #define NODESETS (mxArray*)prhs[4]
    26 #define YSFLAG (mxArray*)prhs[5]
     22#define KFS (mxArray*)prhs[1]
     23#define YS (mxArray*)prhs[2]
     24#define NODESETS (mxArray*)prhs[3]
     25#define YSFLAG (mxArray*)prhs[4]
    2726
    2827/* serial output macros: */
     
    3332#define NLHS  1
    3433#undef NRHS
    35 #define NRHS  6
     34#define NRHS  4
    3635
    3736
  • issm/trunk/src/mex/Reducematrixfromgtof/Reducematrixfromgtof.cpp

    r4453 r5057  
    99        /*input datasets: */
    1010        Mat Kgg=NULL;
    11         Mat Gmn=NULL;
    1211        NodeSets* nodesets=NULL;
    1312
     
    2423        /*Input datasets: */
    2524        FetchData(&Kgg,KGG);
    26         FetchData(&Gmn,GMN);
    2725        FetchNodeSets(&nodesets,NODESETS);
    2826
    2927        /*!Reduce matrix from g to f size:*/
    30         Reducematrixfromgtofx(&Kff,&Kfs,Kgg,Gmn,nodesets);
     28        Reducematrixfromgtofx(&Kff,&Kfs,Kgg,nodesets);
    3129
    3230        /*write output datasets: */
     
    3735        delete nodesets;
    3836        MatFree(&Kgg);
    39         MatFree(&Gmn);
    4037        MatFree(&Kff);
    4138        MatFree(&Kfs);
     
    4845{
    4946        _printf_("\n");
    50         _printf_("   usage: [Kff,Kfs] = %s(Kgg,Gmn,nodeses);\n",__FUNCT__);
     47        _printf_("   usage: [Kff,Kfs] = %s(Kgg,nodesets);\n",__FUNCT__);
    5148        _printf_("\n");
    5249}
  • issm/trunk/src/mex/Reducematrixfromgtof/Reducematrixfromgtof.h

    r4236 r5057  
    2020/* serial input macros: */
    2121#define KGG (mxArray*)prhs[0]
    22 #define GMN (mxArray*)prhs[1]
    23 #define NODESETS (mxArray*)prhs[2]
     22#define NODESETS (mxArray*)prhs[1]
    2423
    2524/* serial output macros: */
     
    3130#define NLHS  2
    3231#undef NRHS
    33 #define NRHS  3
     32#define NRHS  2
    3433
    3534
  • issm/trunk/test/Exp/MassFlux6.exp

    r5045 r5057  
    22## Icon:0
    33# Points Count Value
    4 1001 1.000000
     4501 1.000000
    55# X pos Y pos
    66900000.0000000000 500000.0000000000
    7 899992.1043424548 502513.2575862236
    87899968.4176815264 505026.4159533411
    9 899928.9409523236 507539.3758861633
    108899873.6757133200 510052.0381773350
    11 899802.6241462927 512564.3036312513
    129899715.7890562357 515076.0730679738
    13 899613.1738712499 517587.2473271459
    1410899494.7826424070 520097.7272719078
    15 899360.6200435900 522607.4137928098
    1611899210.6913713086 525116.2078117253
    17 899045.0025444902 527624.0102857624
    1812898863.5601042456 530130.7222111730
    19 898666.3712136119 532636.2446272630
    2013898453.4436572690 535140.4786202973
    21 898224.7858412319 537643.3253274057
    2214897980.4067925201 540144.6859404859
    23 897720.3161587996 542644.4617101040
    2415897444.5242080034 545142.5539493926
    25 897153.0418279255 547638.8640379478
    2616896845.8805257911 550133.2934257217
    27 896523.0524278027 552625.7436369130
    2817896184.5702786604 555116.1162738552
    29 895830.4474410603 557604.3130209008
    3018895460.6978951656 560090.2356483028
    31 895075.3362380550 562573.7860160924
    3219894674.3776831472 565054.8660779535
    33 894257.8380595993 567533.3778850936
    3420893825.7338116821 570009.2235901104
    35 893378.0819981319 572482.3054508549
    3621892914.9002914755 574952.5258342898
    37 892436.2069773336 577419.7872203441
    3822891942.0209536988 579883.9922057628
    39 891432.3617301888 582345.0435079525
    4023890907.2494272774 584802.8439688219
    41 890366.7047754989 587257.2965586170
    4224889810.7491146309 589708.3043797525
    43 889239.4043928506 592155.7706706362
    4425888652.6931658696 594599.5988094899
    45 888050.6385960423 597039.6923181630
    4626887433.2644514524 599475.9548659419
    47 886800.5951049740 601908.2902733529
    4827886152.6555333096 604336.6025159587
    49 885489.4713160039 606760.7957281503
    5028884811.0686344344 609180.7742069301
    51 884117.4742707773 611596.4424156917
    5229883408.7156069503 614007.7049879904
    53 882684.8206235322 616414.4667313087
    5430881945.8178986572 618816.6326308140
    55 881191.7366068875 621214.1078531096
    5631880422.6065180614 623606.7977499790
    57 879638.4579961179 625994.6078621219
    5832878839.3219978977 628377.4439228838
    59 878025.2300719219 630755.2118619770
    6033877196.2143571458 633127.8178091947
    61 876352.3075816901 635495.1680981165
    6234875493.5430615495 637857.1692698068
    63 874619.9546992769 640213.7280765036
    6435873731.5769826449 642564.7514853003
    65 872828.4449832845 644910.1466818183
    6636871910.5943553005 647249.8210738712
    67 870978.0613338645 649583.6822951202
    6837870030.8827337832 651911.6382087205
    69 869069.0959480460 654233.5969109586
    7038868092.7389463482 656549.4667348809
    71 867101.8502735924 658859.1562539123
    7239866096.4690483670 661162.5742854651
    73 865076.6349614011 663459.6298945396
    7440864042.3882739983 665750.2323973137
    75 862993.7698164468 668034.2913647225
    7641861930.8209864078 670311.7166260290
    77 860853.5837472811 672582.4182723836
    7842859762.1006265484 674846.3066603731
    79 858656.4147140944 677103.2924155606
    8043857536.5696605055 679353.2864360129
    81 856402.6096753471 681596.1998958187
    8244855254.5795254178 683831.9442485952
    83 854092.5245329821 686060.4312309833
    8445852916.4905739813 688281.5728661331
    85 851726.5240762224 690495.2814671756
    8646850522.6720175454 692701.4696406862
    87 849304.9819239681 694900.0502901329
    8847848073.5018678103 697090.9366193167
    89 846828.2804657960 699274.0421357963
    9048845569.3668771342 701449.2806543043
    91 844296.8108015775 703616.5663001485
    9249843010.6624774609 705775.8135126026
    93 841710.9726797180 707926.9370482839
    9450840397.7927178767 710069.8519845183
    95 839071.1744340332 712204.4737226936
    9651837731.1702008061 714330.7179915986
    97 836377.8329192676 716448.5008507504
    9852835011.2160168567 718557.7386937076
    99 833631.3734452685 720658.3482513721
    10053832238.3596783250 722750.2465952751
    101 830832.2297098248 724833.3511408522
    10254829413.0390513709 726907.5796507027
    103 827980.8437301810 728972.8502378364
    10455826535.7002868736 731029.0813689070
    105 825077.6657732376 733076.1918674305
    10656823606.7977499790 735114.1009169893
    107 822123.1542844488 737142.7280644237
    10857820626.7939483507 739161.9932230075
    109 819117.7758154285 741171.8166756099
    11058817596.1594591341 743172.1190778422
    111 816062.0049502761 745162.8214611906
    11259814515.3728546476 747143.8452361338
    113 812956.3242306353 749115.1121952450
    11460811384.9206268094 751076.5445162802
    115 809801.2240794935 753028.0647652497
    11661808205.2971103156 754969.5958994759
    117 806597.2027237399 756901.0612706337
    11862804977.0044045792 758822.3846277777
    119 803344.7661154887 760733.4901203515
    12063801700.5522944415 762634.3023011826
    121 800044.4278521838 764524.7461294607
    12264798376.4581696729 766404.7469737006
    123 796696.7090954958 768274.2306146880
    12465795005.2469432696 770133.1232484097
    125 793302.1384890240 771981.3514889677
    12666791587.4509685646 773818.8423714754
    127 789861.2520748186 775645.5233549394
    12867788123.6099551627 777461.3223251220
    129 786374.5932087325 779266.1675973891
    13068784614.2708837141 781059.9879195397
    131 782842.7124746190 782842.7124746190
    13269781059.9879195397 784614.2708837141
    133 779266.1675973891 786374.5932087324
    13470777461.3223251220 788123.6099551627
    135 775645.5233549394 789861.2520748186
    13671773818.8423714754 791587.4509685646
    137 771981.3514889677 793302.1384890240
    13872770133.1232484097 795005.2469432696
    139 768274.2306146880 796696.7090954958
    14073766404.7469737006 798376.4581696729
    141 764524.7461294607 800044.4278521838
    14274762634.3023011826 801700.5522944415
    143 760733.4901203514 803344.7661154887
    14475758822.3846277777 804977.0044045792
    145 756901.0612706337 806597.2027237399
    14676754969.5958994759 808205.2971103156
    147 753028.0647652497 809801.2240794935
    14877751076.5445162802 811384.9206268094
    149 749115.1121952450 812956.3242306353
    15078747143.8452361338 814515.3728546476
    151 745162.8214611906 816062.0049502761
    15279743172.1190778422 817596.1594591341
    153 741171.8166756099 819117.7758154285
    15480739161.9932230075 820626.7939483506
    155 737142.7280644237 822123.1542844488
    15681735114.1009169891 823606.7977499790
    157 733076.1918674305 825077.6657732376
    15882731029.0813689070 826535.7002868736
    159 728972.8502378364 827980.8437301810
    16083726907.5796507025 829413.0390513709
    161 724833.3511408522 830832.2297098248
    16284722750.2465952751 832238.3596783250
    163 720658.3482513721 833631.3734452685
    16485718557.7386937076 835011.2160168567
    165 716448.5008507504 836377.8329192676
    16686714330.7179915986 837731.1702008061
    167 712204.4737226935 839071.1744340332
    16887710069.8519845183 840397.7927178767
    169 707926.9370482838 841710.9726797180
    17088705775.8135126026 843010.6624774609
    171 703616.5663001485 844296.8108015775
    17289701449.2806543044 845569.3668771342
    173 699274.0421357963 846828.2804657960
    17490697090.9366193167 848073.5018678103
    175 694900.0502901329 849304.9819239681
    17691692701.4696406862 850522.6720175454
    177 690495.2814671756 851726.5240762224
    17892688281.5728661331 852916.4905739813
    179 686060.4312309832 854092.5245329821
    18093683831.9442485950 855254.5795254179
    181 681596.1998958187 856402.6096753471
    18294679353.2864360129 857536.5696605055
    183 677103.2924155606 858656.4147140944
    18495674846.3066603731 859762.1006265484
    185 672582.4182723836 860853.5837472811
    18696670311.7166260290 861930.8209864078
    187 668034.2913647224 862993.7698164468
    18897665750.2323973136 864042.3882739983
    189 663459.6298945396 865076.6349614011
    19098661162.5742854651 866096.4690483670
    191 658859.1562539123 867101.8502735924
    19299656549.4667348809 868092.7389463482
    193 654233.5969109586 869069.0959480458
    194100651911.6382087205 870030.8827337832
    195 649583.6822951201 870978.0613338646
    196101647249.8210738711 871910.5943553005
    197 644910.1466818183 872828.4449832845
    198102642564.7514853003 873731.5769826449
    199 640213.7280765036 874619.9546992769
    200103637857.1692698068 875493.5430615495
    201 635495.1680981165 876352.3075816901
    202104633127.8178091947 877196.2143571458
    203 630755.2118619770 878025.2300719219
    204105628377.4439228838 878839.3219978977
    205 625994.6078621219 879638.4579961179
    206106623606.7977499790 880422.6065180614
    207 621214.1078531096 881191.7366068875
    208107618816.6326308140 881945.8178986572
    209 616414.4667313087 882684.8206235322
    210108614007.7049879904 883408.7156069503
    211 611596.4424156917 884117.4742707773
    212109609180.7742069301 884811.0686344344
    213 606760.7957281502 885489.4713160039
    214110604336.6025159588 886152.6555333096
    215 601908.2902733529 886800.5951049740
    216111599475.9548659419 887433.2644514524
    217 597039.6923181629 888050.6385960423
    218112594599.5988094899 888652.6931658696
    219 592155.7706706362 889239.4043928506
    220113589708.3043797525 889810.7491146309
    221 587257.2965586170 890366.7047754989
    222114584802.8439688218 890907.2494272774
    223 582345.0435079526 891432.3617301888
    224115579883.9922057628 891942.0209536988
    225 577419.7872203441 892436.2069773336
    226116574952.5258342898 892914.9002914755
    227 572482.3054508549 893378.0819981319
    228117570009.2235901104 893825.7338116821
    229 567533.3778850936 894257.8380595993
    230118565054.8660779534 894674.3776831472
    231 562573.7860160924 895075.3362380550
    232119560090.2356483028 895460.6978951656
    233 557604.3130209008 895830.4474410603
    234120555116.1162738552 896184.5702786604
    235 552625.7436369130 896523.0524278027
    236121550133.2934257217 896845.8805257911
    237 547638.8640379478 897153.0418279255
    238122545142.5539493926 897444.5242080034
    239 542644.4617101040 897720.3161587996
    240123540144.6859404859 897980.4067925201
    241 537643.3253274057 898224.7858412319
    242124535140.4786202973 898453.4436572690
    243 532636.2446272629 898666.3712136119
    244125530130.7222111732 898863.5601042456
    245 527624.0102857624 899045.0025444902
    246126525116.2078117253 899210.6913713086
    247 522607.4137928098 899360.6200435900
    248127520097.7272719078 899494.7826424070
    249 517587.2473271459 899613.1738712499
    250128515076.0730679738 899715.7890562357
    251 512564.3036312513 899802.6241462927
    252129510052.0381773350 899873.6757133200
    253 507539.3758861633 899928.9409523236
    254130505026.4159533410 899968.4176815264
    255 502513.2575862235 899992.1043424548
    256131500000.0000000000 900000.0000000000
    257 497486.7424137764 899992.1043424548
    258132494973.5840466589 899968.4176815264
    259 492460.6241138367 899928.9409523236
    260133489947.9618226651 899873.6757133200
    261 487435.6963687487 899802.6241462927
    262134484923.9269320262 899715.7890562357
    263 482412.7526728540 899613.1738712499
    264135479902.2727280921 899494.7826424070
    265 477392.5862071902 899360.6200435900
    266136474883.7921882746 899210.6913713086
    267 472375.9897142376 899045.0025444902
    268137469869.2777888268 898863.5601042456
    269 467363.7553727370 898666.3712136119
    270138464859.5213797027 898453.4436572690
    271 462356.6746725942 898224.7858412319
    272139459855.3140595140 897980.4067925201
    273 457355.5382898960 897720.3161587996
    274140454857.4460506073 897444.5242080034
    275 452361.1359620521 897153.0418279255
    276141449866.7065742782 896845.8805257911
    277 447374.2563630870 896523.0524278027
    278142444883.8837261448 896184.5702786604
    279 442395.6869790991 895830.4474410603
    280143439909.7643516972 895460.6978951655
    281 437426.2139839077 895075.3362380550
    282144434945.1339220466 894674.3776831472
    283 432466.6221149064 894257.8380595993
    284145429990.7764098896 893825.7338116821
    285 427517.6945491450 893378.0819981318
    286146425047.4741657102 892914.9002914755
    287 422580.2127796559 892436.2069773336
    288147420116.0077942372 891942.0209536988
    289 417654.9564920474 891432.3617301888
    290148415197.1560311782 890907.2494272774
    291 412742.7034413830 890366.7047754989
    292149410291.6956202475 889810.7491146309
    293 407844.2293293637 889239.4043928506
    294150405400.4011905101 888652.6931658696
    295 402960.3076818370 888050.6385960423
    296151400524.0451340580 887433.2644514524
    297 398091.7097266471 886800.5951049740
    298152395663.3974840412 886152.6555333096
    299 393239.2042718498 885489.4713160039
    300153390819.2257930699 884811.0686344344
    301 388403.5575843083 884117.4742707773
    302154385992.2950120096 883408.7156069505
    303 383585.5332686913 882684.8206235322
    304155381183.3673691860 881945.8178986572
    305 378785.8921468904 881191.7366068875
    306156376393.2022500210 880422.6065180614
    307 374005.3921378781 879638.4579961179
    308157371622.5560771162 878839.3219978977
    309 369244.7881380230 878025.2300719219
    310158366872.1821908053 877196.2143571458
    311 364504.8319018835 876352.3075816901
    312159362142.8307301932 875493.5430615495
    313 359786.2719234964 874619.9546992769
    314160357435.2485146997 873731.5769826449
    315 355089.8533181817 872828.4449832845
    316161352750.1789261288 871910.5943553005
    317 350416.3177048798 870978.0613338645
    318162348088.3617912795 870030.8827337832
    319 345766.4030890414 869069.0959480460
    320163343450.5332651191 868092.7389463482
    321 341140.8437460877 867101.8502735924
    322164338837.4257145349 866096.4690483670
    323 336540.3701054604 865076.6349614011
    324165334249.7676026863 864042.3882739983
    325 331965.7086352775 862993.7698164468
    326166329688.2833739709 861930.8209864078
    327 327417.5817276164 860853.5837472811
    328167325153.6933396268 859762.1006265484
    329 322896.7075844393 858656.4147140943
    330168320646.7135639872 857536.5696605055
    331 318403.8001041813 856402.6096753471
    332169316168.0557514048 855254.5795254179
    333 313939.5687690167 854092.5245329821
    334170311718.4271338669 852916.4905739813
    335 309504.7185328243 851726.5240762224
    336171307298.5303593138 850522.6720175454
    337 305099.9497098670 849304.9819239681
    338172302909.0633806834 848073.5018678103
    339 300725.9578642037 846828.2804657961
    340173298550.7193456957 845569.3668771342
    341 296383.4336998515 844296.8108015775
    342174294224.1864873974 843010.6624774609
    343 292073.0629517162 841710.9726797180
    344175289930.1480154817 840397.7927178766
    345 287795.5262773063 839071.1744340332
    346176285669.2820084015 837731.1702008061
    347 283551.4991492497 836377.8329192677
    348177281442.2613062924 835011.2160168567
    349 279341.6517486279 833631.3734452685
    350178277249.7534047248 832238.3596783250
    351 275166.6488591477 830832.2297098247
    352179273092.4203492973 829413.0390513709
    353 271027.1497621636 827980.8437301809
    354180268970.9186310929 826535.7002868736
    355 266923.8081325697 825077.6657732376
    356181264885.8990830108 823606.7977499790
    357 262857.2719355763 822123.1542844488
    358182260838.0067769924 820626.7939483506
    359 258828.1833243901 819117.7758154285
    360183256827.8809221578 817596.1594591341
    361 254837.1785388094 816062.0049502761
    362184252856.1547638662 814515.3728546475
    363 250884.8878047551 812956.3242306353
    364185248923.4554837199 811384.9206268094
    365 246971.9352347502 809801.2240794935
    366186245030.4041005241 808205.2971103156
    367 243098.9387293662 806597.2027237399
    368187241177.6153722222 804977.0044045791
    369 239266.5098796484 803344.7661154887
    370188237365.6976988174 801700.5522944415
    371 235475.2538705392 800044.4278521838
    372189233595.2530262994 798376.4581696729
    373 231725.7693853120 796696.7090954958
    374190229866.8767515902 795005.2469432696
    375 228018.6485110323 793302.1384890240
    376191226181.1576285245 791587.4509685646
    377 224354.4766450606 789861.2520748186
    378192222538.6776748779 788123.6099551627
    379 220733.8324026109 786374.5932087323
    380193218940.0120804604 784614.2708837142
    381 217157.2875253810 782842.7124746190
    382194215385.7291162859 781059.9879195397
    383 213625.4067912675 779266.1675973891
    384195211876.3900448372 777461.3223251220
    385 210138.7479251813 775645.5233549394
    386196208412.5490314353 773818.8423714754
    387 206697.8615109759 771981.3514889677
    388197204994.7530567305 770133.1232484098
    389 203303.2909045043 768274.2306146880
    390198201623.5418303271 766404.7469737006
    391 199955.5721478162 764524.7461294607
    392199198299.4477055584 762634.3023011826
    393 196655.2338845112 760733.4901203514
    394200195022.9955954208 758822.3846277777
    395 193402.7972762600 756901.0612706337
    396201191794.7028896842 754969.5958994757
    397 190198.7759205065 753028.0647652498
    398202188615.0793731906 751076.5445162803
    399 187043.6757693648 749115.1121952450
    400203185484.6271453524 747143.8452361338
    401 183937.9950497238 745162.8214611906
    402204182403.8405408658 743172.1190778421
    403 180882.2241845715 741171.8166756098
    404205179373.2060516493 739161.9932230075
    405 177876.8457155512 737142.7280644238
    406206176393.2022500210 735114.1009169893
    407 174922.3342267624 733076.1918674305
    408207173464.2997131264 731029.0813689071
    409 172019.1562698191 728972.8502378364
    410208170586.9609486290 726907.5796507025
    411 169167.7702901752 724833.3511408522
    412209167761.6403216749 722750.2465952751
    413 166368.6265547315 720658.3482513720
    414210164988.7839831433 718557.7386937076
    415 163622.1670807324 716448.5008507504
    416211162268.8297991939 714330.7179915986
    417 160928.8255659667 712204.4737226936
    418212159602.2072821232 710069.8519845182
    419 158289.0273202819 707926.9370482838
    420213156989.3375225391 705775.8135126026
    421 155703.1891984225 703616.5663001484
    422214154430.6331228659 701449.2806543044
    423 153171.7195342040 699274.0421357964
    424215151926.4981321897 697090.9366193167
    425 150695.0180760319 694900.0502901329
    426216149477.3279824546 692701.4696406861
    427 148273.4759237774 690495.2814671756
    428217147083.5094260186 688281.5728661329
    429 145907.4754670179 686060.4312309832
    430218144745.4204745822 683831.9442485952
    431 143597.3903246529 681596.1998958187
    432219142463.4303394945 679353.2864360129
    433 141343.5852859056 677103.2924155607
    434220140237.8993734516 674846.3066603731
    435 139146.4162527189 672582.4182723835
    436221138069.1790135922 670311.7166260290
    437 137006.2301835532 668034.2913647224
    438222135957.6117260017 665750.2323973136
    439 134923.3650385989 663459.6298945397
    440223133903.5309516330 661162.5742854651
    441 132898.1497264075 658859.1562539123
    442224131907.2610536519 656549.4667348809
    443 130930.9040519540 654233.5969109586
    444225129969.1172662167 651911.6382087204
    445 129021.9386661354 649583.6822951201
    446226128089.4056446994 647249.8210738711
    447 127171.5550167156 644910.1466818183
    448227126268.4230173552 642564.7514853003
    449 125380.0453007231 640213.7280765036
    450228124506.4569384504 637857.1692698068
    451 123647.6924183098 635495.1680981165
    452229122803.7856428542 633127.8178091946
    453 121974.7699280781 630755.2118619769
    454230121160.6780021022 628377.4439228837
    455 120361.5420038821 625994.6078621218
    456231119577.3934819386 623606.7977499790
    457 118808.2633931125 621214.1078531096
    458232118054.1821013428 618816.6326308140
    459 117315.1793764678 616414.4667313087
    460233116591.2843930496 614007.7049879904
    461 115882.5257292227 611596.4424156917
    462234115188.9313655656 609180.7742069301
    463 114510.5286839961 606760.7957281501
    464235113847.3444666904 604336.6025159588
    465 113199.4048950260 601908.2902733529
    466236112566.7355485476 599475.9548659419
    467 111949.3614039577 597039.6923181630
    468237111347.3068341304 594599.5988094899
    469 110760.5956071494 592155.7706706362
    470238110189.2508853691 589708.3043797524
    471 109633.2952245011 587257.2965586169
    472239109092.7505727226 584802.8439688219
    473 108567.6382698112 582345.0435079526
    474240108057.9790463013 579883.9922057628
    475 107563.7930226664 577419.7872203441
    476241107085.0997085245 574952.5258342898
    477 106621.9180018681 572482.3054508549
    478242106174.2661883179 570009.2235901103
    479 105742.1619404008 567533.3778850934
    480243105325.6223168527 565054.8660779534
    481 104924.6637619449 562573.7860160924
    482244104539.3021048344 560090.2356483028
    483 104169.5525589396 557604.3130209008
    484245103815.4297213395 555116.1162738552
    485 103476.9475721974 552625.7436369129
    486246103154.1194742089 550133.2934257216
    487 102846.9581720745 547638.8640379478
    488247102555.4757919966 545142.5539493926
    489 102279.6838412004 542644.4617101040
    490248102019.5932074799 540144.6859404860
    491 101775.2141587680 537643.3253274057
    492249101546.5563427310 535140.4786202973
    493 101333.6287863880 532636.2446272629
    494250101136.4398957544 530130.7222111730
    495 100954.9974555099 527624.0102857623
    496251100789.3086286914 525116.2078117252
    497 100639.3799564100 522607.4137928097
    498252100505.2173575930 520097.7272719078
    499 100386.8261287501 517587.2473271460
    500253100284.2109437643 515076.0730679738
    501 100197.3758537074 512564.3036312513
    502254100126.3242866800 510052.0381773349
    503 100071.0590476764 507539.3758861632
    504255100031.5823184735 505026.4159533409
    505 100007.8956575451 502513.2575862235
    506 100000.0000000000 500000.0000000001
    507 100007.8956575451 497486.7424137765
    508 100031.5823184735 494973.5840466589
    509 100071.0590476764 492460.6241138367
    510 100126.3242866800 489947.9618226649
    511 100197.3758537074 487435.6963687486
    512 100284.2109437643 484923.9269320261
    513 100386.8261287501 482412.7526728539
    514 100505.2173575930 479902.2727280922
    515 100639.3799564100 477392.5862071902
    516 100789.3086286914 474883.7921882747
    517 100954.9974555099 472375.9897142377
    518 101136.4398957544 469869.2777888269
    519 101333.6287863880 467363.7553727370
    520 101546.5563427310 464859.5213797027
    521 101775.2141587680 462356.6746725942
    522 102019.5932074799 459855.3140595139
    523 102279.6838412004 457355.5382898961
    524 102555.4757919966 454857.4460506074
    525 102846.9581720745 452361.1359620521
    526 103154.1194742089 449866.7065742783
    527 103476.9475721974 447374.2563630870
    528 103815.4297213395 444883.8837261447
    529 104169.5525589396 442395.6869790991
    530 104539.3021048344 439909.7643516971
    531 104924.6637619449 437426.2139839077
    532 105325.6223168528 434945.1339220466
    533 105742.1619404008 432466.6221149064
    534 106174.2661883179 429990.7764098896
    535 106621.9180018681 427517.6945491450
    536 107085.0997085245 425047.4741657101
    537 107563.7930226664 422580.2127796558
    538 108057.9790463013 420116.0077942371
    539 108567.6382698112 417654.9564920473
    540 109092.7505727226 415197.1560311782
    541 109633.2952245011 412742.7034413830
    542 110189.2508853691 410291.6956202475
    543 110760.5956071494 407844.2293293637
    544 111347.3068341304 405400.4011905101
    545 111949.3614039577 402960.3076818369
    546 112566.7355485476 400524.0451340580
    547 113199.4048950260 398091.7097266470
    548 113847.3444666904 395663.3974840413
    549 114510.5286839961 393239.2042718498
    550 115188.9313655656 390819.2257930699
    551 115882.5257292227 388403.5575843083
    552 116591.2843930497 385992.2950120095
    553 117315.1793764678 383585.5332686912
    554 118054.1821013428 381183.3673691860
    555 118808.2633931125 378785.8921468903
    556 119577.3934819385 376393.2022500211
    557 120361.5420038822 374005.3921378781
    558 121160.6780021022 371622.5560771162
    559 121974.7699280781 369244.7881380230
    560 122803.7856428542 366872.1821908053
    561 123647.6924183098 364504.8319018834
    562 124506.4569384504 362142.8307301931
    563 125380.0453007231 359786.2719234963
    564 126268.4230173553 357435.2485146996
    565 127171.5550167156 355089.8533181818
    566 128089.4056446994 352750.1789261288
    567 129021.9386661355 350416.3177048798
    568 129969.1172662168 348088.3617912795
    569 130930.9040519541 345766.4030890414
    570 131907.2610536519 343450.5332651190
    571 132898.1497264076 341140.8437460877
    572 133903.5309516331 338837.4257145348
    573 134923.3650385988 336540.3701054604
    574 135957.6117260017 334249.7676026864
    575 137006.2301835532 331965.7086352775
    576 138069.1790135922 329688.2833739709
    577 139146.4162527189 327417.5817276164
    578 140237.8993734516 325153.6933396268
    579 141343.5852859057 322896.7075844393
    580 142463.4303394945 320646.7135639870
    581 143597.3903246530 318403.8001041812
    582 144745.4204745822 316168.0557514049
    583 145907.4754670179 313939.5687690167
    584 147083.5094260187 311718.4271338669
    585 148273.4759237775 309504.7185328243
    586 149477.3279824546 307298.5303593138
    587 150695.0180760320 305099.9497098670
    588 151926.4981321898 302909.0633806833
    589 153171.7195342041 300725.9578642036
    590 154430.6331228659 298550.7193456957
    591 155703.1891984225 296383.4336998515
    592 156989.3375225391 294224.1864873974
    593 158289.0273202820 292073.0629517162
    594 159602.2072821233 289930.1480154817
    595 160928.8255659668 287795.5262773064
    596 162268.8297991940 285669.2820084013
    597 163622.1670807324 283551.4991492496
    598 164988.7839831433 281442.2613062924
    599 166368.6265547315 279341.6517486279
    600 167761.6403216749 277249.7534047248
    601 169167.7702901753 275166.6488591478
    602 170586.9609486291 273092.4203492974
    603 172019.1562698191 271027.1497621636
    604 173464.2997131264 268970.9186310929
    605 174922.3342267625 266923.8081325695
    606 176393.2022500211 264885.8990830106
    607 177876.8457155512 262857.2719355763
    608 179373.2060516494 260838.0067769925
    609 180882.2241845716 258828.1833243901
    610 182403.8405408659 256827.8809221578
    611 183937.9950497239 254837.1785388094
    612 185484.6271453525 252856.1547638662
    613 187043.6757693648 250884.8878047549
    614 188615.0793731907 248923.4554837197
    615 190198.7759205065 246971.9352347503
    616 191794.7028896843 245030.4041005241
    617 193402.7972762600 243098.9387293662
    618 195022.9955954208 241177.6153722223
    619 196655.2338845113 239266.5098796485
    620 198299.4477055585 237365.6976988174
    621 199955.5721478162 235475.2538705392
    622 201623.5418303272 233595.2530262993
    623 203303.2909045044 231725.7693853119
    624 204994.7530567304 229866.8767515902
    625 206697.8615109760 228018.6485110323
    626 208412.5490314354 226181.1576285245
    627 210138.7479251813 224354.4766450606
    628 211876.3900448373 222538.6776748780
    629 213625.4067912676 220733.8324026109
    630 215385.7291162860 218940.0120804603
    631 217157.2875253811 217157.2875253809
    632 218940.0120804603 215385.7291162859
    633 220733.8324026109 213625.4067912676
    634 222538.6776748780 211876.3900448372
    635 224354.4766450606 210138.7479251813
    636 226181.1576285246 208412.5490314354
    637 228018.6485110323 206697.8615109759
    638 229866.8767515903 204994.7530567304
    639 231725.7693853120 203303.2909045042
    640 233595.2530262994 201623.5418303271
    641 235475.2538705393 199955.5721478162
    642 237365.6976988174 198299.4477055585
    643 239266.5098796484 196655.2338845114
    644 241177.6153722223 195022.9955954208
    645 243098.9387293664 193402.7972762599
     256100000.0000000000 500000.0000000002
     257100031.5823184735 494973.5840466591
     258100126.3242866800 489947.9618226651
     259100284.2109437643 484923.9269320263
     260100505.2173575929 479902.2727280924
     261100789.3086286914 474883.7921882748
     262101136.4398957544 469869.2777888271
     263101546.5563427310 464859.5213797028
     264102019.5932074799 459855.3140595143
     265102555.4757919966 454857.4460506075
     266103154.1194742089 449866.7065742785
     267103815.4297213395 444883.8837261449
     268104539.3021048344 439909.7643516974
     269105325.6223168527 434945.1339220467
     270106174.2661883179 429990.7764098897
     271107085.0997085245 425047.4741657103
     272108057.9790463013 420116.0077942373
     273109092.7505727226 415197.1560311784
     274110189.2508853691 410291.6956202477
     275111347.3068341304 405400.4011905103
     276112566.7355485475 400524.0451340582
     277113847.3444666904 395663.3974840415
     278115188.9313655656 390819.2257930701
     279116591.2843930496 385992.2950120097
     280118054.1821013428 381183.3673691861
     281119577.3934819385 376393.2022500213
     282121160.6780021022 371622.5560771164
     283122803.7856428542 366872.1821908055
     284124506.4569384503 362142.8307301933
     285126268.4230173551 357435.2485147000
     286128089.4056446993 352750.1789261290
     287129969.1172662167 348088.3617912797
     288131907.2610536518 343450.5332651191
     289133903.5309516328 338837.4257145352
     290135957.6117260017 334249.7676026865
     291138069.1790135921 329688.2833739711
     292140237.8993734515 325153.6933396269
     293142463.4303394944 320646.7135639872
     294144745.4204745821 316168.0557514051
     295147083.5094260186 311718.4271338672
     296149477.3279824545 307298.5303593140
     297151926.4981321897 302909.0633806834
     298154430.6331228658 298550.7193456959
     299156989.3375225390 294224.1864873975
     300159602.2072821232 289930.1480154819
     301162268.8297991939 285669.2820084015
     302164988.7839831432 281442.2613062926
     303167761.6403216748 277249.7534047250
     304170586.9609486290 273092.4203492975
     305173464.2997131264 268970.9186310930
     306176393.2022500209 264885.8990830109
     307179373.2060516492 260838.0067769926
     308182403.8405408658 256827.8809221580
     309185484.6271453524 252856.1547638664
     310188615.0793731905 248923.4554837200
     311191794.7028896842 245030.4041005243
     312195022.9955954208 241177.6153722224
     313198299.4477055584 237365.6976988175
     314201623.5418303271 233595.2530262994
     315204994.7530567303 229866.8767515904
     316208412.5490314353 226181.1576285246
     317211876.3900448372 222538.6776748781
     318215385.7291162858 218940.0120804604
     319218940.0120804601 215385.7291162860
     320222538.6776748779 211876.3900448374
     321226181.1576285244 208412.5490314355
     322229866.8767515902 204994.7530567305
     323233595.2530262992 201623.5418303273
     324237365.6976988173 198299.4477055586
     325241177.6153722220 195022.9955954211
    646326245030.4041005242 191794.7028896842
    647 246971.9352347501 190198.7759205065
    648 248923.4554837199 188615.0793731906
    649 250884.8878047550 187043.6757693648
    650 252856.1547638664 185484.6271453524
    651 254837.1785388094 183937.9950497238
     327248923.4554837196 188615.0793731908
     328252856.1547638661 185484.6271453525
    652329256827.8809221577 182403.8405408660
    653 258828.1833243902 180882.2241845715
    654 260838.0067769926 179373.2060516492
    655 262857.2719355764 177876.8457155512
     330260838.0067769924 179373.2060516494
    656331264885.8990830107 176393.2022500210
    657 266923.8081325694 174922.3342267625
    658 268970.9186310929 173464.2997131264
    659 271027.1497621638 172019.1562698190
     332268970.9186310926 173464.2997131267
    660333273092.4203492975 170586.9609486290
    661 275166.6488591476 169167.7702901753
    662 277249.7534047249 167761.6403216749
    663 279341.6517486281 166368.6265547314
     334277249.7534047245 167761.6403216751
    664335281442.2613062924 164988.7839831432
    665 283551.4991492496 163622.1670807324
    666336285669.2820084011 162268.8297991941
    667 287795.5262773064 160928.8255659667
    668 289930.1480154819 159602.2072821232
    669 292073.0629517162 158289.0273202820
     337289930.1480154816 159602.2072821233
    670338294224.1864873973 156989.3375225391
    671 296383.4336998516 155703.1891984225
    672 298550.7193456959 154430.6331228658
    673 300725.9578642038 153171.7195342039
     339298550.7193456956 154430.6331228659
    674340302909.0633806833 151926.4981321898
    675 305099.9497098669 150695.0180760321
    676 307298.5303593139 149477.3279824546
    677 309504.7185328245 148273.4759237774
     341307298.5303593136 149477.3279824547
    678342311718.4271338671 147083.5094260186
    679 313939.5687690165 145907.4754670180
    680 316168.0557514050 144745.4204745822
    681 318403.8001041815 143597.3903246527
    682 320646.7135639872 142463.4303394944
    683 322896.7075844394 141343.5852859056
     343316168.0557514046 144745.4204745823
     344320646.7135639869 142463.4303394946
    684345325153.6933396267 140237.8993734517
    685 327417.5817276164 139146.4162527189
    686 329688.2833739711 138069.1790135921
    687 331965.7086352776 137006.2301835532
     346329688.2833739708 138069.1790135922
    688347334249.7676026862 135957.6117260018
    689 336540.3701054605 134923.3650385988
    690348338837.4257145349 133903.5309516330
    691 341140.8437460879 132898.1497264075
    692349343450.5332651191 131907.2610536519
    693 345766.4030890412 130930.9040519542
    694 348088.3617912796 129969.1172662168
    695 350416.3177048800 129021.9386661354
    696 352750.1789261289 128089.4056446994
    697 355089.8533181816 127171.5550167157
    698 357435.2485146999 126268.4230173551
    699 359786.2719234964 125380.0453007231
    700 362142.8307301933 124506.4569384503
    701 364504.8319018835 123647.6924183098
     350348088.3617912793 129969.1172662169
     351352750.1789261285 128089.4056446995
     352357435.2485146995 126268.4230173553
     353362142.8307301930 124506.4569384504
    702354366872.1821908052 122803.7856428543
    703 369244.7881380231 121974.7699280781
    704 371622.5560771164 121160.6780021022
    705 374005.3921378782 120361.5420038822
     355371622.5560771161 121160.6780021023
    706356376393.2022500210 119577.3934819386
    707 378785.8921468905 118808.2633931124
    708357381183.3673691860 118054.1821013428
    709 383585.5332686914 117315.1793764677
    710358385992.2950120096 116591.2843930496
    711 388403.5575843081 115882.5257292228
    712 390819.2257930699 115188.9313655656
    713 393239.2042718500 114510.5286839960
    714 395663.3974840413 113847.3444666904
    715 398091.7097266471 113199.4048950260
    716 400524.0451340582 112566.7355485475
    717 402960.3076818370 111949.3614039577
    718 405400.4011905103 111347.3068341304
    719 407844.2293293638 110760.5956071494
     359390819.2257930696 115188.9313655657
     360395663.3974840410 113847.3444666906
     361400524.0451340579 112566.7355485476
     362405400.4011905100 111347.3068341304
    720363410291.6956202474 110189.2508853691
    721 412742.7034413831 109633.2952245011
    722364415197.1560311781 109092.7505727226
    723 417654.9564920476 108567.6382698111
    724365420116.0077942372 108057.9790463013
    725 422580.2127796561 107563.7930226663
    726 425047.4741657102 107085.0997085245
    727 427517.6945491452 106621.9180018681
     366425047.4741657098 107085.0997085246
    728367429990.7764098896 106174.2661883179
    729 432466.6221149063 105742.1619404008
    730 434945.1339220466 105325.6223168527
    731 437426.2139839076 104924.6637619449
    732 439909.7643516973 104539.3021048344
    733 442395.6869790991 104169.5525589396
    734 444883.8837261450 103815.4297213395
    735 447374.2563630870 103476.9475721974
    736 449866.7065742785 103154.1194742089
    737 452361.1359620522 102846.9581720745
     368434945.1339220463 105325.6223168529
     369439909.7643516969 104539.3021048344
     370444883.8837261446 103815.4297213395
     371449866.7065742782 103154.1194742089
    738372454857.4460506073 102555.4757919966
    739 457355.5382898962 102279.6838412004
    740373459855.3140595140 102019.5932074799
    741 462356.6746725944 101775.2141587680
    742374464859.5213797027 101546.5563427310
    743 467363.7553727368 101333.6287863880
    744 469869.2777888270 101136.4398957544
    745 472375.9897142379 100954.9974555099
    746 474883.7921882747 100789.3086286914
    747 477392.5862071901 100639.3799564100
    748 479902.2727280923 100505.2173575930
    749 482412.7526728540 100386.8261287501
    750 484923.9269320263 100284.2109437643
    751 487435.6963687487 100197.3758537074
     375469869.2777888266 101136.4398957544
     376474883.7921882744 100789.3086286914
     377479902.2727280919 100505.2173575930
     378484923.9269320260 100284.2109437643
    752379489947.9618226648 100126.3242866800
    753 492460.6241138368 100071.0590476764
    754 494973.5840466592 100031.5823184735
    755 497486.7424137765 100007.8956575451
     380494973.5840466588 100031.5823184735
    756381499999.9999999999 100000.0000000000
    757 502513.2575862237 100007.8956575451
    758382505026.4159533410 100031.5823184735
    759 507539.3758861634 100071.0590476764
    760383510052.0381773350 100126.3242866800
    761 512564.3036312512 100197.3758537074
    762 515076.0730679739 100284.2109437643
    763 517587.2473271462 100386.8261287501
    764 520097.7272719079 100505.2173575930
    765 522607.4137928098 100639.3799564100
    766 525116.2078117254 100789.3086286914
    767 527624.0102857623 100954.9974555099
    768 530130.7222111733 101136.4398957544
    769 532636.2446272630 101333.6287863880
     384515076.0730679735 100284.2109437643
     385520097.7272719076 100505.2173575929
     386525116.2078117251 100789.3086286914
     387530130.7222111729 101136.4398957544
    770388535140.4786202972 101546.5563427310
    771 537643.3253274058 101775.2141587680
    772 540144.6859404863 102019.5932074800
    773 542644.4617101040 102279.6838412005
     389540144.6859404859 102019.5932074799
    774390545142.5539493926 102555.4757919966
    775 547638.8640379481 102846.9581720746
    776 550133.2934257217 103154.1194742089
    777 552625.7436369131 103476.9475721974
     391550133.2934257213 103154.1194742088
    778392555116.1162738553 103815.4297213395
    779 557604.3130209007 104169.5525589396
    780 560090.2356483029 104539.3021048344
    781 562573.7860160923 104924.6637619449
    782 565054.8660779536 105325.6223168528
    783 567533.3778850936 105742.1619404008
    784 570009.2235901105 106174.2661883179
    785 572482.3054508549 106621.9180018681
    786 574952.5258342901 107085.0997085245
    787 577419.7872203442 107563.7930226664
     393560090.2356483026 104539.3021048344
     394565054.8660779533 105325.6223168527
     395570009.2235901102 106174.2661883179
     396574952.5258342897 107085.0997085245
    788397579883.9922057627 108057.9790463013
    789 582345.0435079526 108567.6382698112
    790398584802.8439688218 109092.7505727226
    791 587257.2965586171 109633.2952245011
    792399589708.3043797525 110189.2508853691
    793 592155.7706706364 110760.5956071494
    794 594599.5988094899 111347.3068341304
    795 597039.6923181632 111949.3614039577
     400594599.5988094895 111347.3068341304
    796401599475.9548659420 112566.7355485476
    797 601908.2902733528 113199.4048950259
    798 604336.6025159588 113847.3444666905
    799 606760.7957281502 114510.5286839961
    800 609180.7742069303 115188.9313655657
    801 611596.4424156917 115882.5257292227
     402604336.6025159585 113847.3444666904
     403609180.7742069298 115188.9313655656
    802404614007.7049879903 116591.2843930496
    803 616414.4667313087 117315.1793764678
    804 618816.6326308142 118054.1821013429
    805 621214.1078531097 118808.2633931125
     405618816.6326308139 118054.1821013428
    806406623606.7977499790 119577.3934819385
    807 625994.6078621220 120361.5420038822
    808407628377.4439228838 121160.6780021022
    809 630755.2118619771 121974.7699280781
    810408633127.8178091947 122803.7856428542
    811 635495.1680981164 123647.6924183098
    812 637857.1692698069 124506.4569384504
    813 640213.7280765038 125380.0453007231
    814 642564.7514853004 126268.4230173553
    815 644910.1466818182 127171.5550167156
    816 647249.8210738713 128089.4056446995
    817 649583.6822951201 129021.9386661354
    818 651911.6382087206 129969.1172662168
    819 654233.5969109586 130930.9040519541
     409637857.1692698065 124506.4569384502
     410642564.7514853000 126268.4230173551
     411647249.8210738710 128089.4056446993
     412651911.6382087203 129969.1172662167
    820413656549.4667348808 131907.2610536518
    821 658859.1562539123 132898.1497264076
    822 661162.5742854653 133903.5309516331
    823 663459.6298945397 134923.3650385989
     414661162.5742854651 133903.5309516329
    824415665750.2323973136 135957.6117260017
    825 668034.2913647227 137006.2301835533
    826 670311.7166260290 138069.1790135922
    827 672582.4182723837 139146.4162527189
     416670311.7166260288 138069.1790135920
    828417674846.3066603732 140237.8993734516
    829 677103.2924155605 141343.5852859056
    830 679353.2864360129 142463.4303394945
    831 681596.1998958187 143597.3903246528
    832 683831.9442485953 144745.4204745822
    833 686060.4312309832 145907.4754670179
    834 688281.5728661332 147083.5094260188
    835 690495.2814671756 148273.4759237775
    836 692701.4696406863 149477.3279824547
    837 694900.0502901330 150695.0180760319
     418679353.2864360127 142463.4303394944
     419683831.9442485949 144745.4204745821
     420688281.5728661328 147083.5094260186
     421692701.4696406859 149477.3279824545
    838422697090.9366193166 151926.4981321897
    839 699274.0421357964 153171.7195342041
    840423701449.2806543043 154430.6331228659
    841 703616.5663001486 155703.1891984227
    842424705775.8135126026 156989.3375225391
    843 707926.9370482840 158289.0273202820
    844 710069.8519845183 159602.2072821233
    845 712204.4737226937 160928.8255659668
    846 714330.7179915986 162268.8297991940
    847 716448.5008507502 163622.1670807323
    848 718557.7386937077 164988.7839831434
    849 720658.3482513721 166368.6265547315
    850 722750.2465952754 167761.6403216750
    851 724833.3511408522 169167.7702901753
    852 726907.5796507028 170586.9609486291
    853 728972.8502378364 172019.1562698191
    854 731029.0813689072 173464.2997131266
    855 733076.1918674305 174922.3342267625
     425710069.8519845180 159602.2072821231
     426714330.7179915984 162268.8297991938
     427718557.7386937074 164988.7839831432
     428722750.2465952750 167761.6403216748
     429726907.5796507024 170586.9609486290
     430731029.0813689069 173464.2997131263
    856431735114.1009169891 176393.2022500210
    857 737142.7280644238 177876.8457155513
    858432739161.9932230075 179373.2060516494
    859 741171.8166756100 180882.2241845717
    860433743172.1190778422 182403.8405408658
    861 745162.8214611907 183937.9950497239
    862 747143.8452361338 185484.6271453525
    863 749115.1121952452 187043.6757693649
    864 751076.5445162803 188615.0793731907
    865 753028.0647652497 190198.7759205065
    866 754969.5958994760 191794.7028896844
    867 756901.0612706337 193402.7972762600
    868 758822.3846277779 195022.9955954210
    869 760733.4901203515 196655.2338845113
     434747143.8452361336 185484.6271453522
     435751076.5445162799 188615.0793731905
     436754969.5958994757 191794.7028896842
     437758822.3846277776 195022.9955954208
    870438762634.3023011824 198299.4477055584
    871 764524.7461294607 199955.5721478162
    872439766404.7469737006 201623.5418303271
    873 768274.2306146880 203303.2909045044
    874440770133.1232484097 204994.7530567304
    875 771981.3514889678 206697.8615109760
    876441773818.8423714754 208412.5490314354
    877 775645.5233549395 210138.7479251815
    878442777461.3223251221 211876.3900448373
    879 779266.1675973890 213625.4067912675
    880 781059.9879195397 215385.7291162859
    881 782842.7124746189 217157.2875253809
    882 784614.2708837142 218940.0120804604
    883 786374.5932087324 220733.8324026109
    884 788123.6099551629 222538.6776748781
    885 789861.2520748186 224354.4766450606
    886 791587.4509685647 226181.1576285247
    887 793302.1384890240 228018.6485110323
     443781059.9879195394 215385.7291162857
     444784614.2708837140 218940.0120804601
     445788123.6099551626 222538.6776748779
     446791587.4509685645 226181.1576285244
    888447795005.2469432695 229866.8767515901
    889 796696.7090954958 231725.7693853120
    890448798376.4581696729 233595.2530262993
    891 800044.4278521839 235475.2538705394
    892449801700.5522944415 237365.6976988174
    893 803344.7661154888 239266.5098796486
    894 804977.0044045792 241177.6153722223
    895 806597.2027237401 243098.9387293664
    896 808205.2971103158 245030.4041005241
    897 809801.2240794934 246971.9352347501
    898 811384.9206268094 248923.4554837199
    899 812956.3242306352 250884.8878047550
    900 814515.3728546477 252856.1547638664
    901 816062.0049502761 254837.1785388094
    902 817596.1594591342 256827.8809221580
    903 819117.7758154285 258828.1833243901
    904 820626.7939483507 260838.0067769926
    905 822123.1542844488 262857.2719355763
     450804977.0044045789 241177.6153722220
     451808205.2971103155 245030.4041005239
     452811384.9206268091 248923.4554837196
     453814515.3728546475 252856.1547638661
     454817596.1594591341 256827.8809221577
     455820626.7939483506 260838.0067769923
    906456823606.7977499790 264885.8990830106
    907 825077.6657732376 266923.8081325697
    908457826535.7002868736 268970.9186310929
    909 827980.8437301810 271027.1497621638
    910458829413.0390513709 273092.4203492974
    911 830832.2297098248 275166.6488591479
    912 832238.3596783250 277249.7534047248
    913 833631.3734452686 279341.6517486281
    914 835011.2160168567 281442.2613062924
    915 836377.8329192676 283551.4991492496
    916 837731.1702008061 285669.2820084015
    917 839071.1744340332 287795.5262773064
    918 840397.7927178768 289930.1480154819
    919 841710.9726797180 292073.0629517162
    920 843010.6624774610 294224.1864873976
    921 844296.8108015775 296383.4336998515
    922 845569.3668771342 298550.7193456959
    923 846828.2804657961 300725.9578642037
     459832238.3596783249 277249.7534047245
     460835011.2160168565 281442.2613062921
     461837731.1702008059 285669.2820084011
     462840397.7927178766 289930.1480154815
     463843010.6624774609 294224.1864873973
     464845569.3668771341 298550.7193456956
    924465848073.5018678103 302909.0633806833
    925 849304.9819239681 305099.9497098672
    926466850522.6720175454 307298.5303593139
    927 851726.5240762226 309504.7185328245
    928467852916.4905739813 311718.4271338670
    929 854092.5245329820 313939.5687690165
    930 855254.5795254179 316168.0557514050
    931 856402.6096753471 318403.8001041812
    932 857536.5696605055 320646.7135639872
    933 858656.4147140943 322896.7075844393
    934 859762.1006265485 325153.6933396270
    935 860853.5837472811 327417.5817276164
    936 861930.8209864078 329688.2833739711
    937 862993.7698164468 331965.7086352775
     468855254.5795254176 316168.0557514046
     469857536.5696605054 320646.7135639869
     470859762.1006265483 325153.6933396267
     471861930.8209864078 329688.2833739708
    938472864042.3882739982 334249.7676026862
    939 865076.6349614011 336540.3701054605
    940473866096.4690483670 338837.4257145348
    941 867101.8502735925 341140.8437460879
    942474868092.7389463481 343450.5332651190
    943 869069.0959480461 345766.4030890415
    944475870030.8827337832 348088.3617912795
    945 870978.0613338646 350416.3177048800
    946 871910.5943553005 352750.1789261289
    947 872828.4449832843 355089.8533181816
    948 873731.5769826449 357435.2485146998
    949 874619.9546992769 359786.2719234963
    950 875493.5430615497 362142.8307301933
    951 876352.3075816901 364504.8319018835
    952 877196.2143571458 366872.1821908055
    953 878025.2300719219 369244.7881380231
    954 878839.3219978977 371622.5560771164
    955 879638.4579961179 374005.3921378781
     476871910.5943553005 352750.1789261285
     477873731.5769826447 357435.2485146995
     478875493.5430615495 362142.8307301929
     479877196.2143571457 366872.1821908052
     480878839.3219978977 371622.5560771161
    956481880422.6065180614 376393.2022500209
    957 881191.7366068875 378785.8921468905
    958482881945.8178986572 381183.3673691860
    959 882684.8206235322 383585.5332686914
    960483883408.7156069503 385992.2950120096
    961 884117.4742707773 388403.5575843085
    962 884811.0686344344 390819.2257930699
    963 885489.4713160039 393239.2042718500
    964 886152.6555333096 395663.3974840413
    965 886800.5951049740 398091.7097266471
    966 887433.2644514525 400524.0451340582
    967 888050.6385960423 402960.3076818370
    968 888652.6931658696 405400.4011905103
    969 889239.4043928506 407844.2293293638
    970 889810.7491146310 410291.6956202477
    971 890366.7047754989 412742.7034413830
     484884811.0686344344 390819.2257930696
     485886152.6555333094 395663.3974840409
     486887433.2644514524 400524.0451340579
     487888652.6931658696 405400.4011905100
     488889810.7491146307 410291.6956202474
    972489890907.2494272774 415197.1560311780
    973 891432.3617301888 417654.9564920475
    974490891942.0209536988 420116.0077942371
    975 892436.2069773336 422580.2127796561
    976491892914.9002914755 425047.4741657102
    977 893378.0819981319 427517.6945491452
    978492893825.7338116821 429990.7764098896
    979 894257.8380595993 432466.6221149067
    980 894674.3776831473 434945.1339220466
    981 895075.3362380550 437426.2139839075
    982 895460.6978951656 439909.7643516973
    983 895830.4474410603 442395.6869790991
    984 896184.5702786605 444883.8837261449
    985 896523.0524278027 447374.2563630870
    986 896845.8805257911 449866.7065742785
    987 897153.0418279255 452361.1359620522
    988 897444.5242080034 454857.4460506075
    989 897720.3161587996 457355.5382898961
     493894674.3776831471 434945.1339220463
     494895460.6978951655 439909.7643516969
     495896184.5702786604 444883.8837261446
     496896845.8805257911 449866.7065742781
     497897444.5242080034 454857.4460506072
    990498897980.4067925201 459855.3140595140
    991 898224.7858412319 462356.6746725944
    992499898453.4436572690 464859.5213797027
    993 898666.3712136119 467363.7553727371
    994500898863.5601042456 469869.2777888269
    995 899045.0025444902 472375.9897142379
    996 899210.6913713086 474883.7921882747
    997 899360.6200435900 477392.5862071901
    998 899494.7826424070 479902.2727280923
    999 899613.1738712499 482412.7526728540
    1000 899715.7890562357 484923.9269320263
    1001 899802.6241462927 487435.6963687487
    1002 899873.6757133200 489947.9618226652
    1003 899928.9409523236 492460.6241138367
    1004 899968.4176815264 494973.5840466592
    1005 899992.1043424548 497486.7424137765
     501899210.6913713086 474883.7921882743
     502899494.7826424070 479902.2727280919
     503899715.7890562357 484923.9269320259
     504899873.6757133200 489947.9618226648
     505899968.4176815264 494973.5840466588
    1006506900000.0000000000 500000.0000000000
    1007507
Note: See TracChangeset for help on using the changeset viewer.