diff --git a/utils/solvers/legacy/c++/solver.cpp b/utils/solvers/legacy/c++/solver.cpp deleted file mode 100644 index b52b0ffb4fe009d9c00ebbb9d48ac691c0caaae2..0000000000000000000000000000000000000000 --- a/utils/solvers/legacy/c++/solver.cpp +++ /dev/null @@ -1,99 +0,0 @@ -// This is a dummy C++ client solver for Gmsh: it does not solve -// anything, but shows how to program your own solver to interact with -// the Gmsh solver module. -// -// To compile this solver, type something like: -// -// g++ solver.cpp -o solver.exe -// -// To run it, merge the contents of the file solver.opt into your -// default Gmsh option file, or launch Gmsh with the command: -// -// gmsh -option solver.opt -// -// You will then see a new button labeled "My C++ solver" in Gmsh's -// solver menu. - -#include <math.h> -#include "GmshSocket.h" - -typedef enum { send_options, run_code } action; - -int main(int argc, char *argv[]) -{ - action what_to_do = run_code; - char *name = 0, *option = 0, *socket = 0; - - // parse command line - int i = 0; - while(i < argc) { - if(argv[i][0] == '-') { - if(!strcmp(argv[i] + 1, "socket")) { - i++; - if(argv[i]) socket = argv[i++]; - } - else if(!strcmp(argv[i] + 1, "options")) { - i++; - what_to_do = send_options; - } - else if(!strcmp(argv[i] + 1, "run")) { - i++; - what_to_do = run_code; - if(argv[i]) option = argv[i++]; - } - } - else - name = argv[i++]; - } - - if(!socket) { - printf("No socket specified: running non-interactively...\n"); - exit(1); - } - - // connect to Gmsh - GmshClient client; - if(client.Connect(socket) < 0){ - printf("Unable to connect to Gmsh\n"); - exit(1); - } - client.Start(); - - if(what_to_do == send_options) { - // send the available options for this computation - client.Option(1, "FormulationH"); - client.Option(1, "ConvTest"); - client.Option(1, "Blablabli"); - } - else if(what_to_do == run_code){ - // do the computation and merge some views - for(int i = 0; i < 10; i++){ - client.Info("Computing curve..."); - // fake computation for 500ms: -#if !defined(WIN32) || defined(__CYGWIN__) - usleep(500 * 1000); -#else - Sleep(500); -#endif - client.Info("Done computing curve"); - FILE *file = fopen("solver.pos", "w"); - if(!file) - client.Error("Unable to open output file"); - else { - fprintf(file, "View.Type = 2;\n"); - fprintf(file, "View.Axes = 3;\n"); - fprintf(file, "Delete View[0];\n"); - fprintf(file, "View \"%s\"{\n", option); - for(int j = 0; j < 100; j++) - fprintf(file, "SP(%d,0,0){%g};\n", j,sin(j*i*M_PI/10.)); - fprintf(file, "};\n"); - fclose(file); - client.MergeFile("solver.pos"); - } - } - client.Info("Done!"); - } - - client.Stop(); - client.Disconnect(); -} diff --git a/utils/solvers/legacy/c++/solver.opt b/utils/solvers/legacy/c++/solver.opt deleted file mode 100644 index 6db466e2e2fb6809a888c32d9ab1d77477ddcb67..0000000000000000000000000000000000000000 --- a/utils/solvers/legacy/c++/solver.opt +++ /dev/null @@ -1,10 +0,0 @@ -Solver.Name1 = "My C++ Solver"; -Solver.Executable1 = "./solver.exe"; -Solver.InputName1 = "dummy"; -Solver.OptionCommand1 = "-options"; -Solver.FirstOption1 = "My options"; -Solver.FirstButton1 = "Run !"; -Solver.FirstButtonCommand1 = "-run %s"; -Solver.ClientServer1 = 1; -Solver.MergeViews1 = 1; -Solver.PopupMessages1 = 1; diff --git a/utils/solvers/legacy/c/GmshClient.c b/utils/solvers/legacy/c/GmshClient.c deleted file mode 100644 index 8e16f832fd8cab857fb8e0ed713ee1531a74a431..0000000000000000000000000000000000000000 --- a/utils/solvers/legacy/c/GmshClient.c +++ /dev/null @@ -1,180 +0,0 @@ -/* - * Copyright (C) 1997-2013 C. Geuzaine, J.-F. Remacle - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, and/or sell copies of the - * Software, and to permit persons to whom the Software is furnished - * to do so, provided that the above copyright notice(s) and this - * permission notice appear in all copies of the Software and that - * both the above copyright notice(s) and this permission notice - * appear in supporting documentation. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE - * COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR - * ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY - * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS - * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - * - * Please report all bugs and problems to the public mailing list <gmsh@geuz.org>. - * - * Contributor(s): - * Christopher Stott - */ - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#if defined(_AIX) -#include <strings.h> -#endif - -#if !defined(WIN32) || defined(__CYGWIN__) -#include <unistd.h> -#include <sys/types.h> -#include <sys/socket.h> -#include <sys/stat.h> -#include <sys/un.h> -#include <sys/time.h> -#include <netinet/in.h> -#include <netdb.h> -#else -#include <winsock.h> -#include <process.h> -#endif - -/* private functions */ - -static void Socket_SendData(int socket, const void *buffer, int bytes) -{ - ssize_t len; - int sofar, remaining; - const char *buf; - buf = (const char *)buffer; - sofar = 0; - remaining = bytes; - do { - len = send(socket, buf + sofar, remaining, 0); - sofar += len; - remaining -= len; - } while(remaining > 0); -} - -static void Socket_Sleep(int ms) -{ -#if !defined(WIN32) || defined(__CYGWIN__) - usleep(1000 * ms); -#else - Sleep(ms); -#endif -} - -static void Socket_Close(int s) -{ -#if !defined(WIN32) || defined(__CYGWIN__) - close(s); -#else - closesocket(s); -#endif -} - -/* public interface */ - -int Gmsh_Connect(const char *sockname) -{ -#if !defined(WIN32) || defined(__CYGWIN__) - struct sockaddr_un addr_un; -#else - WSADATA wsaData; - int iResult; -#endif - - struct sockaddr_in addr_in; - int sock; - int tries; - struct hostent *server; - int portno, remotelen; - char remote[256], *port; - -#if defined(WIN32) && !defined(__CYGWIN__) - iResult = WSAStartup(MAKEWORD(2,2), &wsaData); - if(iResult != NO_ERROR) - return -4; /* Error: Couldn't initialize Windows sockets */ -#endif - - /* slight delay to be sure that the socket is bound by the - server before we attempt to connect to it... */ - Socket_Sleep(100); - - if(strstr(sockname, "/") || strstr(sockname, "\\") || !strstr(sockname, ":")){ - /* UNIX socket (testing ":" is not enough with Windows paths) */ -#if !defined(WIN32) || defined(__CYGWIN__) - sock = socket(PF_UNIX, SOCK_STREAM, 0); - if(sock < 0) - return -1; /* Error: Couldn't create socket */ - /* try to connect socket to given name */ - memset((char *) &addr_un, 0, sizeof(addr_un)); - addr_un.sun_family = AF_UNIX; - strcpy(addr_un.sun_path, sockname); - for(tries = 0; tries < 5; tries++) { - if(connect(sock, (struct sockaddr *)&addr_un, sizeof(addr_un)) >= 0) - return sock; - Socket_Sleep(100); - } -#else - /* Unix sockets are not available on Windows without Cygwin */ - return -1; -#endif - } - else{ - /* TCP/IP socket */ - sock = socket(AF_INET, SOCK_STREAM, 0); - if(sock < 0) - return -1; /* Error: Couldn't create socket */ - port = strstr(sockname, ":"); - portno = atoi(port+1); - remotelen = strlen(sockname) - strlen(port); - if(remotelen > 0) - strncpy(remote, sockname, remotelen); - remote[remotelen] = '\0'; - if(!(server = gethostbyname(remote))){ - Socket_Close(sock); - return -3; /* Error: No such host */ - } - /* try to connect socket to given name */ - memset((char *) &addr_in, 0, sizeof(addr_in)); - addr_in.sin_family = AF_INET; - memcpy((char *)&addr_in.sin_addr.s_addr, (char *)server->h_addr, server->h_length); - addr_in.sin_port = htons(portno); - for(tries = 0; tries < 5; tries++) { - if(connect(sock, (struct sockaddr *)&addr_in, sizeof(addr_in)) >= 0) - return sock; - Socket_Sleep(100); - } - } - Socket_Close(sock); - return -2; /* Error: Couldn't connect */ -} - -void Gmsh_SendString(int socket, int type, const char *str) -{ - int len = strlen(str); - Socket_SendData(socket, &type, sizeof(int)); - Socket_SendData(socket, &len, sizeof(int)); - Socket_SendData(socket, str, len); -} - -void Gmsh_Disconnect(int sock) -{ - Socket_Close(sock); -#if defined(WIN32) && !defined(__CYGWIN__) - WSACleanup(); -#endif -} diff --git a/utils/solvers/legacy/c/GmshClient.h b/utils/solvers/legacy/c/GmshClient.h deleted file mode 100644 index 4212a99af243d62a3a2ced79ab50884470800daa..0000000000000000000000000000000000000000 --- a/utils/solvers/legacy/c/GmshClient.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (C) 1997-2013 C. Geuzaine, J.-F. Remacle - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, and/or sell copies of the - * Software, and to permit persons to whom the Software is furnished - * to do so, provided that the above copyright notice(s) and this - * permission notice appear in all copies of the Software and that - * both the above copyright notice(s) and this permission notice - * appear in supporting documentation. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE - * COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR - * ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY - * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS - * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - * - * Please report all bugs and problems to the public mailing list <gmsh@geuz.org>. - */ - -#ifndef _GMSH_CLIENT_H_ -#define _GMSH_CLIENT_H_ - -#define GMSH_CLIENT_START 1 -#define GMSH_CLIENT_STOP 2 -#define GMSH_CLIENT_INFO 10 -#define GMSH_CLIENT_WARNING 11 -#define GMSH_CLIENT_ERROR 12 -#define GMSH_CLIENT_PROGRESS 13 -#define GMSH_CLIENT_MERGE_FILE 20 -#define GMSH_CLIENT_PARSE_STRING 21 -#define GMSH_CLIENT_VERTEX_ARRAY 22 -#define GMSH_CLIENT_SPEED_TEST 30 -#define GMSH_CLIENT_OPTION 100 -#define GMSH_CLIENT_OPTION_1 (GMSH_CLIENT_OPTION+0) -#define GMSH_CLIENT_OPTION_2 (GMSH_CLIENT_OPTION+1) -#define GMSH_CLIENT_OPTION_3 (GMSH_CLIENT_OPTION+2) -#define GMSH_CLIENT_OPTION_4 (GMSH_CLIENT_OPTION+3) -#define GMSH_CLIENT_OPTION_5 (GMSH_CLIENT_OPTION+4) - -int Gmsh_Connect(const char *sockname); -void Gmsh_SendString(int socket, int type, const char *str); -void Gmsh_Disconnect(int sock); - -#endif diff --git a/utils/solvers/legacy/c/solver.c b/utils/solvers/legacy/c/solver.c deleted file mode 100644 index 73e3b4f04107ea7935619ba8aac8a2a54ec3089b..0000000000000000000000000000000000000000 --- a/utils/solvers/legacy/c/solver.c +++ /dev/null @@ -1,174 +0,0 @@ -/* - * Copyright (C) 1997-2005 C. Geuzaine, J.-F. Remacle - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, and/or sell copies of the - * Software, and to permit persons to whom the Software is furnished - * to do so, provided that the above copyright notice(s) and this - * permission notice appear in all copies of the Software and that - * both the above copyright notice(s) and this permission notice - * appear in supporting documentation. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE - * COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR - * ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY - * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, - * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS - * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE - * OF THIS SOFTWARE. - * - * Please report all bugs and problems to the public mailing list <gmsh@geuz.org>. - */ - -/* This file contains a dummy client solver for Gmsh. It does not - solve anything, but shows how to program your own solver to interact - with the Gmsh solver module. - - To compile this solver, type something like: - - gcc -o solver.exe solver.c GmshClient.c - - To run it, merge the contents of the file solver.opt into your - default Gmsh option file, or launch Gmsh with the command: - - gmsh -option solver.opt - - You will then see a new button labeled "My C solver" in Gmsh's - solver menu. -*/ - -#include <stdlib.h> -#include <stdio.h> -#include <string.h> -#if !defined(WIN32) || defined(__CYGWIN__) -#include <unistd.h> -#endif - -#include "GmshClient.h" - -typedef enum { options, run } action; - -int main(int argc, char *argv[]) -{ - action what = run; - int i = 0, s; - char *name = NULL, *option = NULL, *socket = NULL, tmp[256]; - FILE *file; - - /* 1. Loop through the command line arguments, remember the action - the solver has to perform (what) and store the socket name, the - option name and the problem name. */ - - while(i < argc) { - if(argv[i][0] == '-') { - if(!strcmp(argv[i] + 1, "socket")) { - i++; - if(argv[i]) - socket = argv[i++]; - } - else if(!strcmp(argv[i] + 1, "options")) { - i++; - what = options; - } - else if(!strcmp(argv[i] + 1, "run")) { - i++; - what = run; - if(argv[i]) - option = argv[i++]; - } - else{ - i++; - } - } - else - name = argv[i++]; - } - - /* 2. If the '-socket' option was not given, we cannot connect to - Gmsh... */ - - if(!socket) { - printf("No socket specified: running non-interactively...\n"); - exit(1); - } - - /* 3. Try to connect to the socket given by the '-socket' command - line option: */ - - s = Gmsh_Connect(socket); - - if(s < 0) { - printf("Couldn't connect to socket %s\n", socket); - exit(1); - } - - /* 4. Send the GMSH_CLIENT_START command (together with the process - ID of the solver), check if a problem name was specified, and - decide what to do according to the 'what' variable: */ - - sprintf(tmp, "%d", getpid()); - Gmsh_SendString(s, GMSH_CLIENT_START, tmp); - - if(!name) { - Gmsh_SendString(s, GMSH_CLIENT_ERROR, "Missing file name"); - Gmsh_Disconnect(s); - exit(1); - } - - switch (what) { - - /* 4.1. If what==options, the solver sends the valid options (here - for the first option): */ - - case options: - Gmsh_SendString(s, GMSH_CLIENT_OPTION_1, "Val1"); - Gmsh_SendString(s, GMSH_CLIENT_OPTION_1, "Val2"); - Gmsh_SendString(s, GMSH_CLIENT_OPTION_1, "Val3"); - break; - - /* 4.2. If what==run, the solver runs the chosen option, updates - the progress message, issues some information data, produces a - post-processing map and asks Gmsh to merge it: */ - - case run: - sprintf(tmp, "Running %s with option %s...", name, option); - Gmsh_SendString(s, GMSH_CLIENT_INFO, tmp); - for(i = 0; i < 10; i++) { - sprintf(tmp, "%d %% complete", 10 * i); - Gmsh_SendString(s, GMSH_CLIENT_PROGRESS, tmp); - /* Fake some cpu-intensive calculation during 100ms: */ -#if !defined(WIN32) || defined(__CYGWIN__) - usleep(100 * 1000); -#else - Sleep(100); -#endif - } - sprintf(tmp, "Done with %s!", name); - Gmsh_SendString(s, GMSH_CLIENT_INFO, tmp); - file = fopen("solver.pos", "wb"); - if(!file) { - Gmsh_SendString(s, GMSH_CLIENT_ERROR, "Unable to open output file"); - } - else { - fprintf(file, "View \"%s\"{\n", option); - fprintf(file, "ST(0,0,0,1,0,0,0,1,0){0,1,2};\n"); - fprintf(file, "};\n"); - fclose(file); - Gmsh_SendString(s, GMSH_CLIENT_MERGE_FILE, "solver.pos"); - } - break; - } - - /* 5. We can now disconnect the solver from Gmsh: */ - - Gmsh_SendString(s, GMSH_CLIENT_STOP, "Goodbye!"); - Gmsh_Disconnect(s); - - return 0; -} diff --git a/utils/solvers/legacy/c/solver.opt b/utils/solvers/legacy/c/solver.opt deleted file mode 100644 index 52973bbf8e1173d5f9fac03a3580ebe8f28c78d3..0000000000000000000000000000000000000000 --- a/utils/solvers/legacy/c/solver.opt +++ /dev/null @@ -1,16 +0,0 @@ -// These options define 'solver.exe' as the second solver in Gmsh's -// solver module, under the name 'My C Solver'. -Solver.Name1 = "My C solver"; -Solver.Help1 = "A simple example of the client/server -solver implementation in Gmsh..."; -Solver.Executable1 = "./solver.exe"; -Solver.InputName1 = "dummy"; -Solver.SocketCommand1 = "-socket %s"; -Solver.NameCommand1 = "%s"; -Solver.OptionCommand1 = "-options"; -Solver.FirstOption1 = "Option"; -Solver.FirstButton1 = "Run"; -Solver.FirstButtonCommand1 = "-run %s"; -Solver.ClientServer1 = 1; -Solver.MergeViews1 = 1; -Solver.PopupMessages1 = 1; diff --git a/utils/solvers/legacy/perl/GMSH_CLIENT.pm b/utils/solvers/legacy/perl/GMSH_CLIENT.pm deleted file mode 100644 index fb97bc27f7c3eff6c4662b4d1dd2302454befa0c..0000000000000000000000000000000000000000 --- a/utils/solvers/legacy/perl/GMSH_CLIENT.pm +++ /dev/null @@ -1,64 +0,0 @@ -# Copyright (c) 2002 Laurent CHAMPANEY <laurent.champaney@meca.uvsq.fr>. -# All rights reserved. -# This program is free software; you can redistribute it and/or -# modify it under the same terms as Perl itself. - -package GMSH_CLIENT; -use Socket; - -$START = 1; -$STOP = 2; -$INFO = 10; -$WARNING = 11; -$ERROR = 12; -$PROGRESS = 13; -$MERGE_FILE = 20; -$PARSE_STRING = 21; -$OPTION = 100; -$OPTION_1 = ($OPTION+0); -$OPTION_2 = ($OPTION+1); -$OPTION_3 = ($OPTION+2); -$OPTION_4 = ($OPTION+3); -$OPTION_5 = ($OPTION+4); - -sub SocketSendData (*$;$$) { - my ($socket, $buffer, $bytes) = @_; - $lng = $bytes; - $decalage = 0; - while ($lng) { - $ecrit = syswrite $socket, $buffer, $lng, $decalage; - $decalage += $ecrit; - $lng -= $ecrit; - } - return; -}; - -sub SendString (*$;$$) { - my ($socket, $type, $str) = @_; - $type1 = pack("V", $type); - my $len2 = length($type1); - SocketSendData($socket, $type1, $len2); - my $len = length($str); - $len1 = pack("V", $len); - $len2 = length($len1); - SocketSendData($socket, $len1, $len2); - SocketSendData($socket, $str, $len); - return; -}; - -sub Disconnect (*) { - $socket = @_; - close $socket; - return; -}; - -sub Connect (*$;$$) { - my ($socket, $socket_file) = @_; - socket($socket, AF_UNIX, SOCK_STREAM, 0) - or die "Can't create socket : $!"; - connect($socket, sockaddr_un($socket_file)) - or die "Can't connect to $socket_file: $!"; - return; -}; - -1; diff --git a/utils/solvers/legacy/perl/solver.opt b/utils/solvers/legacy/perl/solver.opt deleted file mode 100644 index 3a65859164e18173a2510236ee96ff242ddcedb9..0000000000000000000000000000000000000000 --- a/utils/solvers/legacy/perl/solver.opt +++ /dev/null @@ -1,16 +0,0 @@ -// These options define 'solver.pl' as the second solver in -// Gmsh's solver module, under the name'My Perl Solver'. -Solver.Name1 = "My Perl solver"; -Solver.Help1 = "A simple perl example of the client/server -solver implementation in Gmsh..."; -Solver.Executable1 = "./solver.pl"; -Solver.InputName1 = "dummy"; -Solver.SocketCommand1 = "-socket %s"; -Solver.NameCommand1 = "%s"; -Solver.OptionCommand1 = "-options"; -Solver.FirstOption1 = "Option"; -Solver.FirstButton1 = "Run"; -Solver.FirstButtonCommand1 = "-run %s"; -Solver.ClientServer1 = 1; -Solver.MergeViews1 = 1; -Solver.PopupMessages1 = 1; diff --git a/utils/solvers/legacy/perl/solver.pl b/utils/solvers/legacy/perl/solver.pl deleted file mode 100755 index 3e139c4ea2610ea5de78c926cc073297fd168a51..0000000000000000000000000000000000000000 --- a/utils/solvers/legacy/perl/solver.pl +++ /dev/null @@ -1,109 +0,0 @@ -#!/usr/bin/perl -# -# $Id: solver.pl,v 1.4 2007-09-04 13:47:08 remacle Exp $ -# -# Copyright (c) 2002 Laurent CHAMPANEY <laurent.champaney@meca.uvsq.fr>. -# -# This file contains a dummy perl client solver for Gmsh. It does not -# solve anything, but shows how to program your own perl solver -# to interact with the Gmsh solver module. -# -# To test this solver, copy the solver.opt file into your default -# Gmsh option file, or launch Gmsh with the command: -# -# gmsh -option solver.opt -# -# -use Getopt::Long; -# -# Let's include the Gmsh client interface definitions. At the time of -# this writing, the client interface contains only three functions: -# GMSH_CLIENT::Connect, GMSH_CLIENT::SendString and -# GMSH_CLIENT::Disconnect. This example shows how to use these -# functions in order to program some simple interactions between a -# solver and Gmsh. -# -require 'GMSH_CLIENT.pm'; -# -# 1. Loop through the command line arguments, remember the action -# the solver has to perform and store the socket name, the -# option name and the problem name. -# -@knownoptions = ("options", - "run=s", - "mesh=s", - "socket=s"); -GetOptions(@knownoptions) || exit; -# -# 2. If the '-socket' option was not given, we cannot connect to Gmsh... -# -$socket_file = $opt_socket or die "No socket file"; -# -$problem = $ARGV[0]; -# -# 3. Try to connect to the socket given by the '-socket' command -# line option: -# -# 3.1. If the socket is down, issue an error... -# -GMSH_CLIENT::Connect(CLIENT, $socket_file); -# -# 3.2. ...otherwise, send the GMSH_CLIENT_START command (together -# with the process ID of the solver), check if a problem name was -# specified, and decide what to do -# -my $mysolver_pid = $$; -GMSH_CLIENT::SendString(CLIENT, $GMSH_CLIENT::START, "$mysolver_pid"); -# -# 3.2.1. If options, the solver sends the valid options -# (here for the first option): -# -if ($opt_options) { - GMSH_CLIENT::SendString(CLIENT, $GMSH_CLIENT::OPTION_1, "VAL1"); - GMSH_CLIENT::SendString(CLIENT, $GMSH_CLIENT::OPTION_1, "VAL2"); - GMSH_CLIENT::SendString(CLIENT, $GMSH_CLIENT::OPTION_1, "VAL3"); -}; -# -# 3.2.2. If run, the solver runs the chosen option, updates the progress -# message, issues some information data, produces a post-processing -# map and asks Gmsh to merge it: -# -if ($opt_run) { -# - if (!$problem) { - GMSH_CLIENT::SendString(CLIENT,$GMSH_CLIENT::ERROR,"Missing File Name"); - GMSH_CLIENT::Disconnect(CLIENT); - exit; - }; - $mess = "Running $problem with option $opt_run"; - GMSH_CLIENT::SendString(CLIENT, $GMSH_CLIENT::INFO, $mess); - for (my $i=0 ; $i < 10; $i++) { - my $j = 10 * $i; - $mess = "$j% Complete"; - GMSH_CLIENT::SendString(CLIENT, $GMSH_CLIENT::PROGRESS, $mess); - work(); - }; - $mess = "Done with $problem!"; - GMSH_CLIENT::SendString(CLIENT, $GMSH_CLIENT::INFO, $mess); -# - open (POSFIC, ">solver.pos") - or die "Unable to open output file"; - print POSFIC ("View \"$opt_run\"{\n"); - print POSFIC "ST(0,0,0,1,0,0,0,1,0){0,1,2};\n"; - print POSFIC "};\n"; - close POSFIC; - GMSH_CLIENT::SendString(CLIENT, $GMSH_CLIENT::MERGE_FILE, "solver.pos"); -}; -# -# 3.3. We can now disconnect the solver from Gmsh: -# -GMSH_CLIENT::SendString(CLIENT, $GMSH_CLIENT::STOP, "Goodbye!"); -GMSH_CLIENT::Disconnect(CLIENT); -# -# 4. That's it! -# -exit; - -sub work { - sleep 1; -}; diff --git a/utils/solvers/legacy/python/Gmsh.py b/utils/solvers/legacy/python/Gmsh.py deleted file mode 100644 index 399df98cfe7140ce974ac5facee57101295b796d..0000000000000000000000000000000000000000 --- a/utils/solvers/legacy/python/Gmsh.py +++ /dev/null @@ -1,211 +0,0 @@ -#!/usr/bin/env python -"""Gmsh.py - Python module for interacting with the Gmsh pre/post processor. - -Module functions: - getopt() -- Parse command line options - send() -- Send a string to the Gmsh socket if open - -Included classes: - Client -- A class for maintaining socket communication with Gmsh. - Mesh -- A class for storing nodes and elements. - -Typical use: - import sys - import Gmsh - opt = Gmsh.getopt(sys.argv[1:]) - if opt.has_key('--socket'): - c = Gmsh.Client(opt['--socket']) - Gmsh.send('Testing testing', Gmsh.INFO) - -Carl Osterwisch <osterwischc@asme.org>, January 2005 -""" - -import socket -import struct -import time -import os -import sys - -START = 1 -STOP = 2 -INFO = 10 -WARNING = 11 -ERROR = 12 -PROGRESS = 13 -MERGE_FILE = 20 -PARSE_STRING = 21 -OPTION = 100 -OPTION_1 = OPTION + 0 -OPTION_2 = OPTION + 1 -OPTION_3 = OPTION + 2 -OPTION_4 = OPTION + 3 -OPTION_5 = OPTION + 4 - -# Module variable used to store the open communication socket with Gmsh -sock = None - -def getopt(opts): - """Parse the given list (usually sys.argv) into a dict. - - This is a very crude function which scans for options of the form - ['-option=value'] and returns a dict of the form {'-option':'value'}. - """ - options = {} - for o in opts: - s = o.split('=', 1) - if len(s) < 2: - if s[0].startswith('-'): - # Option with no value given. - options[s[0].lower()] = None - else: - # Value with no option given. - options[None] = s[0] - else: - # Assign the given value to the option. - options[s[0].lower()] = s[1] - return options - -def send(message, type=INFO): - """Send information to Gmsh using the open socket. - - Keyword arguments: - message -- the string message to send - type -- the type of message being sent (default INFO) - - As of Gmsh version 2.0, type should be one of: - START STOP INFO WARNING ERROR PROGRESS MERGE_FILE PARSE_FILE - OPTION OPTION_1 OPTION_2 OPTION_3 OPTION_4 OPTION_5 - - If no socket has been opened (using a Gmsh.Client instance) then print the - string sys.stderr. - """ - if sock: - sock.sendall(struct.pack('II', type, len(message))) - sock.sendall(message) - elif type is not PROGRESS: - print >>sys.stderr, message - -class Client: - """Initiate and maintain connection with Gmsh socket. - - Instance this class to open and initiate socket communication with Gmsh. - Communication will be automatically and gracefully terminated when the - instance is destroyed. Only one instance should exist at a time. - """ - - def __init__(self, filename): - """Open and initiate connection to Gmsh socket. - - Keyword arguments: - filename -- the name of the Unix socket given by Gmsh - - Assigns the new socket to the module variable sock and sends the - process id to Gmsh to initiate the communication. - """ - self.initialized = 0 - global sock - if not sock: - sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) - time.sleep(0.1) - sock.connect(filename) - send(str(os.getpid()), START) - self.initialized = 1 - else: - send('Gmsh.sock already exists as'+sock.getsockname(), ERROR) - - def __del__(self): - """Gracefully close communications upon destruction. - - Sends the STOP signal to Gmsh and closes the socket. - """ - global sock - if self.initialized: - send('Done.', STOP) - sock.close() - sock = None - -class Mesh: - """This is a class for storing nodes and elements. - - Members: - nodes -- A dict of the form { nodeID: [ xcoord, ycoord, zcoord] } - elements -- A dict of the form { elemID: (type, [tags], [nodeIDs]) } - - Methods: - read(file) -- Parse a Gmsh version 1.0 or 2.0 mesh file - write(file) -- Output a Gmsh version 2.0 mesh file - """ - - def __init__(self): - self.nodes = {} - self.elements = {} - - def read(self, mshfile): - """Read a Gmsh .msh file. - - Reads Gmsh format 1.0 and 2.0 mesh files, storing the nodes and - elements in the appropriate dicts. - """ - - readmode = 0 - send('Reading %s'%mshfile.name) - for line in mshfile: - line = line.strip() - if line.startswith('$'): - if line == '$NOD' or line == '$Nodes': - readmode = 1 - elif line == '$ELM': - readmode = 2 - elif line == '$Elements': - readmode = 3 - else: - readmode = 0 - elif readmode: - columns = line.split() - if readmode == 1 and len(columns) == 4: - # Version 1.0 or 2.0 Nodes - try: - self.nodes[int(columns[0])] = map(float, columns[1:]) - except ValueError: - send('Node format error: '+line, ERROR) - readmode = 0 - elif readmode > 1 and len(columns) > 5: - # Version 1.0 or 2.0 Elements - try: - columns = map(int, columns) - except ValueError: - send('Element format error: '+line, ERROR) - readmode = 0 - else: - (id, type) = columns[0:2] - if readmode == 2: - # Version 1.0 Elements - tags = columns[2:4] - nodes = columns[5:] - else: - # Version 2.0 Elements - ntags = columns[2] - tags = columns[3:3+ntags] - nodes = columns[3+ntags:] - self.elements[id] = (type, tags, nodes) - send(' %d Nodes'%len(self.nodes)) - send(' %d Elements'%len(self.elements)) - - def write(self, file): - """Dump the mesh out to a Gmsh 2.0 msh file.""" - print >>file, '$MeshFormat\n2.0 0 8\n$EndMeshFormat' - print >>file, '$Nodes\n%d'%len(self.nodes) - for (id, coord) in self.nodes.items(): - print >>file, id, ' '.join(map(str, coord)) - print >>file, '$EndNodes' - print >>file, '$Elements\n%d'%len(self.elements) - for (id, elem) in self.elements.items(): - (type, tags, nodes) = elem - print >>file, id, type, len(tags), - print >>file, ' '.join(map(str, tags)), - print >>file, ' '.join(map(str, nodes)) - print >>file, '$EndElements' - -if __name__ == '__main__': - print __doc__ - diff --git a/utils/solvers/legacy/python/postcsv.opt b/utils/solvers/legacy/python/postcsv.opt deleted file mode 100644 index 4413d652849066efabe809ed4f3881a0fbd054db..0000000000000000000000000000000000000000 --- a/utils/solvers/legacy/python/postcsv.opt +++ /dev/null @@ -1,21 +0,0 @@ -// These options define 'postcsv.py' as the second solver in Gmsh's -// solver module, under the name 'PostCSV'. -Solver.Name1 = "PostCSV"; -Solver.Help1 = "A filter to read node or element -indexed, comma-separated-value results into Gmsh. -Carl Osterwisch <osterwischc@asme.org> -January 2005"; -Solver.Executable1 = "./postcsv.py"; -Solver.InputName1 = "dummy"; -Solver.Extension1 = ".csv"; -Solver.MeshName1 = ""; -Solver.MeshCommand1 = "--mesh=%s"; -Solver.SocketCommand1 = "--socket=%s"; -Solver.NameCommand1 = "--results=%s"; -Solver.OptionCommand1 = "--options"; -Solver.FirstOption1 = "Option"; -Solver.FirstButton1 = "Import"; -Solver.FirstButtonCommand1 = "%s"; -Solver.ClientServer1 = 1; -Solver.MergeViews1 = 1; -Solver.PopupMessages1 = 1; diff --git a/utils/solvers/legacy/python/postcsv.py b/utils/solvers/legacy/python/postcsv.py deleted file mode 100755 index 8e014fd26bce43a8ff550301118bd5df84111e7b..0000000000000000000000000000000000000000 --- a/utils/solvers/legacy/python/postcsv.py +++ /dev/null @@ -1,308 +0,0 @@ -#!/usr/bin/env python -"""Convert csv finite element data into Gmsh pos format. - -Usage: - postcsv.py --mesh=gmshfile.msh --results=csvfile.csv [--average] - -If --average is specified, the data for each node ID and each element ID is -averaged, otherwise repeated IDs are assumed to be new time steps. - -csvfile.csv is in the following format: - # comments start with # - # time step 1 nodal scalar and vector data - node, heading1, heading2 - 1, 132.5, .0032 .0012 .0011 - 2, 100.2, .0030 .0004 -.0120 - 3, 98.3, .0021 .0032 .0002 - # time step 1 elemental scalar data - element, heading3 - 1, 32.63 - 2, 30.34 - 3, 21.32 - # time step 2 nodal scalar and vector data - node, heading1, heading2 - 1, 232.5, .0022 .0022 .0031 - 2, 200.2, .0020 .0014 .0110 - 3, 68.3, .0011 .0022 .0012 - -Carl Osterwisch <osterwischc@asme.org>, January 2005 -""" - -import Gmsh -import os, sys, re - -class PostMesh(Gmsh.Mesh): - """Store and convert FE results into Gmsh pos format. - - Extends the Gmsh.Mesh class by adding the following attributes: - - Members: - dataTypes -- dict to convert data length into type (scalar, vector, ...) - elemTypes -- dict to convert mesh element type into pos element type - posTypes -- list in pos defined order of pos object types - nodalData -- dict of nodal results - elementData -- dict of element centroid results - - Methods: - csvparse(csvfile): Read a comma-separated-value file of nodal results - makeviews(file): Write all the data out to a Gmsh pos file - saveview(posfile): Called by makeviews to output the data for one view - """ - - # dataTypes is used to translate the length of a vector into its - # corresponding Gmsh type. - dataTypes = {1:'S', 3:'V', 9:'T'} - - # elemTypes is used to convert from Gmsh mesh element type to Gmsh - # post-processing object type. - elemTypes = {1:'L', 2:'T', 3:'Q', 4:'S', 5:'H', 6:'I', 7:'Y'} - - # postTypes lists the valid Gmsh post-processing objects (dataType-elemType - # combinations) in the order they are defined in the pos output file - # format. - postTypes = ['SP', 'VP', 'TP', - 'SL', 'VL', 'TL', - 'ST', 'VT', 'TT', - 'SQ', 'VQ', 'TQ', - 'SS', 'VS', 'TS', - 'SH', 'VH', 'TH', - 'SI', 'VI', 'TI', - 'SY', 'VY', 'TY', - 'T2', 'T2C', 'T3', 'T3C'] - - def __init__(self): - Gmsh.Mesh.__init__(self) - - self.nodalData = {} - #{ viewName: { nodeID: [ [time1data], [time2data] ] } } - - self.elementData = {} - #{ viewName: { elemID: [ [time1data], [time2data] ] } } - - # Delimiter between columns in the data file - self.separator = '[,;]' - - def csvparse(self, csvfile): - """Parse ascii file of results into elementData and nodeData. - - The file should be comma separated columns with matching column - headings at the top. The first column is assumed to be the node or - element number. Each unique heading will generate a new view within - Gmsh. Repeated headings will generate time steps for that view. - """ - - csv = re.compile('\s*' + self.separator + '\s*') - elem = re.compile('el', re.I) - datatype = self.nodalData - - Gmsh.send('Parsing results from %s'%csvfile.name) - headings = [] - for line in csvfile: - columns = csv.split(line.strip()) - if len(columns) > 1: - # There are at least two columns. - linedata = [] - try: - id = int(columns[0]) - linedata = [map(float, column.split()) for column in columns[1:]] - except ValueError: - # Assume this is a heading. - headings = columns - if elem.match(headings[0]): - datatype = self.elementData - else: - datatype = self.nodalData - else: - for viewName, viewData in zip(headings[1:], linedata): - if not datatype.has_key(viewName): - datatype[viewName] = {} - if not datatype[viewName].has_key(id): - datatype[viewName][id] = [ viewData ] - else: - datatype[viewName][id].append(viewData) - for (viewName, nodes) in self.nodalData.items(): - Gmsh.send(' %s %d Nodal Results'%(viewName, len(nodes))) - for (viewName, elems) in self.elementData.items(): - Gmsh.send(' %s %d Elemental Results'%(viewName, len(elems))) - - def saveview(self, posfile, viewName=None, viewData=[]): - """Store the given viewData to the posfile. - - If viewName is None it will output a header line to the file. - """ - if not viewName: - print >>posfile, '$PostFormat\n1.2 0 8\n$EndPostFormat' - elif len(viewData): - Gmsh.send(' View '+viewName) - - nts = len(viewData.values()[0][0][1][0]) - print >>posfile, '$View\n%s %d'%(viewName, nts) - - # Print section lengths. - for type in self.postTypes: - if viewData.has_key(type): - print >>posfile, len(viewData[type]), - Gmsh.send(' %s %d'%(type, len(viewData[type]))) - else: - print >>posfile, 0, - - # Print dummy time-step values. - print >>posfile, '\n', ' '.join([str(i) for i in range(nts)]) - - # Print data. - for type in self.postTypes: - if viewData.has_key(type): - for object in viewData[type]: - for x in range(3): - # Print the coordinates in the appropriate order. - print >>posfile, ' '.join([str(i[x]) for i in object[0]]) - for timestep in range(nts): - for nodalResult in object[1]: - # Print the results. - try: - print >>posfile, ' '.join([str(i) - for i in nodalResult[timestep]]) - except IndexError: - Gmsh.send(' Insufficient time steps for all locations.', - Gmsh.ERROR) - Gmsh.send(' Consider using --average if this is one time step.', - Gmsh.ERROR) - print >>posfile, '$EndView' - - def makeviews(self, file): - """Generate post-processing views for the results. - - 1. Loop through all defined elements and generate corresponding - post-processor objects for elements with nodalData. - - 2. Loop through all elementData and generate corresponding - post-processor objects. - """ - self.saveview(file) # This just prints the header information - - if len(self.nodalData): - Gmsh.send('Saving nodal results to '+file.name) - for viewName in self.nodalData.keys(): - viewData = {} - for elem in self.elements.values(): - # Iterate over all defined elements. - coord = [] - result = [] - for nid in elem[2]: - # Gather node coordinates and results for this element. - try: - coord.append(self.nodes[nid]) - except KeyError: - Gmsh.send(' Mesh is missing node %d'%nid, - Gmsh.ERROR) - try: - result.append(self.nodalData[viewName][nid]) - except KeyError: - pass - if len(result) == len(coord) and \ - self.elemTypes.has_key(elem[0]): - # There was data available at every node for this - # element and this element has a corresponding - # post-processing object. - if self.dataTypes.has_key(len(result[0][0])): - postType = self.dataTypes[len(result[0][0])] + \ - self.elemTypes[elem[0]] - if not viewData.has_key(postType): - viewData[postType] = [] - viewData[postType].append( (coord, result) ) - else: - Gmsh.send(" No data type for "+repr(result[0]), - Gmsh.ERROR) - self.saveview(file, viewName, viewData) - - if len(self.elementData): - Gmsh.send('Saving elemental results to %s'%file.name) - for (viewName, data) in self.elementData.items(): - viewData = {} - for (eid, edata) in data.items(): - try: - elem = self.elements[eid] - except KeyError: - Gmsh.send(' Mesh is missing element %d'%eid, - Gmsh.ERROR) - else: - coord = [] - for nid in elem[2]: - # Gather node coordinates and results for this - # element. - try: - coord.append(self.nodes[nid]) - except KeyError: - Gmsh.send(' Mesh is missing node %d'%nid, - Gmsh.ERROR) - if len(elem[2]) == len(coord) and \ - self.elemTypes.has_key(elem[0]): - # There was data available at every node for this - # element and this element has a corresponding - # post-processing object. - result = [edata]*len(coord) - if self.dataTypes.has_key(len(result[0][0])): - postType = (self.dataTypes[len(result[0][0])] - + self.elemTypes[elem[0]]) - if not viewData.has_key(postType): - viewData[postType] = [] - viewData[postType].append( (coord, result) ) - else: - Gmsh.send(" No data type for "+repr(result[0]), - Gmsh.ERROR) - self.saveview(file, viewName, viewData) - -############################################################################### -# Main program begins here -############################################################################### -cmdline = Gmsh.getopt(sys.argv[1:]) -if cmdline.has_key('--socket'): - connection = Gmsh.Client(cmdline['--socket']) - -if cmdline.has_key('--help') or cmdline.has_key('-h'): - print __doc__ -elif cmdline.has_key('--options'): - Gmsh.send('--noaverage', Gmsh.OPTION) - Gmsh.send('--average', Gmsh.OPTION) -else: - if not cmdline.has_key('--results'): - Gmsh.send("No results specified.", Gmsh.ERROR) - sys.exit(1) - - if not cmdline.has_key('--mesh'): - mshname = cmdline['--results'].split('.')[0] + '.msh' - else: - mshname = cmdline['--mesh'] - - try: - mshfile = open(mshname) - csvfile = open(cmdline['--results']) - except: - Gmsh.send(str(sys.exc_info()[1]), Gmsh.ERROR) - else: - pmesh = PostMesh() - pmesh.read(mshfile) - mshfile.close() - pmesh.csvparse(csvfile) - csvfile.close() - if cmdline.has_key('--average'): - Gmsh.send('Averaging data to one time step.') - for result in [ pmesh.nodalData, pmesh.elementData ]: - for view in result.keys(): - for (id, data) in result[view].items(): - nts = len(data) - averaged = [] - for col in range(min(map(len, data))): - sum = 0.0 - for d in data: - sum += d[col] - averaged.append(sum/nts) - result[view][id] = [averaged] - try: - posfile = open(os.path.splitext(csvfile.name)[0]+'.pos', 'w') - except: - Gmsh.send(str(sys.exc_info()[1]), Gmsh.ERROR) - else: - pmesh.makeviews(posfile) - posfile.close() - Gmsh.send(posfile.name, Gmsh.MERGE_FILE) diff --git a/utils/solvers/legacy/python/testcsv.csv b/utils/solvers/legacy/python/testcsv.csv deleted file mode 100644 index f6289106a3fe01e680bccd67a03266d8558a11a0..0000000000000000000000000000000000000000 --- a/utils/solvers/legacy/python/testcsv.csv +++ /dev/null @@ -1,200 +0,0 @@ -1 - - ABAQUS VERSION 6.4-4 DATE 18-Jan-2005 TIME 17:42:16 PAGE 1 - - - - - - - AAAAAA BBBBBBBBB AAAAAA QQQQQQQQ U U SSSSSSSS - A A B B A A Q Q U U S - A A B B A A Q Q U U S - A A B B A A Q Q U U S - AAAAAAAAAA BBBBBBBBB AAAAAAAAAA Q Q U U SSSSSSSS - A A B B A A Q Q Q U U S - A A B B A A Q Q Q U U S - A A B B A A Q Q Q U U S - A A BBBBBBBBB A A QQQQQQQQ UUUUUUUU SSSSSSSS - - - - - This program has been developed by - - ABAQUS, Inc. - 1080 Main Street - Pawtucket, R.I. 02860 - - - - - - - P R O B L E M S I Z E - - - NUMBER OF ELEMENTS IS 218 - NUMBER OF NODES IS 131 - NUMBER OF NODES DEFINED BY THE USER 131 - TOTAL NUMBER OF VARIABLES IN THE MODEL 262 - (DEGREES OF FREEDOM PLUS ANY LAGRANGE MULTIPLIER VARIABLES) - - - - END OF USER INPUT PROCESSING - - - - S T E P 1 S T A T I C A N A L Y S I S - - - - INCREMENT 1 SUMMARY - - - TIME INCREMENT COMPLETED 1.00 , FRACTION OF STEP COMPLETED 1.00 - STEP TIME COMPLETED 1.00 , TOTAL TIME COMPLETED 1.00 - - - - E L E M E N T O U T P U T - - - - - - THE FOLLOWING TABLE IS PRINTED FOR ALL ELEMENTS WITH TYPE CPE3 AVERAGED AT THE NODES - - node, temperature, displacement, stress - 2, 69.86, 8.4194E-04 0.000 0, -31.56 13.43 0 13.43 -329.1 0 0 0 -251.5 - 3, 39.96, 3.0836E-03 0.000 0, -1.491 -3.133 0 -3.133 -44.68 0 0 0 -97.55 - 4, 11.16, 1.9388E-03 0.000 0, 11.99 -10.21 0 -10.21 -116.0 0 0 0 -64.08 - 5, 13.47, 0.000 0.000 0, 37.40 1.292 0 1.292 -73.75 0 0 0 -49.52 - 6, 67.60, 0.000 -6.6056E-04 0, -21.23 6.614 0 6.614 -8.562 0 0 0 -148.1 - 7, 69.83, 8.3356E-04 -6.7009E-05 0, -21.90 33.08 0 33.08 -337.4 0 0 0 -251.5 - 8, 69.76, 8.0950E-04 -1.4135E-04 0, -23.03 62.61 0 62.61 -345.2 0 0 0 -254.9 - 9, 69.62, 7.9671E-04 -2.0956E-04 0, -40.32 70.09 0 70.09 -285.4 0 0 0 -240.2 - 10, 69.48, 7.5652E-04 -2.7698E-04 0, -54.81 86.73 0 86.73 -249.9 0 0 0 -234.0 - 11, 69.28, 7.0955E-04 -3.3576E-04 0, -63.35 94.38 0 94.38 -210.6 0 0 0 -224.6 - 12, 69.07, 6.6124E-04 -3.9676E-04 0, -74.58 95.83 0 95.83 -172.0 0 0 0 -216.2 - 13, 68.82, 6.0588E-04 -4.4704E-04 0, -74.75 84.32 0 84.32 -129.5 0 0 0 -202.5 - 14, 68.59, 5.3983E-04 -4.9435E-04 0, -72.84 72.02 0 72.02 -97.01 0 0 0 -191.8 - 15, 68.35, 4.7004E-04 -5.3725E-04 0, -70.10 59.18 0 59.18 -70.98 0 0 0 -182.3 - 16, 68.14, 3.9512E-04 -5.7221E-04 0, -59.27 44.19 0 44.19 -43.37 0 0 0 -170.3 - 17, 67.96, 3.2004E-04 -6.0584E-04 0, -53.38 33.76 0 33.76 -26.85 0 0 0 -164.6 - 18, 67.80, 2.4153E-04 -6.2869E-04 0, -45.07 24.73 0 24.73 -17.33 0 0 0 -157.7 - 19, 67.67, 1.6298E-04 -6.4554E-04 0, -35.73 16.37 0 16.37 -11.90 0 0 0 -151.8 - 20, 67.61, 8.2122E-05 -6.5673E-04 0, -28.73 6.691 0 6.691 -8.362 0 0 0 -148.7 - 21, 66.81, 9.8446E-04 0.000 0, -29.35 6.504 0 6.504 -289.6 0 0 0 -235.8 - 22, 63.73, 1.1361E-03 0.000 0, -40.65 5.472 0 5.472 -257.8 0 0 0 -224.4 - 23, 60.65, 1.2821E-03 0.000 0, -49.06 1.671 0 1.671 -208.1 0 0 0 -204.7 - 24, 57.54, 1.4246E-03 0.000 0, -50.58 -0.6161 0 -0.6161 -173.6 0 0 0 -187.8 - 25, 54.50, 1.5756E-03 0.000 0, -47.33 -1.646 0 -1.646 -152.7 0 0 0 -174.7 - 26, 51.55, 1.7358E-03 0.000 0, -42.15 -3.541 0 -3.541 -133.9 0 0 0 -161.3 - 27, 48.72, 1.9085E-03 0.000 0, -34.37 -4.128 0 -4.128 -117.9 0 0 0 -148.1 - 28, 46.10, 2.0976E-03 0.000 0, -28.24 -4.892 0 -4.892 -105.2 0 0 0 -137.1 - 29, 43.78, 2.3081E-03 0.000 0, -19.19 -5.296 0 -5.296 -89.82 0 0 0 -123.8 - 30, 41.81, 2.5322E-03 0.000 0, -13.39 -3.509 0 -3.509 -76.96 0 0 0 -114.7 - 31, 40.45, 2.7922E-03 0.000 0, -5.308 -3.571 0 -3.571 -63.00 0 0 0 -105.7 - 32, 39.12, 3.0185E-03 2.2115E-04 0, -2.576 -5.276 0 -5.276 -47.55 0 0 0 -96.55 - 33, 36.19, 2.8256E-03 4.1759E-04 0, -2.044 -9.147 0 -9.147 -65.46 0 0 0 -96.16 - 34, 30.51, 2.5157E-03 4.8788E-04 0, -0.7721 -14.20 0 -14.20 -90.33 0 0 0 -92.70 - 35, 22.25, 2.1581E-03 3.8111E-04 0, 2.853 -11.24 0 -11.24 -114.0 0 0 0 -80.06 - 36, 11.69, 1.3632E-03 0.000 0, 20.52 -7.606 0 -7.606 -92.20 0 0 0 -56.02 - 37, 12.84, 7.0866E-04 0.000 0, 37.23 -2.644 0 -2.644 -79.34 0 0 0 -47.26 - 38, 26.51, 0.000 1.1136E-04 0, 18.80 2.425 0 2.425 -73.57 0 0 0 -71.25 - 39, 36.98, 0.000 5.4140E-05 0, -1.709 3.663 0 3.663 -69.27 0 0 0 -96.91 - 40, 45.62, 0.000 -8.1302E-05 0, -18.69 6.841 0 6.841 -61.46 0 0 0 -118.2 - 41, 52.82, 0.000 -2.4234E-04 0, -31.92 9.526 0 9.526 -41.54 0 0 0 -131.9 - 42, 58.77, 0.000 -4.0527E-04 0, -41.24 9.057 0 9.057 -26.89 0 0 0 -143.7 - 43, 63.66, 0.000 -5.4837E-04 0, -33.13 7.239 0 7.239 -10.12 0 0 0 -147.6 - 44, 39.11, 1.4706E-03 2.1356E-04 0, -2.215 -16.24 0 -16.24 -107.1 0 0 0 -115.4 - 45, 51.64, 1.3526E-03 9.5846E-05 0, -22.39 -6.105 0 -6.105 -141.9 0 0 0 -157.7 - 46, 47.75, 5.5026E-04 -1.9718E-05 0, -12.23 17.50 0 17.50 -88.57 0 0 0 -130.3 - 47, 60.44, 1.2091E-03 -7.5841E-06 0, -44.20 8.877 0 8.877 -194.6 0 0 0 -197.9 - 48, 58.57, 2.2758E-04 -3.4992E-04 0, -35.73 26.28 0 26.28 -39.02 0 0 0 -146.2 - 49, 53.82, 8.5472E-04 -1.6590E-05 0, -14.35 18.67 0 18.67 -126.4 0 0 0 -154.2 - 50, 59.09, 1.0037E-03 -4.4003E-05 0, -31.44 22.41 0 22.41 -168.6 0 0 0 -184.0 - 51, 42.40, 2.0545E-03 1.6521E-04 0, -13.94 -17.69 0 -17.69 -98.98 0 0 0 -122.4 - 52, 29.42, 7.8391E-04 1.7522E-04 0, 11.99 -3.246 0 -3.246 -86.77 0 0 0 -85.40 - 53, 53.34, 1.5467E-03 5.7672E-05 0, -40.47 -7.413 0 -7.413 -148.0 0 0 0 -168.6 - 54, 61.16, 7.3601E-04 -1.7843E-04 0, -36.58 46.11 0 46.11 -139.8 0 0 0 -182.0 - 55, 64.37, 1.0845E-03 -3.5633E-05 0, -44.93 17.37 0 17.37 -250.6 0 0 0 -223.5 - 56, 58.10, 4.9318E-04 -2.3073E-04 0, -28.35 39.79 0 39.79 -86.64 0 0 0 -156.9 - 57, 33.97, 2.1313E-03 2.8372E-04 0, -2.154 -17.92 0 -17.92 -90.18 0 0 0 -98.58 - 58, 43.42, 1.0689E-03 1.4500E-04 0, -3.284 -3.999 0 -3.999 -112.8 0 0 0 -126.0 - 59, 62.17, 1.1621E-04 -4.9096E-04 0, -38.48 14.31 0 14.31 -19.57 0 0 0 -148.0 - 60, 63.27, 9.8677E-04 -9.1671E-05 0, -41.88 39.07 0 39.07 -213.4 0 0 0 -209.8 - 61, 47.33, 1.8777E-03 9.3115E-05 0, -28.91 -12.50 0 -12.50 -117.6 0 0 0 -143.9 - 62, 24.09, 1.4647E-03 2.1595E-04 0, 9.910 -12.59 0 -12.59 -94.44 0 0 0 -74.41 - 63, 43.83, 1.6560E-03 1.7798E-04 0, -12.67 -17.58 0 -17.58 -113.9 0 0 0 -129.5 - 64, 39.96, 2.5284E-03 1.6466E-04 0, -7.909 -12.34 0 -12.34 -77.77 0 0 0 -109.8 - 65, 63.48, 8.1289E-04 -1.8230E-04 0, -43.51 54.68 0 54.68 -168.6 0 0 0 -197.0 - 66, 55.78, 1.2850E-03 4.3255E-05 0, -32.66 -1.098 0 -1.098 -159.4 0 0 0 -174.1 - 67, 48.37, 1.1958E-03 1.1577E-04 0, -10.63 -4.579 0 -4.579 -128.9 0 0 0 -143.2 - 68, 36.16, 4.7265E-04 1.0862E-04 0, 0.7402 4.679 0 4.679 -82.59 0 0 0 -100.9 - 69, 56.96, 1.4146E-03 2.3575E-05 0, -46.39 -1.231 0 -1.231 -171.6 0 0 0 -185.1 - 70, 61.98, 5.6338E-04 -2.8586E-04 0, -38.12 51.00 0 51.00 -104.0 0 0 0 -172.5 - 71, 65.16, 9.8242E-04 -9.3900E-05 0, -37.02 43.60 0 43.60 -237.8 0 0 0 -219.4 - 72, 53.17, 1.0946E-03 4.9133E-05 0, -17.30 6.233 0 6.233 -141.0 0 0 0 -158.6 - 73, 48.36, 2.4764E-04 -1.1023E-04 0, -21.28 13.88 0 13.88 -63.61 0 0 0 -126.9 - 74, 42.44, 2.3173E-03 1.0627E-04 0, -14.60 -11.03 0 -11.03 -89.29 0 0 0 -120.0 - 75, 35.01, 1.1293E-03 2.0386E-04 0, 4.220 -9.489 0 -9.489 -99.26 0 0 0 -102.5 - 76, 64.86, 6.2305E-04 -3.2075E-04 0, -54.70 67.14 0 67.14 -112.6 0 0 0 -187.0 - 77, 50.21, 1.7736E-03 5.1510E-05 0, -37.30 -7.163 0 -7.163 -127.9 0 0 0 -155.1 - 78, 47.98, 1.6505E-03 1.2818E-04 0, -23.30 -13.91 0 -13.91 -125.9 0 0 0 -146.0 - 79, 60.89, 1.2466E-03 -5.0573E-06 0, -48.24 6.321 0 6.321 -208.8 0 0 0 -205.2 - 80, 38.36, 1.8932E-03 2.2949E-04 0, -5.402 -20.85 0 -20.85 -99.62 0 0 0 -112.0 - 81, 48.10, 8.1422E-04 5.0337E-05 0, -7.133 11.99 0 11.99 -109.7 0 0 0 -135.8 - 82, 60.72, 3.3586E-04 -3.6942E-04 0, -38.51 35.77 0 35.77 -53.49 0 0 0 -154.7 - 83, 39.97, 7.4362E-04 1.2307E-04 0, 0.1859 3.982 0 3.982 -94.25 0 0 0 -112.7 - 84, 65.54, 8.4336E-04 -1.9118E-04 0, -43.71 68.36 0 68.36 -201.5 0 0 0 -211.5 - 85, 32.16, 1.6376E-03 2.5023E-04 0, 2.514 -18.72 0 -18.72 -96.50 0 0 0 -95.80 - 86, 57.42, 6.8273E-04 -1.3380E-04 0, -22.90 35.16 0 35.16 -119.5 0 0 0 -163.4 - 87, 22.02, 4.5206E-04 1.1849E-04 0, 27.57 -0.5780 0 -0.5780 -78.37 0 0 0 -61.70 - 88, 27.06, 1.9435E-03 3.0431E-04 0, 2.174 -15.48 0 -15.48 -98.32 0 0 0 -85.54 - 89, 57.29, 9.1126E-04 -4.6903E-05 0, -24.34 23.77 0 23.77 -147.5 0 0 0 -171.9 - 90, 20.35, 1.0270E-03 1.4077E-04 0, 23.95 -6.210 0 -6.210 -86.24 0 0 0 -62.78 - 91, 53.78, 3.7698E-04 -1.8593E-04 0, -25.62 27.49 0 27.49 -69.66 0 0 0 -142.6 - 92, 53.39, 1.6126E-03 3.0206E-05 0, -45.13 -3.757 0 -3.757 -146.9 0 0 0 -170.3 - 93, 65.62, 7.0106E-04 -2.9006E-04 0, -55.91 74.27 0 74.27 -144.5 0 0 0 -198.0 - 94, 38.27, 2.2964E-03 2.2631E-04 0, -6.964 -17.67 0 -17.67 -86.84 0 0 0 -108.7 - 95, 66.38, 8.8448E-04 -1.6366E-04 0, -42.42 66.73 0 66.73 -239.6 0 0 0 -224.3 - 96, 59.54, 1.1434E-03 -1.0713E-05 0, -37.34 14.42 0 14.42 -183.4 0 0 0 -191.1 - 97, 45.13, 2.1104E-03 7.5866E-05 0, -23.85 -10.18 0 -10.18 -103.1 0 0 0 -132.7 - 98, 63.31, 2.2765E-04 -4.8975E-04 0, -41.71 25.96 0 25.96 -22.51 0 0 0 -152.7 - 99, 52.78, 6.2969E-04 -7.5140E-05 0, -15.72 26.76 0 26.76 -103.1 0 0 0 -147.0 - 100, 43.88, 1.3641E-03 1.6792E-04 0, -7.276 -12.54 0 -12.54 -119.0 0 0 0 -130.8 - 101, 47.33, 1.4363E-03 1.4140E-04 0, -14.20 -12.38 0 -12.38 -127.2 0 0 0 -141.6 - 102, 56.84, 1.3404E-03 3.2032E-05 0, -40.35 -0.8910 0 -0.8910 -168.0 0 0 0 -181.3 - 103, 63.68, 4.2738E-04 -4.0621E-04 0, -49.22 48.06 0 48.06 -64.35 0 0 0 -168.2 - 104, 50.09, 1.6750E-03 8.8554E-05 0, -33.07 -11.61 0 -11.61 -131.7 0 0 0 -154.9 - 105, 18.82, 1.7143E-03 1.8591E-04 0, 8.110 -9.748 0 -9.748 -106.3 0 0 0 -69.59 - 106, 66.56, 9.9793E-04 -3.3011E-05 0, -31.92 15.61 0 15.61 -288.6 0 0 0 -235.6 - 107, 40.03, 2.3416E-04 3.0424E-05 0, -8.431 6.413 0 6.413 -72.11 0 0 0 -108.2 - 108, 66.84, 9.5633E-04 -8.8428E-05 0, -30.30 42.13 0 42.13 -290.6 0 0 0 -236.8 - 109, 55.88, 1.1496E-03 2.8041E-05 0, -27.72 7.216 0 7.216 -160.8 0 0 0 -174.2 - 110, 47.46, 1.9630E-03 4.6760E-05 0, -30.85 -6.555 0 -6.555 -112.4 0 0 0 -142.7 - 111, 27.87, 1.1867E-03 2.0507E-04 0, 10.06 -11.70 0 -11.70 -92.79 0 0 0 -83.81 - 112, 65.42, 5.3018E-04 -3.9857E-04 0, -58.41 62.36 0 62.36 -84.20 0 0 0 -180.3 - 113, 55.60, 1.3108E-04 -3.0201E-04 0, -35.26 16.36 0 16.36 -41.02 0 0 0 -139.8 - 114, 39.83, 2.8067E-03 1.2332E-04 0, -3.517 -5.677 0 -5.677 -57.45 0 0 0 -101.9 - 115, 52.72, 1.4654E-03 7.8496E-05 0, -32.42 -8.561 0 -8.561 -145.4 0 0 0 -163.9 - 116, 42.43, 4.4960E-04 3.6423E-05 0, -7.868 10.95 0 10.95 -79.02 0 0 0 -115.2 - 117, 66.50, 7.5078E-04 -2.7189E-04 0, -54.98 83.04 0 83.04 -176.9 0 0 0 -209.3 - 118, 41.24, 2.5562E-03 7.5637E-05 0, -10.34 -5.624 0 -5.624 -75.38 0 0 0 -112.5 - 119, 60.45, 8.7062E-04 -1.1044E-04 0, -35.49 34.88 0 34.88 -164.6 0 0 0 -187.2 - 120, 61.95, 9.4380E-04 -9.8688E-05 0, -38.04 36.30 0 36.30 -183.3 0 0 0 -196.4 - 121, 35.48, 2.4940E-03 3.2925E-04 0, -2.175 -13.00 0 -13.00 -77.42 0 0 0 -98.28 - 122, 49.70, 9.8927E-04 6.7429E-05 0, -10.44 5.383 0 5.383 -126.0 0 0 0 -144.8 - 123, 63.08, 1.1594E-03 -1.3116E-05 0, -43.33 7.414 0 7.414 -234.5 0 0 0 -216.0 - 124, 56.01, 1.4914E-03 1.3061E-05 0, -49.84 -1.514 0 -1.514 -164.5 0 0 0 -182.1 - 125, 30.47, 3.0653E-04 1.2008E-04 0, 8.389 2.497 0 2.497 -76.10 0 0 0 -86.24 - 126, 58.42, 1.3757E-03 8.2717E-06 0, -49.91 0.3047 0 0.3047 -182.9 0 0 0 -192.5 - 127, 64.90, 3.0955E-04 -5.0667E-04 0, -50.18 35.88 0 35.88 -32.63 0 0 0 -161.6 - 128, 62.35, 1.0849E-03 -4.8287E-05 0, -40.94 22.78 0 22.78 -211.7 0 0 0 -206.7 - 129, 40.75, 2.2941E-03 1.6746E-04 0, -10.97 -16.67 0 -16.67 -89.00 0 0 0 -115.6 - 130, 38.08, 2.7138E-03 2.5436E-04 0, -3.250 -10.01 0 -10.01 -64.39 0 0 0 -100.3 - 131, 45.32, 1.8808E-03 1.3680E-04 0, -21.81 -16.15 0 -16.15 -112.0 0 0 0 -135.3 - 132, 63.26, 1.1019E-03 -4.0239E-05 0, -42.03 20.67 0 20.67 -226.9 0 0 0 -213.6 diff --git a/utils/solvers/legacy/python/testcsv.geo b/utils/solvers/legacy/python/testcsv.geo deleted file mode 100644 index 35f8799edfb9d12bffb414637c83b1ff001db718..0000000000000000000000000000000000000000 --- a/utils/solvers/legacy/python/testcsv.geo +++ /dev/null @@ -1,18 +0,0 @@ -Point(1) = {0, 0, 0, 0.1}; -Point(2) = {1, 0, 0, 0.1}; -Point(3) = {4, 0, 0, 0.5}; -Point(4) = {4, 4, 0, 1.0}; -Point(5) = {0, 4, 0, 1.0}; -Point(6) = {0, 1, 0, 0.1}; -Circle(1) = {2,1,6}; -Line(2) = {2,3}; -Line(3) = {3,4}; -Line(4) = {4,5}; -Line(5) = {5,6}; -Line Loop(6) = {1,-5,-4,-3,-2}; -Plane Surface(7) = {6}; -Physical Line(101) = {5}; -Physical Line(102) = {2}; -Physical Line(112) = {4}; -Physical Line(200) = {1}; -Physical Surface(11) = {-7}; diff --git a/utils/solvers/legacy/python/testcsv.msh b/utils/solvers/legacy/python/testcsv.msh deleted file mode 100644 index 36c59b8192746c38d144450855bad540d99c7ec6..0000000000000000000000000000000000000000 --- a/utils/solvers/legacy/python/testcsv.msh +++ /dev/null @@ -1,395 +0,0 @@ -$MeshFormat -2 0 8 -$EndMeshFormat -$Nodes -131 -2 1 0 0 -3 4 0 0 -4 4 4 0 -5 0 4 0 -6 0 1 0 -7 0.9945218953682734 0.104528463267653 0 -8 0.9781476007338058 0.2079116908177585 0 -9 0.951056516295154 0.3090169943749462 0 -10 0.9135454576426018 0.4067366430757982 0 -11 0.8660254037844408 0.4999999999999963 0 -12 0.8090169943749513 0.5877852522924678 0 -13 0.7431448254774 0.6691306063588518 0 -14 0.6691306063588659 0.7431448254773874 0 -15 0.5877852522924825 0.8090169943749406 0 -16 0.5000000000000111 0.8660254037844323 0 -17 0.4067366430758131 0.9135454576425951 0 -18 0.3090169943749584 0.95105651629515 0 -19 0.2079116908177668 0.978147600733804 0 -20 0.1045284632676574 0.994521895368273 0 -21 1.107660966482431 0 0 -22 1.230764829752582 0 0 -23 1.371542876294749 0 0 -24 1.532522866946499 0 0 -25 1.71659942352474 0 0 -26 1.927090777472968 0 0 -27 2.167782956522458 0 0 -28 2.443096045924229 0 0 -29 2.757877025314089 0 0 -30 3.117761880505327 0 0 -31 3.529324854187504 0 0 -32 4 0.5949066135025001 0 -33 4 1.278145619573775 0 -34 4 2.063201578232027 0 -35 4 2.964633608956098 0 -36 2.666666666666685 4 0 -37 1.33333333333337 4 0 -38 0 3.065647789360017 0 -39 0 2.393288956030129 0 -40 0 1.909232044233197 0 -41 0 1.560915832167684 0 -42 0 1.310258795174613 0 -43 0 1.129841025580155 0 -44 2.072632706027311 1.69598688973258 0 -45 1.613773926086385 0.8500227436870333 0 -46 0.8294669788088875 1.658857826312972 0 -47 1.32513596375101 0.3476839123937975 0 -48 0.3521126881546655 1.277363555436711 0 -49 1.12466853437021 1.153418043518669 0 -50 1.192696518113869 0.7306415166144991 0 -51 2.576053729862485 0.9053498230115412 0 -52 1.340126667186485 2.734096405958066 0 -53 1.726422310283826 0.4059954321843577 0 -54 0.9353736948832166 0.8715848956617313 0 -55 1.18615207058655 0.1857246235325533 0 -56 0.7052561075612429 1.175916841150846 0 -57 3.128587449887757 1.766432616500146 0 -58 1.502973959682794 1.639173253302476 0 -59 0.1759133514351944 1.169780059600397 0 -60 1.126589503584839 0.4922655384184934 0 -61 2.196140328827049 0.5068889305674 0 -62 2.612345788958327 2.921450948015479 0 -63 2.112581290158194 1.167800481700336 0 -64 3.237383018383969 0.7234638462140814 0 -65 0.9840394726232626 0.6906803311775085 0 -66 1.468485632956789 0.6195916609164185 0 -67 1.543585212840636 1.22337304019121 0 -68 0.7847572529703151 2.373911411047601 0 -69 1.536612492066048 0.2546061344524544 0 -70 0.7563814323183446 0.9674850965584817 0 -71 1.106950139898796 0.3511105542101679 0 -72 1.35889190895776 0.9986524025805176 0 -73 0.3959273532525635 1.738325897497147 0 -74 2.844593724249942 0.5138633427199154 0 -75 1.754062226045712 2.193549370361175 0 -76 0.7938495145246145 0.8047643924259087 0 -77 2.001875040491023 0.2863548721871211 0 -78 1.970700830475661 0.7993756598722095 0 -79 1.34411212289718 0.1825137374421063 0 -80 2.591371751876443 1.47181123899766 0 -81 1.145266577772124 1.501068978824429 0 -82 0.4941440667927327 1.148854074736235 0 -83 1.149429186474111 2.031817360579769 0 -84 0.9939713247765112 0.5426636213837798 0 -85 2.53934709873342 2.170371417857803 0 -86 0.9170333339922072 1.089415598156251 0 -87 0.8299773866185869 3.344838685871387 0 -88 3.289379674794993 2.516276442461847 0 -89 1.137453345295398 0.9199637046208775 0 -90 1.882033197768151 3.350776213150626 0 -91 0.5747040540405435 1.429957302128625 0 -92 1.775313987913787 0.1942086133302341 0 -93 0.8643434939808741 0.7017184961964265 0 -94 3.072389280032639 1.182610643612223 0 -95 1.025398445390052 0.425064443790196 0 -96 1.291599018349766 0.5379400141021424 0 -97 2.500950996588131 0.3796311220360604 0 -98 0.329249276924329 1.100214750608649 0 -99 0.894324716202368 1.353915876710289 0 -100 1.813941250117164 1.40844809571916 0 -101 1.794878469096937 1.088460304995382 0 -102 1.486769023536358 0.4427525772291758 0 -103 0.5900512883039151 0.9886452832900361 0 -104 1.926700328468347 0.5373153173291814 0 -105 3.279545588397917 3.324720918759852 0 -106 1.111952245445099 0.09914654476876072 0 -107 0.387323186063824 2.191864376335631 0 -108 1.078521106254799 0.230024464668231 0 -109 1.35920433836455 0.7749771722215344 0 -110 2.265435202084209 0.2409669473795033 0 -111 2.013801144774503 2.711101094307226 0 -112 0.6907699614193001 0.8590816528292089 0 -113 0.2143922726422754 1.42492042583774 0 -114 3.598069662403972 0.4358901037284767 0 -115 1.680368656509361 0.6158390637855682 0 -116 0.7133557167561021 1.999543410730382 0 -117 0.9072102561528353 0.6052161494598445 0 -118 3.178430153760137 0.3236365929559723 0 -119 1.063899507509137 0.7888937937290703 0 -120 1.1075300813509 0.6309016457330627 0 -121 3.544094384876648 1.445283348829069 0 -122 1.313711830501423 1.292934084685645 0 -123 1.253184469019452 0.1023441938573933 0 -124 1.616253868583924 0.119775562455931 0 -125 0.5355241979412432 2.779799497471038 0 -126 1.478800932191749 0.1185154109768451 0 -127 0.4286494767521648 1.012418382992747 0 -128 1.208825921620229 0.4088813796481784 0 -129 2.923716641100324 0.8451929254086457 0 -130 3.629773810408995 0.9401286651846473 0 -131 2.278190977419342 0.7701736465013063 0 -132 1.209925918352208 0.2871708528743117 0 -$EndNodes -$Elements -255 -1 1 2 101 5 5 38 -2 1 2 101 5 38 39 -3 1 2 101 5 39 40 -4 1 2 101 5 40 41 -5 1 2 101 5 41 42 -6 1 2 101 5 42 43 -7 1 2 101 5 43 6 -8 1 2 102 2 2 21 -9 1 2 102 2 21 22 -10 1 2 102 2 22 23 -11 1 2 102 2 23 24 -12 1 2 102 2 24 25 -13 1 2 102 2 25 26 -14 1 2 102 2 26 27 -15 1 2 102 2 27 28 -16 1 2 102 2 28 29 -17 1 2 102 2 29 30 -18 1 2 102 2 30 31 -19 1 2 102 2 31 3 -20 1 2 112 4 4 36 -21 1 2 112 4 36 37 -22 1 2 112 4 37 5 -23 1 2 200 1 2 7 -24 1 2 200 1 7 8 -25 1 2 200 1 8 9 -26 1 2 200 1 9 10 -27 1 2 200 1 10 11 -28 1 2 200 1 11 12 -29 1 2 200 1 12 13 -30 1 2 200 1 13 14 -31 1 2 200 1 14 15 -32 1 2 200 1 15 16 -33 1 2 200 1 16 17 -34 1 2 200 1 17 18 -35 1 2 200 1 18 19 -36 1 2 200 1 19 20 -37 1 2 200 1 20 6 -38 2 2 11 7 75 58 44 -39 2 2 11 7 80 63 51 -40 2 2 11 7 59 43 20 -41 2 2 11 7 72 45 67 -42 2 2 11 7 101 67 45 -43 2 2 11 7 80 44 63 -44 2 2 11 7 59 20 19 -45 2 2 11 7 85 75 44 -46 2 2 11 7 131 97 51 -47 2 2 11 7 83 46 81 -48 2 2 11 7 83 81 58 -49 2 2 11 7 98 59 19 -50 2 2 11 7 83 58 75 -51 2 2 11 7 43 6 20 -52 2 2 11 7 100 44 58 -53 2 2 11 7 97 74 51 -54 2 2 11 7 79 69 47 -55 2 2 11 7 93 65 54 -56 2 2 11 7 89 86 54 -57 2 2 11 7 111 75 85 -58 2 2 11 7 95 9 71 -59 2 2 11 7 89 49 86 -60 2 2 11 7 113 91 73 -61 2 2 11 7 113 48 91 -62 2 2 11 7 108 71 9 -63 2 2 11 7 84 11 10 -64 2 2 11 7 102 47 69 -65 2 2 11 7 118 74 29 -66 2 2 11 7 108 7 106 -67 2 2 11 7 108 8 7 -68 2 2 11 7 91 82 56 -69 2 2 11 7 88 57 34 -70 2 2 11 7 118 29 30 -71 2 2 11 7 131 61 97 -72 2 2 11 7 91 48 82 -73 2 2 11 7 86 70 54 -74 2 2 11 7 95 84 10 -75 2 2 11 7 127 16 103 -76 2 2 11 7 127 17 16 -77 2 2 11 7 76 14 13 -78 2 2 11 7 121 34 57 -79 2 2 11 7 98 19 18 -80 2 2 11 7 93 54 76 -81 2 2 11 7 109 50 96 -82 2 2 11 7 113 42 59 -83 2 2 11 7 90 87 52 -84 2 2 11 7 99 49 81 -85 2 2 11 7 83 75 52 -86 2 2 11 7 76 54 70 -87 2 2 11 7 73 40 41 -88 2 2 11 7 115 78 45 -89 2 2 11 7 85 44 80 -90 2 2 11 7 59 42 43 -91 2 2 11 7 77 26 27 -92 2 2 11 7 119 54 65 -93 2 2 11 7 131 51 63 -94 2 2 11 7 112 103 15 -95 2 2 11 7 120 96 50 -96 2 2 11 7 83 52 68 -97 2 2 11 7 109 89 50 -98 2 2 11 7 90 37 87 -99 2 2 11 7 109 72 89 -100 2 2 11 7 115 104 78 -101 2 2 11 7 99 86 49 -102 2 2 11 7 123 106 22 -103 2 2 11 7 113 73 41 -104 2 2 11 7 94 80 51 -105 2 2 11 7 92 53 69 -106 2 2 11 7 109 96 66 -107 2 2 11 7 97 29 74 -108 2 2 11 7 90 62 36 -109 2 2 11 7 106 7 2 -110 2 2 11 7 93 76 13 -111 2 2 11 7 125 68 52 -112 2 2 11 7 106 2 21 -113 2 2 11 7 122 49 72 -114 2 2 11 7 103 16 15 -115 2 2 11 7 108 9 8 -116 2 2 11 7 95 10 9 -117 2 2 11 7 122 81 49 -118 2 2 11 7 106 21 22 -119 2 2 11 7 101 45 78 -120 2 2 11 7 105 36 62 -121 2 2 11 7 120 60 96 -122 2 2 11 7 113 59 48 -123 2 2 11 7 100 63 44 -124 2 2 11 7 112 14 76 -125 2 2 11 7 87 37 5 -126 2 2 11 7 85 80 57 -127 2 2 11 7 132 55 79 -128 2 2 11 7 115 102 53 -129 2 2 11 7 125 52 87 -130 2 2 11 7 88 85 57 -131 2 2 11 7 110 77 27 -132 2 2 11 7 92 26 77 -133 2 2 11 7 124 92 69 -134 2 2 11 7 89 72 49 -135 2 2 11 7 102 69 53 -136 2 2 11 7 125 39 107 -137 2 2 11 7 122 72 67 -138 2 2 11 7 100 58 67 -139 2 2 11 7 129 94 51 -140 2 2 11 7 109 66 45 -141 2 2 11 7 123 79 55 -142 2 2 11 7 99 91 56 -143 2 2 11 7 122 67 58 -144 2 2 11 7 115 66 102 -145 2 2 11 7 86 56 70 -146 2 2 11 7 111 85 62 -147 2 2 11 7 104 53 77 -148 2 2 11 7 116 46 83 -149 2 2 11 7 97 28 29 -150 2 2 11 7 87 5 38 -151 2 2 11 7 116 73 46 -152 2 2 11 7 125 107 68 -153 2 2 11 7 92 77 53 -154 2 2 11 7 91 46 73 -155 2 2 11 7 115 45 66 -156 2 2 11 7 107 40 73 -157 2 2 11 7 132 79 47 -158 2 2 11 7 99 56 86 -159 2 2 11 7 93 13 12 -160 2 2 11 7 109 45 72 -161 2 2 11 7 130 94 64 -162 2 2 11 7 103 70 56 -163 2 2 11 7 131 63 78 -164 2 2 11 7 127 98 18 -165 2 2 11 7 117 11 84 -166 2 2 11 7 130 121 94 -167 2 2 11 7 123 55 106 -168 2 2 11 7 92 25 26 -169 2 2 11 7 88 62 85 -170 2 2 11 7 95 71 60 -171 2 2 11 7 122 58 81 -172 2 2 11 7 112 70 103 -173 2 2 11 7 102 96 47 -174 2 2 11 7 114 3 32 -175 2 2 11 7 123 23 79 -176 2 2 11 7 101 78 63 -177 2 2 11 7 114 31 3 -178 2 2 11 7 128 60 71 -179 2 2 11 7 101 100 67 -180 2 2 11 7 125 38 39 -181 2 2 11 7 126 79 23 -182 2 2 11 7 129 51 74 -183 2 2 11 7 112 76 70 -184 2 2 11 7 121 33 34 -185 2 2 11 7 118 30 31 -186 2 2 11 7 103 56 82 -187 2 2 11 7 88 34 35 -188 2 2 11 7 105 35 4 -189 2 2 11 7 126 69 79 -190 2 2 11 7 127 18 17 -191 2 2 11 7 105 62 88 -192 2 2 11 7 98 48 59 -193 2 2 11 7 104 61 78 -194 2 2 11 7 118 31 114 -195 2 2 11 7 115 53 104 -196 2 2 11 7 94 57 80 -197 2 2 11 7 120 119 65 -198 2 2 11 7 111 90 52 -199 2 2 11 7 108 106 55 -200 2 2 11 7 101 63 100 -201 2 2 11 7 117 12 11 -202 2 2 11 7 131 78 61 -203 2 2 11 7 123 22 23 -204 2 2 11 7 111 52 75 -205 2 2 11 7 120 50 119 -206 2 2 11 7 107 39 40 -207 2 2 11 7 104 77 61 -208 2 2 11 7 110 27 28 -209 2 2 11 7 102 66 96 -210 2 2 11 7 99 46 91 -211 2 2 11 7 113 41 42 -212 2 2 11 7 110 28 97 -213 2 2 11 7 112 15 14 -214 2 2 11 7 105 88 35 -215 2 2 11 7 95 60 84 -216 2 2 11 7 117 93 12 -217 2 2 11 7 99 81 46 -218 2 2 11 7 116 107 73 -219 2 2 11 7 110 61 77 -220 2 2 11 7 111 62 90 -221 2 2 11 7 119 89 54 -222 2 2 11 7 132 71 108 -223 2 2 11 7 132 108 55 -224 2 2 11 7 118 64 74 -225 2 2 11 7 98 82 48 -226 2 2 11 7 124 25 92 -227 2 2 11 7 120 65 84 -228 2 2 11 7 129 74 64 -229 2 2 11 7 126 23 24 -230 2 2 11 7 128 96 60 -231 2 2 11 7 120 84 60 -232 2 2 11 7 119 50 89 -233 2 2 11 7 125 87 38 -234 2 2 11 7 128 47 96 -235 2 2 11 7 110 97 61 -236 2 2 11 7 117 84 65 -237 2 2 11 7 116 83 68 -238 2 2 11 7 121 57 94 -239 2 2 11 7 124 24 25 -240 2 2 11 7 130 64 114 -241 2 2 11 7 127 103 82 -242 2 2 11 7 129 64 94 -243 2 2 11 7 117 65 93 -244 2 2 11 7 130 114 32 -245 2 2 11 7 132 128 71 -246 2 2 11 7 118 114 64 -247 2 2 11 7 126 24 124 -248 2 2 11 7 130 33 121 -249 2 2 11 7 116 68 107 -250 2 2 11 7 126 124 69 -251 2 2 11 7 132 47 128 -252 2 2 11 7 127 82 98 -253 2 2 11 7 90 36 37 -254 2 2 11 7 105 4 36 -255 2 2 11 7 130 32 33 -$EndElements