diff --git a/processing/post/colormap.f90 b/processing/post/colormap.f90 deleted file mode 100644 index 17a9ebc38..000000000 --- a/processing/post/colormap.f90 +++ /dev/null @@ -1,69 +0,0 @@ -program colormap - -implicit none - real startH, endH, startS, endS, startL, endL, h_strich,x,c,m - integer steps,i,j - character(len=100) name - print*, '******************************************************************************' - print*, ' write colormap for gmsh' - print*, '******************************************************************************' - print*, '' - write(*, '(A)', advance = 'NO') 'Please enter startvalue for L: ' - read(*, *), startL - write(*, '(A)', advance = 'NO') 'Please enter endvalue for L: ' - read(*, *), endL - write(*, '(A)', advance = 'NO') 'Please enter startvalue for S: ' - read(*, *), startS - write(*, '(A)', advance = 'NO') 'Please enter endvalue for S: ' - read(*, *), endS - write(*, '(A)', advance = 'NO') 'Please enter steps: ' - read(*, *), steps - do j=0,360 - write(name, *) j - name=adjustl(name) - startH = real(j) - endH =real(j) - open(20, file = ('colormap_')//trim(name)//('.map')) - write(20,*),'View.ColorTable = {' - if(endH6.0) h_strich = h_strich-6.0 - c = (1- abs(2*(startL + real(i)*(endL-startL)/real(steps))-1))*sqrt(startS + real(i)*(endS-startS)/real(steps)) - x = c*(1- abs(mod(h_strich, real(2))-1)) - m = (startL + real(i)*(endL-startL)/real(steps)) -.5*c - if ((0.0 <= h_strich).and.(h_strich<1.0)) then - write(20,*),'{',(c+m)*255,',',(x+m)*255,',',(0.0+m)*255,'},' - else if ((1.0 <= h_strich).and.(h_strich<2.0)) then - write(20,*),'{',(x+m)*255,',',(c+m)*255,',',(0.0+m)*255,'},' - else if ((2.0 <= h_strich).and.(h_strich<3.0)) then - write(20,*),'{',(0.0+m)*255,',',(c+m)*255,',',(x+m)*255,'},' - else if ((3.0 <= h_strich).and.(h_strich<4.0)) then - write(20,*),'{',(0.0+m)*255,',',(x+m)*255,',',(c+m)*255,'},' - else if ((4.0 <= h_strich).and.(h_strich<5.0)) then - write(20,*),'{',(x+m)*255,',',(0.0+m)*255,',',(c+m)*255,'},' - else if ((5.0 <= h_strich).and.(h_strich<=6.0)) then - write(20,*),'{',(c+m)*255,',',(0.0+m)*255,',',(x+m)*255,'},' - endif - enddo - H_strich = (startH + real(i)*(endH-startH)/real(steps))/60 - if(h_strich>6.0) h_strich = h_strich-6.0 - c = (1- abs(2*(startL + real(i)*(endL-startL)/real(steps))-1))*(startS + real(i)*(endS-startS)/real(steps)) - x = c*(1- abs(mod(h_strich, real(2))-1)) - m = (startL + real(i)*(endL-startL)/real(steps)) -.5*c - if ((0.0 <= h_strich).and.(h_strich<1.0)) then - write(20,*),'{',(c+m)*255,',',(x+m)*255,',',(0.0+m)*255,'}' - else if ((1.0 <= h_strich).and.(h_strich<2.0)) then - write(20,*),'{',(x+m)*255,',',(c+m)*255,',',(0.0+m)*255,'}' - else if ((2.0 <= h_strich).and.(h_strich<3.0)) then - write(20,*),'{',(0.0+m)*255,',',(c+m)*255,',',(x+m)*255,'}' - else if ((3.0 <= h_strich).and.(h_strich<4.0)) then - write(20,*),'{',(0.0+m)*255,',',(x+m)*255,',',c+m,'}' - else if ((4.0 <= h_strich).and.(h_strich<5.0)) then - write(20,*),'{',(x+m)*255,',',(0.0+m)*255,',',(c+m)*255,'}' - else if ((5.0 <= h_strich).and.(h_strich<=6.0)) then - write(20,*),'{',(c+m)*255,',',(0.0+m)*255,',',(x+m)*255,'}' - endif - write(20,*),'};' - enddo -end program \ No newline at end of file diff --git a/processing/post/gmsh_colormapConstantHue.py b/processing/post/gmsh_colormapConstantHue.py new file mode 100644 index 000000000..27760bc05 --- /dev/null +++ b/processing/post/gmsh_colormapConstantHue.py @@ -0,0 +1,65 @@ +#!/usr/bin/python +# -*- coding: iso-8859-1 -*- + +# This script is used to generate colormaps for gmsh (http://geuz.org/gmsh/) +# The script writes 360 files. Each file contains one colormap. +# More information on the used colors space can be found at http://en.wikipedia.org/wiki/HSL_and_HSV +# written by M. Diehl, m.diehl@mpie.de + +import math + +print '******************************************************************************' +print ' Write colormaps for gmsh' +print '' +print 'Suitable for datasets that have only positive/negative values' +print 'The colors are described using the HSL model.' +print 'Each of the 360 generated colormaps uses one value of (H)ue.' +print 'The colormaps runs at constant H from given (L)ightness and (S)aturation' +print 'to given L and S' +print 'L is distribute linearly, S changes as the square root of a linear list.' +print 'Suitable values: L_start = S_start = 1 , L_end = S_end = 0.' +print '******************************************************************************' +print '' +startL = float(raw_input('Please enter start value for (L)ightness: ')) +endL = float(raw_input('Please enter end value for L: ')) +startS = float(raw_input('Please enter start value for (S)aturation: ')) +endS = float(raw_input('Please enter end value for S: ')) +steps = int(raw_input('Please enter steps/resolution: ')) +for h in range(0,360): + colormap = open('colormap_' + str(h).zfill(3) + '.map',"w") + colormap.write('View.ColorTable = {\n') + for i in range(0,steps): + h_strich = h/60.0 + if(h_strich>6.0): + h_strich = h_strich-6.0 + c = (1- abs(2*(startL + i*(endL-startL)/steps)-1))*math.sqrt(startS + i*(endS-startS)/steps) + x = c*(1- abs(h_strich%2-1)) + m = (startL + i*(endL-startL)/steps) -.5*c + if (0.0 <= h_strich)and(h_strich<1.0): + colormap.write('{'+str((c+m)*255.0)+','+str((x+m)*255.0)+','+str((0.0+m)*255.0)+'},\n') + elif (1.0 <= h_strich)and(h_strich<2.0): + colormap.write('{'+str((x+m)*255.0)+','+str((c+m)*255.0)+','+str((0.0+m)*255.0)+'},\n') + elif (2.0 <= h_strich)and(h_strich<3.0): + colormap.write('{'+str((0.0+m)*255.0)+','+str((c+m)*255.0)+','+str((x+m)*255.0)+'},\n') + elif (3.0 <= h_strich)and(h_strich<4.0): + colormap.write('{'+str((0.0+m)*255.0)+','+str((x+m)*255.0)+','+str((c+m)*255.0)+'},\n') + elif (4.0 <= h_strich)and(h_strich<5.0): + colormap.write('{'+str((x+m)*255.0)+','+str((0.0+m)*255.0)+','+str((c+m)*255.0)+'},\n') + elif (5.0 <= h_strich)and(h_strich<=6.0): + colormap.write('{'+str((c+m)*255.0)+','+str((0.0+m)*255.0)+','+str((x+m)*255.0)+'},\n') + c = (1- abs(2*(startL)-1))*(startS) + x = c*(1- abs(h_strich%2-1)) + m = (startL) -.5*c + if (0.0 <= h_strich)and(h_strich<1.0): + colormap.write('{'+str((c+m)*255.0)+','+str((x+m)*255.0)+','+str((0.0+m)*255.0)+'}};') + elif (1.0 <= h_strich)and(h_strich<2.0): + colormap.write('{'+str((x+m)*255.0)+','+str((c+m)*255.0)+','+str((0.0+m)*255.0)+'}};') + elif (2.0 <= h_strich)and(h_strich<3.0): + colormap.write('{'+str((0.0+m)*255.0)+','+str((c+m)*255.0)+','+str((x+m)*255.0)+'}};') + elif (3.0 <= h_strich)and(h_strich<4.0): + colormap.write('{'+str((0.0+m)*255.0)+','+str((x+m)*255.0)+','+str((c+m)*255.0)+'}};') + elif (4.0 <= h_strich)and(h_strich<5.0): + colormap.write('{'+str((x+m)*255.0)+','+str((0.0+m)*255.0)+','+str((c+m)*255.0)+'}};') + elif (5.0 <= h_strich)and(h_strich<=6.0): + colormap.write('{'+str((c+m)*255.0)+','+str((0.0+m)*255.0)+','+str((x+m)*255.0)+'}};') + \ No newline at end of file diff --git a/processing/post/gmsh_colormapOppositeColors.py b/processing/post/gmsh_colormapOppositeColors.py new file mode 100644 index 000000000..28d121040 --- /dev/null +++ b/processing/post/gmsh_colormapOppositeColors.py @@ -0,0 +1,87 @@ +#!/usr/bin/python +# -*- coding: iso-8859-1 -*- + +# This script is used to generate colormaps for gmsh (http://geuz.org/gmsh/) +# The script writes 360 files. Each file contains one colormap. +# More information on the used colors space can be found at http://en.wikipedia.org/wiki/HSL_and_HSV +# written by M. Diehl, m.diehl@mpie.de + +import math + +print '******************************************************************************' +print ' Write colormaps for gmsh' +print '' +print 'Suitable for datasets running from negative to positive values.' +print 'The colors are described using the HSL model.' +print 'Each of the 360 generated colormaps uses two values of (H)ue.' +print 'The colormaps runs at constant H from given (L)ightness and (S)aturation' +print 'to given L_min and S_min and goes to H+180° (with given L and S)' +print 'Suitable values: L = L_min =.5, S = 1, and S_min=0,' +print '******************************************************************************' +print '' +startL = float(raw_input('Please enter start value for (L)ightness: ')) +endL = float(raw_input('Please enter minimum value for L: ')) +startS = float(raw_input('Please enter start value for (S)aturation: ')) +endS = float(raw_input('Please enter minimum value for S: ')) +steps = int(raw_input('Please enter steps/resolution: ')) +steps = steps/2 +for h in range(0,360): + colormap = open('colormap_' + str(h).zfill(3) + '.map',"w") + colormap.write('View.ColorTable = {\n') + i=0 + h_strich = h/60.0 + if(h_strich>6.0): + h_strich = h_strich-6.0 + for j in range(0,steps+1): + # let L run linearly from 0 to 1, let S be the square root of a linear list from 0 to 1 + c = (1- abs(2*(startL - j*(startL-endL)/steps)-1))*(startS - j*(startS-endS)/steps) + x = c*(1- abs(h_strich%2-1)) + m = (startL - j*(startL-endL)/steps) -.5*c + if (0.0 <= h_strich)and(h_strich<1.0): + colormap.write('{'+str((c+m)*255.0)+','+str((x+m)*255.0)+','+str((0.0+m)*255.0)+'},\n') + elif (1.0 <= h_strich)and(h_strich<2.0): + colormap.write('{'+str((x+m)*255.0)+','+str((c+m)*255.0)+','+str((0.0+m)*255.0)+'},\n') + elif (2.0 <= h_strich)and(h_strich<3.0): + colormap.write('{'+str((0.0+m)*255.0)+','+str((c+m)*255.0)+','+str((x+m)*255.0)+'},\n') + elif (3.0 <= h_strich)and(h_strich<4.0): + colormap.write('{'+str((0.0+m)*255.0)+','+str((x+m)*255.0)+','+str((c+m)*255.0)+'},\n') + elif (4.0 <= h_strich)and(h_strich<5.0): + colormap.write('{'+str((x+m)*255.0)+','+str((0.0+m)*255.0)+','+str((c+m)*255.0)+'},\n') + elif (5.0 <= h_strich)and(h_strich<=6.0): + colormap.write('{'+str((c+m)*255.0)+','+str((0.0+m)*255.0)+','+str((x+m)*255.0)+'},\n') + i = i+1 + h_strich = (h+180.0)/60.0 + if(h_strich>6.0): + h_strich = h_strich-6.0 + for j in range(1,steps): + c = (1- abs(2*(endL+j*(startL-endL)/steps)-1))*(endS+j*(startS-endS)/steps) + x = c*(1- abs(h_strich%2-1)) + m = (endL+j*(startL-endL)/steps) -.5*c + if (0.0 <= h_strich)and(h_strich<1.0): + colormap.write('{'+str((c+m)*255.0)+','+str((x+m)*255.0)+','+str((0.0+m)*255.0)+'},\n') + elif (1.0 <= h_strich)and(h_strich<2.0): + colormap.write('{'+str((x+m)*255.0)+','+str((c+m)*255.0)+','+str((0.0+m)*255.0)+'},\n') + elif (2.0 <= h_strich)and(h_strich<3.0): + colormap.write('{'+str((0.0+m)*255.0)+','+str((c+m)*255.0)+','+str((x+m)*255.0)+'},\n') + elif (3.0 <= h_strich)and(h_strich<4.0): + colormap.write('{'+str((0.0+m)*255.0)+','+str((x+m)*255.0)+','+str((c+m)*255.0)+'},\n') + elif (4.0 <= h_strich)and(h_strich<5.0): + colormap.write('{'+str((x+m)*255.0)+','+str((0.0+m)*255.0)+','+str((c+m)*255.0)+'},\n') + elif (5.0 <= h_strich)and(h_strich<=6.0): + colormap.write('{'+str((c+m)*255.0)+','+str((0.0+m)*255.0)+','+str((x+m)*255.0)+'},\n') + i=i+1 + c = (1- abs(2*(startL)-1))*(startS) + x = c*(1- abs(h_strich%2-1)) + m = (startL) -.5*c + if (0.0 <= h_strich)and(h_strich<1.0): + colormap.write('{'+str((c+m)*255.0)+','+str((x+m)*255.0)+','+str((0.0+m)*255.0)+'}};') + elif (1.0 <= h_strich)and(h_strich<2.0): + colormap.write('{'+str((x+m)*255.0)+','+str((c+m)*255.0)+','+str((0.0+m)*255.0)+'}};') + elif (2.0 <= h_strich)and(h_strich<3.0): + colormap.write('{'+str((0.0+m)*255.0)+','+str((c+m)*255.0)+','+str((x+m)*255.0)+'}};') + elif (3.0 <= h_strich)and(h_strich<4.0): + colormap.write('{'+str((0.0+m)*255.0)+','+str((x+m)*255.0)+','+str((c+m)*255.0)+'}};') + elif (4.0 <= h_strich)and(h_strich<5.0): + colormap.write('{'+str((x+m)*255.0)+','+str((0.0+m)*255.0)+','+str((c+m)*255.0)+'}};') + elif (5.0 <= h_strich)and(h_strich<=6.0): + colormap.write('{'+str((c+m)*255.0)+','+str((0.0+m)*255.0)+','+str((x+m)*255.0)+'}};') \ No newline at end of file diff --git a/processing/post/paraview_colormapConstantHue.py b/processing/post/paraview_colormapConstantHue.py new file mode 100644 index 000000000..0488075b2 --- /dev/null +++ b/processing/post/paraview_colormapConstantHue.py @@ -0,0 +1,50 @@ +#!/usr/bin/python +# -*- coding: iso-8859-1 -*- + +# This script is used to generate colormaps for paraview (www.paraview.org) +# The script writes 360 files. Each file contains one colormap. +# More information on the used colors space can be found at http://en.wikipedia.org/wiki/HSL_and_HSV +# written by M. Diehl, m.diehl@mpie.de + +import math + +print '******************************************************************************' +print ' Write colormaps for paraview' +print '' +print 'Suitable for datasets that have only positive/negative values' +print 'The colors are described using the HSL model.' +print 'Each of the 360 generated colormaps uses one value of (H)ue.' +print 'The colormaps runs at constant H from given (L)ightness and (S)aturation' +print 'to given L and S' +print 'L is distribute linearly, S changes as the square root of a linear list.' +print 'Suitable values: L_start = S_start = 1 , L_end = S_end = 0.' +print '******************************************************************************' +print '' +startL = float(raw_input('Please enter start value for (L)ightness: ')) +endL = float(raw_input('Please enter end value for L: ')) +startS = float(raw_input('Please enter start value for (S)aturation: ')) +endS = float(raw_input('Please enter end value for S: ')) +steps = int(raw_input('Please enter steps/resolution: ')) +for h in range(0,360): + colormap = open('colormap_' + str(h) + '.xml',"w") + colormap.write('\n') + for i in range(0,steps+1): + h_strich = h/60.0 + if(h_strich>6.0): + h_strich = h_strich-6.0 + c = (1- abs(2*(startL + i*(endL-startL)/steps)-1))*math.sqrt(startS + i*(endS-startS)/steps) + x = c*(1- abs(h_strich%2-1)) + m = (startL + i*(endL-startL)/steps) -.5*c + if (0.0 <= h_strich)and(h_strich<1.0): + colormap.write('\n') + elif (1.0 <= h_strich)and(h_strich<2.0): + colormap.write('\n') + elif (2.0 <= h_strich)and(h_strich<3.0): + colormap.write('\n') + elif (3.0 <= h_strich)and(h_strich<4.0): + colormap.write('\n') + elif (4.0 <= h_strich)and(h_strich<5.0): + colormap.write('\n') + elif (5.0 <= h_strich)and(h_strich<=6.0): + colormap.write('\n') + colormap.write('') \ No newline at end of file diff --git a/processing/post/paraview_colormapOppositeColors.py b/processing/post/paraview_colormapOppositeColors.py new file mode 100644 index 000000000..5a6aab3d3 --- /dev/null +++ b/processing/post/paraview_colormapOppositeColors.py @@ -0,0 +1,73 @@ +#!/usr/bin/python +# -*- coding: iso-8859-1 -*- + +# This script is used to generate colormaps for paraview (www.paraview.org) +# The script writes 360 files. Each file contains one colormap. +# More information on the used colors space can be found at http://en.wikipedia.org/wiki/HSL_and_HSV +# written by M. Diehl, m.diehl@mpie.de + +import math + +print '******************************************************************************' +print ' Write colormaps for paraview' +print '' +print 'Suitable for datasets running from negative to positive values.' +print 'The colors are described using the HSL model.' +print 'Each of the 360 generated colormaps uses two values of (H)ue.' +print 'The colormaps runs at constant H from given (L)ightness and (S)aturation' +print 'to given L_min and S_min and goes to H+180° (with given L and S)' +print 'Suitable values: L = L_min =.5, S = 1, and S_min=0,' +print '******************************************************************************' +print '' +startL = float(raw_input('Please enter start value for (L)ightness: ')) +endL = float(raw_input('Please enter minimum value for L: ')) +startS = float(raw_input('Please enter start value for (S)aturation: ')) +endS = float(raw_input('Please enter minimum value for S: ')) +steps = int(raw_input('Please enter steps/resolution: ')) +steps = steps/2 +for h in range(0,360): + colormap = open('colormap_' + str(h).zfill(3) + '.xml',"w") + colormap.write('\n') + i=0 + h_strich = h/60.0 + if(h_strich>6.0): + h_strich = h_strich-6.0 + for j in range(0,steps+1): + # let L run linearly from 0 to 1, let S be the square root of a linear list from 0 to 1 + c = (1- abs(2*(startL - j*(startL-endL)/steps)-1))*(startS - j*(startS-endS)/steps) + x = c*(1- abs(h_strich%2-1)) + m = (startL - j*(startL-endL)/steps) -.5*c + if (0.0 <= h_strich)and(h_strich<1.0): + colormap.write('\n') + elif (1.0 <= h_strich)and(h_strich<2.0): + colormap.write('\n') + elif (2.0 <= h_strich)and(h_strich<3.0): + colormap.write('\n') + elif (3.0 <= h_strich)and(h_strich<4.0): + colormap.write('\n') + elif (4.0 <= h_strich)and(h_strich<5.0): + colormap.write('\n') + elif (5.0 <= h_strich)and(h_strich<=6.0): + colormap.write('\n') + i = i+1 + h_strich = (h+180.0)/60.0 + if(h_strich>6.0): + h_strich = h_strich-6.0 + for j in range(1,steps+1): + c = (1- abs(2*(endL+j*(startL-endL)/steps)-1))*(endS+j*(startS-endS)/steps) + x = c*(1- abs(h_strich%2-1)) + m = (endL+j*(startL-endL)/steps) -.5*c + if (0.0 <= h_strich)and(h_strich<1.0): + colormap.write('\n') + elif (1.0 <= h_strich)and(h_strich<2.0): + colormap.write('\n') + elif (2.0 <= h_strich)and(h_strich<3.0): + colormap.write('\n') + elif (3.0 <= h_strich)and(h_strich<4.0): + colormap.write('\n') + elif (4.0 <= h_strich)and(h_strich<5.0): + colormap.write('\n') + elif (5.0 <= h_strich)and(h_strich<=6.0): + colormap.write('\n') + i=i+1 + colormap.write('') \ No newline at end of file diff --git a/processing/post/reconstruct.pyd b/processing/post/reconstruct.pyd deleted file mode 100644 index 17cf5f745..000000000 Binary files a/processing/post/reconstruct.pyd and /dev/null differ diff --git a/processing/post/spectral_post.py b/processing/post/spectral_post.py index a51e0cb0f..04104a909 100644 --- a/processing/post/spectral_post.py +++ b/processing/post/spectral_post.py @@ -1,112 +1,114 @@ -import array -import struct -#import numpy -print('post processing for mpie_spectral') - -filename ='results.out' -results = open(filename, 'rb') -print('filename:', filename) -position=0 - -#this funtion finds a string value in the given file for a given keyword -def searchNameForKeyword(searchstring, file, maxpos): - results.seek(0,0) - begin = file.read(2048).find(searchstring) + len(searchstring) # function will return -1 if string isnt found - file.seek(begin -len(searchstring) -4) #position of header - header = file.read(4) #store header - file.seek(begin,0) - length = file.read(2048).find(header) - file.seek(begin,0) - name = file.read(length) - return name, max(maxpos,results.tell()) - -#this funtion finds an integer value in the given file for a given keyword -def searchValueForKeyword(searchstring, file, maxpos): - results.seek(0,0) - begin = file.read(2048).find(searchstring) + len(searchstring) # function will return -1 if string isnt found - file.seek(begin,0) - value = array.array('i',[0]) - value = struct.unpack('i',results.read(4))[0] - return value, max(maxpos,results.tell()) - -#finds the value for the three integers followed the given keyword -def searchArrayForKeyword(searchstring, file, maxpos): - values = array.array('i',[0,0,0]) - results.seek(0,0) - begin = results.read(2048).find(searchstring) + len(searchstring) #end position of string "resolution" - pos = results.read(60).find(b'a') - results.seek(begin+pos+2,0) #why two, not 1?? - values[0]=struct.unpack('i',results.read(4))[0] - maxpos=max(maxpos,results.tell()) - results.seek(begin,0) - pos = results.read(60).find(b'b') - results.seek(begin+pos+1,0) - values[1]=struct.unpack('i',results.read(4))[0] - maxpos=max(maxpos,results.tell()) - results.seek(begin,0) - pos = results.read(60).find(b'c') - results.seek(begin+pos+1,0) - values[2]=struct.unpack('i',results.read(4))[0] - maxpos=max(maxpos,results.tell()) - return values, maxpos - -#finds the value for the three doubles followed the given keyword -def searchFarrayForKeyword(searchstring, file, maxpos): - values = array.array('d',[0,0,0]) - results.seek(0,0) - begin = results.read(2048).find(searchstring) + len(searchstring) #end position of string "resolution" - pos = results.read(60).find(b'x') - results.seek(begin+pos+2,0) #why two, not 1?? - values[0]=struct.unpack('d',results.read(8))[0] - maxpos=max(maxpos,results.tell()) - results.seek(begin,0) - pos = results.read(60).find(b'y') - results.seek(begin+pos+1,0) - values[1]=struct.unpack('d',results.read(8))[0] - maxpos=max(maxpos,results.tell()) - results.seek(begin,0) - pos = results.read(60).find(b'z') - results.seek(begin+pos+1,0) - values[2]=struct.unpack('d',results.read(8))[0] - maxpos=max(maxpos,results.tell()) - return values, maxpos - -loadcase, position = searchNameForKeyword(b'Loadcase ', results, position) -workingdir, position = searchNameForKeyword(b'Workingdir ', results, position) -jobname, position = searchNameForKeyword(b'JobName ', results, position) -totalincs, position = searchValueForKeyword(b'totalincs ', results, position) -materialpoint_sizeResults, position = searchValueForKeyword(b'materialpoint_sizeResults ', results, position) -resolution, position = searchArrayForKeyword(b'resolution ', results, position) -geomdimension, position = searchFarrayForKeyword(b'geomdimension ', results, position) -position=position+4 +13*8 -results.seek(position,0) -tnsr = array.array('d',[0,0,0,0,0,0,0,0,0]) -tnsr[0]=struct.unpack('d',results.read(8))[0] -tnsr[1]=struct.unpack('d',results.read(8))[0] -tnsr[2]=struct.unpack('d',results.read(8))[0] -tnsr[3]=struct.unpack('d',results.read(8))[0] -tnsr[4]=struct.unpack('d',results.read(8))[0] -print(tnsr) - - -# ended reading of header. now starting to read information concerning output -#filename = jobname[0:len(jobname)-5]+b'.outputCrystallite' -#outputCrystallite = open(filename, 'r') - -def InCharCount(location, character): - subj = file(location, "r") - body = subj.read() - subj.close() - return body.count(character) - - -def InCharCount(location, character): - subj = file(location, "r") - - nbr_of_char = 0 - for line in subj: - nbr_of_char = nbr_of_char + line.count(character) - - return nbr_of_char - - +#!/usr/bin/python +# -*- coding: iso-8859-1 -*- +import array +import struct +#import numpy +print('post processing for mpie_spectral') + +filename ='results.out' +results = open(filename, 'rb') +print('filename:', filename) +position=0 + +#this funtion finds a string value in the given file for a given keyword +def searchNameForKeyword(searchstring, file, maxpos): + results.seek(0,0) + begin = file.read(2048).find(searchstring) + len(searchstring) # function will return -1 if string isnt found + file.seek(begin -len(searchstring) -4) #position of header + header = file.read(4) #store header + file.seek(begin,0) + length = file.read(2048).find(header) + file.seek(begin,0) + name = file.read(length) + return name, max(maxpos,results.tell()) + +#this funtion finds an integer value in the given file for a given keyword +def searchValueForKeyword(searchstring, file, maxpos): + results.seek(0,0) + begin = file.read(2048).find(searchstring) + len(searchstring) # function will return -1 if string isnt found + file.seek(begin,0) + value = array.array('i',[0]) + value = struct.unpack('i',results.read(4))[0] + return value, max(maxpos,results.tell()) + +#finds the value for the three integers followed the given keyword +def searchArrayForKeyword(searchstring, file, maxpos): + values = array.array('i',[0,0,0]) + results.seek(0,0) + begin = results.read(2048).find(searchstring) + len(searchstring) #end position of string "resolution" + pos = results.read(60).find(b'a') + results.seek(begin+pos+2,0) #why two, not 1?? + values[0]=struct.unpack('i',results.read(4))[0] + maxpos=max(maxpos,results.tell()) + results.seek(begin,0) + pos = results.read(60).find(b'b') + results.seek(begin+pos+1,0) + values[1]=struct.unpack('i',results.read(4))[0] + maxpos=max(maxpos,results.tell()) + results.seek(begin,0) + pos = results.read(60).find(b'c') + results.seek(begin+pos+1,0) + values[2]=struct.unpack('i',results.read(4))[0] + maxpos=max(maxpos,results.tell()) + return values, maxpos + +#finds the value for the three doubles followed the given keyword +def searchFarrayForKeyword(searchstring, file, maxpos): + values = array.array('d',[0,0,0]) + results.seek(0,0) + begin = results.read(2048).find(searchstring) + len(searchstring) #end position of string "resolution" + pos = results.read(60).find(b'x') + results.seek(begin+pos+2,0) #why two, not 1?? + values[0]=struct.unpack('d',results.read(8))[0] + maxpos=max(maxpos,results.tell()) + results.seek(begin,0) + pos = results.read(60).find(b'y') + results.seek(begin+pos+1,0) + values[1]=struct.unpack('d',results.read(8))[0] + maxpos=max(maxpos,results.tell()) + results.seek(begin,0) + pos = results.read(60).find(b'z') + results.seek(begin+pos+1,0) + values[2]=struct.unpack('d',results.read(8))[0] + maxpos=max(maxpos,results.tell()) + return values, maxpos + +loadcase, position = searchNameForKeyword(b'Loadcase ', results, position) +workingdir, position = searchNameForKeyword(b'Workingdir ', results, position) +jobname, position = searchNameForKeyword(b'JobName ', results, position) +totalincs, position = searchValueForKeyword(b'totalincs ', results, position) +materialpoint_sizeResults, position = searchValueForKeyword(b'materialpoint_sizeResults ', results, position) +resolution, position = searchArrayForKeyword(b'resolution ', results, position) +geomdimension, position = searchFarrayForKeyword(b'geomdimension ', results, position) +position=position+4 +13*8 +results.seek(position,0) +tnsr = array.array('d',[0,0,0,0,0,0,0,0,0]) +tnsr[0]=struct.unpack('d',results.read(8))[0] +tnsr[1]=struct.unpack('d',results.read(8))[0] +tnsr[2]=struct.unpack('d',results.read(8))[0] +tnsr[3]=struct.unpack('d',results.read(8))[0] +tnsr[4]=struct.unpack('d',results.read(8))[0] +print(tnsr) + + +# ended reading of header. now starting to read information concerning output +#filename = jobname[0:len(jobname)-5]+b'.outputCrystallite' +#outputCrystallite = open(filename, 'r') + +def InCharCount(location, character): + subj = file(location, "r") + body = subj.read() + subj.close() + return body.count(character) + + +def InCharCount(location, character): + subj = file(location, "r") + + nbr_of_char = 0 + for line in subj: + nbr_of_char = nbr_of_char + line.count(character) + + return nbr_of_char + + diff --git a/processing/post/test.py b/processing/post/test.py deleted file mode 100644 index ca5b8871d..000000000 --- a/processing/post/test.py +++ /dev/null @@ -1,21 +0,0 @@ -import numpy -import reconstruct -# dummy values for resolution and geomdimension (formerly called meshdimension) -resolution=numpy.zeros((3),'i') -resolution[0]=2 -resolution[1]=2 -resolution[2]=2 -geomdimension=numpy.zeros((3),'d') -geomdimension[0]=1.0 -geomdimension[1]=1.0 -geomdimension[2]=1.0 -defgrad=numpy.zeros((resolution[0],resolution[1],resolution[2],3,3),'d') -for i in range (0, resolution[0]): - for j in range (0, resolution[1]): - for k in range (0, resolution[2]): - defgrad[i][j][k][0][0]=1.0 - defgrad[i][j][k][1][1]=1.0 - defgrad[i][j][k][2][2]=1.0 -print defgrad -current_configuration=reconstruct.simple(defgrad,resolution[0],resolution[1],resolution[2],geomdimension) # don't know how to pass arrays for the resolution -print current_configuration \ No newline at end of file