From 25b37ae30d5985bcbf61c7fceba2089cff509932 Mon Sep 17 00:00:00 2001
From: sergio <sergio>
Date: Mon, 1 Apr 2019 08:29:56 -0700
Subject: [PATCH] ENH: Adding new Gaussian power profile for laser

---
 .../laserDTRM/laserDTRM.C                          | 14 ++++++++++++++
 .../laserDTRM/laserDTRM.H                          |  6 +++++-
 2 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/laserDTRM/laserDTRM.C b/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/laserDTRM/laserDTRM.C
index 1969704f5c1..3a1236fa0a1 100644
--- a/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/laserDTRM/laserDTRM.C
+++ b/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/laserDTRM/laserDTRM.C
@@ -63,6 +63,7 @@ Foam::radiation::laserDTRM::powerDistNames_
     { powerDistributionMode::pdGaussian, "Gaussian" },
     { powerDistributionMode::pdManual,   "manual" },
     { powerDistributionMode::pdUniform,  "uniform" },
+    { powerDistributionMode::pdGaussianPeak, "GaussianPeak" },
 };
 
 
@@ -74,6 +75,11 @@ Foam::scalar Foam::radiation::laserDTRM::calculateIp(scalar r, scalar theta)
     const scalar power = laserPower_->value(t);
     switch (mode_)
     {
+        case pdGaussianPeak:
+        {
+            return I0_*exp(-2.0*sqr(r)/sqr(sigma_));
+            break;
+        }
         case pdGaussian:
         {
             scalar I0 = power/(mathematical::twoPi*sqr(sigma_));
@@ -196,6 +202,12 @@ void Foam::radiation::laserDTRM::initialise()
 
     switch (mode_)
     {
+        case pdGaussianPeak:
+        {
+            I0_ = get<scalar>("I0");
+            sigma_ = get<scalar>("sigma");
+            break;
+        }
         case pdGaussian:
         {
             sigma_ = get<scalar>("sigma");
@@ -346,6 +358,7 @@ Foam::radiation::laserDTRM::laserDTRM(const volScalarField& T)
     ),
 
     sigma_(0),
+    I0_(0),
     laserPower_(Function1<scalar>::New("laserPower", *this)),
     powerDistribution_(),
 
@@ -442,6 +455,7 @@ Foam::radiation::laserDTRM::laserDTRM
     ),
 
     sigma_(0),
+    I0_(0),
     laserPower_(Function1<scalar>::New("laserPower", *this)),
     powerDistribution_(),
 
diff --git a/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/laserDTRM/laserDTRM.H b/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/laserDTRM/laserDTRM.H
index b7da83d879a..4bdc470adec 100644
--- a/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/laserDTRM/laserDTRM.H
+++ b/applications/solvers/multiphase/icoReactingMultiphaseInterFoam/laserDTRM/laserDTRM.H
@@ -87,7 +87,8 @@ public:
         {
             pdGaussian,
             pdManual,
-            pdUniform
+            pdUniform,
+            pdGaussianPeak
         };
 
 
@@ -153,6 +154,9 @@ private:
                 //- Sigma deviation
                 scalar sigma_;
 
+                //- Peak flux for GaussianPeak mode
+                scalar I0_;
+
                 //- Power
                 autoPtr<Function1<scalar>> laserPower_;
 
-- 
GitLab