Bagian ini menjelaskan organisasi dari kode sumber OpenFOAM dan alur kerja yang terkait dengan pengembangan OpenFOAM. Ketika melakukan pengembangan kode, kode harus diorganisir ke dalam dua lapisan: kode pustaka dan kode aplikasi. Kode pustaka dapat berisi satu/beberapa pustaka yang mengimplementasikan bagian-bagian atau komponen-komponen yang dapat digunakan kembali. Ini sepenuhnya bergantung pada perancang pustaka dan bagaimana ia membangun struktur pustaka tersebut. Kadang-kadang kode tingkat pustaka disebut sebagai logika aplikasi. Kode pustaka, menurut desain, tidak spesifik untuk satu aplikasi tunggal: itu digunakan kembali oleh banyak aplikasi yang dapat dieksekusi. Sebuah pustaka akan berisi deklarasi fungsi atau kelas, serta implementasinya. Pustaka biasanya dikompilasi menjadi apa yang disebut 'kode objek', untuk menghemat waktu kompilasi. Kode objek pustaka kemudian dihubungkan ke aplikasi ketika dijalankan oleh program pemaut linker. Perlu diperhatikan bahwa meskipun pustaka mengandung kode yang telah dikompilasi, mereka tidak dapat dieksekusi di baris perintah seperti aplikasi yang dapat dieksekusi.
Kode aplikasi, di sisi lain, menggunakan kode pustaka untuk menyusun fungsionalitas tingkat tinggi. Solver aliran OpenFOAM adalah contoh bagusnya, karena menggabungkan pustaka terpisah untuk menangani tugas-tugas yang secara konseptual berbeda seperti I/O disk, penanganan mesh, diskritisasi, dll. Penulis solver tidak perlu memperhatikan logika di balik pustaka-pustaka tersebut tetapi dapat fokus pada pengembangan solver.
Ketika kode sumber diorganisir ke dalam lapisan aplikasi dan pustaka, biasanya lebih mudah diperluas dan dapat lebih mudah dibagikan dengan orang lain. Karena OpenFOAM mengikuti pendekatan ini, direktori tingkat atas $WM_PROJECT_DIR memiliki dua sub-direktori: aplikasi dan src. Folder src menyimpan berbagai pustaka sementara folder aplikasi menyimpan aplikasi yang dapat dieksekusi yang menggunakan pustaka-pustaka tersebut.
Selama pengembangan, programmer memiliki dua pilihan untuk organisasi kode: memprogram dalam struktur direktori OpenFOAM, atau memprogram dalam struktur direktori terpisah. Memprogram dalam struktur OpenFOAM masuk akal pada pandangan pertama karena logis untuk menjaga kode yang serupa berdekatan dalam pohon direktori. Pendekatan 'struktur utama' ini dalam pengembangan dapat, sayangnya, dengan cepat menyebabkan masalah ketika berkolaborasi dengan orang lain menggunakan kontrol versi.
Sistem kontrol versi (VCS) mutlak diperlukan untuk pemrograman kolaboratif. Bahkan jika seorang pengembang bekerja sendiri, VCS secara signifikan mempercepat pengembangan dan keamanan proses pengembangan, karena itu memungkinkan penyelidikan alternatif ide dengan mudah. Meskipun sistem kontrol versi digunakan dengan benar, berbagi kode kustom yang berada dalam repositori utama OpenFOAM dengan orang lain mungkin bermasalah karena alasan berikut:
° Tidak ada gambaran jelas tentang file-file yang dimiliki oleh proyek. ° Tutorial dan kasus uji ditempatkan dalam struktur direktori terpisah. ° Penanganan dependensi tambahan yang tidak didistribusikan bersamaan dengan OpenFOAM mungkin menyebabkan masalah dengan integrasi perubahan. ° Berkolaborasi dengan orang lain memerlukan akses ke rilis OpenFOAM yang lengkap.
Poin terakhir membuat kerja kolaboratif menjadi sulit, karena menciptakan klon dari seluruh repositori rilis membuatnya menjadi keharusan bagi siapa pun untuk mengklon seluruh platform OpenFOAM agar dapat berkolaborasi pada proyek baru yang biasanya jauh lebih kecil. Selain itu, ada situasi di mana proyek-proyek tersebut tidak dibagikan dengan publik umum: mereka dikembangkan oleh departemen riset di perusahaan-perusahaan, atau fungsionalitasnya belum cukup matang untuk dirilis. Dalam kasus seperti itu ketika proyek tidak akan diintegrasikan dengan OpenFOAM dari awal, menggabungkan kode pustaka dan aplikasi dalam satu repositori terpisah yang dapat dikompilasi secara langsung, membuat pengembangan individu dan kolaboratif menjadi jauh lebih mudah. Pada titik kemudian, ketika proyek terbukti memiliki kualitas yang lebih tinggi, integrasi ke salah satu proyek rilis OpenFOAM dapat dilakukan. Saat ini, ada banyak layanan hosting VCS yang tersedia. Layanan-layanan ini menyediakan antarmuka web canggih yang memungkinkan pengguna menggunakan pelacakan bug, hosting wiki untuk setiap proyek, dan alat lain yang membuat bekerja pada proyek seperti itu menjadi jauh lebih mudah. Dua dari yang paling populer adalah gitlab, github, dan bitbucket.