|
Asaad--
I don't pretend to know all the ways to enter, or the easiest way to enter point-based stress tensors, however, I do know two ways to do this:
(1) Using the VTK XML-based format, see file VTK-XML-Stress-Coding.txt
(2) Using the EnSight Gold binary format, see file EnSight-Stress-Coding.txt
In these code extracts, I have included the two scalar datum
items Effective_Stress and Pressure. As useful as PV's
Calculator Filter is, I find it easier to do these two scalar
stress invariant calculations in the code that generates the
simulation results output.
Hope this helps. --Sam
On 5/12/2016 6:23 AM, Sellmann, Kai
Asaad wrote:
|
<snip>
!!
!! Start vtk "PointData" data.
!!
WRITE (IO_UNIT%LVTO,'(A)') '<PointData Tensors="Stress"
Scalars="Material">'
!!
!! Write element-based (cell) stress data to VTK Data File.
!! The retrieval function STRESS_DATA( element_n, component_i ) is
used
!! with the following stress-component retrieval pattern to produce
the
!! the stress-component pattern expected by ParaView (PV):
!! ( 1 4 5 ) ( xx xy xz ) ( 1 2 3 )
!! Fma-3D Indices => ( 4 2 6 ) = ( yx yy yz ) = ( 4 5 6 ) <= PV
Indices
!! ( 5 6 3 ) ( zx zy zz ) ( 7 8 9 )
!!
WRITE(IO_UNIT%LVTO,'(2X,A)')'<DataArray type="Float32"
Name="Stress" NumberOfComponents="9" format="ascii">'
Lbgn = 1
Lend = LREMAIN
DO i = 1,LBLOCKS+1
WRITE(IO_UNIT%LVTO,'((6(1PE15.7)))')
& ((/
STRESS_DATA(NELUSED(L),1),STRESS_DATA(NELUSED(L),4),STRESS_DATA(NELUSED(L),5),
&
STRESS_DATA(NELUSED(L),4),STRESS_DATA(NELUSED(L),2),STRESS_DATA(NELUSED(L),6),
&
STRESS_DATA(NELUSED(L),5),STRESS_DATA(NELUSED(L),6),STRESS_DATA(NELUSED(L),3)
/), L = Lbgn,Lend)
Lbgn = Lend + 1
Lend = Lend + LBCOUNT
ENDDO
WRITE(IO_UNIT%LVTO,'(2X,A)')'</DataArray>'
WRITE(IO_UNIT%LVTO,'(2X,A)')'<DataArray type="Float32"
Name="Effective_Stress" NumberOfComponents="1" format="ascii">'
Lbgn = 1
Lend = LREMAIN
DO i = 1,LBLOCKS+1
WRITE(IO_UNIT%LVTO,'((6(1PE15.7)))')
(EFFECTIVE_STRESS(NELUSED(L)), L = Lbgn,Lend)
Lbgn = Lend + 1
Lend = Lend + LBCOUNT
ENDDO
WRITE(IO_UNIT%LVTO,'(2X,A)')'</DataArray>'
WRITE(IO_UNIT%LVTO,'(2X,A)')'<DataArray type="Float32"
Name="Pressure" NumberOfComponents="1" format="ascii">'
Lbgn = 1
Lend = LREMAIN
DO i = 1,LBLOCKS+1
WRITE(IO_UNIT%LVTO,'((6(1PE15.7)))') (PRESSURE(NELUSED(L)), L =
Lbgn,Lend)
Lbgn = Lend + 1
Lend = Lend + LBCOUNT
ENDDO
WRITE(IO_UNIT%LVTO,'(2X,A)')'</DataArray>'
WRITE(IO_UNIT%LVTO,'(2X,A)')'<DataArray type="Float32"
Name="Bulk_Strain" NumberOfComponents="1" format="ascii">'
Lbgn = 1
Lend = LREMAIN
DO i = 1,LBLOCKS+1
WRITE(IO_UNIT%LVTO,'((6(1PE15.7)))') (BULK_STRAIN(NELUSED(L)), L
= Lbgn,Lend)
Lbgn = Lend + 1
Lend = Lend + LBCOUNT
ENDDO
WRITE(IO_UNIT%LVTO,'(2X,A)')'</DataArray>'
WRITE(IO_UNIT%LVTO,'(2X,A)')'<DataArray type="Float32"
Name="Strain_Energy" NumberOfComponents="1" format="ascii">'
Lbgn = 1
Lend = LREMAIN
DO i = 1,LBLOCKS+1
WRITE(IO_UNIT%LVTO,'((6(1PE15.7)))')
(STRAIN_ENERGY_DENSITY(NELUSED(L)), L = Lbgn,Lend)
Lbgn = Lend + 1
Lend = Lend + LBCOUNT
ENDDO
WRITE(IO_UNIT%LVTO,'(2X,A)')'</DataArray>'
WRITE(IO_UNIT%LVTO,'(2X,A)')'<DataArray type="Int32"
Name="Material" NumberOfComponents="1" format="ascii">'
Lbgn = 1
Lend = LREMAIN
DO i = 1,LBLOCKS+1
WRITE(IO_UNIT%LVTO,'((6X,8I10))') (MatID_DATA(NELUSED(L)), L =
Lbgn,Lend)
Lbgn = Lend + 1
Lend = Lend + LBCOUNT
ENDDO
WRITE(IO_UNIT%LVTO,'(2X,A)')'</DataArray>'
!!
!! End vtk "PointData" data.
!!
WRITE (IO_UNIT%LVTO,'(A)') '</PointData>'
</snip><snip>
!!
!! Initialize sequential Material part counter.
!!
MPart = 0
!!
!! Start this-time-step block.
!!
CBUFFER = "BEGIN TIME STEP"
WRITE (IO_UNIT%LEGO) CBUFFER
CBUFFER = "Element Stress(xx,yy,zz,xy,xz,yz) Results"
WRITE (IO_UNIT%LEGO) CBUFFER
!!
!! Loop on Material parts.
!!
DO M = 1,NUMMT
!!
!! The function ELEMENTS_AND_NODES_USED(*) gen's nodal-points-used array
NPTUSED,
!! elements-used array NELUSED and vtk output-index-translation array NPTNOWI
for
!! this material. If material M is used, the function returns 1, otherwise 0.
!!
IF (ELEMENTS_AND_NODES_USED(M) .GT. 0) THEN
NNodes = MATERIAL(M)%NNodes
NElems = MATERIAL(M)%NElems
CBUFFER = "part"
WRITE (IO_UNIT%LEGO) CBUFFER
MPart = MPart + 1
WRITE (IO_UNIT%LEGO) MPart
Nend = 0
LBCOUNT = IBCOUNT
MEL_COUNT = (/MHX,MPX,MPY,MTX,MM3,MP3,MM4,MP4,MTR,MPH,MPG/)
DO k = 1,10
MXX = MEL_COUNT(k)
IF (MXX .GT. 0) THEN
Nbgn = Nend + 1
Nend = Nend + MXX
CBUFFER = ESG_ELEMENT_TYPE(k)
WRITE (IO_UNIT%LEGO) CBUFFER
LBLOCKS = MXX / LBCOUNT
LREMAIN = MXX - LBCOUNT*LBLOCKS
!!
!! NOTE: The symmetric stress tensor components stored in the
1-D
!! array STRESS (*,1:6) in the program exactly match the
component
!! order expected by the EnSight Gold results file.
!!
!! Program ==> (/Sxx,Syy,Szz,Sxy,Sxz,Syz/)
!! EnSight ==> (/S11,S22,S33,S12,S13,S23/)
!!
Lbgn = Nbgn
Lend = Lbgn + LREMAIN - 1
DO i = 1,LBLOCKS+1
WRITE (IO_UNIT%LEGO) (STRESS_DATA(NELUSED(n),1), n =
Lbgn,Lend)
Lbgn = Lend + 1
Lend = Lend + LBCOUNT
ENDDO
Lbgn = Nbgn
Lend = Lbgn + LREMAIN - 1
DO i = 1,LBLOCKS+1
WRITE (IO_UNIT%LEGO) (STRESS_DATA(NELUSED(n),2), n =
Lbgn,Lend)
Lbgn = Lend + 1
Lend = Lend + LBCOUNT
ENDDO
Lbgn = Nbgn
Lend = Lbgn + LREMAIN - 1
DO i = 1,LBLOCKS+1
WRITE (IO_UNIT%LEGO) (STRESS_DATA(NELUSED(n),3), n =
Lbgn,Lend)
Lbgn = Lend + 1
Lend = Lend + LBCOUNT
ENDDO
Lbgn = Nbgn
Lend = Lbgn + LREMAIN - 1
DO i = 1,LBLOCKS+1
WRITE (IO_UNIT%LEGO) (STRESS_DATA(NELUSED(n),4), n =
Lbgn,Lend)
Lbgn = Lend + 1
Lend = Lend + LBCOUNT
ENDDO
Lbgn = Nbgn
Lend = Lbgn + LREMAIN - 1
DO i = 1,LBLOCKS+1
WRITE (IO_UNIT%LEGO) (STRESS_DATA(NELUSED(n),5), n =
Lbgn,Lend)
Lbgn = Lend + 1
Lend = Lend + LBCOUNT
ENDDO
Lbgn = Nbgn
Lend = Lbgn + LREMAIN - 1
DO i = 1,LBLOCKS+1
WRITE (IO_UNIT%LEGO) (STRESS_DATA(NELUSED(n),6), n =
Lbgn,Lend)
Lbgn = Lend + 1
Lend = Lend + LBCOUNT
ENDDO
ENDIF
ENDDO
ENDIF
ENDDO
!!
!! Close out this-time-step block.
!!
CBUFFER = "END TIME STEP"
WRITE (IO_UNIT%LEGO) CBUFFER
CLOSE (UNIT=IO_UNIT%LEGO, STATUS='KEEP')
ENDIF
</snip>
######################################################################################
The EnSight Case file --
######################################################################################
FORMAT
type: ensight gold
GEOMETRY
model: 1 1 fmaego.results.geom change_coords_only
VARIABLE
vector per node: 1 1 Displacement fmaego.results.ndis
vector per node: 1 1 Velocity fmaego.results.nvel
vector per node: 1 1 Acceleration fmaego.results.nacc
scalar per element: 1 1 Material fmaego.results.emat
scalar per element: 1 1 Material-State fmaego.results.esta
scalar per element: 1 1 Pressure fmaego.results.eprs
scalar per element: 1 1 Bulk-Strain fmaego.results.elnv
scalar per element: 1 1 Strain-Energy-Density fmaego.results.esed
scalar per element: 1 1 Effective-Stress fmaego.results.edev
vector per element: 1 1 Stress*Vel fmaego.results.estv
tensor symm per element: 1 1 Stress fmaego.results.estr
TIME
time set: 1
number of steps: 101
time values: 1.000000000000E-06 2.000000000000E-05
4.100000000000E-05 6.100000000000E-05 8.100000000000E-05
1.010000000000E-04 1.210000000000E-04 1.410000000000E-04
1.610000000000E-04 1.810000000000E-04 2.010000000000E-04
2.210000000000E-04 2.410000000000E-04 2.610000000000E-04
2.800000000000E-04 3.000000000000E-04 3.200000000000E-04
3.400000000000E-04 3.600000000000E-04 3.800000000000E-04
4.000000000000E-04 4.200000000000E-04 4.400000000000E-04
4.600000000000E-04 4.800000000000E-04 5.000000000000E-04
5.200000000000E-04 5.400000000000E-04 5.600000000000E-04
5.800000000000E-04 6.000000000000E-04 6.200000000000E-04
6.400000000000E-04 6.600000000000E-04 6.800000000000E-04
7.000000000000E-04 7.200000000000E-04 7.400000000000E-04
7.600000000000E-04 7.800000000000E-04 8.000000000000E-04
8.200000000000E-04 8.400000000000E-04 8.600000000000E-04
8.800000000000E-04 9.000000000000E-04 9.200000000000E-04
9.400000000000E-04 9.600000000000E-04 9.800000000000E-04
1.000000000000E-03 1.020000000000E-03 1.040000000000E-03
1.060000000000E-03 1.080000000000E-03 1.100000000000E-03
1.120000000000E-03 1.140000000000E-03 1.161000000000E-03
1.181000000000E-03 1.201000000000E-03 1.221000000000E-03
1.241000000000E-03 1.261000000000E-03 1.281000000000E-03
1.301000000000E-03 1.321000000000E-03 1.341000000000E-03
1.361000000000E-03 1.381000000000E-03 1.401000000000E-03
1.421000000000E-03 1.441000000000E-03 1.461000000000E-03
1.481000000000E-03 1.501000000000E-03 1.521000000000E-03
1.541000000000E-03 1.561000000000E-03 1.581000000000E-03
1.601000000000E-03 1.621000000000E-03 1.641000000000E-03
1.661000000000E-03 1.681000000000E-03 1.701000000000E-03
1.721000000000E-03 1.741000000000E-03 1.761000000000E-03
1.781000000000E-03 1.801000000000E-03 1.821000000000E-03
1.841000000000E-03 1.861000000000E-03 1.881000000000E-03
1.901000000000E-03 1.921000000000E-03 1.941000000000E-03
1.961000000000E-03 1.981000000000E-03 2.001000000000E-03
FILE
file set: 1
number of steps: 101
######################################################################################
_______________________________________________ Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the ParaView Wiki at: http://paraview.org/Wiki/ParaView Search the list archives at: http://markmail.org/search/?q=ParaView Follow this link to subscribe/unsubscribe: http://public.kitware.com/mailman/listinfo/paraview
