The fluid flow is modeled by taking all the physical dimensions, constants and properties:
Channel dimensions (height, width, length)
Conductivity
Prandtl number
Density
Viscosity
Flow Rate
Input Power
Input Fluid Temperature
etc.
Using this, it calculates hydraulic diameter, velocity, mass flow rate, Reynolds number and fluid temperature delta. Then the Gnielinski correlation for turbulent flow is used to find the friction factor, Nusselt number and the convection coefficient. All of this is then fed into the elemental model of the channel. It sets up all the boundary conditions such as input power to the area directly over the cpu, fluid temperature along the path, and convective effects over the surface in contact with the fluid. Then I just set up the iteration and convergence criteria, enable circular references, hit F9 and watch the fun (actually, watching paint dry is generally more exciting).
Once the model has converged, it spits out average temperature of the area in contact with the cpu for however many baseplate thicknesses it's setup to run at the time and graphs it. I don't have it setup to automatically graph the temperature profile across the whole block because that takes too much computational time. If I want that I just cut and paste the values and use a surface plot.
Right now I only have the model setup to assume turbulent flow. I'm not sure how useful including laminar flow would be because most systems will have at least some degree of turbulence. I'll probably eventually add laminar cases for completeness. In the future I'll be adding a function that allows for geometry induce increases in Reynolds number, but I'm still studying up on how to model that correctly. That part is 49% engineering know-how, 51% black magic.