In EnergyPlus and OpenStudio the "Fan Efficiency" field represents the total fan efficiency including all components (e.g. the motor). As a result when you change the motor efficiency the over all fan efficiency doesn't change. in reality you need to also ratchet down the "Fan Efficiency" value.
Here is an example of this using our API. You could request a change in this behavior to the EnergyPlus or OpenStudio user voice pages. We could expose the impeller efficiency and hide "Fan Efficiency" and that can be calculated when needed.
fan_impeller_eff = fan.fanEfficiency/fan.motorEfficiency
fan.setMotorEfficiency(0.29)
fan.setFanEfficiency(fan_impeller_eff * fan.motorEfficiency)
Here is an example calculation
Fan Efficiency = 0.2
Motor Efficiency = 0.29
Impeller Efficiency = Fan Efficiency/Motor Efficiency = 0.2/0.29 = 0.69
If Motor Efficiency is changed to 90% here are updated values
New Motor Efficiency = 0.9
Impeller Efficiency = 0.69 (no change from original system)
New Fan Efficiency = Impeller Efficiency * New Motor Efficiency = 0.69 * 0.9 = 0.621
Credit to @aparker who taught me this.