Added usable examples.
authorAndras Laszlo <laszlo.andras@wigner.mta.hu>
Fri, 28 Aug 2015 21:21:14 +0000 (23:21 +0200)
committerAndras Laszlo <laszlo.andras@wigner.mta.hu>
Fri, 28 Aug 2015 21:21:14 +0000 (23:21 +0200)
changelog
include/gridripper/phys/example/Factory.h [new file with mode: 0644]
include/gridripper/phys/example/kgminkowski/KGMinkowski.h
inputs/example/kgminkowski/analysis/inp/intq.conf
inputs/example/kgminkowski/analysis/src/intq.cc
inputs/example/kgminkowski/kgminkowski.in
src/phys/PhysFactory.cxx
src/phys/example/Factory.cxx [new file with mode: 0644]
src/phys/example/kgminkowski/Factory.cxx

index 9a35bb6..8ac6faa 100644 (file)
--- a/changelog
+++ b/changelog
@@ -3,11 +3,20 @@ File format:
 [VERSION]
 (REVISION)
        Here comes the description. Where VERSION is the release 
-       version, and REVISION is the corresponding SVN revision.
+       version, and REVISION is the corresponding GIT/SVN revision.
 
 
 
 
+[1.1.1]
+(xxx)
+       Expanded 'man' page, moved gettslice as a command line tool 
+       here, compiled with gridripper+gridripperapp.  Also added 
+       improvements to the compilation system for MACOSX 
+       compatibility. Added a relatively clean educative working 
+       example to the PDEs for new users to start with.
+
+
 [1.1.0]
 (1961)
        This is the first published version.
diff --git a/include/gridripper/phys/example/Factory.h b/include/gridripper/phys/example/Factory.h
new file mode 100644 (file)
index 0000000..43a9f7c
--- /dev/null
@@ -0,0 +1,16 @@
+#ifndef gridripper_phys_example_Factory_h
+#define gridripper_phys_example_Factory_h
+#include <gridripper/factory_inc.h>
+
+/**
+ * Factory for example PDEs and ODEs.
+ *
+ * @version 1.1.1, 08/28/2015
+ * @since   GridRipper 1.1.1, 28/08/2015
+ * @author Andras Laszlo
+ */
+namespace gridripper { namespace phys { namespace example {
+#include <gridripper/factory_decl.h>
+} } } // namespace gridripper::phys::example;
+
+#endif /* gridripper_phys_example_Factory_h */
index f556e74..b914dc5 100644 (file)
@@ -46,8 +46,8 @@ using namespace std;
  * The actually evolved field is \f$r\Phi\f$ in the according 
  * transformed field equation.
  *
- * @version 06/22/2009
- * @since   GridRipper 0.5, 05/01/2007
+ * @version 1.1.1 08/28/2015
+ * @since   GridRipper 1.1.1, 08/28/2015
  * @author  Andras Laszlo
  */
 class KGMinkowski: public PDE
@@ -185,12 +185,6 @@ public:
      */
     bool hasExtendedRefinedFieldData(const Grid& G, int i) const;
 
-    /** Get the density quantities. */
-    PhysicalQuantityArray getPhysicalQuantities() const;
-
-    /** Get the marker quantities. */
-    MarkerQuantityArray getMarkerQuantities() const;
-
 private:
 
     /** Some helper function for labeling. */
index 6a17988..5a0cb07 100644 (file)
@@ -1,7 +1,7 @@
 #################### Configuration file for intq #######################
 
 ### Input file name:
-inputFile      /home/laszloa/GIT/GR/gridripperprod/inputs/example/kgminkowski/kgminkowski.in
+inputFile      ../kgminkowski.in
 
 ### Output file name, containing the itegrated data:
 intqFile       out/data/intq.dat
index 0db2a54..a06b16c 100644 (file)
@@ -54,11 +54,7 @@ int main (int argc, char *argv[])
     string inputFile=getconfig(conf, "inputFile");
 
     // Append the input file parameters to configuration:
-    igpstream inputstream;
-    inputstream.open(inputFile, "grep \"^parameter\\..*=.*\" %f | tr '=' ' ' | tr '\t' ' ' | tr -s ' ' | cut -f -2 -d ' ' | cut -f 2- -d '.'");
-    confin.append(inputstream);
-    inputstream.close();
-    inputstream.clear();
+    confin.append(inputFile);
 
     // Get the bdata file names:
     bool isongrid=false;
@@ -96,10 +92,11 @@ int main (int argc, char *argv[])
     // Simaulation parameters:
     GReal_t minr=0.0;
     GReal_t minrIntq=minr;
-    GReal_t maxr=getconfig(confin, "maxr");
-    GReal_t maxrIntq=maxr;
-    int maxOrder=getconfig(confin, "maxOrder");
-    bool isTimeReversed=getconfig(confin, "isTimeReversed");
+    GReal_t maxr=getconfig(confin, "parameter.maxr");
+    GReal_t discr=getconfig(confin, "maxi");
+    GReal_t maxrIntq=minrIntq+(maxr-minr)/discr*int(0.8*discr);
+    int maxOrder=getconfig(confin, "parameter.maxOrder");
+    bool isTimeReversed=getconfig(confin, "parameter.isTimeReversed");
 
     // Loop over time series:
     ScalarFieldMP<GComplex_t> physf(maxOrder);
@@ -149,8 +146,8 @@ int main (int argc, char *argv[])
                ScalarFieldMP<GComplex_t> ft(&fieldAtX[nc2*1], maxOrder);
                ScalarFieldMP<GComplex_t> fr(&fieldAtX[nc2*2], maxOrder);
                physf=f/r;
-               physft=ft/r*(isTimeReversed ? -1.0 : 1.0);
-               physfr=fr-f/(r*r);
+               physft=ft/r;
+               physfr=fr/r-f/(r*r);
                totalR.push_back(r);
                if ( minrIntq-EPSILON<r && r<maxrIntq+EPSILON ) partialR.push_back(r);
                // Calculate energy density:
index eab3a3c..a433053 100644 (file)
@@ -19,7 +19,7 @@ parameter.rampFt=34.3219506001479
 parameter.lFt=2
 parameter.mFt=2
 parameter.omega=0.433804363739061
-parameter.maxOrder=12
+parameter.maxOrder=6
 parameter.maxr=64.0
 parameter.isTimeReversed=0
 
index 0258815..edfebf0 100644 (file)
@@ -1,5 +1,6 @@
 #include <gridripper/phys/PhysFactory.h>
 #include <gridripper/phys/Hunch.h>
+#include <gridripper/phys/example/Factory.h>
 #include <gridripper/phys/gr/Factory.h>
 #include <gridripper/phys/minkowski/Factory.h>
 #include <sstream>
@@ -11,7 +12,9 @@ gridripper::phys::createPP(const string& name, const string& arg,
                           const Parameters& parameters)
        throw(IllegalArgumentException&)
 {
-    if(name.find("gr.") == 0) {
+    if(name.find("example.") == 0) {
+       return gridripper::phys::example::createPP(name, arg, parameters);
+    } else if(name.find("gr.") == 0) {
        return gridripper::phys::gr::createPP(name, arg, parameters);
     } else if(name.find("minkowski.") == 0) {
        return gridripper::phys::minkowski::createPP(name, arg, parameters);
@@ -28,6 +31,8 @@ InitCond* gridripper::phys::createInitCond(const string& name,
 {
     if(name == "Hunch") {
        return new Hunch(arg, parameters, pde);
+    } else if(name.find("example.") == 0) {
+       return gridripper::phys::example::createInitCond(name, arg, parameters, pde);
     } else if(name.find("gr.") == 0) {
        return gridripper::phys::gr::createInitCond(name, arg, parameters, pde);
     } else if(name.find("minkowski.") == 0) {
@@ -46,7 +51,9 @@ PDE* gridripper::phys::createPDE(const string& name,
                                const Parameters* parameters)
        throw(IllegalArgumentException&)
 {
-    if(name.find("gr.") == 0) {
+    if(name.find("example.") == 0) {
+       return gridripper::phys::example::createPDE(name, parameters);
+    } else if(name.find("gr.") == 0) {
        return gridripper::phys::gr::createPDE(name, parameters);
     } else if(name.find("minkowski.") == 0) {
        return gridripper::phys::minkowski::createPDE(name, parameters);
@@ -61,7 +68,9 @@ ODE* gridripper::phys::createODE(const string& name,
                                const Parameters* parameters)
        throw(IllegalArgumentException&)
 {
-    if(name.find("gr.") == 0) {
+    if(name.find("example.") == 0) {
+       return gridripper::phys::example::createODE(name, parameters);
+    } else if(name.find("gr.") == 0) {
        return gridripper::phys::gr::createODE(name, parameters);
     } else if(name.find("minkowski.") == 0) {
        return gridripper::phys::minkowski::createODE(name, parameters);
diff --git a/src/phys/example/Factory.cxx b/src/phys/example/Factory.cxx
new file mode 100644 (file)
index 0000000..707117b
--- /dev/null
@@ -0,0 +1,63 @@
+#include <gridripper/phys/example/Factory.h>
+#include <gridripper/phys/example/kgminkowski/Factory.h>
+#include <sstream>
+
+#include <gridripper/factory_ns.h>
+
+ParameterPreprocessor*
+gridripper::phys::example::createPP(const string& name, const string& arg,
+                            const Parameters& parameters)
+       throw(IllegalArgumentException&)
+{
+    if(name.find("example.kgminkowski.") == 0) {
+       return gridripper::phys::example::kgminkowski::createPP(name, arg, parameters);
+    } else {
+       ostringstream oss;
+       oss << "cannot create unknown ParameterPreprocessor \"" << name << "\"";
+       throw IllegalArgumentException(oss.str(),
+               "gridripper::phys::example::createPP");
+    }
+}
+
+InitCond* gridripper::phys::example::createInitCond(const string& name,
+               string& arg, const Parameters* parameters, const PDE& pde)
+       throw(InitCond::Exception&, IllegalArgumentException&)
+{
+    if(name.find("example.kgminkowski.") == 0) {
+       return gridripper::phys::example::kgminkowski::createInitCond(name, arg,
+                                                        parameters, pde);
+    } else {
+       ostringstream oss;
+       oss << "cannot create unknown initial condition \"" << name << "\"";
+       throw InitCond::Exception(oss.str(),
+               "gridripper::phys::example::createInitCond");
+    }
+}
+
+PDE* gridripper::phys::example::createPDE(const string& name,
+                                  const Parameters* parameters)
+       throw(IllegalArgumentException&)
+{
+    if(name.find("example.kgminkowski.") == 0) {
+       return gridripper::phys::example::kgminkowski::createPDE(name, parameters);
+    } else {
+       ostringstream oss;
+       oss << "cannot create unknown PDE \"" << name << "\"";
+       throw IllegalArgumentException(oss.str(),
+               "gridripper::phys::example::createPDE");
+    }
+}
+
+ODE* gridripper::phys::example::createODE(const string& name,
+                                  const Parameters* parameters)
+       throw(IllegalArgumentException&)
+{
+    if(name.find("example.kgminkowski.") == 0) {
+       return gridripper::phys::example::kgminkowski::createODE(name, parameters);
+    } else {
+       ostringstream oss;
+       oss << "cannot create unknown ODE \"" << name << "\"";
+       throw IllegalArgumentException(oss.str(),
+               "gridripper::phys::example::createODE");
+    }
+}
index c83f6b6..a04ef08 100644 (file)
@@ -71,13 +71,13 @@ PDE* gridripper::phys::example::kgminkowski::createPDE(const string& name,
 }
 
 
-//ODE* gridripper::phys::gr::fixmp::kerrhiggs::createODE(const string& name, 
-//                                               const Parameters* parameters)
-//     throw(IllegalArgumentException&)
-//{
-//    ostringstream oss;
-//    oss << "cannot create unknown ODE \"" << name << "\"";
-//    throw IllegalArgumentException(oss.str(),
-//         "gridripper::phys::gr::fixmp::kerrhiggs::createODE(const string&, const Parameters*");
-//}
+ODE* gridripper::phys::example::kgminkowski::createODE(const string& name, 
+                                                 const Parameters* parameters)
+       throw(IllegalArgumentException&)
+{
+    ostringstream oss;
+    oss << "cannot create unknown ODE \"" << name << "\"";
+    throw IllegalArgumentException(oss.str(),
+           "gridripper::phys::example::kgminkowski::createODE(const string&, const Parameters*");
+}