def initialize(owner, title)
super(owner, title)
frame1 = FXVerticalFrame.new(self, LAYOUT_FILL_X| LAYOUT_FILL_Y)
frame2 = FXVerticalFrame.new(frame1, LAYOUT_FILL_X| LAYOUT_FILL_Y)
frame3 = FXVerticalFrame.new(frame1, LAYOUT_FILL_X| LAYOUT_FILL_Y)
frame4 = FXHorizontalFrame.new(frame1, LAYOUT_FILL_X)
frame4c = FXHorizontalFrame.new(frame1, LAYOUT_FILL_X)
group1 = FXGroupBox.new(frame2, "Velocity:", FRAME_RIDGE|LAYOUT_FILL_X|LAYOUT_FILL_Y)
group2 = FXGroupBox.new(frame3, "Turbulence",FRAME_RIDGE|LAYOUT_FILL_X|LAYOUT_FILL_Y)
frame4b = FXVerticalFrame.new(group1, LAYOUT_FILL_X)
matrix1 = FXMatrix.new(frame4b, 2, MATRIX_BY_COLUMNS|LAYOUT_SIDE_TOP|LAYOUT_FILL_X|LAYOUT_FILL_Y)
matrix2 = FXMatrix.new(matrix1, 2, MATRIX_BY_COLUMNS|LAYOUT_SIDE_TOP|LAYOUT_FILL_X|LAYOUT_FILL_Y)
frame5 = FXVerticalFrame.new(matrix1, LAYOUT_FILL_X| LAYOUT_FILL_Y)
matrix3 = FXMatrix.new(frame4b, 2, MATRIX_BY_COLUMNS|LAYOUT_SIDE_TOP|LAYOUT_FILL_X|LAYOUT_FILL_Y)
matrix4 = FXMatrix.new(group2, 2, MATRIX_BY_COLUMNS|LAYOUT_SIDE_TOP|LAYOUT_FILL_X|LAYOUT_FILL_Y)
matrix5 = FXMatrix.new(matrix4, 2, MATRIX_BY_COLUMNS|LAYOUT_SIDE_TOP|LAYOUT_FILL_X|LAYOUT_FILL_Y)
frame6 = FXVerticalFrame.new(matrix4, LAYOUT_FILL_X| LAYOUT_FILL_Y)
FXLabel.new(matrix2, "Velocity Magnitude: ", nil, LAYOUT_SIDE_LEFT|LAYOUT_CENTER_Y)
@velmag = FXTextField.new(matrix2, 8, nil, 0,JUSTIFY_RIGHT|FRAME_SUNKEN|FRAME_THICK|LAYOUT_SIDE_LEFT|LAYOUT_CENTER_Y)
@velmag.connect(SEL_UPDATE){
vmag = @velmag.text.to_f
xvect = @xvec.text.to_f
yvect = @yvec.text.to_f
zvect = @zvec.text.to_f
vectorlength = vectLength([xvect, yvect, zvect])
@xvel.text = "#{vmag * xvect / vectorlength}"
@yvel.text = "#{vmag * yvect / vectorlength}"
@zvel.text = "#{vmag * zvect / vectorlength}"
}
FXLabel.new(matrix2, "x vector:", nil, LAYOUT_SIDE_LEFT|LAYOUT_CENTER_Y)
@xvec = FXTextField.new(matrix2, 8, nil, 0,JUSTIFY_RIGHT|FRAME_SUNKEN|FRAME_THICK|LAYOUT_SIDE_LEFT|LAYOUT_CENTER_Y)
FXLabel.new(matrix2, "y vector:", nil, LAYOUT_SIDE_LEFT|LAYOUT_CENTER_Y)
@yvec = FXTextField.new(matrix2, 8, nil, 0,JUSTIFY_RIGHT|FRAME_SUNKEN|FRAME_THICK|LAYOUT_SIDE_LEFT|LAYOUT_CENTER_Y)
FXLabel.new(matrix2, "z vector:", nil, LAYOUT_SIDE_LEFT|LAYOUT_CENTER_Y)
@zvec = FXTextField.new(matrix2, 8, nil, 0,JUSTIFY_RIGHT|FRAME_SUNKEN|FRAME_THICK|LAYOUT_SIDE_LEFT|LAYOUT_CENTER_Y)
FXLabel.new(matrix3, "x velocity:", nil, LAYOUT_SIDE_LEFT|LAYOUT_CENTER_Y)
@xvel = FXLabel.new(matrix3, " 0.0", nil, LAYOUT_SIDE_LEFT|LAYOUT_CENTER_Y)
FXLabel.new(matrix3, "y velocity:", nil, LAYOUT_SIDE_LEFT|LAYOUT_CENTER_Y)
@yvel = FXLabel.new(matrix3, " 0.0", nil, LAYOUT_SIDE_LEFT|LAYOUT_CENTER_Y)
FXLabel.new(matrix3, "z velocity:", nil, LAYOUT_SIDE_LEFT|LAYOUT_CENTER_Y)
@zvel = FXLabel.new(matrix3, " 0.0", nil, LAYOUT_SIDE_LEFT|LAYOUT_CENTER_Y)
FXLabel.new(matrix5, "Turbulence Intensity (%):", nil, LAYOUT_SIDE_LEFT|LAYOUT_CENTER_Y)
@turbintensity = FXTextField.new(matrix5, 8, nil, 0,JUSTIFY_RIGHT|FRAME_SUNKEN|FRAME_THICK|LAYOUT_SIDE_LEFT|LAYOUT_CENTER_Y)
FXLabel.new(matrix5, "Turbulent Length Scale (m):", nil, LAYOUT_SIDE_LEFT|LAYOUT_CENTER_Y)
@turblength = FXTextField.new(matrix5, 8, nil, 0,JUSTIFY_RIGHT|FRAME_SUNKEN|FRAME_THICK|LAYOUT_SIDE_LEFT|LAYOUT_CENTER_Y)
FXLabel.new(matrix5, "k:", nil, LAYOUT_SIDE_LEFT|LAYOUT_CENTER_Y)
@turbk = FXTextField.new(matrix5, 8, nil, 0,JUSTIFY_RIGHT|FRAME_SUNKEN|FRAME_THICK|LAYOUT_SIDE_LEFT|LAYOUT_CENTER_Y)
FXLabel.new(matrix5, "epsilon:", nil, LAYOUT_SIDE_LEFT|LAYOUT_CENTER_Y)
@turbepsilon = FXTextField.new(matrix5, 8, nil, 0,JUSTIFY_RIGHT|FRAME_SUNKEN|FRAME_THICK|LAYOUT_SIDE_LEFT|LAYOUT_CENTER_Y)
descr = "Calculate k and epsilon\nfrom Velocity Magnitude,\nIntensity and Length Scale."
FXLabel.new(frame6, descr, nil, LAYOUT_SIDE_LEFT|LAYOUT_CENTER_Y)
@faceNormalButton = FXButton.new(frame5, "Face Normal", nil, nil, 0, FRAME_RAISED|FRAME_THICK|LAYOUT_SIDE_LEFT|LAYOUT_LEFT|LAYOUT_FILL_X)
@flipNormalButton = FXButton.new(frame5, "Flip Normal", nil, nil, 0, FRAME_RAISED|FRAME_THICK|LAYOUT_SIDE_LEFT|LAYOUT_LEFT|LAYOUT_FILL_X)
@faceNormalButton.connect(SEL_COMMAND){
if @ref[0].class == InfoFace || @ref[0].class == LiteFace
xnor, ynor, znor = faceNormal(@ref[0])
@xvec.text, @yvec.text, @zvec.text = xnor.to_s, ynor.to_s, znor.to_s
end
}
@flipNormalButton.connect(SEL_COMMAND){
prex = @xvec.text.to_f
prey = @yvec.text.to_f
prez = @zvec.text.to_f
@xvec.text = "#{-prex}" if prex != 0.0
@yvec.text = "#{-prey}" if prey != 0.0
@zvec.text = "#{-prez}" if prez != 0.0
}
@updateKEpsilonButton = FXButton.new(frame6, "Update k-epsilon", nil, nil, 0, FRAME_RAISED|FRAME_THICK|LAYOUT_SIDE_LEFT|LAYOUT_LEFT|LAYOUT_FILL_X)
@updateKEpsilonButton.connect(SEL_COMMAND) {
lengthScaleFraction = 0.07
cmu = 0.09
kvalue = 3.0/2.0 * (@velmag.text.to_f*@turbintensity.text.to_f/100.0)**2
epsvalue = cmu**0.75 * kvalue**1.5 / @turblength.text.to_f / lengthScaleFraction
@turbk.text = sprintf "%.2f", kvalue
@turbepsilon.text = sprintf "%.2f", epsvalue
}
FXLabel.new(frame4, "Reference: ", nil, LAYOUT_SIDE_BOTTOM|LAYOUT_CENTER_Y)
@reftext = FXLabel.new(frame4, "f0", nil, LAYOUT_SIDE_BOTTOM|LAYOUT_CENTER_Y)
@okButton = FXButton.new(frame4c, " OK ", nil, self, FXDialogBox::ID_ACCEPT, FRAME_RAISED|FRAME_THICK|LAYOUT_SIDE_RIGHT|LAYOUT_RIGHT|LAYOUT_CENTER_Y)
FXButton.new(frame4c, "Cancel", nil, self, FXDialogBox::ID_CANCEL, FRAME_RAISED|FRAME_THICK|LAYOUT_SIDE_RIGHT|LAYOUT_RIGHT|LAYOUT_CENTER_Y)
def setdefault
@velmag.text = $defaults['bcvelmag'].to_s
@xvec.text = $defaults['bcxvec'].to_s
@yvec.text = $defaults['bcyvec'].to_s
@zvec.text = $defaults['bczvec'].to_s
@xvel.text = $defaults['bcxvel'].to_s
@yvel.text = $defaults['bcyvel'].to_s
@zvel.text = $defaults['bczvel'].to_s
@turbintensity.text = $defaults['bcturbintensity'].to_s
@turblength.text = $defaults['bcturblength'].to_s
@turbk.text = $defaults['bck'].to_s
@turbepsilon.text = $defaults['bcepsilon'].to_s
end
end