87 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
88#include "implicit_f.inc"
109 INTEGER,
DIMENSION(NPARG, NGROUP),
INTENT(IN) :: IPARG
110 INTEGER,
INTENT(IN) :: NRHS
115 INTEGER :: MAT_NZ, NG, II, NEL, ITY, MATLAW, NFT, I, JJ, KK
116 INTEGER :: GLOB_DIM, MAX_ID, IAD, LGTH
125 matlaw = iparg(1, ng)
126 IF (matlaw == 151)
THEN
133 iad = ale_connect%EE_CONNECT%IAD_CONNECT(i)
134 lgth = ale_connect%EE_CONNECT%IAD_CONNECT(i+1)-ale_connect%EE_CONNECT%IAD_CONNECT(i)
136 kk = ale_connect%EE_CONNECT%CONNECTED(iad + jj - 1)
145 CALL this%MAT%MATRIX_CREATE(mat_nz)
147 CALL this%RHS%CREATE(nrhs * numels)
150 max_id = maxval(ale_connect%IDGLOB%ID(1:numels + nsvois))
153 CALL mpi_allreduce(max_id, glob_dim, 1, mpi_int, mpi_max, spmd_comm_world, ierr)
157 ALLOCATE(this%SOL(3 * glob_dim))
159 this%LINEAR_SOLVER => linsol
160 CALL this%LINEAR_SOLVER%INIT_SOLVER(glob_dim)
162 CALL this%LINEAR_SOLVER%SET_RHS(3, this%RHS)
163 CALL this%LINEAR_SOLVER%SET_MATRIX(this%MAT)
165 this%OUTLET_FLAGGED = .false.
167 ALLOCATE(this%NU(numels + nsvois))
168 this%NU(1:numels + nsvois) = zero
169 ALLOCATE(this%FLAG_OUTLET(6 * numels))
170 this%FLAG_OUTLET(1:6 * numels) = 0
172 ALLOCATE(this%NU(numelq + numeltg + nqvois + ntgvois))
173 this%NU(1:numelq + numeltg + nqvois + ntgvois) = zero
174 ALLOCATE(this%FLAG_OUTLET(4 * numelq + 3 * numeltg))
175 this%FLAG_OUTLET(1:4 * numelq + 3 * numeltg) = 0
subroutine mpi_allreduce(sendbuf, recvbuf, cnt, datatype, operation, comm, ierr)