Commit ee7f4a71 authored by Adam Powell's avatar Adam Powell

Imported Upstream version 5.5.0.svn.4499.dfsg

parent 8ad8a353
This diff is collapsed.
......@@ -40,6 +40,12 @@
<Whatis> Append files when calling multiple times. False is the default. </Whatis>
</Parameter>
<Parameter Widget="CheckBox" >
<Name> Parallel Reduce </Name>
<Type> Logical </Type>
<Whatis> Reduce output to single file in parallel computation. False is the default. </Whatis>
</Parameter>
<Parameter Widget="CheckBox" >
<Name> Show Norm </Name>
<Type> Logical </Type>
......
##### ElmerGrid input file for structured grid generation ######
Version = 210903
Coordinate System = Cartesian 2D
Subcell Divisions in 2D = 3 3
Subcell Limits 1 = 0 2 3 5
Subcell Limits 2 = 0 2 3 5
Material Structure in 2D
1 1 1
1 2 1
1 1 1
End
Geometry Mappings
# mode line limits(2) Np params(Np)
3 1 1.0 1.0 5 2 0 0.707106781 3 0
3 2 1.0 1.0 5 2 0 -0.707106781 3 0
-3 1 1.0 1.0 5 2 0 0.707106781 3 0
-3 2 1.0 1.0 5 2 0 -0.707106781 3 0
End
Materials Interval = 1 1
Boundary Definitions
# type out int
1 0 1 1
2 2 1 1
End
Numbering = Horizontal
Element Degree = 1
Element Innernodes = False
Triangles = False
Surface Elements = 3000
Coordinate Ratios = 1
Element Ratios 1 = 0.2 1 5
Element Ratios 2 = 0.2 1 5
Element Densities 1 = 1 1 1
Element Densities 2 = 1 1 1
Boundary Layer
2 8 0.1 5.0
End
Boundary Layer Epsilon = 1.0e-6
Boundary Layer Move = 10000
##### ElmerGrid input file for structured grid generation ######
Version = 210903
Coordinate System = Cartesian 2D
Subcell Divisions in 2D = 6 5
Subcell Limits 1 = 0 0 2 3 5 30 30
Subcell Limits 2 = 0 5 6 8 9 14
Material Structure in 2D
4 1 1 1 1 5
4 1 2 1 1 5
4 1 1 1 1 5
4 1 3 1 1 5
4 1 1 1 1 5
End
Geometry Mappings
# mode line limits(2) Np params(Np)
3 1 1.0 1.0 5 2 0 0.707106781 3 0
3 2 1.0 1.0 5 2 0 -0.707106781 3 0
-3 2 1.0 1.0 5 5 0 0.707106781 6 0
-3 3 1.0 1.0 5 5 0 -0.707106781 6 0
3 3 1.0 1.0 5 2 0 0.707106781 3 0
3 4 1.0 1.0 5 2 0 -0.707106781 3 0
-3 2 1.0 1.0 5 8 0 0.707106781 9 0
-3 3 1.0 1.0 5 8 0 -0.707106781 9 0
End
Materials Interval = 1 1
Boundary Definitions
# type out int
1 0 1 1
2 2 1 1
3 3 1 1
4 4 1 1
5 5 1 1
End
Numbering = Horizontal
Element Degree = 1
Element Innernodes = False
Triangles = False
Surface Elements = 10000
Coordinate Ratios = 1
Element Ratios 1 = 1 0.25 1 4 0.25 1
Element Ratios 2 = 0.25 1 1 1 4
Element Densities 1 = 1 1 1 1 1 1
Element Densities 2 = 1 1 1 1 1
Boundary Layer
2 8 0.1 5.0
3 8 0.1 5.0
End
Boundary Layer Epsilon = 1.0e-6
Boundary Layer Move = 1000
......@@ -3801,7 +3801,7 @@ int SaveElmerInputPartitioned(struct FemType *data,struct BoundaryType *bound,
}
}
if(part2 < partstart || part > partfin) continue;
if(part2 < partstart || part2 > partfin) continue;
nofile2 = part2 - partstart + 1;
......
......@@ -7580,9 +7580,10 @@ int CreateBoundaryLayer(struct FemType *data,struct BoundaryType *bound,
int *topomap,*newmaterial,*herit,*inside,*nonlin;
int endbcs, *endparents, *endtypes, *endnodes, *endnodes2, *endneighbours;
if(maxfilters == 1) maxfilters = 1000;
if(layereps > 0.1) layereps = 0.001;
if(layereps < 1.0e-8) layereps = 0.001;
printf("maxfilters=%d layereps=%.3le\n",maxfilters,layereps);
if(!maxfilters) maxfilters = 1000;
if(layereps < 1.0e-20) layereps = 1.0e-3;
rectfactor = 1.0e2;
dim = data->dim;
......
......@@ -229,7 +229,7 @@
/* #undef SUNOS */
/* Version number of package */
#define VERSION "5.5.0"
#define VERSION "6.0"
/* Detected platform2. */
/* #undef WIN32 */
......
......@@ -2338,7 +2338,7 @@ fi
# Define the identity of the package.
PACKAGE=fem
VERSION=5.5.0
VERSION=6.0
cat >>confdefs.h <<_ACEOF
......
......@@ -6,7 +6,7 @@ AC_INIT(src/Solver.src)
AC_CANONICAL_HOST
AC_CANONICAL_TARGET
AM_INIT_AUTOMAKE(fem, 5.5.0)
AM_INIT_AUTOMAKE(fem, 6.0)
AM_MAINTAINER_MODE
......
......@@ -342,6 +342,10 @@
minv=1,maxv=Model % NumberOfEquations )
ConvectionFlag = ListGetString( Model % Equations(eq_id) % Values, &
'Convection', GotIt )
IF ( .NOT. GotIt ) &
ConvectionFlag = ListGetString( Model % Equations(eq_id) % Values, &
TRIM(ComponentName(Solver % Variable)) // &
' Convection', GotIt )
ScaledToSolubility = .FALSE.
ConcentrationUnits = ListGetString( Model % Equations(eq_id) % &
......@@ -378,6 +382,10 @@
ConvectName = ListGetString( Material, &
'Convection Field Variable', GotIt )
IF ( .NOT. GotIt ) &
ConvectName = ListGetString( Model % Equations(eq_id) % Values, &
TRIM(ComponentName(Solver % Variable)) // &
'Convection Field Variable', GotIt )
IF ( GotIt ) THEN
FlowSol => VariableGet( Solver % Mesh % Variables, &
TRIM( ConvectName ) )
......@@ -526,9 +534,21 @@
!------------------------------------------------------------------------------
IF ( ConvectionFlag == 'constant' ) THEN
U = ListGetReal( Material,'Convection Velocity 1',n,NodeIndexes )
V = ListGetReal( Material,'Convection Velocity 2',n,NodeIndexes )
W = ListGetReal( Material,'Convection Velocity 3',n,NodeIndexes )
U = ListGetReal( Material,'Convection Velocity 1',n,NodeIndexes, GotIt)
IF ( .NOT. GotIt ) &
U = ListGetReal( Model % Equations(eq_id) % Values, &
TRIM(ComponentName(Solver % Variable)) // &
' Convection Velocity 1',n,NodeIndexes )
V = ListGetReal( Material,'Convection Velocity 2',n,NodeIndexes, GotIt)
IF ( .NOT. GotIt ) &
V = ListGetReal( Model % Equations(eq_id) % Values, &
TRIM(ComponentName(Solver % Variable)) // &
' Convection Velocity 2',n,NodeIndexes )
W = ListGetReal( Material,'Convection Velocity 3',n,NodeIndexes, GotIt)
IF ( .NOT. GotIt ) &
W = ListGetReal( Model % Equations(eq_id) % Values, &
TRIM(ComponentName(Solver % Variable)) // &
' Convection Velocity 3',n,NodeIndexes )
IF (.NOT. AbsoluteMass) THEN
C1 = Density
DO i=1,3
......
......@@ -79,6 +79,9 @@ SUBROUTINE DistanceSolver( Model,Solver,dt,TransientSimulation )
SAVE STIFF, FORCE, AllocationsDone
!------------------------------------------------------------------------------
CALL Info('DistanceSolver','Using PDE based distance solver')
!Allocate some permanent storage, this is done first time only:
!--------------------------------------------------------------
Mesh => GetMesh()
......@@ -142,6 +145,9 @@ SUBROUTINE DistanceSolver( Model,Solver,dt,TransientSimulation )
IF ( Solver % Variable % NonlinChange <= TOL ) EXIT
END DO
CALL Info('DistanceSolver','All done')
CONTAINS
!------------------------------------------------------------------------------
......@@ -276,12 +282,14 @@ SUBROUTINE DistanceSolver1( Model,Solver,dt,TransientSimulation )
REAL(KIND=dp), POINTER :: distance(:)
INTEGER, POINTER :: gPerm(:), ibuf(:), aperm(:),bperm(:),cperm(:)
real(kind=dp) :: cputime, st
REAL(kind=dp) :: cputime, st
SAVE STIFF, FORCE, AllocationsDone
!------------------------------------------------------------------------------
CALL Info('DistanceSolver1','Using geometric distance solver')
Mesh => GetMesh()
n = Mesh % NumberOfNodes
ALLOCATE( aperm(n), bperm(n) ); aperm = 0; bperm = 0
......@@ -368,6 +376,9 @@ real(kind=dp) :: cputime, st
Solver % Variable % Norm = SQRT(SUM(distance))
distance = SQRT(distance)
CALL Info('DistanceSolver1','All done')
CONTAINS
SUBROUTINE distcomp0
......@@ -405,7 +416,7 @@ CONTAINS
ALLOCATE( xxp(nnb), yyp(nnb), zzp(nnb), d(nnb), dperm(nnb), &
near(nnb), dd(nb) )
CALL random_number(c)
CALL RANDOM_NUMBER(c)
xxp(1:n) = Mesh % Nodes % x
yyp(1:n) = Mesh % Nodes % y
......
......@@ -5033,6 +5033,12 @@ END IF
IF ( i > MaxIter ) THEN
CALL Warn( 'GlobalToLocal', 'did not converge.')
print *,'dim',Element % Type % Dimension,'delta',delta,'uvw',u,v,w
print *,'rst',r,s,t,EPSILON(1.0_dp)
print *,'x:',x,ElementNodes % X
print *,'x:',y,ElementNodes % X
print *,'x:',z,ElementNodes % X
END IF
!------------------------------------------------------------------------------
END SUBROUTINE GlobalToLocal
......
......@@ -124,10 +124,10 @@ MODULE Interpolation
END SUBROUTINE FindLeafElements
!------------------------------------------------------------------------------
!------------------------------------------------------------------------------
FUNCTION PointInElement( Element, ElementNodes, Point, &
LocalCoordinates, EPS, Eps_abs ) RESULT(IsInElement)
LocalCoordinates, Eps_rel, Eps_abs, Distance ) RESULT(IsInElement)
!------------------------------------------------------------------------------
!------------------------------------------------------------------------------
!******************************************************************************
......@@ -153,40 +153,99 @@ MODULE Interpolation
! LOGICAL :: IsInBulkElement
!
!******************************************************************************
Type(Element_t), POINTER :: Element
Type(Nodes_t) :: ElementNodes
TYPE(Element_t), POINTER :: Element
TYPE(Nodes_t) :: ElementNodes
LOGICAL :: IsInElement
REAL(KIND=dp), OPTIONAL :: Eps, Eps_abs
REAL(KIND=dp), OPTIONAL :: Eps_rel, Eps_abs, Distance
REAL(KIND=dp), DIMENSION(:) :: Point
REAL(KIND=dp), DIMENSION(:) :: LocalCoordinates
!------------------------------------------------------------------------------
INTEGER :: n
INTEGER :: i
REAL(KIND=dp) :: ug,vg,wg,xdist,ydist,zdist,eps2,escale
LOGICAL :: ComputeDistance
REAL(KIND=dp) :: ug,vg,wg,xdist,ydist,zdist,sumdist,eps0,eps,eps2,escale,&
minx,maxx,miny,maxy,minz,maxz
!------------------------------------------------------------------------------
! Initialize:
! -----------
IsInElement = .FALSE.
n = Element % Type % NumberOfNodes
xdist = MAXVAL(ElementNodes % x(1:n)) - MINVAL(ElementNodes % x(1:n))
ydist = MAXVAL(ElementNodes % y(1:n)) - MINVAL(ElementNodes % y(1:n))
zdist = MAXVAL(ElementNodes % z(1:n)) - MINVAL(ElementNodes % z(1:n))
escale = MAX(MAX(xdist, ydist), zdist)
Eps2 = 1.0d-9
IF ( PRESENT(Eps) ) Eps2 = Eps
IF ( PRESENT(Eps_abs) ) Eps2 = Eps_abs/escale
IF ( (Point(1)<MINVAL(ElementNodes % x(1:n)) - eps2*escale) .OR. &
(Point(1)>MAXVAL(ElementNodes % x(1:n)) + eps2*escale) .OR. &
n = Element % TYPE % NumberOfNodes
IF(.FALSE.) THEN
! The old method
xdist = MAXVAL(ElementNodes % x(1:n)) - MINVAL(ElementNodes % x(1:n))
ydist = MAXVAL(ElementNodes % y(1:n)) - MINVAL(ElementNodes % y(1:n))
zdist = MAXVAL(ElementNodes % z(1:n)) - MINVAL(ElementNodes % z(1:n))
escale = MAX(MAX(xdist, ydist), zdist)
Eps2 = 1.0d-9
IF ( PRESENT(Eps_rel) ) Eps2 = Eps
IF ( PRESENT(Eps_abs) ) Eps2 = Eps_abs/escale
IF ( (Point(1)<MINVAL(ElementNodes % x(1:n)) - eps2*escale) .OR. &
(Point(1)>MAXVAL(ElementNodes % x(1:n)) + eps2*escale) .OR. &
(Point(2)<MINVAL(ElementNodes % y(1:n)) - eps2*escale) .OR. &
(Point(2)>MAXVAL(ElementNodes % y(1:n)) + eps2*escale) .OR. &
(Point(3)<MINVAL(ElementNodes % z(1:n)) - eps2*escale) .OR. &
(Point(3)>MAXVAL(ElementNodes % z(1:n)) + eps2*escale) ) RETURN
ELSE
IF ( PRESENT(Eps_abs) ) THEN
Eps = Eps_abs
ELSE
Eps = 1.0e-12
END IF
IF ( PRESENT(Eps_rel) ) THEN
Eps2 = Eps_rel
ELSE
Eps2 = 1.0e-8
END IF
IF( PRESENT( Distance ) ) THEN
! When distance has to be computed all coordinate directions need to be checked
minx = MINVAL( ElementNodes % x(1:n) )
maxx = MAXVAL( ElementNodes % x(1:n) )
miny = MINVAL( ElementNodes % y(1:n) )
maxy = MAXVAL( ElementNodes % y(1:n) )
minz = MINVAL( ElementNodes % z(1:n) )
maxz = MAXVAL( ElementNodes % z(1:n) )
xdist = MAX( MAX( Point(1) - maxx, 0.0_dp ), minx - Point(1) )
ydist = MAX( MAX( Point(2) - maxy, 0.0_dp ), miny - Point(2) )
zdist = MAX( MAX( Point(3) - maxz, 0.0_dp ), minz - Point(3) )
Distance = SQRT( xdist**2 + ydist**2 + zdist**2)
IF( xdist > eps + eps2 * (maxx - minx) ) RETURN
IF( ydist > eps + eps2 * (maxy - miny) ) RETURN
IF( zdist > eps + eps2 * (maxz - minz) ) RETURN
ELSE
! Otherwise make decision independently after each coordinate direction
minx = MINVAL( ElementNodes % x(1:n) )
maxx = MAXVAL( ElementNodes % x(1:n) )
xdist = MAX( MAX( Point(1) - maxx, 0.0_dp ), minx - Point(1) )
IF( xdist > eps + eps2 * (maxx - minx) ) RETURN
miny = MINVAL( ElementNodes % y(1:n) )
maxy = MAXVAL( ElementNodes % y(1:n) )
ydist = MAX( MAX( Point(2) - maxy, 0.0_dp ), miny - Point(2) )
IF( ydist > eps + eps2 * (maxy - miny) ) RETURN
minz = MINVAL( ElementNodes % z(1:n) )
maxz = MAXVAL( ElementNodes % z(1:n) )
zdist = MAX( MAX( Point(3) - maxz, 0.0_dp ), minz - Point(3) )
IF( zdist > eps + eps2 * (maxz - minz) ) RETURN
END IF
END IF
!
! Get element local coordinates from global
! coordinates of the point:
......@@ -198,7 +257,11 @@ MODULE Interpolation
LocalCoordinates(2) = vg
LocalCoordinates(3) = wg
SELECT CASE ( Element % Type % ElementCode / 100 )
! Currently the eps of global coordinates is mixed with the eps of local
! coordinates which is a bit disturbin. There could be sloppier global
! coordinate search and a more rigorous local coordinate search.
SELECT CASE ( Element % TYPE % ElementCode / 100 )
CASE(2)
IsInElement = (ug<=1.d0 + eps2) .AND. (ug>=-1.d0 - eps2)
......@@ -433,7 +496,7 @@ MODULE Interpolation
DO t=1, MotherQuadrant % NElemsInQuadrant
!-------------------------------------------------------------------------------
CurrentElement => Mesh % Elements( MotherQuadrant % Elements(t) )
n = CurrentElement % Type % NumberOfNodes
n = CurrentElement % TYPE % NumberOfNodes
NodeIndexes => CurrentElement % NodeIndexes
! Get element coordinates
......
......@@ -100,7 +100,7 @@
! Local variables
!------------------------------------------------------------------------------
TYPE(Matrix_t),POINTER :: StiffMatrix
INTEGER :: i,j,k,l,n,t,iter,k1,k2,body_id,eq_id,istat,LocalNodes,bf_id,DOFs
INTEGER :: i,j,k,l,n,nd,nb,t,iter,k1,k2,body_id,eq_id,istat,LocalNodes,bf_id,DOFs
TYPE(Nodes_t) :: ElementNodes
TYPE(Element_t),POINTER :: Element
......@@ -110,7 +110,7 @@
INTEGER, POINTER :: NodeIndexes(:)
LOGICAL :: NewtonLinearization = .FALSE.,gotIt
!
LOGICAL :: AllocationsDone = .FALSE.
LOGICAL :: AllocationsDone = .FALSE., Bubbles
CHARACTER(LEN=MAX_NAME_LEN) :: KEModel, V2FModel
......@@ -218,6 +218,9 @@
IF ( .NOT.GotIt ) NonlinearIter = 1
Bubbles = GetString(GetSolverParams(), &
'Stabilization method', GotIt ) == 'bubbles'
IF ( .NOT. GotIt ) Bubbles = .TRUE.
!------------------------------------------------------------------------------
DO i=1,Model % NumberOFBCs
......@@ -276,7 +279,10 @@
END IF
!------------------------------------------------------------------------------
CALL GetElementNodes( ElementNodes )
n = GetElementNOFNodes()
n = GetElementNOFNodes()
nd = GetElementNOFDOFs()
IF ( Bubbles ) nd=2*n
nb = GetElementNOFBDOFs()
NodeIndexes => Element % NodeIndexes
!------------------------------------------------------------------------------
CALL GetScalarLocalSolution( LocalV2, 'V2' )
......@@ -370,7 +376,7 @@
! Get element local matrices, and RHS vectors
!------------------------------------------------------------------------------
CALL LocalMatrix( MASS,STIFF,FORCE,LOAD, &
U,V,W, Element,n,ElementNodes )
U,V,W, Element,n,nd+nb,ElementNodes )
!------------------------------------------------------------------------------
TimeForce = 0.0_dp
IF ( TransientSimulation ) THEN
......@@ -379,7 +385,11 @@
!------------------------------------------------------------------------------
! Update global matrices from local matrices
!------------------------------------------------------------------------------
CALL Condensate( DOFs*N, STIFF, FORCE, TimeForce )
IF ( Bubbles ) THEN
CALL Condensate( DOFs*N, STIFF, FORCE, TimeForce )
ELSE IF ( nb > 0 ) THEN
CALL CondensateP( DOFs*nd, DOFs*nb, STIFF, FORCE, TimeForce )
END IF
CALL DefaultUpdateEquations( STIFF, FORCE )
!------------------------------------------------------------------------------
END DO ! Bulk elements
......@@ -470,10 +480,10 @@
!------------------------------------------------------------------------------
! Kinetic Energy Solution should be positive
!------------------------------------------------------------------------------
n = SIZE( Solver % Variable % Values)
n = Solver % Mesh % NumberOfNodes
Kmax = MAXVAL( Solver % Variable % Values(1:n:2) )
Emax = MAXVAL( Solver % Variable % Values(2:n:2) )
DO i=1,SIZE(Solver % Variable % Perm)
DO i=1,n
k = Solver % Variable % Perm(i)
IF ( k <= 0 ) CYCLE
......@@ -521,7 +531,7 @@ CONTAINS
!------------------------------------------------------------------------------
SUBROUTINE LocalMatrix( MASS,STIFF,FORCE, &
LOAD, UX,UY,UZ,Element,n,Nodes )
LOAD, UX,UY,UZ,Element,n,nd,Nodes )
!------------------------------------------------------------------------------
!******************************************************************************
!
......@@ -564,7 +574,7 @@ CONTAINS
REAL(KIND=dp), DIMENSION(:) :: FORCE,UX,UY,UZ
REAL(KIND=dp), DIMENSION(:,:) :: MASS,STIFF,LOAD
INTEGER :: n
INTEGER :: n,nd
TYPE(Nodes_t) :: Nodes
TYPE(Element_t) :: Element
......@@ -573,9 +583,9 @@ CONTAINS
! Local variables
!------------------------------------------------------------------------------
!
REAL(KIND=dp) :: ddBasisddx(2*n,3,3)
REAL(KIND=dp) :: Basis(2*n)
REAL(KIND=dp) :: dBasisdx(2*n,3),detJ
REAL(KIND=dp) :: ddBasisddx(nd,3,3)
REAL(KIND=dp) :: Basis(nd)
REAL(KIND=dp) :: dBasisdx(nd,3),detJ
REAL(KIND=dp) :: Velo(3),dVelodx(3,3)
......@@ -596,7 +606,7 @@ CONTAINS
REAL(KIND=dp), POINTER :: gWork(:,:)
LOGICAL :: stat,Convection, Bubbles, UseRNGModel
LOGICAL :: stat,Convection, UseRNGModel
!------------------------------------------------------------------------------
......@@ -606,8 +616,8 @@ CONTAINS
STIFF = 0.0D0
MASS = 0.0D0
NBasis = 2*n
Bubbles = .TRUE.
NBasis = nd
IF ( Bubbles ) NBasis = 2*n
UseRNGModel = KEModel == 'rng'
......
......@@ -1337,7 +1337,7 @@ CONTAINS
INTEGER :: i,j,k,l,n,ierr,istat
LOGICAL :: Found, Stat, AbsNorm, Scanning, Convergence, RungeKutta, MeActive, &
Relax, NeedSol, IsCoupledSolver, IsAssemblySolver
LOGICAL, ALLOCATABLE :: DoneThis(:)
LOGICAL, ALLOCATABLE :: DoneThis(:), AfterConverged(:)
TYPE(Solver_t), POINTER :: Solver
TYPE(Mesh_t), POINTER :: Mesh
CHARACTER(LEN=max_name_len) :: When
......@@ -1387,7 +1387,14 @@ CONTAINS
!------------------------------------------------------------------------------
ALLOCATE( DoneThis( Model % NumberOfSolvers ) )
ALLOCATE( DoneThis( Model % NumberOfSolvers ), &
AfterConverged( Model % NumberOfSolvers ) )
DO i=1,Model % NumberOfSolvers
Solver => Model % Solvers(i)
AfterConverged(i) = ListGetLogical( Solver % Values, &
'Coupled System After Others Converged', Found )
END DO
IF ( PrevDT == 0.0d0 ) PrevDT = dt
!------------------------------------------------------------------------------
......@@ -1410,6 +1417,9 @@ CONTAINS
Mesh % OutputActive = .FALSE.
Mesh => Mesh % Next
END DO
!------------------------------------------------------------------------------
! Go trough number of solvers (heat,laminar or turbulent flow, etc...)
!------------------------------------------------------------------------------
......@@ -1440,6 +1450,8 @@ CONTAINS
CYCLE
END IF
END IF
IF ( AfterConverged(k) .AND. .NOT. ALL(AfterConverged .OR. DoneThis) ) CYCLE
!------------------------------------------------------------------------------
RungeKutta = .FALSE.
......@@ -1622,7 +1634,7 @@ CONTAINS
!------------------------------------------------------------------------------
IF ( .NOT.TransientSimulation ) SteadyStateReached = ALL(DoneThis)
!------------------------------------------------------------------------------
DEALLOCATE( DoneThis )
DEALLOCATE( DoneThis, AfterConverged )
!------------------------------------------------------------------------------
!------------------------------------------------------------------------------
......@@ -2747,7 +2759,8 @@ END SUBROUTINE CoupledSolver
END DO
OutputPE = -1
IF ( i-1==ParEnv % MyPE ) OutputPE=0
IF ( i-1==ParEnv % MyPE .OR. i>ParEnv % PEs .AND. ParEnv % myPE==0 ) &
OutputPE=0
n = COUNT(ParEnv % Active)
IF ( n>0 .AND. n<ParEnv % PEs ) THEN
......
......@@ -253,6 +253,7 @@ EXTRA_DIST = \
DiffuseConvectiveGeneralAnisotropic.src \
DirectSolve.src \
DistanceSolve.src \
DivergenceSolver.src \
EigenSolve.src \
ElasticSolve.src \
ElectricForce.src \
......@@ -332,6 +333,7 @@ EXTRA_DIST = \
ResultToPost.src \
ResultToResult.src \
ReynoldsSolver.src \
RichardsSolver.src \
RigidBodyReduction.src \
RigidMeshMapper.src \
SaveData.src \
......@@ -363,6 +365,7 @@ EXTRA_DIST = \
Stress.src \
StressGeneral.src \
StressSolve.src \
StucturedFlowLine.src \
StructuredMeshMapper.src \
TimeIntegrate.src \
TransportEquation.src \
......
# Makefile.in generated by automake 1.10.1 from Makefile.am.
# Makefile.in generated by automake 1.10 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
......@@ -57,7 +57,7 @@ am__SC2Elmer_SOURCES_DIST = SC2Elmer.c Sico2Elmer-res.rc
@HAVE_WINDRES_TRUE@ Sico2Elmer-res.$(OBJEXT)
SC2Elmer_OBJECTS = $(am_SC2Elmer_OBJECTS)
SC2Elmer_LDADD = $(LDADD)
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
......@@ -329,7 +329,10 @@ BINARIES = AdvectionDiffusion$(SHL_EXT) \
SteadyPhaseChange$(SHL_EXT) \
TransientPhaseChange$(SHL_EXT) \
MagnetoDynamics$(SHL_EXT) \
NonphysicalMeshSolve$(SHL_EXT)
NonphysicalMeshSolve$(SHL_EXT) \
DivergenceSolver$(SHL_EXT) \
RichardsSolver$(SHL_EXT) \
StructuredFlowLine$(SHL_EXT)
SOLVEROBJS = \
NavierStokes$(OBJ_EXT) \
......@@ -433,6 +436,7 @@ EXTRA_DIST = \
DiffuseConvectiveGeneralAnisotropic.src \
DirectSolve.src \
DistanceSolve.src \
DivergenceSolver.src \
EigenSolve.src \
ElasticSolve.src \
ElectricForce.src \
......@@ -512,6 +516,7 @@ EXTRA_DIST = \
ResultToPost.src \
ResultToResult.src \
ReynoldsSolver.src \
RichardsSolver.src \
RigidBodyReduction.src \
RigidMeshMapper.src \
SaveData.src \
......@@ -543,6 +548,7 @@ EXTRA_DIST = \
Stress.src \
StressGeneral.src \
StressSolve.src \
StucturedFlowLine.src \
StructuredMeshMapper.src \
TimeIntegrate.src \
TransportEquation.src \
......@@ -728,8 +734,8 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
mkid -fID $$unique
tags: TAGS
......@@ -754,8 +760,8 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
......@@ -765,12 +771,13 @@ ctags: CTAGS
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$tags $$unique
......@@ -951,6 +958,7 @@ DiffuseConvectiveAnisotropic.$(OBJEXT): DiffuseConvectiveAnisotropic.f90 Materia
DiffuseConvectiveGeneralAnisotropic.$(OBJEXT): DiffuseConvectiveGeneralAnisotropic.f90 MaterialModels.$(OBJEXT) Differentials.$(OBJEXT) Integration.$(OBJEXT)
DirectSolve.$(OBJEXT): DirectSolve.f90 SParIterGlobals.$(OBJEXT) BandMatrix.$(OBJEXT) Lists.$(OBJEXT) SParIterSolver.$(OBJEXT) CRSMatrix.$(OBJEXT) Types.$(OBJEXT)
DistanceSolve.$(OBJEXT): DistanceSolve.f90 DefUtils.$(OBJEXT) LinearAlgebra.$(OBJEXT)
DivergenceSolver.$(OBJEXT): DivergenceSolver.f90 DefUtils.$(OBJEXT) CoordinateSystems.$(OBJEXT)
DivProjection.$(OBJEXT): DivProjection.f90 DefUtils.$(OBJEXT) ElementUtils.$(OBJEXT) SolverUtils.$(OBJEXT)
EigenSolve.$(OBJEXT): EigenSolve.f90 CRSMatrix.$(OBJEXT) IterSolve.$(OBJEXT) ElementUtils.$(OBJEXT) Multigrid.$(OBJEXT) Types.$(OBJEXT)
ElasticSolve.$(OBJEXT): ElasticSolve.f90 MaterialModels.$(OBJEXT) DefUtils.$(OBJEXT) Integration.$(OBJEXT) LinearAlgebra.$(OBJEXT) Adaptive.$(OBJEXT) Types.$(OBJEXT)
......@@ -994,6 +1002,7 @@ Lists.$(OBJEXT): Lists.f90 GeneralUtils.$(OBJEXT) Messages.$(OBJEXT) PElementMap
LUDecomposition.$(OBJEXT): LUDecomposition.f90 Types.$(OBJEXT)
MagneticSolve.$(OBJEXT): MagneticSolve.f90 MaxwellGeneral.$(OBJEXT) Maxwell.$(OBJEXT) Differentials.$(OBJEXT) DefUtils.$(OBJEXT) MaxwellAxiS.$(OBJEXT)
MagneticW1Solve.$(OBJEXT): MagneticW1Solve.f90 Differentials.$(OBJEXT) DirectSolve.$(OBJEXT) ElementUtils.$(OBJEXT) Integration.$(OBJEXT) Lists.$(OBJEXT) BandwidthOptimize.$(OBJEXT) IterSolve.$(OBJEXT) FreeSurface.$(OBJEXT) ElementDescription.$(OBJEXT) CoordinateSystems.$(OBJEXT) TimeIntegrate.$(OBJEXT) Types.$(OBJEXT) SolverUtils.$(OBJEXT)
MagnetoDynamics.$(OBJEXT): MagnetoDynamics.f90 DefUtils.$(OBJEXT)
MainUtils.$(OBJEXT): MainUtils.f90 DefUtils.$(OBJEXT) ModelDescription.$(OBJEXT) Types.$(OBJEXT) SolverUtils.$(OBJEXT)
MaterialModels.$(OBJEXT): MaterialModels.f90 DefUtils.$(OBJEXT) ModelDescription.$(OBJEXT) Types.$(OBJEXT)
MaxwellAxiS.$(OBJEXT): MaxwellAxiS.f90 ElementDescription.$(OBJEXT) Integration.$(OBJEXT) Types.$(OBJEXT)
......@@ -1029,6 +1038,7 @@ ResultOutputSolve.$(OBJEXT): ResultOutputSolve.f90 DefUtils.$(OBJEXT) MeshUtils.
ResultToPost.$(OBJEXT): ResultToPost.f90 MainUtils.$(OBJEXT)
ResultToResult.$(OBJEXT): ResultToResult.f90 SParIterGlobals.$(OBJEXT) ModelDescription.$(OBJEXT) Integration.$(OBJEXT) Lists.$(OBJEXT) SParIterSolver.$(OBJEXT) ElementDescription.$(OBJEXT) CoordinateSystems.$(OBJEXT) SParIterComm.$(OBJEXT) MainUtils.$(OBJEXT) Types.$(OBJEXT) Interpolation.$(OBJEXT)
ReynoldsSolver.$(OBJEXT): ReynoldsSolver.f90 DefUtils.$(OBJEXT) Integration.$(OBJEXT) Lists.$(OBJEXT) ElementDescription.$(OBJEXT) CoordinateSystems.$(OBJEXT) Types.$(OBJEXT) SolverUtils.$(OBJEXT)
RichardsSolver.$(OBJEXT): RichardsSolver.f90 DefUtils.$(OBJEXT) CoordinateSystems.$(OBJEXT) Types.$(OBJEXT) SolverUtils.$(OBJEXT)
RigidBodyReduction.$(OBJEXT): RigidBodyReduction.f90 DefUtils.$(OBJEXT) GeneralUtils.$(OBJEXT) Integration.$(OBJEXT) Lists.$(OBJEXT) CRSMatrix.$(OBJEXT) Types.$(OBJEXT) SolverUtils.$(OBJEXT)
RigidMeshMapper.$(OBJEXT): RigidMeshMapper.f90 ParallelUtils.$(OBJEXT) DefUtils.$(OBJEXT) ElementUtils.$(OBJEXT) Lists.$(OBJEXT) ElementDescription.$(OBJEXT) CoordinateSystems.$(OBJEXT) Types.$(OBJEXT)
SaveData.$(OBJEXT): SaveData.f90 DefUtils.$(OBJEXT) ElementUtils.$(OBJEXT) Integration.$(OBJEXT) Lists.$(OBJEXT) BandwidthOptimize.$(OBJEXT) MeshUtils.$(OBJEXT) ElementDescription.$(OBJEXT) SolverUtils.$(OBJEXT) Types.$(OBJEXT) Interpolation.$(OBJEXT)
......@@ -1051,7 +1061,6 @@ SparseMatrix.$(OBJEXT): SparseMatrix.f90 GeneralUtils.$(OBJEXT)
SSTKomega.$(OBJEXT): SSTKomega.f90 DefUtils.$(OBJEXT) MaterialModels.$(OBJEXT)
StatCurrentSolve.$(OBJEXT): StatCurrentSolve.f90 DefUtils.$(OBJEXT) Differentials.$(OBJEXT)
StatElecSolve.$(OBJEXT): StatElecSolve.f90 ElementUtils.$(OBJEXT) DefUtils.$(OBJEXT) Differentials.$(OBJEXT) Integration.$(OBJEXT) Lists.$(OBJEXT) ElementDescription.$(OBJEXT) Adaptive.$(OBJEXT) Types.$(OBJEXT) SolverUtils.$(OBJEXT)
MagnetoDynamics.$(OBJEXT): MagnetoDynamics.f90 DefUtils.$(OBJEXT)
StatMagSolve.$(OBJEXT): StatMagSolve.f90 DefUtils.$(OBJEXT) Differentials.$(OBJEXT) Integration.$(OBJEXT) ElementDescription.$(OBJEXT) Types.$(OBJEXT)
SteadyPhaseChange.$(OBJEXT): SteadyPhaseChange.f90 DefUtils.$(OBJEXT)
Stokes.$(OBJEXT): Stokes.f90 DefUtils.$(OBJEXT) ElementUtils.$(OBJEXT) LinearAlgebra.$(OBJEXT) SolverUtils.$(OBJEXT)
......@@ -1059,6 +1068,7 @@ StreamSolver.$(OBJEXT): StreamSolver.f90 DefUtils.$(OBJEXT)
StressGeneral.$(OBJEXT): StressGeneral.f90 ElementDescription.$(OBJEXT) CoordinateSystems.$(OBJEXT) Integration.$(OBJEXT)
StressSolve.$(OBJEXT): StressSolve.f90 Stress.$(OBJEXT) DefUtils.$(OBJEXT) StressGeneral.$(OBJEXT) CoordinateSystems.$(OBJEXT) Adaptive.$(OBJEXT) Types.$(OBJEXT)
Stress.$(OBJEXT): Stress.f90 ElementUtils.$(OBJEXT) ElementDescription.$(OBJEXT) Integration.$(OBJEXT) Lists.$(OBJEXT)
StructuredFlowLine.$(OBJEXT): StructuredFlowLine.f90 DefUtils.$(OBJEXT) CoordinateSystems.$(OBJEXT)
StructuredMeshMapper.$(OBJEXT): StructuredMeshMapper.f90 DefUtils.$(OBJEXT) CoordinateSystems.$(OBJEXT)
StructuredProjectToPlane.$(OBJEXT): StructuredProjectToPlane.f90 DefUtils.$(OBJEXT) CoordinateSystems.$(OBJEXT)
TimeIntegrate.$(OBJEXT): TimeIntegrate.f90 Lists.$(OBJEXT) Types.$(OBJEXT)
......
......@@ -324,9 +324,10 @@ CONTAINS
END IF
mesh_dim = 0
IF ( ANY( Mesh % Nodes % x /= Mesh % Nodes % x(1) ) ) mesh_dim=mesh_dim+1