Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
SWIFTsim
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Deploy
Releases
Model registry
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
SWIFT
SWIFTsim
Commits
5ca56fa8
Commit
5ca56fa8
authored
8 years ago
by
Pedro Gonnet
Browse files
Options
Downloads
Patches
Plain Diff
first stab at the logger, which copies particle data to a dump.
parent
67a7a2da
Branches
Branches containing commit
Tags
Tags containing commit
1 merge request
!299
Particle logger
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
src/Makefile.am
+3
-3
3 additions, 3 deletions
src/Makefile.am
src/logger.c
+86
-0
86 additions, 0 deletions
src/logger.c
src/logger.h
+78
-0
78 additions, 0 deletions
src/logger.h
with
167 additions
and
3 deletions
src/Makefile.am
+
3
−
3
View file @
5ca56fa8
...
...
@@ -44,7 +44,7 @@ include_HEADERS = space.h runner.h queue.h task.h lock.h cell.h part.h const.h \
common_io.h single_io.h multipole.h map.h tools.h partition.h clocks.h parser.h
\
physical_constants.h physical_constants_cgs.h potential.h version.h
\
hydro_properties.h riemann.h threadpool.h cooling.h cooling_struct.h sourceterms.h
\
sourceterms_struct.h statistics.h memswap.h profiler.h dump.h
sourceterms_struct.h statistics.h memswap.h profiler.h dump.h
logger.h
# Common source files
AM_SOURCES
=
space.c runner.c queue.c task.c cell.c engine.c
\
...
...
@@ -53,7 +53,7 @@ AM_SOURCES = space.c runner.c queue.c task.c cell.c engine.c \
kernel_hydro.c tools.c part.c partition.c clocks.c parser.c
\
physical_constants.c potential.c hydro_properties.c
\
runner_doiact_fft.c threadpool.c cooling.c sourceterms.c
\
statistics.c profiler.c dump.c
statistics.c profiler.c dump.c
logger.c
# Include files for distribution, not installation.
nobase_noinst_HEADERS
=
align.h approx_math.h atomic.h cycle.h error.h inline.h kernel_hydro.h kernel_gravity.h
\
...
...
@@ -82,7 +82,7 @@ nobase_noinst_HEADERS = align.h approx_math.h atomic.h cycle.h error.h inline.h
cooling/none/cooling.h cooling/none/cooling_struct.h
\
cooling/const_du/cooling.h cooling/const_du/cooling_struct.h
\
cooling/const_lambda/cooling.h cooling/const_lambda/cooling_struct.h
\
memswap.h dump.h
memswap.h dump.h
logger.h
# Sources and flags for regular library
...
...
This diff is collapsed.
Click to expand it.
src/logger.c
0 → 100644
+
86
−
0
View file @
5ca56fa8
/*******************************************************************************
* This file is part of SWIFT.
* Copyright (c) 2017 Pedro Gonnet (pedro.gonnet@durham.ac.uk)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
******************************************************************************/
/* Config parameters. */
#include
"../config.h"
/* Some standard headers. */
#include
<float.h>
#include
<limits.h>
#include
<math.h>
#include
<stdlib.h>
#include
<string.h>
/* This object's header. */
#include
"logger.h"
/* Local headers. */
#include
"atomic.h"
#include
"dump.h"
#include
"error.h"
#include
"part.h"
/**
* @brief Compute the size of a message given its mask.
*/
int
logger_size
(
unsigned
int
mask
)
{
/* Start with 8 bytes for the header. */
int
size
=
8
;
/* Is this a particle or a timestep? */
if
(
mask
&
logger_mask_timestamp
)
{
/* The timestamp should not contain any other bits. */
if
(
mask
!=
logger_mask_timestamp
)
error
(
"Timestamps should not include any other data."
);
/* A timestamp consists of an unsigned long long int. */
size
+=
sizeof
(
unsigned
long
long
int
);
}
else
{
/* Particle position as three doubles. */
if
(
mask
&
logger_mask_x
)
size
+=
3
*
sizeof
(
double
);
/* Particle velocity as three floats. */
if
(
mask
&
logger_mask_v
)
size
+=
3
*
sizeof
(
float
);
/* Particle accelleration as three floats. */
if
(
mask
&
logger_mask_a
)
size
+=
3
*
sizeof
(
float
);
/* Particle internal energy as a single float. */
if
(
mask
&
logger_mask_u
)
size
+=
sizeof
(
float
);
/* Particle smoothing length as a single float. */
if
(
mask
&
logger_mask_h
)
size
+=
sizeof
(
float
);
/* Particle density as a single float. */
if
(
mask
&
logger_mask_rho
)
size
+=
sizeof
(
float
);
/* Particle constants, which is a bit more complicated. */
if
(
mask
&
logger_mask_rho
)
{
size
+=
sizeof
(
float
)
+
// mass
sizeof
(
long
long
);
// id
}
}
return
size
;
}
This diff is collapsed.
Click to expand it.
src/logger.h
0 → 100644
+
78
−
0
View file @
5ca56fa8
/*******************************************************************************
* This file is part of SWIFT.
* Copyright (c) 2017 Pedro Gonnet (pedro.gonnet@durham.ac.uk)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
******************************************************************************/
#ifndef SWIFT_LOGGER_H
#define SWIFT_LOGGER_H
/* Includes. */
#include
"dump.h"
#include
"part.h"
/**
* Logger entries contain messages representing the particle data at a given
* point in time during the simulation.
*
* The logger messages always start with an 8-byte header structured as
* follows:
*
* data: [ mask | offset ]
* byte: [ 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 ]
*
* I.e. a first "mask" byte followed by 7 "offset" bytes. The mask contains
* information on what kind of data is packed after the header. The mask
* bits correspond to the following data:
*
* bit | name | size | comment
* -------------------------------------------------------------------------
* 0 | x | 24 | The particle position, in absolute coordinates,
* | | | stored as three doubles.
* 1 | v | 12 | Particle velocity, stored as three floats.
* 2 | a | 12 | Particle acceleration, stored as three floats.
* 3 | u | 4 | Particle internal energy, stored as a single float.
* 4 | h | 4 | Particle smoothing length, stored as a single float.
* 5 | rho | 4 | Particle density, stored as a single float.
* 6 | consts | ??? | Particle constants, e.g. mass, ID, etc...
* 7 | ts | 8 | Timestamp, not associated with a particle, just
* | | | marks the transitions from one timestep to another.
*
* There is no distinction between gravity and SPH particles.
*
* The offset refers to the relative location of the previous message for the
* same particle or for the previous timestamp (if mask bit 7 is set). I.e.
* the previous log entry will be at the address of the current mask byte minus
* the unsigned value stored in the offset. An offset of zero indicates that
* this is the first message for the given particle/timestamp.
*/
/* Some constants. */
#define logger_mask_x 1
#define logger_mask_v 2
#define logger_mask_a 4
#define logger_mask_u 8
#define logger_mask_h 16
#define logger_mask_rho 32
#define logger_mask_consts 64
#define logger_mask_timestamp 128
/* Function prototypes. */
int
logger_size
(
unsigned
int
mask
);
void
logger_log_part
(
struct
part
*
p
,
struct
xpart
*
xp
,
unsigned
int
mask
,
struct
dump
*
dump
);
void
logger_log_gpart
(
struct
gpart
*
p
,
struct
xpart
*
xp
,
unsigned
int
mask
,
struct
dump
*
dump
);
void
logger_lot_timestamp
(
unsigned
long
long
int
timestamp
,
struct
dump
*
dump
);
#endif
/* SWIFT_LOGGER_H */
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment