[Gmsh] Reduce number of digits in key-format file

Winfried Boxleitner winfried.boxleitner at ait.ac.at
Fri Mar 20 07:59:47 CET 2020


dear Xingsheng,
if you are used to commandline you can modify my awk-script to fit your needs.

to format the mesh file use the following command:
awk -f pretty_print_msh.awk input.msh > output.msh

the awk-script is attached

best regards,
Winfried


On Thu, 19 Mar 2020, Xingsheng Sun wrote:

> Hello All,
>
> I am using Gmsh to generate the mesh file for Ls-dyna. The problem is that
> in the key-format file generated by Gmsh, the coordinates of nodes have too
> many digits. For instance, in the node information:
>
> *NODE
> 22, 0, 0.012499999999976, -0.001
> 23, 0, 0.02499999999995, -0.001
> 24, 0, 0.037499999999926, -0.001
> 25, 0, 0.049999999999907, -0.001
>
> the y-coordinates of nodes 22-25 have 15 digits that cannot be read by
> Ls-dyna.
>
> So could any people shed light on how to reduce the number of digits in
> Gmsh? I am using command lines, not GUI. Thank you so much in advance.
>
> Best regards,
> Xingsheng
>


   ______________________________________________________________________
  /
| Winfried Boxleitner
| Scientist
| AIT Austrian Institute of Technology GmbH
  \______________________________________________________________________
-------------- next part --------------
#======================================================================#
#                                                                      #
#  (c) AIT 2013, all rights reserved                                   #
#                                                                      #
#  Author: Winfried Boxleitner                                         #
#                                                                      #
#======================================================================#
#
# remove unnecessary entries which are near 0
#
BEGIN{
  filter=0
  nodes=0
  limit=1.0e-20
}
### program loop ###
{
  ### for gmsh files:
  if($1 ~ /\$[A-Z][a-z]/) {filter=1}
  if($1 ~ /\$Node/)      {nodes=1}
  if($1 ~ /\$End[A-Z]/)   {filter=0; nodes=0}
  ### for other blocked text-output:
  if($1 ~ /#{/)           {filter=1; nodes=1}
  if($1 ~ /#}/)           {filter=0; nodes=0}
  ###
  if(filter == 1)
  { if($1 ~ "[0-9]")
    { if($1 ~ "\"" )
      { ### treat strings tags in gmsh files correctly, if they contain numbers
	print $0
      }else{
	printf "%5g ", $1
      }
      for(i=2;i<=NF;i++)
	if(nodes > 0)
	{ if(($i*$i)<limit)
	    printf "%+12.6g ", 0
	  else
	    printf "%+12.6g ", $i
	}
	else
	{
	  printf "%5g ", $i
	}
      printf "\n"
    } else {
      print $0
    }
  }
  else
  {
    print $0
  }
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: Digital Signature
URL: <http://onelab.info/pipermail/gmsh/attachments/20200320/c18359a7/attachment.asc>


More information about the gmsh mailing list