Sort all includes in src/gromacs
[alexxy/gromacs.git] / src / gromacs / fileio / mdoutf.h
index 3efba386bc8d9fefbfe31de99eb3c2cf773aa686..8e241f4e3e366425ceba47533ddaa23192802f50 100644 (file)
 #ifndef GMX_FILEIO_MDOUTF_H
 #define GMX_FILEIO_MDOUTF_H
 
-#include "filenm.h"
 #include <stdio.h>
-#include "../legacyheaders/types/simple.h"
-#include "enxio.h"
-#include "gmxfio.h"
-
-typedef struct {
-    t_fileio     *fp_trn;
-    t_fileio     *fp_xtc;
-    int           xtc_prec;
-    ener_file_t   fp_ene;
-    const char   *fn_cpt;
-    gmx_bool      bKeepAndNumCPT;
-    int           eIntegrator;
-    gmx_bool      bExpanded;
-    int           elamstats;
-    int           simulation_part;
-    FILE         *fp_dhdl;
-    FILE         *fp_field;
-    int           natoms_global;
-    int           natoms_xtc;
-    gmx_groups_t *groups; /* for XTC writing */
-} gmx_mdoutf_t;
-
-gmx_mdoutf_t *init_mdoutf(int nfile, const t_filenm fnm[],
-                          int mdrun_flags,
-                          const t_commrec *cr, const t_inputrec *ir,
-                          gmx_mtop_t *top_global,
-                          const output_env_t oenv);
-/* Returns a pointer to a data structure with all output file pointers
+
+#include "gromacs/fileio/enxio.h"
+#include "gromacs/fileio/filenm.h"
+#include "gromacs/legacyheaders/network.h"
+#include "gromacs/legacyheaders/types/inputrec.h"
+#include "gromacs/legacyheaders/types/oenv.h"
+#include "gromacs/math/vectypes.h"
+#include "gromacs/timing/wallcycle.h"
+#include "gromacs/utility/basedefinitions.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct gmx_mtop_t;
+
+typedef struct gmx_mdoutf *gmx_mdoutf_t;
+
+/*! \brief Allocate and initialize object to manager trajectory writing output
+ *
+ * Returns a pointer to a data structure with all output file pointers
  * and names required by mdrun.
  */
+gmx_mdoutf_t init_mdoutf(FILE              *fplog,
+                         int                nfile,
+                         const t_filenm     fnm[],
+                         int                mdrun_flags,
+                         const t_commrec   *cr,
+                         const t_inputrec  *ir,
+                         struct gmx_mtop_t *mtop,
+                         const output_env_t oenv,
+                         gmx_wallcycle_t    wcycle);
+
+/*! \brief Getter for file pointer */
+FILE *mdoutf_get_fp_field(gmx_mdoutf_t of);
+
+/*! \brief Getter for file pointer */
+ener_file_t mdoutf_get_fp_ene(gmx_mdoutf_t of);
+
+/*! \brief Getter for file pointer */
+FILE *mdoutf_get_fp_dhdl(gmx_mdoutf_t of);
+
+/*! \brief Getter for wallcycle timer */
+gmx_wallcycle_t mdoutf_get_wcycle(gmx_mdoutf_t of);
+
+/*! \brief Close TNG files if they are open.
+ *
+ * This also measures the time it takes to close the TNG
+ * files.
+ */
+void mdoutf_tng_close(gmx_mdoutf_t of);
+
+/*! \brief Close all open output files and free the of pointer */
+void done_mdoutf(gmx_mdoutf_t of);
+
+/*! \brief Routine that writes trajectory-like frames.
+ *
+ * Writes data to trn, xtc and/or checkpoint. What is written is
+ * determined by the mdof_flags defined below. Data is collected to
+ * the master node only when necessary.
+ */
+void mdoutf_write_to_trajectory_files(FILE *fplog, t_commrec *cr,
+                                      gmx_mdoutf_t of,
+                                      int mdof_flags,
+                                      struct gmx_mtop_t *top_global,
+                                      gmx_int64_t step, double t,
+                                      t_state *state_local, t_state *state_global,
+                                      rvec *f_local, rvec *f_global);
 
-void done_mdoutf(gmx_mdoutf_t *of);
-/* Close all open output files and free the of pointer */
+#define MDOF_X            (1<<0)
+#define MDOF_V            (1<<1)
+#define MDOF_F            (1<<2)
+#define MDOF_X_COMPRESSED (1<<3)
+#define MDOF_CPT          (1<<4)
+#define MDOF_IMD          (1<<5)
 
-#define MDOF_X   (1<<0)
-#define MDOF_V   (1<<1)
-#define MDOF_F   (1<<2)
-#define MDOF_XTC (1<<3)
-#define MDOF_CPT (1<<4)
+#ifdef __cplusplus
+}
+#endif
 
 #endif /* GMX_FILEIO_MDOUTF_H */