aboutsummaryrefslogtreecommitdiff
path: root/src/pGF_FinishRecv.c
diff options
context:
space:
mode:
authorallen <allen@b61c5cb5-eaca-4651-9a7a-d64986f99364>2000-04-03 21:45:12 +0000
committerallen <allen@b61c5cb5-eaca-4651-9a7a-d64986f99364>2000-04-03 21:45:12 +0000
commit3d5d36496a7f8df6d1b28c823cc739faa9c9e3fd (patch)
tree58e63914497efef396898189e43981a8d27346df /src/pGF_FinishRecv.c
parent39c59ca314108602de8128628d5d517327418375 (diff)
Removing old files with pGFs
git-svn-id: http://svn.cactuscode.org/arrangements/CactusPUGH/PUGH/trunk@192 b61c5cb5-eaca-4651-9a7a-d64986f99364
Diffstat (limited to 'src/pGF_FinishRecv.c')
-rw-r--r--src/pGF_FinishRecv.c230
1 files changed, 0 insertions, 230 deletions
diff --git a/src/pGF_FinishRecv.c b/src/pGF_FinishRecv.c
deleted file mode 100644
index e34e9bf..0000000
--- a/src/pGF_FinishRecv.c
+++ /dev/null
@@ -1,230 +0,0 @@
- /*@@
- @file pGF_FinishRecv.c
- @date Thu Apr 3 11:37:28 1997
- @author Paul Walker
- @desc
- The routine which finalize the MPI recieves for a grid
- function. Critically linked with @seefile pGF_PostRecv.c
- and @seefile pGF_PostSend.c
- @enddesc
- @version $Header$
- @@*/
-
-#include <stdio.h>
-
-#include "cctk.h"
-#include "pugh.h"
-
-void pGF_FinishRecv3(pGH *GH,pGF *GF,int dir);
-void pGF_FinishRecv1(pGH *GH,pGF *GF,int dir);
-
-static char *rcsid = "$Header$";
-
- /*@@
- @routine pGF_FinishRecv
- @date Thu Apr 3 11:38:07 1997
- @author Paul Walker
- @desc
- This routine finalizes the MPI communication through a face.
- It is crucially linked with @seeroutine pGF_PostRecv and
- @seeroutine pGF_PostSend.
- <p>
- <b>Important!</b>
- This routine does <b>not</b> wait on the recieves.
- Before it is called, you must do the MPI_Wait or
- else you will not get the right answer. for an
- example of this, see @seeroutine SyncGroupGF or
- @seeroutine SyncGroupGF
- @enddesc
- @calledby SyncGroupGF
- @history
- @hdate Nov 4 1998 @hauthor Gabrielle Allen
- @hdesc Allow for forced synchronization of all GFs with storage
- @endhistory
-@@*/
-
-void pGF_FinishRecv(pGH *GH, pGF *GF, int dir)
-{
-#ifdef MPI
-
- /* Return if GF has no storage */
- if (!(GF->storage)) return;
-
- /* Return if communication not required and no forced synchronisation */
- if (!(GH->forceSync || GF->docomm[dir])) return;
-
- if (GH->neighbors[GH->myproc][dir] >= 0)
- {
- /* Here wait one at a time, so the others can arrive while
- we copy the data back in... */
-
-#ifdef DEBUG_PRINT
- printf ("FINISHRECV: GF %s Side %d Proc %d request %d\n",
- GF->name,dir,GH->myproc,GF->rreq[dir]);
-#endif
-
- if (GH->dim == 3)
- {
- pGF_FinishRecv3(GH,GF,dir);
- }
- else if (GH->dim == 1)
- {
- pGF_FinishRecv1(GH,GF,dir);
- }
- else
- {
- CCTK_WARN(0,"PUGH does not support this dimension grid");
- }
-
- }
-
-#endif
-}
-
-void pGF_FinishRecv3(pGH *GH,pGF *GF,int dir)
-{
- int istart,iend,jstart,jend,kstart,kend;
- int ii,jj,kk,xx;
- CCTK_CHAR *char_data;
- CCTK_INT *int_data;
- CCTK_REAL *real_data;
- CCTK_COMPLEX *complex_data;
-
- /* Copy buffer onto GF Storage */
- istart = GH->ghosts[GF->stagger][0][dir][0];
- iend = GH->ghosts[GF->stagger][1][dir][0];
- jstart = GH->ghosts[GF->stagger][0][dir][1];
- jend = GH->ghosts[GF->stagger][1][dir][1];
- kstart = GH->ghosts[GF->stagger][0][dir][2];
- kend = GH->ghosts[GF->stagger][1][dir][2];
-
- /* Great now copy. Note ordering is just link in PostSend */
- xx=0;
- switch (GF->vtype)
- {
- case CCTK_VARIABLE_CHAR:
- char_data = (CCTK_CHAR *) GF->data;
- for (kk=kstart; kk<kend; kk++)
- {
- for (jj=jstart; jj<jend; jj++)
- {
- for (ii=istart; ii<iend; ii++)
- {
- char_data [DATINDEX (GH,ii,jj,kk)] =
- ((CCTK_CHAR *) GF->recv_buffer[dir]) [xx++];
- }
- }
- }
- break;
-
- case CCTK_VARIABLE_INT:
- int_data = (CCTK_INT *) GF->data;
- for (kk=kstart; kk<kend; kk++)
- {
- for (jj=jstart; jj<jend; jj++)
- {
- for (ii=istart; ii<iend; ii++)
- {
- int_data [DATINDEX (GH,ii,jj,kk)] =
- ((CCTK_INT *) GF->recv_buffer[dir]) [xx++];
- }
- }
- }
- break;
-
- case CCTK_VARIABLE_REAL:
- real_data = (CCTK_REAL *) GF->data;
- for (kk=kstart; kk<kend; kk++)
- {
- for (jj=jstart; jj<jend; jj++)
- {
- for (ii=istart; ii<iend; ii++)
- {
- real_data [DATINDEX (GH,ii,jj,kk)] =
- ((CCTK_REAL *) GF->recv_buffer[dir]) [xx++];
- }
- }
- }
- break;
-
- case CCTK_VARIABLE_COMPLEX:
- complex_data = (CCTK_COMPLEX *) GF->data;
- for (kk=kstart; kk<kend; kk++)
- {
- for (jj=jstart; jj<jend; jj++)
- {
- for (ii=istart; ii<iend; ii++)
- {
- complex_data [DATINDEX (GH,ii,jj,kk)] =
- ((CCTK_COMPLEX *) GF->recv_buffer[dir]) [xx++];
- }
- }
- }
- break;
-
- default:
- CCTK_WARN (1, "Unsupported variable type in pGF_FinishRecv3");
- return;
- }
-}
-
-
-
-void pGF_FinishRecv1(pGH *GH,pGF *GF,int dir)
-{
- int istart,iend;
- int ii,xx;
- CCTK_CHAR *char_data;
- CCTK_INT *int_data;
- CCTK_REAL *real_data;
- CCTK_COMPLEX *complex_data;
-
- /* Copy buffer onto GF Storage */
- istart = GH->ghosts[GF->stagger][0][dir][0];
- iend = GH->ghosts[GF->stagger][1][dir][0];
-
- /* Great now copy. Note ordering is just link in PostSend */
- xx=0;
- switch (GF->vtype)
- {
- case CCTK_VARIABLE_CHAR:
- char_data = (CCTK_CHAR *) GF->data;
- for (ii=istart; ii<iend; ii++)
- {
- char_data [ii] =
- ((CCTK_CHAR *) GF->recv_buffer[dir]) [xx++];
- }
- break;
-
- case CCTK_VARIABLE_INT:
- int_data = (CCTK_INT *) GF->data;
- for (ii=istart; ii<iend; ii++)
- {
- int_data [ii] =
- ((CCTK_INT *) GF->recv_buffer[dir]) [xx++];
- }
- break;
-
- case CCTK_VARIABLE_REAL:
- real_data = (CCTK_REAL *) GF->data;
- for (ii=istart; ii<iend; ii++)
- {
- real_data [ii] =
- ((CCTK_REAL *) GF->recv_buffer[dir]) [xx++];
- }
- break;
-
- case CCTK_VARIABLE_COMPLEX:
- complex_data = (CCTK_COMPLEX *) GF->data;
- for (ii=istart; ii<iend; ii++)
- {
- complex_data [ii] =
- ((CCTK_COMPLEX *) GF->recv_buffer[dir]) [xx++];
- }
- break;
-
- default:
- CCTK_WARN (1, "Unsupported variable type in pGF_FinishRecv3");
- return;
- }
-}