3
# Convert an inp mesh file to an xml file that can be read by DOLFIN
5
# Usage: inp2xml mesh.inp mesh.xml
7
# Copyright (C) 2002 Anders Logg.
8
# Licensed under the GNU LGPL Version 2.1.
10
# First added: 2002-12-06
16
open(INFILE,"<$ARGV[0]");
17
open(OUTFILE,">$ARGV[1]");
26
while ($line=<INFILE>) {
28
# Remove leading and trailing space
32
# Convert line into list of words
33
@words = &shellwords($line);
37
if ( "$state" eq "header" ) {
42
print ( OUTFILE "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" );
43
print ( OUTFILE "\n" );
44
print ( OUTFILE "<dolfin xmlns:dolfin=\"http://www.phi.chalmers.se/dolfin/\">\n" );
45
print ( OUTFILE " <mesh>\n");
46
print ( OUTFILE " <nodes size=\"$nodes\">\n" );
51
elsif ( "$state" eq "nodes" ) {
53
$number = @words[0] - 1;
58
print ( OUTFILE " <node name=\"$number\" x=\"$x\" y=\"$y\" z=\"$z\"/>\n" );
60
if ( $number == ( $nodes - 1 ) ){
62
print ( OUTFILE " </nodes>\n" );
63
print ( OUTFILE " <cells size=\"$cells\">\n" );
69
elsif ( "$state" eq "cells" ) {
71
$number = @words[0] - 1;
75
if ( "$type" eq "tet" ) {
82
print ( OUTFILE " <tetrahedron name=\"$number\" n0=\"$n0\" n1=\"$n1\" n2=\"$n2\" n3=\"$n3\"/>\n" );
84
if ( $number == ($cells - 1) ){
86
print ( OUTFILE " </cells>\n");
87
print ( OUTFILE " </mesh>\n");
88
print ( OUTFILE "</dolfin>");
93
elsif ( "$type" eq "tri" ) {
99
print ( OUTFILE " <triangle name=\"$number\" n0=\"$n0\" n1=\"$n1\" n2=\"$n2\"/>\n" );
101
if ( $number == ($cells - 1) ) {
103
print ( OUTFILE " </cells>\n");
104
print ( OUTFILE " </mesh>\n");
105
print ( OUTFILE "</dolfin>");