diff --git a/dart/api/core.py b/dart/api/core.py
index 7cb61f7cb0777d94da1ae553094c80e091eb6a8d..daaea0a450679c83d93bc082d0613537fed8d1cb 100644
--- a/dart/api/core.py
+++ b/dart/api/core.py
@@ -204,8 +204,12 @@ def init_dart(cfg, scenario='aerodynamic', task='analysis', viscous=False):
             _pbl.add(dart.Kutta(_msh, [cfg['Tes'][i], cfg['Wakes'][i]+'_', cfg['Wings'][i], cfg['Fluid']]))
     # add transpiration (blowing) boundary conditions
     if viscous:
-        _blwb = dart.Blowing(_msh, cfg['Wing'])
-        _blww = dart.Blowing(_msh, cfg['Wake'])
+        if _dim == 2:
+            _blwb = dart.Blowing(_msh, cfg['Wing'])
+            _blww = dart.Blowing(_msh, cfg['Wake'])
+        else:
+            _blwb = dart.Blowing(_msh, cfg['Wings'][0])
+            _blww = dart.Blowing(_msh, cfg['Wakes'][0])
         _pbl.add(_blwb)
         _pbl.add(_blww)
     else:
diff --git a/dart/src/wProblem.cpp b/dart/src/wProblem.cpp
index e12f03a6786e20b5cea50cc0f0e59687086d9aed..2edb0ad2e3aa8d6a64af397f344571e46105300f 100644
--- a/dart/src/wProblem.cpp
+++ b/dart/src/wProblem.cpp
@@ -231,9 +231,6 @@ void Problem::check() const
                 if (e->type() != ElType::TRI3)
                     throwUnsupElType(e, "3", "surface", ElType::TRI3);
         }
-        // Blowing B.C.
-        if (!bBCs.empty())
-            throw std::runtime_error("Blowing boundary conditions are not supported for 3D problems!\n");
     }
     // Two-dimension problem
     else if (nDim == 2)