Welcome to the root!

This is just a sample of subtitle

Pierre de Fermat
Pierre de Fermat

Pierre de Fermat was a mathematician and lawyer. Most famous for what he didn't did, the "Fermat's last therorem". That states:

There aren't any set of positive integers x, y, z and n with n bigger than 2 that satisfies the equation.

xn + yn = zn
 

Diophantus of Alexadria

Fermat has written in a page margin of the Diofantus book about Aritmethics the following message:

Cubum autem in duos cubos, aut quadratoquadratum in duos quadratosquadratos, et generaliter nullam in infinitum ultra quadratum potestatem in duos ejusdem nominis fas est dividere: cujus rei demonstrationem mirabilem sane detexi. Hanc marginis exiguitas non caperet.

 

Pierre de Fermat

And indeed it was, only more than three centuries later a english mathematician Andrew Wiles completes the proof in a 200 pages demonstration. Some say that Fermat didn't had the full proof but believe it had.

And about me? I did nothing. But you can check my workings in my GitHub page. The ones I'm most proud of are (in no special order):

numerico
Codes about numerical analysis and methods. In Python.
wave
Wave Phenomena simulation. In C
Seismic
Seismic simulations. In Python
assetsbrowser
A browser for game assets. In C/Python
pong
A clone of an very old game. In C.
factory
A tool to manage source compilation. In Bash.
liblohs
A driver for optical markers (very old). In C.
Table 1: This table shows just table formating to looks like a simple and elegant table
ID Field Data
1 Group 1 0.2123
2 Group 2 0
3 Group 3 1
4 Group 4 13
5 Group 5 145
6 Group 6 10.2
ID Field Data

That is all for now. And then.

Datastructures

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris nec lobortis urna, sit amet mattis neque. Suspendisse tempor, ipsum sollicitudin sollicitudin rutrum, quam quam sollicitudin leo, vel interdum nulla lacus non nisi. Pellentesque dictum ligula sapien, eu maximus sem imperdiet vitae. Duis tristique, mauris pretium auctor rhoncus, erat metus efficitur enim, eu porta dolor nunc id lorem. Praesent congue mi metus, ac interdum enim hendrerit sit amet. Nam ultricies elit sit amet aliquet rutrum. Ut pharetra est metus, eu accumsan dolor scelerisque vel. Nullam id imperdiet mi. Nulla turpis massa, efficitur non dapibus sed, elementum et justo. Duis volutpat consectetur lectus, sit amet malesuada magna ultrices sed.

Aliquam fringilla augue in blandit viverra. Sed posuere sollicitudin velit, sed fringilla sapien varius ac. Duis tincidunt ultricies tincidunt. Sed semper mi in rhoncus semper. Phasellus imperdiet egestas posuere. Nulla eget diam at metus sagittis sodales. Praesent luctus nisl tortor, vitae convallis nisi ullamcorper nec. Maecenas et justo eu velit condimentum porta quis sit amet turpis.

Praesent a facilisis elit, at malesuada velit. Sed consectetur turpis eu dui consequat venenatis. Integer et ornare lorem. Vestibulum finibus odio id magna bibendum facilisis. Vivamus accumsan dignissim ornare. Integer auctor ut nisl nec maximus. In elementum sit amet est eget posuere. Mauris volutpat ex et dignissim consequat. Ut at neque turpis. Maecenas id neque at urna congue luctus. Proin sit amet velit rutrum, feugiat nisi eget, pretium velit.

012345789 012345789 012345789 012345789 012345789 012345789 012345789 012345789 012345789 012345789 012345789 012345789 012345789 012345789 012345789 012345789 012345789 012345789 012345789 012345789 012345789 012345789 012345789 012345789 012345789 012345789 012345789 012345789 012345789 012345789 012345789 012345789 012345789 012345789 012345789 012345789 012345789 012345789 012345789 012345789 012345789 012345789 012345789 012345789 012345789 012345789

Integer eros elit, convallis non quam non, ultrices facilisis arcu. Cras eu sapien auctor arcu suscipit laoreet. Pellentesque vitae congue diam, quis gravida justo. Nullam at odio nisl. Sed at rutrum mi, non bibendum augue. Morbi ornare finibus interdum. Nunc erat nulla, faucibus in venenatis eget, scelerisque eu nisl. Cras placerat eget leo eu dapibus. In faucibus magna lorem, vitae ultrices justo convallis quis.

Morbi eget orci lobortis, consequat arcu ut, ornare urna. Donec erat dolor, suscipit nec porta vitae, cursus vitae mi. Sed vehicula velit ut tristique interdum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc sit amet erat tellus. Sed ac tempus nisl, et bibendum odio. Vivamus sit amet felis gravida, viverra ipsum sed, venenatis ante. Vivamus et porttitor lectus, eu suscipit ipsum. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nullam laoreet eros neque.

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <unistd.h>

#include "globals.h"
#include "parse.h"

#include "utils.h"
#include "tic.h"

#include "velocity_model.h"
#include "ricker.h"
#include "wavefield.h"
#include "simulation.h"

int main(int argc, char *argv[])
{
    args *ap = arg_parse(argc, argv, stdout);

    /* Create velocity model */
    velocity_model *model = velocity_model__create(ap->nx, ap->nz, ap->dx, ap->dz);
    velocity_model__constant_velocity(model, ap->vel);

    /* Create the source */
    ricker_wavelet *wavelet = ricker__create(ap->frequency);
    ricker_source  *source  = ricker__model(wavelet, ap->sx, ap->sz, ap->sd);

    /* Create simulation */
    simulation_params *simulation = simulation__create();
    simulation->time = ap->time;
    simulation->sample = ap->sample;

    /* Create simulation */
    simulation->dt = stable_dt(model);
    simulation->steps = simulation->time / simulation->dt + 1;
    simulation->ntrec = simulation->sample/simulation->dt;

    /* Test stability */
    if(isstable(source, model, simulation) != SIMUL_OK)
    {
      fprintf(stderr, "Unstable model\n");
      exit(EXIT_FAILURE);
    }

    /* Create data */
    ricker__create_trace(wavelet, simulation->time, simulation->dt);
    wavefield *P = wavefield__create(model->nx, model->nz);

    /* Pre calculate  Laplacian parameters */
    laplacian_params *lp = wavefield__laplacian_params(model,
                                                       ap->order,
                                                       simulation->dt);

    /* Iterate timesteps */
    for(size_t it = 0; it < simulation->steps; it++)
    {
        simulation__inject_source(P, model, source, simulation, it);
        wavefield__laplacian(P, model, lp);
        wavefield__perfect_match_layer(P, model, lp);
        wavefield__swap(P);
        simulation__write(it, P, simulation, stdout, ticprt);
    }

    /* Memory  cleanup */
    fflush(stdout);
    simulation__destroy(simulation);
    wavefield__destroy_laplacian_params(lp);
    wavefield__destroy(P);
    ricker__destroy_source(source);
    velocity_model__destroy(model);
    free(ap);

    /* Finishing */
    if(ticprt) {
        fprintf(stderr, "TOTAL ");
        tic();
    }

    if(verbose)
        fprintf(stderr, "xmovie n1=%zu n2=%zu d1=%lf d2=%lf clip=0.5 loop=2\n",
                ap->nx, ap->nz, ap->dx, ap->dz);

    fflush(stderr);

    return 0;
}
  1. One;
  2. Two; and
  3. Three.

And a unumbered one:

  • Item 1
  • Item 2
  • Item 3