From cd12b6df5df9e42f4a313c53d9eeec624dd57b03 Mon Sep 17 00:00:00 2001
From: lhausamm <loic_hausammann@hotmail.com>
Date: Fri, 9 Feb 2018 17:38:02 +0100
Subject: [PATCH] Add Readme

---
 README | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 65 insertions(+)
 create mode 100644 README

diff --git a/README b/README
new file mode 100644
index 0000000..4cb9fdf
--- /dev/null
+++ b/README
@@ -0,0 +1,65 @@
+Welcome to PySWIFTsim
+=====================
+
+This code is a python wrapper around the cosmological hydrodynamical code SWIFT hosted at https://gitlab.cosma.dur.ac.uk/swift/swiftsim.
+
+
+A few examples are given in test and the API is trying to follow the SWIFT API, therefore a developer of SWIFT should be able to quickly learn how to use it.
+
+
+Adding a new structure
+======================
+
+In pyswiftsim/structure.py, a list of all SWIFT structure are described in python.
+When adding a new structure, a new class should be added to this file using the following example:
+
+```
+class SwiftParams(SwiftStruct):
+   """ All object should inherit from SwiftStruct """ 
+    _format = "{sec}s{data}sii{line_size}c".format(
+            sec=struct.calcsize(Section._format)*PARSER_MAX_NO_OF_SECTIONS,
+            data=struct.calcsize(Parameter._format)*PARSER_MAX_NO_OF_PARAMS,
+            line_size=PARSER_MAX_LINE_SIZE
+        )
+    """ _format describes the type of the object contained in a C structure.
+        see struct python package for a list of all possible types.
+	For an undefined/complex object, the letter 's' is used and for string 'c'.
+    """
+
+    _name = [
+            "section",
+            "data_params",
+            "sectionCount",
+            "paramCount",
+            "filename"
+        ]
+    """ _name defines the name of each variable """
+
+    def __init__(self, data, parent=None):
+        """ defines the constructor
+	    data is a list of bytes and parent is the structure in which this one is included
+	"""
+        super().__init__(self.struct_format, data, parent)
+
+    @property
+    def struct_substruct(self):
+    	""" This method should be defined if a substructure is present in this one.
+	    It returns a dictionary where the key is the name of the object (defined in _name)
+	    and the value is the array size (1 if this structure is not in an array).
+	"""
+        sec = {
+            "class": Section,
+            "size": PARSER_MAX_NO_OF_SECTIONS
+        }
+
+        param = {
+            "class": Parameter,
+            "size": PARSER_MAX_NO_OF_PARAMS
+        }
+        return {
+            "section": sec,
+            "data_params": param
+        }
+```
+
+If the new structure is an option (e.g. Part, Cooling, ...) you can use an if to define the _format and _name variables.
\ No newline at end of file
-- 
GitLab