Changeset 15450


Ignore:
Timestamp:
07/06/13 09:52:45 (12 years ago)
Author:
Mathieu Morlighem
Message:

CHG: iomodel->numberofelements now always available

Location:
issm/trunk-jpl/src/c
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/classes/Elements/ElementHook.cpp

    r15428 r15450  
    4949
    5050        /*retrieve material_id: */
    51         iomodel->Constant(&matpar_id,MeshNumberofelementsEnum); matpar_id++;
     51        matpar_id = iomodel->numberofelements+1;
    5252
    5353        /*retrieve material_id*/
  • issm/trunk-jpl/src/c/classes/Loads/Icefront.cpp

    r15423 r15450  
    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;
    53 
    54         /*find parameters: */
    55         iomodel->Constant(&numberofelements,MeshNumberofelementsEnum);
     50        int *icefront_node_ids   = NULL;
     51        int *icefront_vertex_ids = NULL;
    5652
    5753        /*First, retrieve element index and element type: */
     
    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));
     
    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));
     
    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]);
     
    120115        this->element    = NULL;
    121116        this->matpar     = NULL;
    122 }
    123 
     117
     118        /*Clean up*/
     119        xDelete<int>(icefront_node_ids);
     120        xDelete<int>(icefront_vertex_ids);
     121}
    124122/*}}}*/
    125123/*FUNCTION Icefront::Icefront(const char* element_type_in,Inputs* inputs_in,Matpar* matpar_in, int icefront_type, int in_analysis_type) {{{*/
  • issm/trunk-jpl/src/c/classes/Loads/Riftfront.cpp

    r15104 r15450  
    4444        IssmDouble riftfront_fractionincrement;
    4545        bool   riftfront_shelf;
    46         int    numberofelements;
    4746        int    penalty_lock;
    4847
     
    5251
    5352        /*Fetch parameters: */
    54         iomodel->Constant(&numberofelements,MeshNumberofelementsEnum);
    5553        iomodel->Constant(&penalty_lock,DiagnosticRiftPenaltyLockEnum);
    5654
     
    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: */
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/Control/UpdateElementsAndMaterialsControl.cpp

    r15428 r15450  
    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);
     
    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);
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHutter/UpdateElementsDiagnosticHutter.cpp

    r15428 r15450  
    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
     
    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);
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/Enthalpy/UpdateElementsEnthalpy.cpp

    r15428 r15450  
    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;
     
    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);
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/Prognostic/UpdateElementsPrognostic.cpp

    r15428 r15450  
    1111void    UpdateElementsPrognostic(Elements* elements, IoModel* iomodel,int analysis_counter,int analysis_type){
    1212
    13         int    numberofelements;
    1413        int    stabilization;
    1514        bool   dakota_analysis;
     
    1918
    2019        /*Fetch data needed: */
    21         iomodel->Constant(&numberofelements,MeshNumberofelementsEnum);
    2220        iomodel->Constant(&stabilization,PrognosticStabilizationEnum);
    2321        iomodel->Constant(&dakota_analysis,QmuIsdakotaEnum);
     
    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);
Note: See TracChangeset for help on using the changeset viewer.