36 REAL(kind=wp) :: tempcval
37 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: amounttoreceive, amounttosend
39 REAL(kind=wp),
ALLOCATABLE,
DIMENSION(:) :: bufsnd
42 REAL(kind=wp),
DIMENSION(1:3,1:8) :: ri = reshape( &
43 (/-0.577350269189626,-0.577350269189626,-0.577350269189626, &
44 0.577350269189626,-0.577350269189626,-0.577350269189626, &
45 0.577350269189626, 0.577350269189626,-0.577350269189626, &
46 -0.577350269189626, 0.577350269189626,-0.577350269189626, &
47 -0.577350269189626,-0.577350269189626, 0.577350269189626, &
48 0.577350269189626,-0.577350269189626, 0.577350269189626, &
49 0.577350269189626, 0.577350269189626, 0.577350269189626, &
50 -0.577350269189626, 0.577350269189626, 0.577350269189626/),(/3,8/) )
55 IF(myid == 0)
print*,
'CONSTRUCTING THE CAPACITANCE MATRIX'
56 CALL mpi_barrier(rocstar_communicator,ierr)
58 IF ( myid == 0)
print*,
'RocTherm, GlbThermCap :: before LocThermCap'
61 CALL
locthermcap_v3d8(global%NumElVol,global%NumNp,global%NumMatVol,global%MeshCoor,global%ElConnVol,global%MatIdVol,ri,global%rho,global%Cp,global%ElConnVol)
63 IF(myid == 0)
print*,
'FINISHED CONSTRUCTING THE CAPACITANCE MATRIX'
64 CALL mpi_barrier(rocstar_communicator,ierr)
69 ALLOCATE(cval_c(1:nnz_c))
70 ALLOCATE(aval_c(1:nnz_c))
71 ALLOCATE(rp_c(1:gnumnp+1))
80 IF(myid == 0)
print*,
'COMMUNICATING CAPACITANCE MATRIX TO ALL PROCESSES'
86 CALL mpi_barrier(rocstar_communicator,ierr)
88 ALLOCATE(req_rcv(1:nprocs))
89 ALLOCATE(req_snd(1:nprocs))
90 ALLOCATE(stat_snd(1:mpi_status_size,1:nprocs))
91 ALLOCATE(stat_rcv(1:mpi_status_size,1:nprocs))
95 DO j = 1, mpi_status_size
103 ALLOCATE(amounttoreceive(1:numcommprocsfrom1))
104 DO i = 1, numcommprocsfrom1
105 CALL mpi_irecv(amounttoreceive(
i),1, &
106 mpi_integer,commprocsfrom1(
i),10,rocstar_communicator, &
109 print*,
'RocTherm, GlbCap :: after MPI_IRECV',myid
112 ALLOCATE(amounttosend(1:numcommprocs1))
113 DO i = 1, numcommprocs1
116 DO j = 1, numcommnodes1(
i)
119 inode = local2global(commnodes1(
i,
j))
131 IF (tempcval /= 0.0)
THEN
132 counter = counter + 1
138 amounttosend(
i) = counter
140 CALL mpi_send(amounttosend(
i),1,mpi_integer, &
141 commprocs1(
i),10,rocstar_communicator,ierr)
144 CALL mpi_waitall(nprocs,req_rcv,stat_rcv,ierr)
151 CALL mpi_barrier(rocstar_communicator,ierr)
152 ALLOCATE(frmproc(1:numcommprocsfrom1))
153 DO i = 1, numcommprocsfrom1
154 ALLOCATE(frmproc(
i)%rcvbuf(1:3*amounttoreceive(
i)))
155 CALL mpi_irecv(frmproc(
i)%rcvbuf(1),3*amounttoreceive(
i), &
156 mpi_double_precision,commprocsfrom1(
i),10,rocstar_communicator, &
162 DO i = 1, numcommprocs1
163 ALLOCATE(bufsnd(3*amounttosend(
i)))
167 DO j = 1, numcommnodes1(
i)
170 inode = local2global(commnodes1(
i,
j))
181 IF (tempcval /= 0.0)
THEN
182 counter = counter + 1
183 bufsnd(3*counter-2) =
inode
184 bufsnd(3*counter-1) =
jnode
185 bufsnd(3*counter) = tempcval
190 CALL mpi_send(bufsnd,3*amounttosend(
i),mpi_double_precision, &
191 commprocs1(
i),10,rocstar_communicator,ierr)
196 CALL mpi_waitall(nprocs,req_rcv,stat_rcv,ierr)
204 IF(myid == 0)
print*,
'FINISHED COMMUNICATING CAPACITANCE MATRIX TO ALL PROCESSES'
208 DO i = 1, numcommprocsfrom1
209 DO j = 1, amounttoreceive(
i)
211 int(frmproc(
i)%rcvbuf(3*
j-2)),int(frmproc(
i)%rcvbuf(3*
j-1)),frmproc(
i)%rcvbuf(3*
j))
215 IF (nnz_temp /= nnz_c)
THEN
216 DEALLOCATE(cval_c,aval_c)
217 ALLOCATE(cval_c(nnz_temp),aval_c(nnz_temp))
223 DEALLOCATE(rp_temp,cval_temp,aval_temp)
227 DEALLOCATE(amounttoreceive)
228 DEALLOCATE(amounttosend)
232 CALL
comp_row_resize(gnumnp,gnumnp,nnz_c,1,rp_c,cval_c,aval_c,nstart_ktc,nrows_ktc)
233 DEALLOCATE(rp_c,cval_c,aval_c)
234 ALLOCATE(rp_c(1:nrows_ktc+1))
235 ALLOCATE(cval_c(1:nnz_temp))
236 ALLOCATE(aval_c(1:nnz_temp))
241 DEALLOCATE(rp_temp,cval_temp,aval_temp)
**********************************************************************Rocstar Simulation Suite Illinois Rocstar LLC All rights reserved ****Illinois Rocstar LLC IL **www illinoisrocstar com **sales illinoisrocstar com WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **Arising OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE **********************************************************************INTERFACE SUBROUTINE inode
subroutine glbthermcap(global)
subroutine locthermcap_v3d8(NumEl, NumNP, NumMat, coor, nodes, MatType, ri, rho, cap, ElConnVol)
subroutine comp_row_getval(ndim, nrows, nnz, nstart, rp, cval, aval, ipos, jpos, val)
subroutine comp_row_resize(ndim, nrows, nnz, nstart, rp, cval, aval, newnstart, newnrows)
**********************************************************************Rocstar Simulation Suite Illinois Rocstar LLC All rights reserved ****Illinois Rocstar LLC IL **www illinoisrocstar com **sales illinoisrocstar com WITHOUT WARRANTY OF ANY **EXPRESS OR INCLUDING BUT NOT LIMITED TO THE WARRANTIES **OF FITNESS FOR A PARTICULAR PURPOSE AND **NONINFRINGEMENT IN NO EVENT SHALL THE CONTRIBUTORS OR **COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER WHETHER IN AN ACTION OF TORT OR **Arising OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE **USE OR OTHER DEALINGS WITH THE SOFTWARE **********************************************************************INTERFACE SUBROUTINE jnode
subroutine comp_row_addval(ndim, nrows, nnz, nstart, rp, cval, aval, ipos, jpos, val)