diff --git a/GetDDM/Helmholtz.pro b/GetDDM/Helmholtz.pro
index cda0145360fc5d550941840abd264246785bcc1d..3b0d5950846c7174940d421c6d28bbe42ac3419d 100644
--- a/GetDDM/Helmholtz.pro
+++ b/GetDDM/Helmholtz.pro
@@ -124,7 +124,7 @@ FunctionSpace {
           }
         }
       }
-      If (TC_TYPE == 2 || TC_TYPE == 4)
+      If (TC_TYPE == 2)
         For h In {1:NP_OSRC}
           { Name Hgrad_phi~{h}~{i}~{j}; Type Form0;
             BasisFunction {
@@ -136,6 +136,26 @@ FunctionSpace {
           }
         EndFor
       EndIf
+      If (TC_TYPE == 4)
+        For h In {1:NP_RCOT}
+          { Name Hgrad_phi~{h}~{i}~{j}; Type Form0;
+            BasisFunction {
+              { Name sn; NameOfCoef un; Function BF_Node;
+                Support Region[ {Sigma~{i}~{j}, BndSigmaInf~{i}~{j}, BndSigmaN~{i}~{j}} ];
+                Entity NodesOf[All, Not {GammaD~{i}, GammaD0~{i}}];
+              }
+            }
+          }
+          { Name Hgrad_psi~{h}~{i}~{j}; Type Form0;
+            BasisFunction {
+              { Name sn; NameOfCoef un; Function BF_Node;
+                Support Region[ {Sigma~{i}~{j}, BndSigmaInf~{i}~{j}, BndSigmaN~{i}~{j}} ];
+                Entity NodesOf[All, Not {GammaD~{i}, GammaD0~{i}}];
+              }
+            }
+          }
+        EndFor
+      EndIf
     EndFor
   EndFor
 }
@@ -148,12 +168,18 @@ Formulation {
         { Name u~{i}; Type Local; NameOfSpace Hgrad_u~{i}; }
         For jj In {0: #myD~{i}()-1}
           j = myD~{i}(jj);
-          If(TC_TYPE == 2 || TC_TYPE == 4)
+          If(TC_TYPE == 2)
             For h In{1:NP_OSRC}
               { Name phi~{h}~{i}~{j}; Type Local;
                 NameOfSpace Hgrad_phi~{h}~{i}~{j}; }
             EndFor
           EndIf
+          If(TC_TYPE == 4)
+            For h In{1:NP_RCOT}
+              { Name phi~{h}~{i}~{j}; Type Local;
+                NameOfSpace Hgrad_phi~{h}~{i}~{j}; }
+            EndFor
+          EndIf
         EndFor
       }
       Equation {
@@ -232,7 +258,7 @@ Formulation {
             Galerkin { [ 1/Ld~{j} * Dof{u~{i}}, {u~{i}} ];
               In Sigma~{i}~{j}; Jacobian JSur; Integration I1; }
 
-            For h In{1:NP_OSRC}
+            For h In{1:NP_RCOT}
               Galerkin { [ +2/Ld~{j} * Dof{phi~{h}~{i}~{j}}, {u~{i}} ];
                 In Sigma~{i}~{j}; Jacobian JSur; Integration I1; }
               Galerkin { [ -2/Ld~{j} * (1/k[])^2 * Dof{d phi~{h}~{i}~{j}}, {d u~{i}} ];
@@ -268,12 +294,20 @@ Formulation {
           { Name u~{i}; Type Local; NameOfSpace Hgrad_u~{i}; }
           { Name g_out~{i}~{j}; Type Local;
             NameOfSpace Hgrad_g_out~{i}~{j}; }
-          If(TC_TYPE == 2 || TC_TYPE == 4)
+          If(TC_TYPE == 2)
             For h In{1:NP_OSRC}
               { Name phi~{h}~{i}~{j}; Type Local;
                 NameOfSpace Hgrad_phi~{h}~{i}~{j}; }
             EndFor
           EndIf
+          If(TC_TYPE == 4)
+            For h In{1:NP_RCOT}
+              { Name phi~{h}~{i}~{j}; Type Local;
+                NameOfSpace Hgrad_phi~{h}~{i}~{j}; }
+              { Name psi~{h}~{i}~{j}; Type Local;
+                NameOfSpace Hgrad_psi~{h}~{i}~{j}; }
+            EndFor
+          EndIf
         }
         Equation {
           // reverse sign if d_n computed in Omega
@@ -314,16 +348,36 @@ Formulation {
           EndIf
 
           If(TC_TYPE == 4) // RCot
-            Galerkin { [ -2 * 1/Ld~{j} * {u~{i}}, {g_out~{i}~{j}} ];
+            // Constribution of S~{i}~{j}(u~{i})
+            Galerkin { [ -1/Ld~{j} * {u~{i}}, {g_out~{i}~{j}} ];
               In Sigma~{i}~{j}; Jacobian JSur; Integration I1; }
-            For h In{1:NP_OSRC}
-              Galerkin { [ -2 * 2/Ld~{j} * {u~{i}}, {g_out~{i}~{j}} ];
+            For h In{1:NP_RCOT}
+              Galerkin { [ -2/Ld~{j} * {u~{i}}, {g_out~{i}~{j}} ];
                 In Sigma~{i}~{j}; Jacobian JSur; Integration I1; }
-              Galerkin { [ -2 * 2/Ld~{j} * ((h*Pi)/(k[]*Ld~{j}))^2 * {phi~{h}~{i}~{j}}, {g_out~{i}~{j}} ];
+              Galerkin { [ -2/Ld~{j} * ((h*Pi)/(k[]*Ld~{j}))^2 * {phi~{h}~{i}~{j}}, {g_out~{i}~{j}} ];
                 In Sigma~{i}~{j}; Jacobian JSur; Integration I1; }
             EndFor
-          EndIf
 
+            // Constribution of S~{j}~{i}(u~{i})
+            Galerkin { [ -1/Ld~{i} * {u~{i}}, {g_out~{i}~{j}} ];
+              In Sigma~{i}~{j}; Jacobian JSur; Integration I1; }
+            For h In{1:NP_RCOT}
+              Galerkin { [ -2/Ld~{i} * Dof{psi~{h}~{i}~{j}}, {g_out~{i}~{j}} ];
+                In Sigma~{i}~{j}; Jacobian JSur; Integration I1; }
+              Galerkin { [ +2/Ld~{i} * (1/k[])^2 * Dof{d psi~{h}~{i}~{j}}, {d g_out~{i}~{j}} ];
+                In Sigma~{i}~{j}; Jacobian JSur; Integration I1; }
+            EndFor
+
+            // Equations for psi auxiliary field
+            For h In{1:NP_RCOT}
+              Galerkin { [ -1 * {u~{i}}, {psi~{h}~{i}~{j}} ];
+                In Sigma~{i}~{j}; Jacobian JSur; Integration I1; }
+              Galerkin { [ (1-((h*Pi)/(k[]*Ld~{i}))^2) * Dof{psi~{h}~{i}~{j}}, {psi~{h}~{i}~{j}} ];
+                In Sigma~{i}~{j}; Jacobian JSur; Integration I1; }
+              Galerkin { [ -(1/k[])^2 * Dof{d psi~{h}~{i}~{j}}, {d psi~{h}~{i}~{j}} ];
+                In Sigma~{i}~{j}; Jacobian JSur; Integration I1; }
+            EndFor
+          EndIf
         }
       }
 
diff --git a/GetDDM/cavity2d.pro b/GetDDM/cavity2d.pro
index 3509f3e5859121249bfcfb3602909ed17cae5814..8b064e7c47222bc5d514052dc9efb5a728f110e1 100644
--- a/GetDDM/cavity2d.pro
+++ b/GetDDM/cavity2d.pro
@@ -3,13 +3,16 @@ Include "cavity2d_data.geo";
 DefineConstant[
   TC_TYPE = {2, Name "Input/01Transmission condition",
     Choices {0="Order 0", 1="Order 2", 2="Pade (OSRC)", 4="RCot"}},
-  NP_OSRC = {4, Name "Input/02Number of auxiliary variables (OSRC or RCot)"},
+  NP_AUX = {4, Name "Input/02Number of auxiliary variables (OSRC or RCot)"},
   PRECONDITIONER = 0,
   IS_OPEN = {0, Name "Input/03Is cavity open?", Choices{0, 1}},
   MODE    = {-1, Name "Input/04Mode"},
   ListOfCuts() = { {0, N_DOM-1} }
 ];
 
+NP_OSRC = NP_AUX;
+NP_RCOT = NP_AUX;
+
 Include "cavity2d_src.pro";
 
 Function{
@@ -17,8 +20,14 @@ Function{
   I[] = Complex[0, 1];
 
   // Domain length
-  Ld~{0} = LX * t2Dom;
-  Ld~{1} = LX * (1-t2Dom);
+  If(N_DOM == 2)
+    Ld~{0} = LX * t2Dom;
+    Ld~{1} = LX * (1-t2Dom);
+  Else
+    For i In {0:N_DOM-1}
+      Ld~{i} = LX/N_DOM;
+    EndFor
+  EndIf
 
   // Wavenumber
   k   = WAVENUMBER;
diff --git a/GetDDM/cavity2d_data.geo b/GetDDM/cavity2d_data.geo
index c74940f2e6e2be1e444c4d6d7c8333e1ab4ddc00..9b4fdcb313dc4067ead6f7af0b310e291bef3ad3 100644
--- a/GetDDM/cavity2d_data.geo
+++ b/GetDDM/cavity2d_data.geo
@@ -13,7 +13,7 @@ DefineConstant[
   LZ = {0.25, Name "Input/3Z dimension"},
 
   N_DOM = {2, Name "Input/4Number of subdomains"},
-  t2Dom = 0.5,
+  t2Dom = 0.33,
 
   QUAD = {0, Name "Input/5Quad mesh?", Choices{0, 1}},