blob: 226ecb5faf89299e11cb678439f054c412a6ba8f (
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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
|
/*@@
@file Output.c
@date July 6 2003
@author Gabrielle Allen
@desc
Functions to deal with making TimerReport an IO method
@enddesc
@version $Id$
@@*/
#include "cctk.h"
#include "cctk_Parameters.h"
#include "cctk_Arguments.h"
#include "cctk_Schedule.h"
static const char *rcsid = "$Header$";
CCTK_FILEVERSION(CactusUtils_TimerReport_Output_c)
/********************************************************************
********************* Local Data Types ***********************
********************************************************************/
/********************************************************************
********************* Local Routine Prototypes *********************
********************************************************************/
int TimerReport_TimeForOutput (const cGH *GH, int vindex);
/********************************************************************
********************* Other Routine Prototypes *********************
********************************************************************/
/********************************************************************
********************* Local Data *****************************
********************************************************************/
/********************************************************************
******************** External Routines ************************
********************************************************************/
void TimerReport_Startup (void);
/*@@
@routine TimerReport_Startup
@date Sun 6th July 2003
@author Gabrielle Allen
@desc
The startup registration routine for TimerReport.
Registers TimerReport as an IO Method and provide the
only necessary method TimeForOutput
@enddesc
@calls CCTK_RegisterGHExtensionSetupGH
@@*/
void TimerReport_Startup (void)
{
int handle;
handle = CCTK_RegisterIOMethod ("TimerReport");
CCTK_RegisterIOMethodTimeToOutput (handle, TimerReport_TimeForOutput);
}
/********************************************************************
******************** Internal Routines ************************
********************************************************************/
int TimerReport_TimeForOutput (const cGH *GH, int vindex);
/*@@
@routine TimerReport_TimeForOutput
@date July 6 2003
@author Gabrielle Allen
@desc
Decides if it is time to output timer information
@enddesc
@calls CheckSteerableParameters
@var GH
@vdesc Pointer to CCTK GH
@vtype const cGH *
@vio in
@endvar
@var vindex
@vdesc index of variable to check for output
@vtype int
@vio in
@endvar
@returntype int
@returndesc
true/false (1 or 0) if analysis should be called
@endreturndesc
@@*/
int TimerReport_TimeForOutput (const cGH *GH, int vindex)
{
DECLARE_CCTK_PARAMETERS
int retval=0;
if (vindex==CCTK_VarIndex("timerreport::triggervar"))
{
if (next || out_at == GH->cctk_iteration)
{
retval = 1;
}
else if (out_every)
{
if (GH->cctk_iteration%out_every == 0)
{
retval = 1;
}
}
}
return retval;
}
/*@@
@routine TimerReport_Output
@date July 6 2003
@author Gabrielle Allen
@desc
Output the timer table
@enddesc
@calls
@@*/
void TimerReport_Output(CCTK_ARGUMENTS)
{
DECLARE_CCTK_ARGUMENTS
DECLARE_CCTK_PARAMETERS
CCTK_SchedulePrintTimes(NULL);
if (next)
{
CCTK_ParameterSet("next", CCTK_THORNSTRING, "no");
}
return;
}
|