PR #587 improved functionality here by allowing for a non-uniform correction field, local correction proportional (scaled) by local weighting field read from file.
One major need for balancing EmPmR comes in using EXF: here P+R is typically fixed in value (from file, but can be time dependent) whereas evaporation is computed inline using bulk formulae. Thus there will always be imbalance, and in my experience it can be quite significant, resulting in a large correction to balance. If this is applied uniformly, in a global setup this results in large EmP correction in high latitudes, where atmos specific humidity is limited by the cold atmosphere. Ergo, scaling the correction by precip, evap, or some general field as a function of temperature, seems preferable. In other setups, or in cases where salt restoring is used but S conservation is desired, one might want to use uniform or a different pattern for scaling the correction. I don't think there is a clear-cut answer to what's the best approach here. One might argue that an OBS P field is somewhat less uncertain that the E field, debatable perhaps, but not sure observational uncertainty is the best reason for using weighting of a specific field, in any event.
In MITgcm at present, this is complicated because of model variables and different coding with thsice and seaice packages:
w/o a seaice package, PR #587 now allows a static (in time) weighting file for computing a non-uniform correction
using thsice, the user can select uniform correction, or scaled by the precip field (time dependent) in thsice
using seaice, only the uniform surface correction option is coded (allowed) at this time, due to complexity of code within pkg seaice
It would be preferable if these options were more uniform (w/perhaps more options) across package use -- but in my view the more significant limitation above is seaice requiring the uniform correction. (I've successfully used the thsice precip weighted option in a global 1deg setup used for climate change experiments).
A related desirable feature was mentioned by @mjlosch in PR #587 : specifically, allowing the model to calculate the imbalance over a prescribed time interval, and then applying that correction over the next forcing cycle (in combination with the aforementioned various correction scaling options). Given the current code structure, this is also not so straightforward or simple a coding change, but certainly would be a welcome addition if someone wanted to take on the task.
PR #587 improved functionality here by allowing for a non-uniform correction field, local correction proportional (scaled) by local weighting field read from file.
One major need for balancing EmPmR comes in using EXF: here P+R is typically fixed in value (from file, but can be time dependent) whereas evaporation is computed inline using bulk formulae. Thus there will always be imbalance, and in my experience it can be quite significant, resulting in a large correction to balance. If this is applied uniformly, in a global setup this results in large EmP correction in high latitudes, where atmos specific humidity is limited by the cold atmosphere. Ergo, scaling the correction by precip, evap, or some general field as a function of temperature, seems preferable. In other setups, or in cases where salt restoring is used but S conservation is desired, one might want to use uniform or a different pattern for scaling the correction. I don't think there is a clear-cut answer to what's the best approach here. One might argue that an OBS P field is somewhat less uncertain that the E field, debatable perhaps, but not sure observational uncertainty is the best reason for using weighting of a specific field, in any event.
In MITgcm at present, this is complicated because of model variables and different coding with thsice and seaice packages:
It would be preferable if these options were more uniform (w/perhaps more options) across package use -- but in my view the more significant limitation above is seaice requiring the uniform correction. (I've successfully used the thsice precip weighted option in a global 1deg setup used for climate change experiments).
A related desirable feature was mentioned by @mjlosch in PR #587 : specifically, allowing the model to calculate the imbalance over a prescribed time interval, and then applying that correction over the next forcing cycle (in combination with the aforementioned various correction scaling options). Given the current code structure, this is also not so straightforward or simple a coding change, but certainly would be a welcome addition if someone wanted to take on the task.