aboutsummaryrefslogtreecommitdiff
path: root/src/GHExtension.c
blob: 5e1e27f3b43e383f2a90541a0a1713d8cf47b4b8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
 /*@@
   @file      GHExtension.c
   @date      Fri May 21 1999
   @author    Thomas Radke
   @desc 
   IOFlexIO GH extension stuff.
   @enddesc 
   @history
   @hauthor Thomas Radke @hdate May 21 1999
   @hdesc Just copied from thorn IO.
   @endhistory
 @@*/

/*#define DEBUG_IO*/

#include <stdlib.h>
#include <string.h>
#include <stdio.h>

#include "flesh.h"
#include "Groups.h"
#include "Comm.h"
#include "Misc.h"
#include "GHExtensions.h"
#include "cctk_parameters.h"
#ifdef	CACTUSPUGH_PUGH
#include "CactusPUGH/PUGH/src/include/pugh.h"
#endif
#include "CactusBase/IOUtil/src/ioGH.h"
#include "ioFlexGH.h"


void *IOFlexIO_SetupGH (tFleshConfig *config, int convergence_level, cGH *GH)
{
  int i, numvars;
  flexioGH *newGH;

  numvars = CCTK_NumVars ();

  newGH = (flexioGH *) malloc (sizeof (flexioGH));
  newGH->IO_2Dnum = (int *) malloc (numvars * sizeof (int));
  newGH->IO_3Dnum = (int *) malloc (numvars * sizeof (int));
  newGH->IO_2Dlast = (int *) malloc (numvars * sizeof (int));
  newGH->IO_3Dlast = (int *) malloc (numvars * sizeof (int));

  newGH->IEEEfile_2D = (IOFile **) malloc (numvars * sizeof (IOFile *));
  for (i = 0; i < numvars; i++)
    newGH->IEEEfile_2D [i] = (IOFile *) malloc (3 * sizeof (IOFile));

  newGH->IEEEfname_3D = (char **) malloc (numvars * sizeof (char **));

  for (i = 0; i < numvars; i++)
    newGH->IEEEfname_3D [i] = (char *) malloc (512 * sizeof (char));
  newGH->IEEEfile_3D = (IOFile *) malloc (numvars * sizeof (IOFile));

  return (newGH);
}

int IOFlexIO_InitGH (cGH *GH)
{
  DECLARE_CCTK_PARAMETERS
  int i;
  ioGH *ioUtilGH;
  flexioGH *myGH;

  /* get the handles for IOUtil and IOFlexIO extensions */
  ioUtilGH = (ioGH *) GH->extensions [CCTK_GHExtensionHandle ("IO")];
  myGH = (flexioGH *) GH->extensions [CCTK_GHExtensionHandle ("IOFlexIO")];

  InitIONum (myGH->IO_2Dnum, output2D);
  InitIONum (myGH->IO_3Dnum, output3D);

  for (i=0; i<CCTK_NumVars(); i++)
    myGH->IO_2Dlast [i] = myGH->IO_3Dlast [i] = -1;

  myGH->reuse_fh = reuse_fh;

  /* Only have reuse for chunked data */
  if (myGH->reuse_fh && ! ioUtilGH->unchunked) {
    CCTK_Warn (2, "Cannot reuse handles with unchunked data. "
                  "Ignoring parameter 'reuse_fh'");
    myGH->reuse_fh = 0;
  }

  return (0);
}

int IOFlexIO_rfrTraverseGH (cGH *GH, int rfrpoint)
{
  return 0;
}