Index
Para compilar o metis basta seguir os seguintes passos:
cd metisLib
tar -xvzf metis-5.1.0.tar.gz
cd metis-5.1.0
make config
make
mkdir -p ./../../lib/
cp -v build/Linux-x86_64/libmetis/libmetis.a ../../lib/
cd ../../Estes comandos irão descompactar e compilar o metis5, configurar o make, excetar a compilação e copiar automaticamente a libmetis.a para a pasta lib. A libmetis.a será utilizada depois para a compilação do prepar
⚠️ ⚠️ OBS: Você precisa ter instalado ocmakepor causa do metis.
⚠️ ⚠️ OBS: As versões novas do metis que estão disponiveis nogithubprecisam dessa lib extralibGKlib. As versões mais antigas dometispodem ser encontrados aqui. Aspreparsó funciona com as versão antigas dometis.
O primeiro passo é fazer uma copia do Makefile_base
cp contrib/Makefile_base MakefileAntes de compilar o prepar a estrutura do projeto tem que ser algo similar à:
├── include
│ ├── elementos.fi
│ ├── gauss.fi
│ ├── load.fi
│ ├── parallel.fi
│ ├── readfile.fi
│ ├── string.fi
│ ├── termprop.fi
│ ├── time.fi
│ └── transiente.fi
├── lib
│ └── libmetis.a
├── Makefile
└── src
├── Adjacency.f
├── Filenames.f
├── Main.f
├── Malloc.f
├── Mpi_comunicate.f
├── Parallel_imp.f
├── Partdmesh.f
├── Pdmetis.f
├── Propnode.f
├── Rdata.f
├── Read_mef.f
├── Read_metis.f
├── Time.f
├── Vtk.f
├── Write_mef.f
├── Write_par.f
└── Write_vtk.fAgora para compilar fazer basta:
makeO executável do prepar estará na pasta bin. Como foi usando a opção -static pode ser que seja necessario instalar lib extras no sistema como a glibc-static. Outra opção é tirar a opção -static do Makefile.
Criar um arquivo pre.dat com o conteudo
input mesh.dat
output part
div 12
method non-overllaping
partVtk yes
partMeshVtk yes
partMeshMef yes
meshLoads no
vtkBin yes
memory 1000
end
Exsite um exemplo de aquivo de entrada na pastas contrib/bin/. Para usa-lo primeiro vamos descompacta-lo para a pasta bin/.
mkdir -p bin
tar -xvzf contrib/examples/solo.tar.gz -C bin/Agora para gerar o particionamento basta executar o prepar na pasta bin/.
./prepar solo/pre.datApós rodar o prepar a pasta dever ser
solo/
├── config
│ ├── grav.dat
│ ├── poromec.config
│ ├── poromec.solver
│ └── setprint.dat
├── mesh
│ ├── solo1_boun.dat
│ ├── solo1_coor.dat
│ ├── solo1_elmt.dat
│ ├── solo1_elmtloads.dat
│ └── solo1_initial.dat
├── output
├── part
│ ├── solo1_par_0.dat
│ ├── solo1_par_1.dat
│ ├── solo1_par_2.dat
│ ├── solo1_par_3.dat
│ ├── solo1_par_4.dat
│ ├── solo1_par_5.dat
│ ├── solo1_par_n_0_my_part.vtk
│ ├── solo1_par_n_1_my_part.vtk
│ ├── solo1_par_n_2_my_part.vtk
│ ├── solo1_par_n_3_my_part.vtk
│ ├── solo1_par_n_4_my_part.vtk
│ ├── solo1_par_n_5_my_part.vtk
│ ├── solo1_par_n_6_part.vtk
│ └── solo1_par_pre_t_6.txt
├── pre.dat
├── run
│ ├── nloads.dat
│ ├── node.dat
│ └── run.dat
└── solo1.datAs pastas run, mesh, config e o arquivo solo1.dat são os arquivos de entrada da simulação do mefpar em sequencial. Na pasta solo/part ficam salvos os arquivos do particionamento *.dat e *.vtk. Os arquivos solo1_par_*.dat são arquivos de entrada para a simulação em paralelo do mefpar.
Exemplo da malha particonada em 6 partições
⚠️ ⚠️ OBS: A estrura de pastas dos arquivos deinputeoutputpodem ser mudadas. Essa estrutura é apenas a que eu gosto, mas você pode ficar a vontade de experimentar outras.
Versões pré compilados para linux pode ser encotradas aqui binarios
Caso você queria rodar utilizando containers temos um Dockerfile configurado.
Para gerar a imagem, este procedimento precisa ser feito apenas uma única vez:
docker build -t prepar:latest .Para executar o prepar e gerar o parcionamento:
docker run --rm -it -v "$(pwd)/bin/solo/:/usr/build/solo/" prepar solo/pre.dat
⚠️ ⚠️ OBS: O docker pode ser usado no windows também, mas irá usar bastante recurso da máquina.
Você precisará instalar o make, cmake, g++. Usando o Ubuntu 22.04.06 LTS basta utilizar os comandos:
sudo apt update
sudo apt install make cmake g++ gfortran
Após isso você pode seguir o procedimento normal de instalação no linux.