source: issm/oecreview/Archive/15392-16133/ISSM-15449-15450.diff

Last change on this file was 16134, checked in by Mathieu Morlighem, 12 years ago

Added Archive/15392-16133

File size: 9.7 KB
  • ../trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHutter/UpdateElementsDiagnosticHutter.cpp

     
    1010
    1111void    UpdateElementsDiagnosticHutter(Elements* elements, IoModel* iomodel,int analysis_counter,int analysis_type){
    1212
    13         int    numberofelements;
     13        /*Fetch data needed: */
    1414        bool   ishutter;
    15 
    16         /*Fetch data needed: */
    17         iomodel->Constant(&numberofelements,MeshNumberofelementsEnum);
    1815        iomodel->Constant(&ishutter,FlowequationIshutterEnum);
    1916
    2017        /*Now, is the flag hutter on? otherwise, do nothing: */
     
    2421
    2522        /*Update elements: */
    2623        int counter=0;
    27         for(int i=0;i<numberofelements;i++){
     24        for(int i=0;i<iomodel->numberofelements;i++){
    2825                if(iomodel->my_elements[i]){
    2926                        Element* element=(Element*)elements->GetObjectByOffset(counter);
    3027                        element->Update(i,iomodel,analysis_counter,analysis_type); //we need i to index into elements.
  • ../trunk-jpl/src/c/modules/ModelProcessorx/Enthalpy/UpdateElementsEnthalpy.cpp

     
    1010
    1111void    UpdateElementsEnthalpy(Elements* elements, IoModel* iomodel,int analysis_counter,int analysis_type){
    1212
    13         int    numberofelements;
    14 
    15         /*Fetch parameters: */
    16         iomodel->Constant(&numberofelements,MeshNumberofelementsEnum);
    17 
    1813        /*Now, is the model 3d? otherwise, do nothing: */
    1914        if(iomodel->dim==2)return;
    2015
     
    2318
    2419        /*Update elements: */
    2520        int counter=0;
    26         for(int i=0;i<numberofelements;i++){
     21        for(int i=0;i<iomodel->numberofelements;i++){
    2722                if(iomodel->my_elements[i]){
    2823                        Element* element=(Element*)elements->GetObjectByOffset(counter);
    2924                        element->Update(i,iomodel,analysis_counter,analysis_type); //we need i to index into elements.
  • ../trunk-jpl/src/c/modules/ModelProcessorx/Prognostic/UpdateElementsPrognostic.cpp

     
    1010
    1111void    UpdateElementsPrognostic(Elements* elements, IoModel* iomodel,int analysis_counter,int analysis_type){
    1212
    13         int    numberofelements;
    1413        int    stabilization;
    1514        bool   dakota_analysis;
    1615        bool   issmbgradients;
     
    1817        bool   isdelta18o;
    1918
    2019        /*Fetch data needed: */
    21         iomodel->Constant(&numberofelements,MeshNumberofelementsEnum);
    2220        iomodel->Constant(&stabilization,PrognosticStabilizationEnum);
    2321        iomodel->Constant(&dakota_analysis,QmuIsdakotaEnum);
    2422        iomodel->Constant(&ispdd,SurfaceforcingsIspddEnum);
     
    2725
    2826        /*Update elements: */
    2927        int counter=0;
    30         for(int i=0;i<numberofelements;i++){
     28        for(int i=0;i<iomodel->numberofelements;i++){
    3129                if(iomodel->my_elements[i]){
    3230                        Element* element=(Element*)elements->GetObjectByOffset(counter);
    3331                        element->Update(i,iomodel,analysis_counter,analysis_type); //we need i to index into elements.
  • ../trunk-jpl/src/c/modules/ModelProcessorx/Control/UpdateElementsAndMaterialsControl.cpp

     
    1515        int       counter;
    1616        Element  *element = NULL;
    1717        Material *material = NULL;
    18         int    numberofelements;
    1918        int    num_control_type;
    2019        bool   control_analysis;
    2120
    2221        /*Fetch parameters: */
    23         iomodel->Constant(&numberofelements,MeshNumberofelementsEnum);
    2422        iomodel->Constant(&control_analysis,InversionIscontrolEnum);
    2523        if(control_analysis) iomodel->Constant(&num_control_type,InversionNumControlParametersEnum);
    2624
     
    4846
    4947        /*Update elements and materials: */
    5048        counter=0;
    51         for (i=0;i<numberofelements;i++){
     49        for (i=0;i<iomodel->numberofelements;i++){
    5250                if(iomodel->my_elements[i]){
    5351                        element=(Element*)elements->GetObjectByOffset(counter);
    5452                        element->InputUpdateFromIoModel(i,iomodel); //we need i to index into elements.
  • ../trunk-jpl/src/c/classes/Loads/Icefront.cpp

     
    4242        int element;
    4343        int numnodes;
    4444        int numvertices;
    45         int numberofelements;
    4645
    4746        /*icefront constructor data: */
    4847        int  icefront_eid;
    4948        int  icefront_mparid;
    50         int  icefront_node_ids[NUMVERTICESQUA]; //initialize with largest size
    51         int  icefront_vertex_ids[NUMVERTICESQUA]; //initialize with largest size
    5249        int  icefront_fill;
     50        int *icefront_node_ids   = NULL;
     51        int *icefront_vertex_ids = NULL;
    5352
    54         /*find parameters: */
    55         iomodel->Constant(&numberofelements,MeshNumberofelementsEnum);
    56 
    5753        /*First, retrieve element index and element type: */
    5854        if(iomodel->dim==2){
    5955                segment_width=4;
     
    6258                segment_width=6;
    6359        }
    6460        _assert_(iomodel->Data(DiagnosticIcefrontEnum));
    65         element=reCast<int,IssmDouble>(*(iomodel->Data(DiagnosticIcefrontEnum)+segment_width*i+segment_width-2)-1); //element is in the penultimate column (node1 node2 ... elem fill)
     61        element=reCast<int,IssmDouble>(iomodel->Data(DiagnosticIcefrontEnum)[segment_width*i+segment_width-2]-1);
    6662
    6763        /*Build ids for hook constructors: */
    68         icefront_eid=reCast<int,IssmDouble>( *(iomodel->Data(DiagnosticIcefrontEnum)+segment_width*i+segment_width-2)); //matlab indexing
    69         icefront_mparid=numberofelements+1; //matlab indexing
     64        icefront_eid    = reCast<int,IssmDouble>(iomodel->Data(DiagnosticIcefrontEnum)[segment_width*i+segment_width-2]); //matlab indexing
     65        icefront_mparid = iomodel->numberofelements+1;
    7066
    7167        if (in_icefront_type==MacAyeal2dIceFrontEnum || in_icefront_type==MacAyeal3dIceFrontEnum){
     68                numnodes    = 2;
     69                numvertices = 2;
     70                icefront_node_ids   = xNew<int>(numnodes);
     71                icefront_vertex_ids = xNew<int>(numvertices);
    7272                icefront_node_ids[0]=iomodel->nodecounter+reCast<int>(*(iomodel->Data(DiagnosticIcefrontEnum)+segment_width*i+0));
    7373                icefront_node_ids[1]=iomodel->nodecounter+reCast<int>(*(iomodel->Data(DiagnosticIcefrontEnum)+segment_width*i+1));
    7474                icefront_vertex_ids[0]=reCast<int>(*(iomodel->Data(DiagnosticIcefrontEnum)+segment_width*i+0));
    7575                icefront_vertex_ids[1]=reCast<int>(*(iomodel->Data(DiagnosticIcefrontEnum)+segment_width*i+1));
    7676        }
    7777        else if (in_icefront_type==PattynIceFrontEnum || in_icefront_type==StokesIceFrontEnum){
     78                numnodes    = 4;
     79                numvertices = 4;
     80                icefront_node_ids   = xNew<int>(numnodes);
     81                icefront_vertex_ids = xNew<int>(numvertices);
    7882                icefront_node_ids[0]=iomodel->nodecounter+reCast<int>(*(iomodel->Data(DiagnosticIcefrontEnum)+segment_width*i+0));
    7983                icefront_node_ids[1]=iomodel->nodecounter+reCast<int>(*(iomodel->Data(DiagnosticIcefrontEnum)+segment_width*i+1));
    8084                icefront_node_ids[2]=iomodel->nodecounter+reCast<int>(*(iomodel->Data(DiagnosticIcefrontEnum)+segment_width*i+2));
     
    8690        }
    8791        else _error_("in_icefront_type " << EnumToStringx(in_icefront_type) << " not supported yet!");
    8892
    89         if (in_icefront_type==PattynIceFrontEnum || in_icefront_type==StokesIceFrontEnum){
    90                 numnodes=4;
    91                 numvertices=4;
    92         }
    93         else{
    94                 numnodes=2;
    95                 numvertices=2;
    96         }
    97 
    9893        /*Fill*/
    9994        icefront_fill=reCast<int>(iomodel->Data(DiagnosticIcefrontEnum)[segment_width*i+segment_width-1]);
    10095
     
    119114        this->vertices   = NULL;
    120115        this->element    = NULL;
    121116        this->matpar     = NULL;
     117
     118        /*Clean up*/
     119        xDelete<int>(icefront_node_ids);
     120        xDelete<int>(icefront_vertex_ids);
    122121}
    123 
    124122/*}}}*/
    125123/*FUNCTION Icefront::Icefront(const char* element_type_in,Inputs* inputs_in,Matpar* matpar_in, int icefront_type, int in_analysis_type) {{{*/
    126124Icefront::Icefront(const char* element_type_in,Inputs* inputs_in,Matpar* matpar_in,int in_icefront_type,  int in_analysis_type){
  • ../trunk-jpl/src/c/classes/Loads/Riftfront.cpp

     
    4343        IssmDouble riftfront_friction;
    4444        IssmDouble riftfront_fractionincrement;
    4545        bool   riftfront_shelf;
    46         int    numberofelements;
    4746        int    penalty_lock;
    4847
    4948        /*intermediary: */
     
    5150        int node1  ,node2;
    5251
    5352        /*Fetch parameters: */
    54         iomodel->Constant(&numberofelements,MeshNumberofelementsEnum);
    5553        iomodel->Constant(&penalty_lock,DiagnosticRiftPenaltyLockEnum);
    5654
    5755        /*Ok, retrieve all the data needed to add a penalty between the two nodes: */
     
    7068        riftfront_node_ids[1]=iomodel->nodecounter+node2;
    7169        riftfront_elem_ids[0]=el1;
    7270        riftfront_elem_ids[1]=el2;
    73         riftfront_matpar_id=numberofelements+1; //matlab indexing
     71        riftfront_matpar_id=iomodel->numberofelements+1; //matlab indexing
    7472
    7573        /*Hooks: */
    7674        this->hnodes=new Hook(riftfront_node_ids,2);
  • ../trunk-jpl/src/c/classes/Elements/ElementHook.cpp

     
    4848        int material_id;
    4949
    5050        /*retrieve material_id: */
    51         iomodel->Constant(&matpar_id,MeshNumberofelementsEnum); matpar_id++;
     51        matpar_id = iomodel->numberofelements+1;
    5252
    5353        /*retrieve material_id*/
    5454        material_id = element_id;
Note: See TracBrowser for help on using the repository browser.