Changeset 5759


Ignore:
Timestamp:
Jul 19, 2015 12:24:23 PM (9 years ago)
Author:
ldelgass
Message:

merge r5757 from trunk

Location:
branches/1.3
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/1.3

    • Property svn:mergeinfo changed
      /trunkmerged: 5757
  • branches/1.3/gui/scripts/field.tcl

    r5755 r5759  
    11471147}
    11481148
     1149#
     1150# FIXME: Allowing a VTK file to be used as a Field <component> means
     1151# there can be multiple VTK fields with different association, type, and
     1152# number of components (array elements) within a single Rappture::Field.
     1153# This breaks the concept of the Field object since the <component>'s
     1154# <association>, <elemtype> and <elemsize> can't be set to a single
     1155# value in this case.
     1156#
     1157# Rappture needs a Dataset object with a single Mesh and multiple Fields.
     1158#
    11491159itcl::body Rappture::Field::ReadVtkDataSet { cname contents } {
    11501160    package require vtk
     
    11961206    lappend limits y [list $ymin $ymax]
    11971207    lappend limits z [list $zmin $zmax]
     1208    set vmin 0
     1209    set vmax 1
     1210    set foundDefaultArray 0
    11981211    set dataAttrs [$dataset GetPointData]
    11991212    if { $dataAttrs == ""} {
    1200         puts stderr "WARNING: No point data found in \"$_path\""
     1213        puts stderr "ERROR: Can't get point data attributes in \"$_path\""
    12011214        rename $reader ""
    12021215        return 0
    12031216    }
    1204     set vmin 0
    1205     set vmax 1
    12061217    set numArrays [$dataAttrs GetNumberOfArrays]
    1207     if { $numArrays > 0 } {
    1208         for {set i 0} {$i < [$dataAttrs GetNumberOfArrays] } {incr i} {
    1209             set array [$dataAttrs GetArray $i]
    1210             set fname  [$dataAttrs GetArrayName $i]
    1211             foreach {min max} [$array GetRange -1] break
    1212             if {$i == 0} {
    1213                 set vmin $min
    1214                 set vmax $max
    1215             }
     1218    for {set i 0} {$i < $numArrays} {incr i} {
     1219        set array [$dataAttrs GetArray $i]
     1220        set fname [$dataAttrs GetArrayName $i]
     1221        foreach {min max} [$array GetRange -1] break
     1222        if {!$foundDefaultArray} {
     1223            set vmin $min
     1224            set vmax $max
     1225            set foundDefaultArray 1
     1226        }
     1227        lappend limits $fname [list $min $max]
     1228        set _fld2Units($fname) ""
     1229        set _fld2Label($fname) $fname
     1230        # Let the VTK file override the <elemsize>
     1231        set _fld2Components($fname) [$array GetNumberOfComponents]
     1232        lappend _comp2fldName($cname) $fname
     1233    }
     1234    # FIXME: Can't properly handle field names that are re-used in point data
     1235    # cell data and/or field data even though this is permitted in VTK.
     1236    # For now, we'll use the first field found of point, cell, then field data
     1237    set dataAttrs [$dataset GetCellData]
     1238    if { $dataAttrs == ""} {
     1239        puts stderr "ERROR: Can't get cell data attributes found in \"$_path\""
     1240        rename $reader ""
     1241        return 0
     1242    }
     1243    set numArrays [$dataAttrs GetNumberOfArrays]
     1244    for {set i 0} {$i < $numArrays} {incr i} {
     1245        set array [$dataAttrs GetArray $i]
     1246        set fname [$dataAttrs GetArrayName $i]
     1247        foreach {min max} [$array GetRange -1] break
     1248        if {!$foundDefaultArray} {
     1249            set vmin $min
     1250            set vmax $max
     1251            set foundDefaultArray 1
     1252        }
     1253        if {[info exists _fld2Components($fname)]} {
     1254            puts stderr "WARNING: Re-use of field name within cell data attributes"
     1255        } else {
    12161256            lappend limits $fname [list $min $max]
    12171257            set _fld2Units($fname) ""
    12181258            set _fld2Label($fname) $fname
    1219             # Let the VTK file override the <type> designated.
     1259            # Let the VTK file override the <elemsize>
    12201260            set _fld2Components($fname) [$array GetNumberOfComponents]
    12211261            lappend _comp2fldName($cname) $fname
    12221262        }
    12231263    }
    1224 
     1264    set dataAttrs [$dataset GetFieldData]
     1265    if { $dataAttrs == ""} {
     1266        puts stderr "ERROR: Can't get field data attributes found in \"$_path\""
     1267        rename $reader ""
     1268        return 0
     1269    }
     1270    set numArrays [$dataAttrs GetNumberOfArrays]
     1271    for {set i 0} {$i < $numArrays} {incr i} {
     1272        set array [$dataAttrs GetArray $i]
     1273        set fname [$dataAttrs GetArrayName $i]
     1274        foreach {min max} [$array GetRange -1] break
     1275        if {!$foundDefaultArray} {
     1276            set vmin $min
     1277            set vmax $max
     1278            set foundDefaultArray 1
     1279        }
     1280        if {[info exists _fld2Components($fname)]} {
     1281            puts stderr "WARNING: Re-use of field name within field data attributes"
     1282        } else {
     1283            lappend limits $fname [list $min $max]
     1284            set _fld2Units($fname) ""
     1285            set _fld2Label($fname) $fname
     1286            # Let the VTK file override the <elemsize>
     1287            set _fld2Components($fname) [$array GetNumberOfComponents]
     1288            lappend _comp2fldName($cname) $fname
     1289        }
     1290    }
     1291    # This is set to the range of the first array found
    12251292    lappend limits v [list $vmin $vmax]
    12261293    set _comp2limits($cname) $limits
Note: See TracChangeset for help on using the changeset viewer.