Changeset 4458
- Timestamp:
- 07/08/10 10:01:56 (15 years ago)
- 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 43 43 44 44 /*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 #endif65 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 #endif97 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 /*}}}*/107 45 /*FUNCTION Loads::NumberOfLoads{{{1*/ 108 46 int Loads::NumberOfLoads(void){ -
issm/trunk/src/c/Container/Loads.h
r4236 r4458 26 26 /*}}}*/ 27 27 /*numerics: {{{1*/ 28 int MeltingIsPresent();29 void MeltingConstraints(int* pconverged, int* pnum_unstable_constraints);30 28 int NumberOfLoads(void); 31 29 void OutputRifts(Vec riftproperties); -
issm/trunk/src/c/Makefile.am
r4451 r4458 526 526 ./modules/PenaltyConstraintsx/PenaltyConstraintsx.cpp\ 527 527 ./modules/PenaltyConstraintsx/PenaltyConstraintsx.h\ 528 ./modules/PenaltyConstraintsx/PenaltyConstraintsLocal.h\ 528 529 ./modules/PenaltyConstraintsx/RiftConstraints.cpp\ 529 ./modules/PenaltyConstraintsx/RiftConstraints.h\ 530 ./modules/PenaltyConstraintsx/MeltingConstraints.cpp\ 531 ./modules/PenaltyConstraintsx/MeltingIsPresent.cpp\ 530 532 ./modules/PenaltySystemMatricesx/PenaltySystemMatricesx.cpp\ 531 533 ./modules/PenaltySystemMatricesx/PenaltySystemMatricesx.h\ … … 1067 1069 ./modules/PenaltyConstraintsx/PenaltyConstraintsx.cpp\ 1068 1070 ./modules/PenaltyConstraintsx/PenaltyConstraintsx.h\ 1071 ./modules/PenaltyConstraintsx/PenaltyConstraintsLocal.h\ 1069 1072 ./modules/PenaltyConstraintsx/RiftConstraints.cpp\ 1070 ./modules/PenaltyConstraintsx/RiftConstraints.h\ 1073 ./modules/PenaltyConstraintsx/MeltingConstraints.cpp\ 1074 ./modules/PenaltyConstraintsx/MeltingIsPresent.cpp\ 1071 1075 ./modules/PenaltySystemMatricesx/PenaltySystemMatricesx.cpp\ 1072 1076 ./modules/PenaltySystemMatricesx/PenaltySystemMatricesx.h\ -
issm/trunk/src/c/modules/PenaltyConstraintsx/PenaltyConstraintsx.cpp
r4218 r4458 4 4 5 5 #include "./PenaltyConstraintsx.h" 6 #include "./ RiftConstraints.h"6 #include "./PenaltyConstraintsLocal.h" 7 7 #include "../../shared/shared.h" 8 8 #include "../../include/include.h" … … 20 20 int converged=0; 21 21 int num_unstable_constraints=0; 22 int min_mechanical_constraints=0; 22 int min_mechanical_constraints=0; 23 int analysis_type; 23 24 24 25 /*recover parameters: */ … … 32 33 /*Do we have penalties linked to rifts? In this case, run our special rifts penalty 33 34 * 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); 36 37 } 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); 39 40 } 40 41 else{ -
issm/trunk/src/c/modules/PenaltyConstraintsx/RiftConstraints.cpp
r4214 r4458 3 3 */ 4 4 5 #include "./ RiftConstraints.h"5 #include "./PenaltyConstraintsLocal.h" 6 6 #include "../../EnumDefinitions/EnumDefinitions.h" 7 7 #include "../../include/include.h" … … 10 10 #define _ZIGZAGCOUNTER_ 11 11 12 int RiftConstraints(int* pconverged, int* pnum_unstable_constraints,Loads* loads,int min_mechanical_constraints ){12 int RiftConstraints(int* pconverged, int* pnum_unstable_constraints,Loads* loads,int min_mechanical_constraints,int analysis_type){ 13 13 14 14 int num_unstable_constraints=0; … … 16 16 int potential; 17 17 extern int my_rank; 18 ISSMERROR(" check analysis_type across all routine!"); 18 19 19 20 Constrain(&num_unstable_constraints,loads); … … 66 67 } 67 68 68 int RiftIsPresent(Loads* loads ){69 int RiftIsPresent(Loads* loads,int analysis_type){ 69 70 70 71 … … 76 77 /*go though loads, and figure out if one of the loads is a Riftfront: */ 77 78 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 } 82 85 } 83 86 }
Note:
See TracChangeset
for help on using the changeset viewer.