How to make a node group to calculate fresnel via F0 values Object
I want to make a node group so I can enter a F0 value instead of the IOR value for fresnel.
Purpose
The purpose is to make a fresnel node group for metallic shaders, since default fresnel isn't suitable for metallics.
Already tried
I've already tried curves with facing node, but I'm searching an alternative without curves since they aren't easyly/quickly modifiable (in my opinion).
Starting point
I've started with a fresnel node with an IOR of 1.6, it gives me a nice curve to work on.
Then I put a power math node to have a max value of 1 and adjust the curve's F0, it works like I want, but it isn't intuitive to enter a power value of 0.01 for a F0 of 97%.
Test scene
Color management set to none (pure datas)
Orthographic camera
An arched mesh to apply the shader, I know that the progression of the angle related to the camera isn't linear, so the end of my curve will tend to be x compressed.
Emission shader to see the curve in the waveform tool of the compositor

fresnel_f0_test_scene.blend  

Question
With this base, let say I want a F0 = 45% (0.45 is good too), what node group must I set to have the 45% (or 0.45) value driving the power of the fresnel 1.6 IOR value?
Precision
Since it's for metallics I don't need to go under the 1.6 IOR base.
And I used the terme driving but if possible I want to avoid drivers.  



Edit: To expose a bit more about the fresnel issue with metallics.
This is a fresnel curve from default fresnel IOR=1.6 (F0=6%). Good behavior for dielectrics.
  

This one is a default fresnel IOR=18 (F0=80%). Here you see the drop down of the curve, certainly why people use edge tint.
  

This one is a default fresnel IOR=1.6 with a power of 0.072 (F0=80%). This time the curve is correct (don't know if it's 100% but nice enough). No darkening of the grazing angles
  

It's why I need a convertion from F0 to the value that powered the fresnel curve IOR of 1.6 (or better, an IOR value of x)
Update 1:



The built in Fresnel node contains the equation for dielectrics, not metals.
However in most cases the the curve is almost identical.

It is possible to implement metallic Fresnel using nodes, but it's complicated and not worth it in my opinion.

Each RGB component of the specular color is treated as its own $F_0$.
(make sure all RGB values are greater than zero, otherwise it will not converge to white at the edges)

I derived an equation that relates $F_0$ to $n$ (index of refraction) from this equation (Derived from Snell's law):

$$
F_0 = \left( \frac{n_1 - n_2}{n_1 + n_2} \right)^2
$$

Where $n_1$ is the index of refraction of the material the light is coming from and $n_2$ is the index of refraction of the material the light is hitting. In most cases air, which has an index of refraction of approximately one, by substitution in the equation:

$$
F_0 = \left( \frac{1 - n_2}{1 + n_2} \right)^2
$$ 

And since $n_2$ is the index of refraction of the material the light is hitting:

$$
F_0 = \left( \frac{1 - n}{1 + n} \right)^2
$$

Using algebra we can rearrange the equation to find $n$:

$$
n = \frac{1+\sqrt{f_0}}{1 - \sqrt{f_0}}
$$

$n$ is not an independent variable. This means $F_0$ and $n$ can not be controlled separately. Changing them independently would cause an incorrect curve. (Yes, that means the Fresnel in the layer weight node is incorrect)

Unfortunately Blenders implementation of the Fresnel equation does not take into account roughness. This would be an easy fix if we knew the direction to the light source, but we don't have a node with that info. So we just have to approximate it as best we can. This is what Cynicat's roughness hack does.

I have exposed the index of refraction in the Fresnel node group because it's useful for things like refraction.

If you want an edge tint like some metals have you can approximate it by mixing two colors based on the facing value in the layer weight node, then passing that color into the specular slot. 

If you want some specular values for materials there is a small list here "Background: Physics and Math of
Shading" on page 17. [make sure you use the linear values not the SRGB ones]

Update 2:

Perhaps you could try Schlick's approximation. It's what most game engines use. It doesn't have that downward curve with high $F_0$ values.