diff --git a/Sources/Model/Model.hpp b/Sources/Model/Model.hpp
index 8bbec718cadc3fe8f6c5ecd71893dae821f8c393..5357ec49998d25c1ff3709408650a14420be4bf8 100644
--- a/Sources/Model/Model.hpp
+++ b/Sources/Model/Model.hpp
@@ -96,12 +96,15 @@ namespace MoReFEM
          * \param[in] mpi Object in charge of mpi.
          * \copydoc doxygen_hide_input_parameter_data_arg
          * \param[in] a_create_domain_list_for_coords Whether the model will compute the list of domains a coord is in or not.
-         *
+         * \param[in] additional_subdir If some additional subdirectories are required, add here the subdirectories to
+         * be created. For instance, if additional_subdir is { "foo", "bar" }, output directory will be set to
+         * #output directory read from input file#/foo/bar.
          */
         template<class InputParameterDataT>
         explicit Model(const Wrappers::Mpi& mpi,
                        const InputParameterDataT& input_parameter_data,
-                       create_domain_list_for_coords a_create_domain_list_for_coords = create_domain_list_for_coords::no);
+                       create_domain_list_for_coords a_create_domain_list_for_coords = create_domain_list_for_coords::no,
+                       std::vector<std::string>&& additional_subdir = {});
 
 
         //! Destructor.
@@ -276,7 +279,12 @@ namespace MoReFEM
         //! Transient parameters.
         TimeManager::unique_ptr time_manager_ = nullptr;
 
-        //! Output directory.
+        /*!
+         * \brief Output directory.
+         *
+         * In most cases it is the path read in the input parameter file, but in some models some supplementary data
+         * might have been added.
+         */
         std::string output_directory_;
 
         //! Files will be written every \a display_value_ time iteration. Choose 1 to write all of them.
diff --git a/Sources/Model/Model.hxx b/Sources/Model/Model.hxx
index ca695b6e76eb7d63be9e900492e33fb79443f1ff..f468f085a77eb65476da84e2b0309d54dbd227b2 100644
--- a/Sources/Model/Model.hxx
+++ b/Sources/Model/Model.hxx
@@ -19,9 +19,11 @@ namespace MoReFEM
 
     template<class DerivedT, DoConsiderProcessorWiseLocal2Global DoConsiderProcessorWiseLocal2GlobalT>
     template<class InputParameterDataT>
-    Model<DerivedT, DoConsiderProcessorWiseLocal2GlobalT>::Model(const Wrappers::Mpi& a_mpi,
-                                                                 const InputParameterDataT& input_parameter_data,
-                                                                 create_domain_list_for_coords a_create_domain_list_for_coords)
+    Model<DerivedT, DoConsiderProcessorWiseLocal2GlobalT>
+    ::Model(const Wrappers::Mpi& a_mpi,
+            const InputParameterDataT& input_parameter_data,
+            create_domain_list_for_coords a_create_domain_list_for_coords,
+            std::vector<std::string>&& additional_subdir)
     : Crtp::CrtpMpi<Model<DerivedT, DoConsiderProcessorWiseLocal2GlobalT>>(a_mpi)
     {
         if (a_create_domain_list_for_coords == create_domain_list_for_coords::yes)
@@ -54,7 +56,21 @@ namespace MoReFEM
 
         const auto& mpi = this->GetMpi();
 
-        output_directory_ = IPL::Extract<Result::OutputDirectory>::Folder(input_parameter_data);
+        {
+            output_directory_ = IPL::Extract<Result::OutputDirectory>::Folder(input_parameter_data);
+            
+            if (!additional_subdir.empty())
+            {
+                for (const auto& subdir : additional_subdir)
+                {
+                    output_directory_ += '/';
+                    output_directory_ += subdir;
+                }
+                
+                if (!FilesystemNS::Folder::DoExist(output_directory_))
+                    FilesystemNS::Folder::Create(output_directory_, __FILE__, __LINE__);
+            }
+        }
 
         if (mpi.IsRootProcessor())
         {
diff --git a/ThirdPartyXCodeProjects/Seldon.xcodeproj/xcuserdata/sebastien.xcuserdatad/xcschemes/xcschememanagement.plist b/ThirdPartyXCodeProjects/Seldon.xcodeproj/xcuserdata/sebastien.xcuserdatad/xcschemes/xcschememanagement.plist
index 4a8d8dd4a219bf3b1d683ed91717311c9ccf5de4..a862f6a3a0374831378566f43746b894610f32c0 100644
--- a/ThirdPartyXCodeProjects/Seldon.xcodeproj/xcuserdata/sebastien.xcuserdatad/xcschemes/xcschememanagement.plist
+++ b/ThirdPartyXCodeProjects/Seldon.xcodeproj/xcuserdata/sebastien.xcuserdatad/xcschemes/xcschememanagement.plist
@@ -9,7 +9,7 @@
 			<key>isShown</key>
 			<false/>
 			<key>orderHint</key>
-			<integer>0</integer>
+			<integer>10</integer>
 		</dict>
 	</dict>
 	<key>SuppressBuildableAutocreation</key>