Update value and precision of InputField inside Manipulate?

I have a code to determine translation factor of fiber strength in a composite pressure vessel based on the vessel’s burst test data. Manipulate functionality has been designed around several Input Fields and a slider. One of the Input Fields is being rogue. Sometimes (depending on the dynamic value selected from a drop down list), it is showing a weird precision of digits. Furthermore I cannot update the field and register the value even though it has been defined as a dynamic Input Field.

I would appreciate if someone could look at my code and provide some helpful hints on how to get rid of these issues.


Clear["Global`*"];

Framed[
 
 Column[{
   
   Manipulate[
    Tfac =.;
    
    ID = OD - 2.*tm;
    
    R = ID/2 + (tm + tc)/2;
    
    Em = 9.8 10^6; Y = 40. 10^3; 
    T = 44. 10^3; \[Epsilon]Y = .004; \[Epsilon]T = .1;
    Et = (T - Y)/(\[Epsilon]T - \[Epsilon]Y);
    Vf = .6;
    Ef = Switch[fibtype, "Toray T700", 33.4 10^6, "Toray T800", 
      37.5 10^6, "Hyosung H2550", 33.4 10^6, "OC X H-glass", 13. 10^6];
    E1 = Vf*Ef; E2 = 1.3 10^6;
    \[Rho]f = 
     Switch[fibtype, "Toray T700", 1.8, "Toray T800", 1.8, 
      "Hyosung H2550", 1.8, "OC X H-glass", 2.6];
    TEX = 
     Switch[fibtype, "Toray T700", 800, "Toray T800", 1030, 
      "Hyosung H2550", 800, "OC X H-glass", 2400];
    bwt = 
     Switch[fibtype, "Toray T700", .14, "Toray T800", .136, 
      "Hyosung H2550", .1386, "OC X H-glass", .177];
    
    CSA = TEX/(10^5*\[Rho]f)*1/2.54^2;
    
    thoop = 2*Ntows*CSA/(bw*Vf);
    theli = 1/.9*thoop;
    tc = nhoop*thoop + nheli*theli;
    \[Theta] = helangle*\[Pi]/180;
    
    Ec = (
     nhoop*thoop*E1 + 
      nheli*theli*(E1 (Sin[\[Theta]])^2 + E2  (Cos[\[Theta]])^2))/(
     nhoop*thoop + nheli*theli);
    
    (*--- \[Epsilon]cu = failure strain in composite ----*)
    
    \[Epsilon]cu = 
     Switch[fibtype, "Toray T700", 1.9, "Toray T800", 2, 
      "Hyosung H2550", 2, "OC X H-glass", 2.5];
    
    \[Sigma]cu = Tfac*Ec*\[Epsilon]cu/100*(Cos[bw/(\[Pi] ID)])^2;
    
    (*--- normalized stiffnesses ----*)
    
    Etn = Et/Em; Ecn = Ec/Em;
    Be = Em tm + Ec tc; Ben = tm + Ecn tc; Bpn = Etn tm + Ecn tc;
    
    (*--- \[Sigma]me = 
    stress in the metal liner before yielding ----*)
    
    \[Sigma]me = Em (p R)/Be;(*--- \[Sigma]ce = 
    stress in the composite shell before yielding ----*)
    
    \[Sigma]ce = Ec (p R)/Be;
    
    (*--- py = pressure where the vessel yields ----*)
    
    py = (Y Be)/(Em R);
    
    (*--- \[Sigma]mp = 
    stress in the metal liner after yielding ----*)
    
    \[Sigma]mp = (p R Etn + Y (1 - Etn) Ecn tc)/(Etn tm + Ecn tc);
    
    (*--- \[Sigma]cp = 
    stress in the composite shell after yielding ----*)
    
    \[Sigma]cp = (Ecn (p R - Y (1 - Etn) tm))/(Etn tm + Ecn tc);
    
    (*--- \[Sigma]ma = 
    stress in metal liner at autofrettage pressure ----*)
    
    \[Sigma]ma = (pa R Etn + Y (1 - Etn) Ecn tc)/(Etn tm + Ecn tc);
    
    (*--- \[Sigma]m0 = 
    residual stress in metal liner at zero pressure after unloading \
from autofrettage ----*)
    
    \[Sigma]m0 = -(((1 - Etn) Ecn tc)/(Ben Bpn)) (pa - py) R;
    k\[Sigma]0 = \[Sigma]cu tc + \[Sigma]m0 tm;
    
    (*--- \[Sigma]c0 = 
    residual stress in the composite shell at zero pressure after \
unloading from autofrettage ----*)
    
    \[Sigma]c0 = -\[Sigma]m0 tm/tc;
    
    (*--- pya = pressure beyond which the liner yields again = 
    autofrettage pressure ----*)
    
    pya = ((\[Sigma]ma - \[Sigma]m0) Be)/(Em R);
    
    (*--- \[Sigma]mae = 
    stress in the metal liner after autofrettage and unloading ----*)
\

    
    \[Sigma]mae = \[Sigma]m0 + Em (p R)/Be;
    
    (*--- \[Sigma]cae = 
    stress in the composite after autofrettage and unloading ----*)
    
    \[Sigma]cae = \[Sigma]c0 + Ec (p R)/Be;
    
    (*--- pb = burst pressure ----*)
    
    Pb = 1/( 
      Ecn R) (\[Sigma]cu (Etn tm + Ecn tc) + Ecn Y (1 - Etn) tm);
    sol = NSolve[{Pb == Pburst}, {Tfac}];
    z = 100*Tfac /. sol[[1]];
    
    Trans = Which[z < 0, 0, z > 100, 100, 0 <= z <= 100, z];
    
    Column[{
      
      Framed[
       AngularGauge[Trans, {0, 100}, GaugeFaceStyle -> LightBlue, 
        GaugeFrameElementFunction -> "BezelSector", 
        GaugeLabels -> {Automatic, "%"}, 
        GaugeMarkers -> "BezelBevelNeedle", 
        LabelStyle -> {14, GrayLevel[.1]}]
       ,
       BaseStyle -> {FontWeight -> "Thin", FontSize -> 14, 
         FontFamily -> "Arial"}, RoundingRadius -> 5, 
       FrameMargins -> 10, Background -> GrayLevel[.7], 
       FrameStyle -> None],
      "",
      
      Framed[
       
       Row[
        {"Translation factor: ", NumberForm[Trans, {3, 2}], " %"
         
         }
        ],
       BaseStyle -> {FontWeight -> "Thin", FontSize -> 14, 
         FontFamily -> "Arial"}, RoundingRadius -> 5, 
       FrameMargins -> 10, Background -> LightBlue]
      
      }],
    Grid[
     {
      {"Liner OD (in.) :"
        DynamicModule[{},
         InputField[Dynamic[OD], Number, FieldSize -> 6, 
          Background -> LightYellow], Initialization :> (OD = 6)]},
      {"Liner wall thickness (in.) :"
        DynamicModule[{},
         InputField[Dynamic[tm], Number, FieldSize -> 6, 
          Background -> LightRed], Initialization :> (tm = .125)]},
      
      {Row[{"Fiber Type : ",
         
         PopupMenu[
          Dynamic[fibtype], {"Toray T700", "Toray T800", 
           "Hyosung H2550", "OC X H-glass"}]}
        
        ]},
      
      {"Number of tows :"
        DynamicModule[{},
         InputField[Dynamic[Ntows], Number, FieldSize -> 6, 
          Background -> LightCyan], Initialization :> (Ntows = 5)]},
      {"Hoop bandwidth (in.) :"
        DynamicModule[{},
         InputField[Dynamic[bw, SetAccuracy[bw, 3]], Number, 
          FieldSize -> {6, 1}, Background -> LightGray], 
         Initialization :> (bw = .68)]},
      {"Helical angle :"
        DynamicModule[{},
         InputField[Dynamic[helangle], Number, FieldSize -> 6, 
          Background -> LightMagenta], 
         Initialization :> (helangle = 17.5)]},
      {"Number of helical layers :"
        DynamicModule[{},
         InputField[Dynamic[nheli], Number, FieldSize -> 6, 
          Background -> LightGreen], Initialization :> (nheli = 2)]},
      {"Number of hoop layers :"
        DynamicModule[{},
         InputField[Dynamic[nhoop], Number, FieldSize -> 6, 
          Background -> LightOrange], Initialization :> (nhoop = 2)]},
      
      {""},
      {Button["OK", Background -> Green, BaseStyle -> "16", 
        ImageSize -> Medium ]}
      }, BaseStyle -> {FontSize -> 14, Background -> GrayLevel[.7]},
     
     
     Alignment -> Right],
    {{Pburst, 1, "Burst Pressure (psi)" }, 500, 10000, 1, 
     Appearance -> {"Labeled", "DownArrow", "Open"}, 
     ImageMargins -> 5, ImageSize -> Tiny, 
     BaseStyle -> FontSize -> 14, 
     AppearanceElements -> {"ProgressSlider", "InputField", 
       "StepLeftButton", "StepRightButton"}},
    Initialization :> {Ntows = 5, Pburst = 5500, bw = Ntows*bwt},
    Alignment -> {Top}, 
    BaseStyle -> {FontSize -> 14, FontFamily -> "Arial"},
    LabelStyle -> Directive[Black, FontSize -> 14], Paneled -> False, 
    ControlPlacement -> Left, ContentSize -> {250, 300}
    ]
   
   }],
 Alignment -> Left, FrameMargins -> 20, Background -> GrayLevel[.7], 
 RoundingRadius -> 10, 
 BaseStyle -> {FontWeight -> "Regular", FontSize -> 16, 
   FontFamily -> "Arial"}
 
 
 ]