CPL_force combines multiple field classes, including the retrieved values from CFD via a coupled MPI exchange and together with accumulated MD/DEM results, it calculates the required force. Heavy use is made of inheritance here, with a common interface of pre_force and a get_force functions. The different types of coupling force are then created using a factory method and extension of this is as simple as inhereting from the most relevant force class and adapting to your needs. A rough schematic of the inheretence diagram is included below (note names have been shortened):
CPL_vel Abstract Base Class / | _________/__CPL_test | / \ | / CPL_flekkoy v / CPL_force / __CPL_Di_Felice \__ CPL_drag__ CPL_gran/ \ \__CPL_Tang_______CPL_with_BVK_correction \ CPL_dragtest