Changeset 4260


Ignore:
Timestamp:
06/28/10 11:05:36 (15 years ago)
Author:
Mathieu Morlighem
Message:

fixed default input bug in Tria and Penta

Location:
issm/trunk/src/c/objects/Elements
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/objects/Elements/Penta.cpp

    r4253 r4260  
    16791679                this->inputs->AddInput(new PentaVertexInput(WeightsEnum,nodeinputs));
    16801680        }
    1681 
    1682         /*default vx,vy and vz: either observation or 0 */
    1683         if (!iomodel->vx){
    1684                 if (iomodel->vx_obs) for(i=0;i<6;i++)nodeinputs[i]=iomodel->vx_obs[penta_vertex_ids[i]-1]/iomodel->yts;
    1685                 else                 for(i=0;i<6;i++)nodeinputs[i]=0;
    1686                 this->inputs->AddInput(new PentaVertexInput(VxEnum,nodeinputs));
    1687                 this->inputs->AddInput(new PentaVertexInput(VxOldEnum,nodeinputs));
    1688         }
    1689         if (!iomodel->vy){
    1690                 if (iomodel->vy_obs) for(i=0;i<6;i++)nodeinputs[i]=iomodel->vy_obs[penta_vertex_ids[i]-1]/iomodel->yts;
    1691                 else                 for(i=0;i<6;i++)nodeinputs[i]=0;
    1692                 this->inputs->AddInput(new PentaVertexInput(VyEnum,nodeinputs));
    1693                 this->inputs->AddInput(new PentaVertexInput(VyOldEnum,nodeinputs));
    1694         }
    1695         if (!iomodel->vz){
    1696                 if (iomodel->vz_obs) for(i=0;i<6;i++)nodeinputs[i]=iomodel->vz_obs[penta_vertex_ids[i]-1]/iomodel->yts;
    1697                 else                 for(i=0;i<6;i++)nodeinputs[i]=0;
    1698                 this->inputs->AddInput(new PentaVertexInput(VzEnum,nodeinputs));
    1699                 this->inputs->AddInput(new PentaVertexInput(VzOldEnum,nodeinputs));
    1700         }
    17011681        if (iomodel->elementoniceshelf) this->inputs->AddInput(new BoolInput(ElementOnIceShelfEnum,(IssmBool)iomodel->elementoniceshelf[index]));
    17021682        if (iomodel->elementonbed) this->inputs->AddInput(new BoolInput(ElementOnBedEnum,(IssmBool)iomodel->elementonbed[index]));
    17031683        if (iomodel->elementonwater) this->inputs->AddInput(new BoolInput(ElementOnWaterEnum,(IssmBool)iomodel->elementonwater[index]));
    17041684        if (iomodel->elementonsurface) this->inputs->AddInput(new BoolInput(ElementOnSurfaceEnum,(IssmBool)iomodel->elementonsurface[index]));
     1685
     1686        /*Defaults if not provided in iomodel*/
     1687        switch(analysis_type){
     1688
     1689                case DiagnosticHorizAnalysisEnum: case DiagnosticVertAnalysisEnum: case DiagnosticStokesAnalysisEnum:
     1690
     1691                        /*default vx,vy and vz: either observation or 0 */
     1692                        if(!iomodel->vx){
     1693                                if (iomodel->vx_obs) for(i=0;i<6;i++)nodeinputs[i]=iomodel->vx_obs[penta_vertex_ids[i]-1]/iomodel->yts;
     1694                                else                 for(i=0;i<6;i++)nodeinputs[i]=0;
     1695                                this->inputs->AddInput(new PentaVertexInput(VxEnum,nodeinputs));
     1696                                this->inputs->AddInput(new PentaVertexInput(VxOldEnum,nodeinputs));
     1697                        }
     1698                        if(!iomodel->vy){
     1699                                if (iomodel->vy_obs) for(i=0;i<6;i++)nodeinputs[i]=iomodel->vy_obs[penta_vertex_ids[i]-1]/iomodel->yts;
     1700                                else                 for(i=0;i<6;i++)nodeinputs[i]=0;
     1701                                this->inputs->AddInput(new PentaVertexInput(VyEnum,nodeinputs));
     1702                                this->inputs->AddInput(new PentaVertexInput(VyOldEnum,nodeinputs));
     1703                        }
     1704                        if(!iomodel->vz){
     1705                                if (iomodel->vz_obs) for(i=0;i<6;i++)nodeinputs[i]=iomodel->vz_obs[penta_vertex_ids[i]-1]/iomodel->yts;
     1706                                else                 for(i=0;i<6;i++)nodeinputs[i]=0;
     1707                                this->inputs->AddInput(new PentaVertexInput(VzEnum,nodeinputs));
     1708                                this->inputs->AddInput(new PentaVertexInput(VzOldEnum,nodeinputs));
     1709                        }
     1710                        break;
     1711
     1712                default:
     1713                        /*No update for other solution types*/
     1714                        break;
     1715
     1716        }
    17051717
    17061718        //elements of type 3 are macayeal type penta. we collapse the formulation on their base.
  • issm/trunk/src/c/objects/Elements/Tria.cpp

    r4253 r4260  
    181181                this->inputs->AddInput(new TriaVertexInput(WeightsEnum,nodeinputs));
    182182        }
    183 
    184         /*default vx,vy and vz: either observation or 0 */
    185         if(!iomodel->vx){
    186                 if (iomodel->vx_obs) for(i=0;i<3;i++)nodeinputs[i]=iomodel->vx_obs[tria_vertex_ids[i]-1]/iomodel->yts;
    187                 else                 for(i=0;i<3;i++)nodeinputs[i]=0;
    188                 this->inputs->AddInput(new TriaVertexInput(VxEnum,nodeinputs));
    189                 this->inputs->AddInput(new TriaVertexInput(VxOldEnum,nodeinputs));
    190         }
    191         if(!iomodel->vy){
    192                 if (iomodel->vy_obs) for(i=0;i<3;i++)nodeinputs[i]=iomodel->vy_obs[tria_vertex_ids[i]-1]/iomodel->yts;
    193                 else                 for(i=0;i<3;i++)nodeinputs[i]=0;
    194                 this->inputs->AddInput(new TriaVertexInput(VyEnum,nodeinputs));
    195                 this->inputs->AddInput(new TriaVertexInput(VyOldEnum,nodeinputs));
    196         }
    197         if(!iomodel->vz){
    198                 if (iomodel->vz_obs) for(i=0;i<3;i++)nodeinputs[i]=iomodel->vz_obs[tria_vertex_ids[i]-1]/iomodel->yts;
    199                 else                 for(i=0;i<3;i++)nodeinputs[i]=0;
    200                 this->inputs->AddInput(new TriaVertexInput(VzEnum,nodeinputs));
    201                 this->inputs->AddInput(new TriaVertexInput(VzOldEnum,nodeinputs));
    202         }
    203 
    204183        if (iomodel->elementoniceshelf) this->inputs->AddInput(new BoolInput(ElementOnIceShelfEnum,(IssmBool)iomodel->elementoniceshelf[index]));
    205184        if (iomodel->elementonbed) this->inputs->AddInput(new BoolInput(ElementOnBedEnum,(IssmBool)iomodel->elementonbed[index]));
    206185        if (iomodel->elementonwater) this->inputs->AddInput(new BoolInput(ElementOnWaterEnum,(IssmBool)iomodel->elementonwater[index]));
    207186        if (iomodel->elementonsurface) this->inputs->AddInput(new BoolInput(ElementOnSurfaceEnum,(IssmBool)iomodel->elementonsurface[index]));
     187
     188        /*Defaults if not provided in iomodel*/
     189        switch(analysis_type){
     190
     191                case DiagnosticHorizAnalysisEnum: case DiagnosticVertAnalysisEnum: case DiagnosticStokesAnalysisEnum:
     192
     193                        /*default vx,vy and vz: either observation or 0 */
     194                        if(!iomodel->vx){
     195                                if (iomodel->vx_obs) for(i=0;i<3;i++)nodeinputs[i]=iomodel->vx_obs[tria_vertex_ids[i]-1]/iomodel->yts;
     196                                else                 for(i=0;i<3;i++)nodeinputs[i]=0;
     197                                this->inputs->AddInput(new TriaVertexInput(VxEnum,nodeinputs));
     198                                this->inputs->AddInput(new TriaVertexInput(VxOldEnum,nodeinputs));
     199                        }
     200                        if(!iomodel->vy){
     201                                if (iomodel->vy_obs) for(i=0;i<3;i++)nodeinputs[i]=iomodel->vy_obs[tria_vertex_ids[i]-1]/iomodel->yts;
     202                                else                 for(i=0;i<3;i++)nodeinputs[i]=0;
     203                                this->inputs->AddInput(new TriaVertexInput(VyEnum,nodeinputs));
     204                                this->inputs->AddInput(new TriaVertexInput(VyOldEnum,nodeinputs));
     205                        }
     206                        if(!iomodel->vz){
     207                                if (iomodel->vz_obs) for(i=0;i<3;i++)nodeinputs[i]=iomodel->vz_obs[tria_vertex_ids[i]-1]/iomodel->yts;
     208                                else                 for(i=0;i<3;i++)nodeinputs[i]=0;
     209                                this->inputs->AddInput(new TriaVertexInput(VzEnum,nodeinputs));
     210                                this->inputs->AddInput(new TriaVertexInput(VzOldEnum,nodeinputs));
     211                        }
     212                        break;
     213
     214                default:
     215                        /*No update for other solution types*/
     216                        break;
     217
     218        }
    208219
    209220        //this->parameters: we still can't point to it, it may not even exist. Configure will handle this.
Note: See TracChangeset for help on using the changeset viewer.