Changeset 4458


Ignore:
Timestamp:
07/08/10 10:01:56 (15 years ago)
Author:
Eric.Larour
Message:

Transferred MeltingIsPresent, MeltingConstraints and RiftIsPresent from loads
to PenaltyConstraintsx directory.
Added analysis_type as argument, to check in the loads.

Location:
issm/trunk/src/c
Files:
3 added
1 deleted
5 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/Container/Loads.cpp

    r4220 r4458  
    4343
    4444/*Numerics:*/
    45 /*FUNCTION Loads::MeltingIsPresent{{{1*/
    46 int   Loads::MeltingIsPresent(){
    47 
    48         int i;
    49         int found=0;
    50         int mpi_found=0;
    51 
    52         for(i=0;i<this->Size();i++){
    53                 Object* object=(Object*)this->GetObjectByOffset(i);
    54                 if (object->Enum()==PengridEnum){
    55                         found=1;
    56                         break;
    57                 }
    58         }
    59        
    60         #ifdef _PARALLEL_
    61         MPI_Reduce (&found,&mpi_found,1,MPI_INT,MPI_SUM,0,MPI_COMM_WORLD );
    62         MPI_Bcast(&mpi_found,1,MPI_INT,0,MPI_COMM_WORLD);               
    63         found=mpi_found;
    64         #endif
    65 
    66         return found;
    67 }
    68 /*}}}*/
    69 /*FUNCTION Loads::MeltingConstraints{{{1*/
    70 void  Loads::MeltingConstraints(int* pconverged, int* pnum_unstable_constraints){
    71 
    72         int i;
    73 
    74         int unstable=0;
    75         int num_unstable_constraints=0;
    76         int converged=0;
    77         int sum_num_unstable_constraints=0;
    78 
    79         num_unstable_constraints=0;     
    80 
    81         /*Enforce constraints: */
    82         for(i=0;i<this->Size();i++){
    83                 Object* object=(Object*)this->GetObjectByOffset(i);
    84                 if(object->Enum()==PengridEnum){
    85 
    86                         Pengrid* pengrid=(Pengrid*)object;
    87                         pengrid->PenaltyConstrain(&unstable);
    88                         num_unstable_constraints+=unstable;
    89                 }
    90         }
    91 
    92         #ifdef _PARALLEL_
    93         MPI_Reduce (&num_unstable_constraints,&sum_num_unstable_constraints,1,MPI_INT,MPI_SUM,0,MPI_COMM_WORLD );
    94         MPI_Bcast(&sum_num_unstable_constraints,1,MPI_INT,0,MPI_COMM_WORLD);               
    95         num_unstable_constraints=sum_num_unstable_constraints;
    96         #endif
    97 
    98         /*Have we converged? : */
    99         if (num_unstable_constraints==0) converged=1;
    100         else converged=0;
    101 
    102         /*Assign output pointers: */
    103         *pconverged=converged;
    104         *pnum_unstable_constraints=num_unstable_constraints;
    105 }
    106 /*}}}*/
    10745/*FUNCTION Loads::NumberOfLoads{{{1*/
    10846int Loads::NumberOfLoads(void){
  • issm/trunk/src/c/Container/Loads.h

    r4236 r4458  
    2626                /*}}}*/
    2727                /*numerics: {{{1*/
    28                 int   MeltingIsPresent();
    29                 void  MeltingConstraints(int* pconverged, int* pnum_unstable_constraints);
    3028                int   NumberOfLoads(void);
    3129                void  OutputRifts(Vec riftproperties);
  • issm/trunk/src/c/Makefile.am

    r4451 r4458  
    526526                                        ./modules/PenaltyConstraintsx/PenaltyConstraintsx.cpp\
    527527                                        ./modules/PenaltyConstraintsx/PenaltyConstraintsx.h\
     528                                        ./modules/PenaltyConstraintsx/PenaltyConstraintsLocal.h\
    528529                                        ./modules/PenaltyConstraintsx/RiftConstraints.cpp\
    529                                         ./modules/PenaltyConstraintsx/RiftConstraints.h\
     530                                        ./modules/PenaltyConstraintsx/MeltingConstraints.cpp\
     531                                        ./modules/PenaltyConstraintsx/MeltingIsPresent.cpp\
    530532                                        ./modules/PenaltySystemMatricesx/PenaltySystemMatricesx.cpp\
    531533                                        ./modules/PenaltySystemMatricesx/PenaltySystemMatricesx.h\
     
    10671069                                        ./modules/PenaltyConstraintsx/PenaltyConstraintsx.cpp\
    10681070                                        ./modules/PenaltyConstraintsx/PenaltyConstraintsx.h\
     1071                                        ./modules/PenaltyConstraintsx/PenaltyConstraintsLocal.h\
    10691072                                        ./modules/PenaltyConstraintsx/RiftConstraints.cpp\
    1070                                         ./modules/PenaltyConstraintsx/RiftConstraints.h\
     1073                                        ./modules/PenaltyConstraintsx/MeltingConstraints.cpp\
     1074                                        ./modules/PenaltyConstraintsx/MeltingIsPresent.cpp\
    10711075                                        ./modules/PenaltySystemMatricesx/PenaltySystemMatricesx.cpp\
    10721076                                        ./modules/PenaltySystemMatricesx/PenaltySystemMatricesx.h\
  • issm/trunk/src/c/modules/PenaltyConstraintsx/PenaltyConstraintsx.cpp

    r4218 r4458  
    44
    55#include "./PenaltyConstraintsx.h"
    6 #include "./RiftConstraints.h"
     6#include "./PenaltyConstraintsLocal.h"
    77#include "../../shared/shared.h"
    88#include "../../include/include.h"
     
    2020        int converged=0;
    2121        int num_unstable_constraints=0;
    22         int min_mechanical_constraints=0;
     22        int min_mechanical_constraints=0;
     23        int analysis_type;
    2324
    2425        /*recover parameters: */
     
    3233        /*Do we have penalties linked to rifts? In this case, run our special rifts penalty
    3334         * management routine, otherwise, skip : */
    34         if (RiftIsPresent(loads)){
    35                 RiftConstraints(&converged,&num_unstable_constraints,loads,min_mechanical_constraints);
     35        if (RiftIsPresent(loads,analysis_type)){
     36                RiftConstraints(&converged,&num_unstable_constraints,loads,min_mechanical_constraints,analysis_type);
    3637        }
    37         else if(loads->MeltingIsPresent()){
    38                 loads->MeltingConstraints(&converged,&num_unstable_constraints);
     38        else if(MeltingIsPresent(loads,analysis_type)){
     39                MeltingConstraints(loads,&converged,&num_unstable_constraints,analysis_type);
    3940        }
    4041        else{
  • issm/trunk/src/c/modules/PenaltyConstraintsx/RiftConstraints.cpp

    r4214 r4458  
    33 */
    44
    5 #include "./RiftConstraints.h"
     5#include "./PenaltyConstraintsLocal.h"
    66#include "../../EnumDefinitions/EnumDefinitions.h"
    77#include "../../include/include.h"
     
    1010#define _ZIGZAGCOUNTER_
    1111
    12 int RiftConstraints(int* pconverged, int* pnum_unstable_constraints,Loads* loads,int min_mechanical_constraints){
     12int RiftConstraints(int* pconverged, int* pnum_unstable_constraints,Loads* loads,int min_mechanical_constraints,int analysis_type){
    1313
    1414        int num_unstable_constraints=0;
     
    1616        int potential;
    1717        extern int my_rank;
     18        ISSMERROR(" check analysis_type across all routine!");
    1819
    1920        Constrain(&num_unstable_constraints,loads);
     
    6667}
    6768
    68 int RiftIsPresent(Loads* loads){
     69int RiftIsPresent(Loads* loads,int analysis_type){
    6970
    7071
     
    7677        /*go though loads, and figure out if one of the loads is a Riftfront: */
    7778        for (i=0;i<loads->Size();i++){
    78 
    79                 if(RiftfrontEnum==loads->GetEnum(i)){
    80                         found=1;
    81                         break;
     79                Load* load=(Load*)loads->GetObjectByOffset(i);
     80                if(load->InAnalysis(analysis_type)){
     81                        if(RiftfrontEnum==loads->GetEnum(i)){
     82                                found=1;
     83                                break;
     84                        }
    8285                }
    8386        }
Note: See TracChangeset for help on using the changeset viewer.