Avoiding code duplication for reading in similar values for each derived class
Just scatching the surface of your code, but 


By default, the first enum constant has a default value of 0 , so this code



       public enum GrooveType : int
            {
                TKY = 0,
                VSingle = 1,
            }


could be written as 


       public enum GrooveType : int
            {
                TKY,
                VSingle
            }



Your ProcessParam was implemented twice. When things like this occur you should change  ProcessParam into an abstract class. This is called Dependency Inversion


  Dependency Inversion: In object-oriented programming, the dependency inversion principle refers to a specific form of decoupling software modules. When following this principle, the conventional dependency relationships established from high-level, policy-setting modules to low-level, dependency modules are reversed, thus rendering high-level modules independent of the low-level module implementation details. The principle states:1
  
  
  High-level modules should not depend on low-level modules. Both should depend on abstractions.
  Abstractions should not depend on details. Details should depend on abstractions. More details of this Dependency Inversion
  



This line of code should have been

public class ProcessParam 
    {
        public ProcessParam() { }
        public double probeStartAngle { get; set; }
        public double probeStartDist { get; set; }
    }


should have been

abstract class ProcessParam   // Abstract class
{
    public abstract void AbstractMethod();   // Abstract method
    public abstract double probeStartAngle { get; set; }
    public abstract double probeStartDist { get; set; }
}



Dependency Injection : Inject dependency rather than creating an object in the constructor. This is good

public SimulationParamVSingle(ProcessParam parameters)
    : this()
{
    this.processParam = parameters;
}



This is bad

 public SimulationParamVSingle()
        {
            this.processParam = new ProcessParam();
        }