Changeset 14529


Ignore:
Timestamp:
04/10/13 15:52:49 (12 years ago)
Author:
seroussi
Message:

NEW: added variable forcing load for stokes

Location:
issm/trunk-jpl/src
Files:
3 added
16 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/EnumDefinitions/EnumDefinitions.h

    r14364 r14529  
    6363        DiagnosticVertexPairingEnum,
    6464        DiagnosticViscosityOvershootEnum,
     65        LoadingforceXEnum,
     66        LoadingforceYEnum,
     67        LoadingforceZEnum,
    6568        FlowequationBordermacayealEnum,
    6669        FlowequationBorderpattynEnum,
  • issm/trunk-jpl/src/c/classes/objects/Elements/Penta.cpp

    r14435 r14529  
    76657665        IssmDouble Jdet,viscosity;
    76667666        IssmDouble gravity,rho_ice,stokesreconditioning;
     7667        IssmDouble forcex,forcey,forcez;
    76677668        IssmDouble xyz_list[NUMVERTICES][3];
    76687669        IssmDouble epsilon[6]; /* epsilon=[exx,eyy,ezz,exy,exz,eyz];*/
     
    76907691        Input* vy_input=inputs->GetInput(VyEnum);   _assert_(vy_input);
    76917692        Input* vz_input=inputs->GetInput(VzEnum);   _assert_(vz_input);
     7693        Input* loadingforcex_input=inputs->GetInput(LoadingforceXEnum);  _assert_(loadingforcex_input);
     7694        Input* loadingforcey_input=inputs->GetInput(LoadingforceYEnum);  _assert_(loadingforcey_input);
     7695        Input* loadingforcez_input=inputs->GetInput(LoadingforceZEnum);  _assert_(loadingforcez_input);
    76927696
    76937697        /* Start  looping on the number of gaussian points: */
     
    77057709                material->GetViscosity3dStokes(&viscosity,&epsilon[0]);
    77067710
     7711                loadingforcex_input->GetInputValue(&forcex, gauss);
     7712                loadingforcey_input->GetInputValue(&forcey, gauss);
     7713                loadingforcez_input->GetInputValue(&forcez, gauss);
     7714
    77077715                for(i=0;i<NUMVERTICES+1;i++){
    77087716                        Pe_gaussian[i*NDOF4+2]+=-rho_ice*gravity*Jdet*gauss->weight*l1l7[i];
     7717                        Pe_gaussian[i*NDOF4+0]+=forcex*Jdet*gauss->weight*l1l7[i];
     7718                        Pe_gaussian[i*NDOF4+1]+=forcey*Jdet*gauss->weight*l1l7[i];
     7719                        Pe_gaussian[i*NDOF4+2]+=forcez*Jdet*gauss->weight*l1l7[i];
    77097720                }
    77107721
  • issm/trunk-jpl/src/c/modules/EnumToStringx/EnumToStringx.cpp

    r14364 r14529  
    6868                case DiagnosticVertexPairingEnum : return "DiagnosticVertexPairing";
    6969                case DiagnosticViscosityOvershootEnum : return "DiagnosticViscosityOvershoot";
     70                case LoadingforceXEnum : return "LoadingforceX";
     71                case LoadingforceYEnum : return "LoadingforceY";
     72                case LoadingforceZEnum : return "LoadingforceZ";
    7073                case FlowequationBordermacayealEnum : return "FlowequationBordermacayeal";
    7174                case FlowequationBorderpattynEnum : return "FlowequationBorderpattyn";
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/UpdateElementsDiagnosticHoriz.cpp

    r14191 r14529  
    6969        iomodel->FetchDataToInput(elements,VxEnum);
    7070        iomodel->FetchDataToInput(elements,VyEnum);
     71        iomodel->FetchDataToInput(elements,LoadingforceXEnum);
     72        iomodel->FetchDataToInput(elements,LoadingforceYEnum);
    7173        if(materials_type==MatdamageiceEnum){
    7274                iomodel->FetchDataToInput(elements,MaterialsRheologyZEnum);
     
    7981                iomodel->FetchDataToInput(elements,BasalforcingsMeltingRateEnum);
    8082                iomodel->FetchDataToInput(elements,FlowequationBorderstokesEnum);
     83                iomodel->FetchDataToInput(elements,LoadingforceZEnum);
    8184        }
    8285
  • issm/trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp

    r14364 r14529  
    6969              else if (strcmp(name,"DiagnosticVertexPairing")==0) return DiagnosticVertexPairingEnum;
    7070              else if (strcmp(name,"DiagnosticViscosityOvershoot")==0) return DiagnosticViscosityOvershootEnum;
     71              else if (strcmp(name,"LoadingforceX")==0) return LoadingforceXEnum;
     72              else if (strcmp(name,"LoadingforceY")==0) return LoadingforceYEnum;
     73              else if (strcmp(name,"LoadingforceZ")==0) return LoadingforceZEnum;
    7174              else if (strcmp(name,"FlowequationBordermacayeal")==0) return FlowequationBordermacayealEnum;
    7275              else if (strcmp(name,"FlowequationBorderpattyn")==0) return FlowequationBorderpattynEnum;
     
    135138              else if (strcmp(name,"MaterialsThermalExchangeVelocity")==0) return MaterialsThermalExchangeVelocityEnum;
    136139              else if (strcmp(name,"MaterialsThermalconductivity")==0) return MaterialsThermalconductivityEnum;
    137               else if (strcmp(name,"MeshAverageVertexConnectivity")==0) return MeshAverageVertexConnectivityEnum;
    138               else if (strcmp(name,"MeshDimension")==0) return MeshDimensionEnum;
    139               else if (strcmp(name,"MeshEdges")==0) return MeshEdgesEnum;
    140140         else stage=2;
    141141   }
    142142   if(stage==2){
    143               if (strcmp(name,"MeshElementconnectivity")==0) return MeshElementconnectivityEnum;
     143              if (strcmp(name,"MeshAverageVertexConnectivity")==0) return MeshAverageVertexConnectivityEnum;
     144              else if (strcmp(name,"MeshDimension")==0) return MeshDimensionEnum;
     145              else if (strcmp(name,"MeshEdges")==0) return MeshEdgesEnum;
     146              else if (strcmp(name,"MeshElementconnectivity")==0) return MeshElementconnectivityEnum;
    144147              else if (strcmp(name,"MeshElementonbed")==0) return MeshElementonbedEnum;
    145148              else if (strcmp(name,"MeshElementonsurface")==0) return MeshElementonsurfaceEnum;
     
    258261              else if (strcmp(name,"PrognosticSolution")==0) return PrognosticSolutionEnum;
    259262              else if (strcmp(name,"SteadystateSolution")==0) return SteadystateSolutionEnum;
    260               else if (strcmp(name,"SurfaceSlopeAnalysis")==0) return SurfaceSlopeAnalysisEnum;
    261               else if (strcmp(name,"SurfaceSlopeSolution")==0) return SurfaceSlopeSolutionEnum;
    262               else if (strcmp(name,"SurfaceSlopeXAnalysis")==0) return SurfaceSlopeXAnalysisEnum;
    263263         else stage=3;
    264264   }
    265265   if(stage==3){
    266               if (strcmp(name,"SurfaceSlopeYAnalysis")==0) return SurfaceSlopeYAnalysisEnum;
     266              if (strcmp(name,"SurfaceSlopeAnalysis")==0) return SurfaceSlopeAnalysisEnum;
     267              else if (strcmp(name,"SurfaceSlopeSolution")==0) return SurfaceSlopeSolutionEnum;
     268              else if (strcmp(name,"SurfaceSlopeXAnalysis")==0) return SurfaceSlopeXAnalysisEnum;
     269              else if (strcmp(name,"SurfaceSlopeYAnalysis")==0) return SurfaceSlopeYAnalysisEnum;
    267270              else if (strcmp(name,"ThermalAnalysis")==0) return ThermalAnalysisEnum;
    268271              else if (strcmp(name,"ThermalSolution")==0) return ThermalSolutionEnum;
     
    381384              else if (strcmp(name,"ResetPenalties")==0) return ResetPenaltiesEnum;
    382385              else if (strcmp(name,"SegmentOnIceShelf")==0) return SegmentOnIceShelfEnum;
    383               else if (strcmp(name,"SurfaceAbsVelMisfit")==0) return SurfaceAbsVelMisfitEnum;
    384               else if (strcmp(name,"SurfaceArea")==0) return SurfaceAreaEnum;
    385               else if (strcmp(name,"SurfaceAverageVelMisfit")==0) return SurfaceAverageVelMisfitEnum;
    386386         else stage=4;
    387387   }
    388388   if(stage==4){
    389               if (strcmp(name,"SurfaceLogVelMisfit")==0) return SurfaceLogVelMisfitEnum;
     389              if (strcmp(name,"SurfaceAbsVelMisfit")==0) return SurfaceAbsVelMisfitEnum;
     390              else if (strcmp(name,"SurfaceArea")==0) return SurfaceAreaEnum;
     391              else if (strcmp(name,"SurfaceAverageVelMisfit")==0) return SurfaceAverageVelMisfitEnum;
     392              else if (strcmp(name,"SurfaceLogVelMisfit")==0) return SurfaceLogVelMisfitEnum;
    390393              else if (strcmp(name,"SurfaceLogVxVyMisfit")==0) return SurfaceLogVxVyMisfitEnum;
    391394              else if (strcmp(name,"SurfaceRelVelMisfit")==0) return SurfaceRelVelMisfitEnum;
     
    504507              else if (strcmp(name,"PetscOptionsAnalyses")==0) return PetscOptionsAnalysesEnum;
    505508              else if (strcmp(name,"PetscOptionsStrings")==0) return PetscOptionsStringsEnum;
    506               else if (strcmp(name,"QmuErrName")==0) return QmuErrNameEnum;
    507               else if (strcmp(name,"QmuInName")==0) return QmuInNameEnum;
    508               else if (strcmp(name,"QmuOutName")==0) return QmuOutNameEnum;
    509509         else stage=5;
    510510   }
    511511   if(stage==5){
    512               if (strcmp(name,"Regular")==0) return RegularEnum;
     512              if (strcmp(name,"QmuErrName")==0) return QmuErrNameEnum;
     513              else if (strcmp(name,"QmuInName")==0) return QmuInNameEnum;
     514              else if (strcmp(name,"QmuOutName")==0) return QmuOutNameEnum;
     515              else if (strcmp(name,"Regular")==0) return RegularEnum;
    513516              else if (strcmp(name,"Scaled")==0) return ScaledEnum;
    514517              else if (strcmp(name,"Separate")==0) return SeparateEnum;
  • issm/trunk-jpl/src/m/boundaryconditions/SetIceSheetBC.m

    r13635 r14529  
    1616md.diagnostic.spcvz(pos)=0;
    1717md.diagnostic.referential=NaN*ones(md.mesh.numberofvertices,6);
     18md.diagnostic.loadingforce=0*ones(md.mesh.numberofvertices,3);
    1819
    1920%Dirichlet Values
  • issm/trunk-jpl/src/m/boundaryconditions/SetIceSheetBC.py

    r13635 r14529  
    2222        md.diagnostic.spcvz[pos]=0
    2323        md.diagnostic.referential=float('nan')*numpy.ones((md.mesh.numberofvertices,6))
     24        md.diagnostic.loadingforce=0*numpy.ones((md.mesh.numberofvertices,3))
    2425
    2526        #Dirichlet Values
  • issm/trunk-jpl/src/m/boundaryconditions/SetIceShelfBC.m

    r13076 r14529  
    3535md.diagnostic.spcvz(pos)=0;
    3636md.diagnostic.referential=NaN*ones(md.mesh.numberofvertices,6);
     37md.diagnostic.loadingforce=0*ones(md.mesh.numberofvertices,3);
    3738
    3839%Dirichlet Values
  • issm/trunk-jpl/src/m/boundaryconditions/SetIceShelfBC.py

    r14098 r14529  
    3939        md.diagnostic.spcvz[pos]=0
    4040        md.diagnostic.referential=float('nan')*numpy.ones((md.mesh.numberofvertices,6))
     41        md.diagnostic.loadingforce=0*numpy.ones((md.mesh.numberofvertices,3))
    4142
    4243        #Dirichlet Values
  • issm/trunk-jpl/src/m/boundaryconditions/SetMarineIceSheetBC.m

    r13646 r14529  
    4242md.diagnostic.spcvz(pos)=0;
    4343md.diagnostic.referential=NaN*ones(md.mesh.numberofvertices,6);
     44md.diagnostic.loadingforce=0*ones(md.mesh.numberofvertices,3);
    4445
    4546%Dirichlet Values
  • issm/trunk-jpl/src/m/boundaryconditions/SetMarineIceSheetBC.py

    r14098 r14529  
    4747        md.diagnostic.spcvz[pos]=0
    4848        md.diagnostic.referential=float('nan')*numpy.ones((md.mesh.numberofvertices,6))
     49        md.diagnostic.loadingforce=0*numpy.ones((md.mesh.numberofvertices,3))
    4950
    5051        #Dirichlet Values
  • issm/trunk-jpl/src/m/classes/diagnostic.m

    r14413 r14529  
    2323                rift_penalty_threshold   = 0;
    2424                referential              = NaN;
     25                loadingforce             = NaN;
    2526                requested_outputs        = NaN;
    2627        end
     
    8788                        md = checkfield(md,'diagnostic.maxiter','size',[1 1],'>=',1);
    8889                        md = checkfield(md,'diagnostic.referential','size',[md.mesh.numberofvertices 6]);
     90                        md = checkfield(md,'diagnostic.loadingforce','size',[md.mesh.numberofvertices 3]);
    8991                        if ~isempty(md.diagnostic.requested_outputs),
    9092                                md = checkfield(md,'diagnostic.requested_outputs','size',[NaN 1]);
     
    144146                        fielddisplay(obj,'stokesreconditioning','multiplier for incompressibility equation. Only for Stokes model');
    145147                        fielddisplay(obj,'referential','local referential');
     148                        fielddisplay(obj,'loadingforce','loading force applied on each point');
    146149                        fielddisplay(obj,'requested_outputs','additional outputs requested');
    147150
     
    164167                        WriteData(fid,'object',obj,'fieldname','rift_penalty_threshold','format','Integer');
    165168                        WriteData(fid,'object',obj,'fieldname','referential','format','DoubleMat','mattype',1);
     169                        %WriteData(fid,'object',obj,'fieldname','loadingforce(:,1)','format','DoubleMat','mattype',1,'enum',LoadingforceXEnum);
     170                        %WriteData(fid,'object',obj,'fieldname','loadingforce(:,2)','format','DoubleMat','mattype',1,'enum',LoadingforceYEnum);
     171                        %WriteData(fid,'object',obj,'fieldname','loadingforce(:,3)','format','DoubleMat','mattype',1,'enum',LoadingforceZEnum);
     172                        WriteData(fid,'data',obj.loadingforce(:,1),'format','DoubleMat','mattype',1,'enum',LoadingforceXEnum);
     173                        WriteData(fid,'data',obj.loadingforce(:,2),'format','DoubleMat','mattype',1,'enum',LoadingforceYEnum);
     174                        WriteData(fid,'data',obj.loadingforce(:,3),'format','DoubleMat','mattype',1,'enum',LoadingforceZEnum);
    166175                        WriteData(fid,'object',obj,'fieldname','requested_outputs','format','DoubleMat','mattype',3);
    167176
  • issm/trunk-jpl/src/m/classes/diagnostic.py

    r14413 r14529  
    3636                self.rift_penalty_threshold   = 0
    3737                self.referential              = float('NaN')
     38                self.loadingforce             = float('NaN')
    3839                self.requested_outputs        = float('NaN')
    3940
     
    7475                string="%s\n%s"%(string,fielddisplay(self,'stokesreconditioning','multiplier for incompressibility equation. Only for Stokes model'))
    7576                string="%s\n%s"%(string,fielddisplay(self,'referential','local referential'))
     77                string="%s\n%s"%(string,fielddisplay(self,'loadingforce','loading force applied on each point'))
    7678                string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
    7779
     
    136138                md = checkfield(md,'diagnostic.maxiter','size',[1],'>=',1)
    137139                md = checkfield(md,'diagnostic.referential','size',[md.mesh.numberofvertices,6])
     140                md = checkfield(md,'diagnostic.loadingforce','size',[md.mesh.loadingforce,3])
    138141                if not md.diagnostic.requested_outputs:
    139142                        md = checkfield(md,'diagnostic.requested_outputs','size',[float('NaN'),1])
     
    184187                WriteData(fid,'object',self,'fieldname','rift_penalty_threshold','format','Integer')
    185188                WriteData(fid,'object',self,'fieldname','referential','format','DoubleMat','mattype',1)
     189                WriteData(fid,'data',self.loadingforce[:,0],'format','DoubleMat','mattype',1,'enum',LoadingforceXEnum())
     190                WriteData(fid,'data',self.loadingforce[:,1],'format','DoubleMat','mattype',1,'enum',LoadingforceYEnum())
     191                WriteData(fid,'data',self.loadingforce[:,2],'format','DoubleMat','mattype',1,'enum',LoadingforceZEnum())
    186192                WriteData(fid,'object',self,'fieldname','requested_outputs','format','DoubleMat','mattype',3)
    187193
  • issm/trunk-jpl/src/m/classes/model/model.m

    r14405 r14529  
    172172                        md.diagnostic.spcvz=project2d(md,md.diagnostic.spcvz,md.mesh.numberoflayers);
    173173                        md.diagnostic.referential=project2d(md,md.diagnostic.referential,md.mesh.numberoflayers);
     174                        md.diagnostic.loadingforce=project2d(md,md.diagnostic.loadingforce,md.mesh.numberoflayers);
    174175                        md.prognostic.spcthickness=project2d(md,md.prognostic.spcthickness,md.mesh.numberoflayers);
    175176                        md.thermal.spctemperature=project2d(md,md.thermal.spctemperature,md.mesh.numberoflayers);
     
    718719                        md.balancethickness.spcthickness=project3d(md,'vector',md.balancethickness.spcthickness,'type','node');
    719720                        md.diagnostic.referential=project3d(md,'vector',md.diagnostic.referential,'type','node');
     721                        md.diagnostic.loadingforce=project3d(md,'vector',md.diagnostic.loadingforce,'type','node');
    720722
    721723                        %in 3d, pressureload: [node1 node2 node3 node4 element]
     
    10551057                        end
    10561058
     1059                        if ~isfield(structmd,'loadingforce');
     1060                                md.diagnostic.loadingforce=0*ones(md.mesh.numberofvertices,3);
     1061                        end
    10571062                end% }}}
    10581063                function md = setdefaultparameters(md) % {{{
  • issm/trunk-jpl/src/m/enum/EnumDefinitions.py

    r14364 r14529  
    519519        return StringToEnum('DiagnosticViscosityOvershoot')[0]
    520520
     521def LoadingforceXEnum():
     522        """
     523        LOADINGFORCEXENUM - Enum of LoadingforceX
     524
     525           Usage:
     526              macro=LoadingforceXEnum()
     527        """
     528
     529        return StringToEnum('LoadingforceX')[0]
     530
     531def LoadingforceYEnum():
     532        """
     533        LOADINGFORCEYENUM - Enum of LoadingforceY
     534
     535           Usage:
     536              macro=LoadingforceYEnum()
     537        """
     538
     539        return StringToEnum('LoadingforceY')[0]
     540
     541def LoadingforceZEnum():
     542        """
     543        LOADINGFORCEZENUM - Enum of LoadingforceZ
     544
     545           Usage:
     546              macro=LoadingforceZEnum()
     547        """
     548
     549        return StringToEnum('LoadingforceZ')[0]
     550
    521551def FlowequationBordermacayealEnum():
    522552        """
     
    50075037        """
    50085038
    5009         return 499
    5010 
     5039        return 502
     5040
  • issm/trunk-jpl/src/m/enum/MaximumNumberOfEnums.m

    r14364 r14529  
    99%      macro=MaximumNumberOfEnums()
    1010
    11 macro=499;
     11macro=502;
Note: See TracChangeset for help on using the changeset viewer.