Changeset 21717


Ignore:
Timestamp:
05/16/17 16:45:51 (8 years ago)
Author:
Mathieu Morlighem
Message:

CHG: added P1xP3 for spc transient

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/modules/IoModelToConstraintsx/IoModelToConstraintsx.cpp

    r21587 r21717  
    504504                                }
    505505                                break;
     506                        case P1xP3Enum:
     507                                for(i=0;i<iomodel->numberofvertices;i++){
     508                                        if((iomodel->my_vertices[i])){
     509
     510                                                /*figure out times and values: */
     511                                                values=xNew<IssmDouble>(N);
     512                                                spcpresent=false;
     513                                                for(j=0;j<N;j++){
     514                                                        values[j]=spcdata[i*N+j];
     515                                                        if(!xIsNan<IssmDouble>(values[j]))spcpresent=true; //NaN means no spc by default
     516                                                }
     517
     518                                                if(spcpresent){
     519                                                        constraints->AddObject(new SpcTransient(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,dof,N,times,values,analysis_type));
     520                                                        count++;
     521                                                }
     522                                                xDelete<IssmDouble>(values);
     523                                        }
     524                                }
     525                                for(i=0;i<iomodel->numberofedges;i++){
     526                                        if(iomodel->edges[i*3+2]==2){
     527                                                if(my_edges[i]){
     528                                                        v1 = iomodel->edges[3*i+0]-1;
     529                                                        v2 = iomodel->edges[3*i+1]-1;
     530                                                        values=xNew<IssmDouble>(N);
     531                                                        spcpresent=false;
     532                                                        for(j=0;j<N;j++){
     533                                                                values[j]=2./3.*spcdata[v1*N+j]+1./3.*spcdata[v2*N+j];
     534                                                                if(!xIsNan<IssmDouble>(values[j])) spcpresent=true; //NaN means no spc by default
     535                                                        }
     536                                                        if(spcpresent){
     537                                                                constraints->AddObject(new SpcTransient(iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+2*i+1,dof,
     538                                                                                                N,times,values,analysis_type));
     539                                                                count++;
     540                                                        }
     541                                                        spcpresent=false;
     542                                                        for(j=0;j<N;j++){
     543                                                                values[j]=1./3.*spcdata[v1*N+j]+2./3.*spcdata[v2*N+j];
     544                                                                  if(!xIsNan<IssmDouble>(values[j])) spcpresent=true; //NaN means no spc by default
     545                                                        }
     546                                                        if(spcpresent){
     547                                                                constraints->AddObject(new SpcTransient(iomodel->constraintcounter+count+1,iomodel->nodecounter+iomodel->numberofvertices+2*i+2,dof,
     548                                                                                                N,times,values,analysis_type));
     549                                                                count++;
     550                                                        }
     551                                                        xDelete<IssmDouble>(values);
     552                                                }
     553                                        }
     554                                }
     555                                break;
    506556                        case P2xP1Enum:
    507557                                for(i=0;i<iomodel->numberofvertices;i++){
Note: See TracChangeset for help on using the changeset viewer.