incomp-flame-post/fortran_api/sourcefile/post.f90.html
2026-06-05 13:27:38 +00:00

468 lines
No EOL
70 KiB
HTML

<!-- -*- mode: jinja2 -*- -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="Tridiagonal compact finite difference solver, mathematical operators, and MPI-IO drivers.">
<meta name="author" content="Google DeepMind Team & Ignis" >
<link rel="icon" href="../favicon.png">
<title>post.f90 &ndash; HPC DNS Post-Processing Fortran Core</title>
<!-- Bootstrap -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"
integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script>
<!-- Font Awesome -->
<link href="../css/fontawesome.min.css" rel="stylesheet">
<link href="../css/brands.min.css" rel="stylesheet">
<link href="../css/regular.min.css" rel="stylesheet">
<link href="../css/solid.min.css" rel="stylesheet">
<link href="../css/v4-font-face.min.css" rel="stylesheet">
<link href="../css/v4-shims.min.css" rel="stylesheet">
<!-- MathJax -->
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
TeX: { equationNumbers: { autoNumber: "AMS" } }
});
</script>
<script src="https://cdn.jsdelivr.net/npm/mathjax@2.7.9/MathJax.js?config=TeX-AMS-MML_HTMLorMML" async
integrity="sha256-DViIOMYdwlM/axqoGDPeUyf0urLoHMN4QACBKyB58Uw=" crossorigin="anonymous"></script>
<!-- Other scripts and stylesheets -->
<link href="../css/local.css" rel="stylesheet">
<link href="../css/pygments.css" rel="stylesheet">
<script src="../js/svg-pan-zoom.min.js"></script>
</head>
<body>
<!-- Fixed navbar -->
<div class="container-fluid mb-sm-4 mb-xl-2">
<nav class="navbar navbar-expand-lg navbar-dark bg-dark fixed-top">
<div class="container">
<a class="navbar-brand" href="../index.html">HPC DNS Post-Processing Fortran Core <small>1.0.0</small></a>
<button type="button" class="navbar-toggler" data-bs-toggle="collapse" data-bs-target="#navbar"
aria-expanded="false" aria-controls="navbar" aria-label="Toggle navigation">
<span class="navbar-toggler-icon">
</button>
<div id="navbar" class="navbar-collapse collapse">
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link" href="../lists/files.html">Source Files</a>
</li>
<li class="nav-item">
<a class="nav-link" href="../lists/modules.html">Modules</a>
</li>
<li class="nav-item">
<a class="nav-link" href="../lists/procedures.html">Procedures</a>
</li>
<li class="nav-item">
<a class="nav-link" href="../lists/programs.html">Programs</a>
</li>
</ul>
<div class="d-flex align-items-end flex-grow-1">
<form action="../search.html" role="search" class="ms-auto">
<input type="text" class="form-control" aria-label="Search" placeholder="Search" name="q" id="tipue_search_input" autocomplete="off" required>
</form>
</div>
</div><!--/.nav-collapse -->
</div>
</nav>
</div>
<div class="container">
<div class="row">
<h1>post.f90
<small>Source File</small>
</h1>
<div class="container p-2 mb-4 bg-light border rounded-3">
<div class="row align-items-center justify-content-between" id="info-bar">
<div class="col">
<ul class="list-inline" style="margin-bottom:0px;display:inline">
<li class="list-inline-item" id="statements"><i class="fa fa-list-ol"></i>
<a data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-html="true"
title="12.8% of total for source files.">202 statements</a>
</li>
<li class="list-inline-item" id="source-file">
<i class="fa fa-code"></i>
<a href="../src/post.f90"> Source File</a>
</li>
</ul>
</div>
<div class="col">
<nav aria-label="breadcrumb">
<ol class="breadcrumb justify-content-end mb-0">
<li class="breadcrumb-item active" aria-current="page">post.f90</li>
</ol>
</nav>
</div>
</div>
</div>
<script>
// Enable Bootstrap tooltips
(function () {
const tooltipTriggerList = document.querySelectorAll('[data-bs-toggle="tooltip"]')
const tooltipList = [...tooltipTriggerList].map(tooltipTriggerEl => new bootstrap.Tooltip(tooltipTriggerEl))
})();
</script>
</div>
<div class="row">
<div class="col-md-3 hidden-xs hidden-sm visible-md visible-lg">
<div id="sidebar">
<h3>Contents</h3>
<div class="card mb-4">
<a data-bs-toggle="collapse" href="#mods-0"
aria-expanded="false" aria-controls="mods-0">
<h4 class="card-header bg-primary text-white">Modules</h4>
</a>
<div id="mods-0" class="collapse">
<div class="list-group list-group-flush">
<a class="list-group-item" href="../module/post.html">post</a>
</div>
</div>
</div>
<div class="card card-primary">
<div class="card-header text-left"><h3 class="card-title">Source Code</h3></div>
<div class="list-group">
<a class="list-group-item" href="../sourcefile/post.f90.html#src">post.f90</a>
</div>
</div>
</div>
</div>
<div class="col-md-9" id='text'>
<br>
<section>
<h2><span class="anchor" id="src"></span>Source Code</h2>
<div class="hl codehilite"><pre><span></span><a id="ln-1" name="ln-1" href="#ln-1"></a><span class="k">MODULE </span><span class="n">post</span>
<a id="ln-2" name="ln-2" href="#ln-2"></a><span class="w"> </span><span class="k">use</span><span class="p">,</span><span class="w"> </span><span class="k">intrinsic</span><span class="w"> </span><span class="kd">::</span><span class="w"> </span><span class="n">iso_fortran_env</span><span class="p">,</span><span class="w"> </span><span class="k">only</span><span class="p">:</span><span class="w"> </span><span class="n">real64</span>
<a id="ln-3" name="ln-3" href="#ln-3"></a><span class="w"> </span><span class="k">USE </span><span class="n">Compact</span>
<a id="ln-4" name="ln-4" href="#ln-4"></a><span class="w"> </span><span class="k">USE </span><span class="n">m_parameters</span>
<a id="ln-5" name="ln-5" href="#ln-5"></a><span class="w"> </span><span class="k">USE </span><span class="n">m_calculate</span>
<a id="ln-6" name="ln-6" href="#ln-6"></a><span class="w"> </span><span class="k">USE </span><span class="n">m_arrays</span>
<a id="ln-7" name="ln-7" href="#ln-7"></a><span class="w"> </span><span class="k">USE </span><span class="n">m_terms</span>
<a id="ln-8" name="ln-8" href="#ln-8"></a>
<a id="ln-9" name="ln-9" href="#ln-9"></a><span class="w"> </span><span class="k">IMPLICIT NONE</span>
<a id="ln-10" name="ln-10" href="#ln-10"></a><span class="k"> PRIVATE</span>
<a id="ln-11" name="ln-11" href="#ln-11"></a><span class="k"> </span><span class="kt">INTEGER</span><span class="w"> </span><span class="kd">::</span><span class="w"> </span><span class="n">countnum</span>
<a id="ln-12" name="ln-12" href="#ln-12"></a><span class="w"> </span><span class="kt">INTEGER</span><span class="w"> </span><span class="kd">::</span><span class="w"> </span><span class="n">nprogress</span>
<a id="ln-13" name="ln-13" href="#ln-13"></a><span class="w"> </span><span class="kt">INTEGER</span><span class="w"> </span><span class="kd">::</span><span class="w"> </span><span class="n">ipass</span>
<a id="ln-14" name="ln-14" href="#ln-14"></a><span class="w"> </span><span class="kt">INTEGER</span><span class="w"> </span><span class="kd">::</span><span class="w"> </span><span class="n">num_</span><span class="w"> </span><span class="c">! hybrid</span>
<a id="ln-15" name="ln-15" href="#ln-15"></a><span class="w"> </span><span class="kt">real</span><span class="p">(</span><span class="n">real64</span><span class="p">)</span><span class="w"> </span><span class="kd">::</span><span class="w"> </span><span class="n">tnow</span>
<a id="ln-16" name="ln-16" href="#ln-16"></a>
<a id="ln-17" name="ln-17" href="#ln-17"></a><span class="w"> </span><span class="kt">real</span><span class="p">(</span><span class="n">real64</span><span class="p">),</span><span class="w"> </span><span class="k">DIMENSION</span><span class="p">(:,:,:,:),</span><span class="w"> </span><span class="k">ALLOCATABLE</span><span class="w"> </span><span class="kd">::</span><span class="w"> </span><span class="n">old_scalar</span><span class="p">,</span><span class="w"> </span><span class="n">new_scalar</span>
<a id="ln-18" name="ln-18" href="#ln-18"></a>
<a id="ln-19" name="ln-19" href="#ln-19"></a><span class="w"> </span><span class="k">PUBLIC</span><span class="w"> </span><span class="kd">::</span><span class="w"> </span><span class="n">main</span>
<a id="ln-20" name="ln-20" href="#ln-20"></a><span class="w"> </span><span class="k">CONTAINS</span>
<a id="ln-21" name="ln-21" href="#ln-21"></a>
<a id="ln-22" name="ln-22" href="#ln-22"></a><span class="k"> SUBROUTINE </span><span class="n">main</span>
<a id="ln-23" name="ln-23" href="#ln-23"></a><span class="w"> </span><span class="kt">INTEGER</span><span class="w"> </span><span class="kd">::</span><span class="w"> </span><span class="n">fread</span><span class="p">,</span><span class="n">i</span>
<a id="ln-24" name="ln-24" href="#ln-24"></a><span class="w"> </span><span class="kt">INTEGER</span><span class="p">,</span><span class="w"> </span><span class="k">PARAMETER</span><span class="w"> </span><span class="kd">::</span><span class="w"> </span><span class="n">eofread</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o">-</span><span class="mi">1</span>
<a id="ln-25" name="ln-25" href="#ln-25"></a>
<a id="ln-26" name="ln-26" href="#ln-26"></a><span class="w"> </span><span class="n">ipass</span><span class="o">=</span><span class="mi">0</span>
<a id="ln-27" name="ln-27" href="#ln-27"></a>
<a id="ln-28" name="ln-28" href="#ln-28"></a><span class="w"> </span><span class="k">CALL </span><span class="n">READ_INTRO</span>
<a id="ln-29" name="ln-29" href="#ln-29"></a>
<a id="ln-30" name="ln-30" href="#ln-30"></a><span class="w"> </span><span class="k">CALL </span><span class="n">ALLOCATE_ARRAYS</span>
<a id="ln-31" name="ln-31" href="#ln-31"></a>
<a id="ln-32" name="ln-32" href="#ln-32"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">iammaster</span><span class="p">)</span><span class="w"> </span><span class="k">CALL </span><span class="n">PRINT_BANNER</span>
<a id="ln-33" name="ln-33" href="#ln-33"></a>
<a id="ln-34" name="ln-34" href="#ln-34"></a><span class="w"> </span><span class="c">! PASS 1</span>
<a id="ln-35" name="ln-35" href="#ln-35"></a><span class="w"> </span><span class="n">ipass</span><span class="o">=</span><span class="mi">1</span>
<a id="ln-36" name="ln-36" href="#ln-36"></a><span class="w"> </span><span class="n">nprogress</span><span class="o">=</span><span class="mi">0</span>
<a id="ln-37" name="ln-37" href="#ln-37"></a><span class="w"> </span><span class="n">countnum</span><span class="o">=</span><span class="mi">0</span>
<a id="ln-38" name="ln-38" href="#ln-38"></a>
<a id="ln-39" name="ln-39" href="#ln-39"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">numprocs</span><span class="p">.</span><span class="n">eq</span><span class="p">.</span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="k">then</span>
<a id="ln-40" name="ln-40" href="#ln-40"></a><span class="k"> </span><span class="n">firstloop_serial</span><span class="p">:</span><span class="w"> </span><span class="k">DO </span><span class="n">fread</span><span class="o">=</span><span class="n">startnum</span><span class="p">,</span><span class="n">endnum</span><span class="p">,</span><span class="n">skipnum</span>
<a id="ln-41" name="ln-41" href="#ln-41"></a><span class="w"> </span><span class="k">IF</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="n">to_omit</span><span class="p">(</span><span class="n">fread</span><span class="p">)</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="k">THEN</span>
<a id="ln-42" name="ln-42" href="#ln-42"></a><span class="k"> CALL </span><span class="n">PRINT_SKIP_LOG</span><span class="p">(</span><span class="n">fread</span><span class="p">)</span>
<a id="ln-43" name="ln-43" href="#ln-43"></a><span class="w"> </span><span class="k">ELSE</span>
<a id="ln-44" name="ln-44" href="#ln-44"></a><span class="k"> </span><span class="n">countnum</span><span class="o">=</span><span class="n">countnum</span><span class="o">+</span><span class="mi">1</span>
<a id="ln-45" name="ln-45" href="#ln-45"></a><span class="w"> </span><span class="n">nprogress</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">nprogress</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span>
<a id="ln-46" name="ln-46" href="#ln-46"></a><span class="w"> </span><span class="k">CALL </span><span class="n">READ_FILE</span><span class="p">(</span><span class="n">fread</span><span class="p">)</span>
<a id="ln-47" name="ln-47" href="#ln-47"></a><span class="w"> </span><span class="k">CALL </span><span class="n">m_terms_calculate_pass1</span><span class="p">(</span><span class="n">fread</span><span class="p">)</span>
<a id="ln-48" name="ln-48" href="#ln-48"></a><span class="w"> </span><span class="k">END IF</span>
<a id="ln-49" name="ln-49" href="#ln-49"></a><span class="k"> END DO </span><span class="n">firstloop_serial</span>
<a id="ln-50" name="ln-50" href="#ln-50"></a><span class="w"> </span><span class="k">else</span>
<a id="ln-51" name="ln-51" href="#ln-51"></a><span class="k"> </span><span class="n">tag</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span>
<a id="ln-52" name="ln-52" href="#ln-52"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">iammaster</span><span class="p">)</span><span class="w"> </span><span class="k">then</span>
<a id="ln-53" name="ln-53" href="#ln-53"></a><span class="k"> </span><span class="n">dispatchloop1</span><span class="p">:</span><span class="w"> </span><span class="k">DO </span><span class="n">fread</span><span class="o">=</span><span class="n">startnum</span><span class="p">,</span><span class="n">endnum</span><span class="p">,</span><span class="n">skipnum</span>
<a id="ln-54" name="ln-54" href="#ln-54"></a><span class="w"> </span><span class="k">IF</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="n">to_omit</span><span class="p">(</span><span class="n">fread</span><span class="p">)</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="k">THEN</span>
<a id="ln-55" name="ln-55" href="#ln-55"></a><span class="k"> CALL </span><span class="n">PRINT_SKIP_LOG</span><span class="p">(</span><span class="n">fread</span><span class="p">)</span>
<a id="ln-56" name="ln-56" href="#ln-56"></a><span class="w"> </span><span class="k">ELSE</span>
<a id="ln-57" name="ln-57" href="#ln-57"></a><span class="k"> </span><span class="n">countnum</span><span class="o">=</span><span class="n">countnum</span><span class="o">+</span><span class="mi">1</span>
<a id="ln-58" name="ln-58" href="#ln-58"></a><span class="w"> </span><span class="k">CALL </span><span class="n">MPI_RECV</span><span class="p">(</span><span class="n">id_to</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">MPI_INTEGER</span><span class="p">,</span><span class="w"> </span><span class="n">MPI_ANY_SOURCE</span><span class="p">,</span><span class="w"> </span><span class="n">tag</span><span class="p">,</span><span class="w"> </span><span class="n">MPI_COMM_TASK</span><span class="p">,</span><span class="w"> </span><span class="n">mpi_status</span><span class="p">,</span><span class="w"> </span><span class="n">mpi_err</span><span class="p">)</span>
<a id="ln-59" name="ln-59" href="#ln-59"></a><span class="w"> </span><span class="k">CALL </span><span class="n">MPI_SEND</span><span class="p">(</span><span class="n">fread</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">MPI_INTEGER8</span><span class="p">,</span><span class="w"> </span><span class="n">id_to</span><span class="p">,</span><span class="w"> </span><span class="n">tag</span><span class="p">,</span><span class="w"> </span><span class="n">MPI_COMM_TASK</span><span class="p">,</span><span class="w"> </span><span class="n">mpi_err</span><span class="p">)</span>
<a id="ln-60" name="ln-60" href="#ln-60"></a><span class="w"> </span><span class="k">ENDIF</span>
<a id="ln-61" name="ln-61" href="#ln-61"></a><span class="k"> END DO </span><span class="n">dispatchloop1</span>
<a id="ln-62" name="ln-62" href="#ln-62"></a>
<a id="ln-63" name="ln-63" href="#ln-63"></a><span class="w"> </span><span class="n">end_of_dispatch1</span><span class="p">:</span><span class="w"> </span><span class="k">DO </span><span class="n">i</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">numprocs</span><span class="o">-</span><span class="mi">1</span>
<a id="ln-64" name="ln-64" href="#ln-64"></a><span class="w"> </span><span class="k">CALL </span><span class="n">MPI_RECV</span><span class="p">(</span><span class="n">id_to</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">MPI_INTEGER</span><span class="p">,</span><span class="w"> </span><span class="n">MPI_ANY_SOURCE</span><span class="p">,</span><span class="w"> </span><span class="n">tag</span><span class="p">,</span><span class="w"> </span><span class="n">MPI_COMM_TASK</span><span class="p">,</span><span class="w"> </span><span class="n">mpi_status</span><span class="p">,</span><span class="w"> </span><span class="n">mpi_err</span><span class="p">)</span>
<a id="ln-65" name="ln-65" href="#ln-65"></a><span class="w"> </span><span class="k">CALL </span><span class="n">MPI_SEND</span><span class="p">(</span><span class="n">eofread</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">MPI_INTEGER8</span><span class="p">,</span><span class="w"> </span><span class="n">id_to</span><span class="p">,</span><span class="w"> </span><span class="n">tag</span><span class="p">,</span><span class="w"> </span><span class="n">MPI_COMM_TASK</span><span class="p">,</span><span class="w"> </span><span class="n">mpi_err</span><span class="p">)</span>
<a id="ln-66" name="ln-66" href="#ln-66"></a><span class="w"> </span><span class="k">END DO </span><span class="n">end_of_dispatch1</span>
<a id="ln-67" name="ln-67" href="#ln-67"></a><span class="w"> </span><span class="k">else</span>
<a id="ln-68" name="ln-68" href="#ln-68"></a><span class="k"> </span><span class="n">fetchloop1</span><span class="p">:</span><span class="w"> </span><span class="k">do</span>
<a id="ln-69" name="ln-69" href="#ln-69"></a><span class="k"> CALL </span><span class="n">MPI_SEND</span><span class="p">(</span><span class="n">myid</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">MPI_INTEGER</span><span class="p">,</span><span class="w"> </span><span class="n">master</span><span class="p">,</span><span class="w"> </span><span class="n">tag</span><span class="p">,</span><span class="w"> </span><span class="n">MPI_COMM_TASK</span><span class="p">,</span><span class="w"> </span><span class="n">mpi_err</span><span class="p">)</span>
<a id="ln-70" name="ln-70" href="#ln-70"></a><span class="w"> </span><span class="k">CALL </span><span class="n">MPI_RECV</span><span class="p">(</span><span class="n">fread</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">MPI_INTEGER8</span><span class="p">,</span><span class="w"> </span><span class="n">master</span><span class="p">,</span><span class="w"> </span><span class="n">tag</span><span class="p">,</span><span class="w"> </span><span class="n">MPI_COMM_TASK</span><span class="p">,</span><span class="w"> </span><span class="n">mpi_status</span><span class="p">,</span><span class="w"> </span><span class="n">mpi_err</span><span class="p">)</span>
<a id="ln-71" name="ln-71" href="#ln-71"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">fread</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="k">exit</span>
<a id="ln-72" name="ln-72" href="#ln-72"></a><span class="k"> </span><span class="n">nprogress</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">nprogress</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span>
<a id="ln-73" name="ln-73" href="#ln-73"></a><span class="w"> </span><span class="k">CALL </span><span class="n">READ_FILE</span><span class="p">(</span><span class="n">fread</span><span class="p">)</span>
<a id="ln-74" name="ln-74" href="#ln-74"></a><span class="w"> </span><span class="k">CALL </span><span class="n">m_terms_calculate_pass1</span><span class="p">(</span><span class="n">fread</span><span class="p">)</span>
<a id="ln-75" name="ln-75" href="#ln-75"></a><span class="w"> </span><span class="k">end do </span><span class="n">fetchloop1</span>
<a id="ln-76" name="ln-76" href="#ln-76"></a><span class="w"> </span><span class="k">end if</span>
<a id="ln-77" name="ln-77" href="#ln-77"></a><span class="k"> CALL </span><span class="n">MPI_BCAST</span><span class="p">(</span><span class="n">countnum</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">MPI_INTEGER8</span><span class="p">,</span><span class="w"> </span><span class="n">master</span><span class="p">,</span><span class="w"> </span><span class="n">MPI_COMM_TASK</span><span class="p">,</span><span class="w"> </span><span class="n">mpi_err</span><span class="p">)</span>
<a id="ln-78" name="ln-78" href="#ln-78"></a><span class="w"> </span><span class="k">end if</span>
<a id="ln-79" name="ln-79" href="#ln-79"></a>
<a id="ln-80" name="ln-80" href="#ln-80"></a><span class="k"> CALL </span><span class="n">m_terms_average_pass1</span><span class="p">(</span><span class="n">countnum</span><span class="p">)</span>
<a id="ln-81" name="ln-81" href="#ln-81"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">iammaster</span><span class="p">)</span><span class="w"> </span><span class="k">write</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="o">*</span><span class="p">)</span><span class="w"> </span><span class="s1">&#39;1st loop finished&#39;</span>
<a id="ln-82" name="ln-82" href="#ln-82"></a>
<a id="ln-83" name="ln-83" href="#ln-83"></a><span class="w"> </span><span class="c">! PASS 2</span>
<a id="ln-84" name="ln-84" href="#ln-84"></a><span class="w"> </span><span class="n">optional_pass2</span><span class="p">:</span><span class="w"> </span><span class="k">IF</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="n">pass2_required</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="k">THEN</span>
<a id="ln-85" name="ln-85" href="#ln-85"></a><span class="k"> </span><span class="n">ipass</span><span class="o">=</span><span class="mi">2</span>
<a id="ln-86" name="ln-86" href="#ln-86"></a><span class="w"> </span><span class="n">nprogress</span><span class="o">=</span><span class="mi">0</span>
<a id="ln-87" name="ln-87" href="#ln-87"></a>
<a id="ln-88" name="ln-88" href="#ln-88"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">numprocs</span><span class="p">.</span><span class="n">eq</span><span class="p">.</span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="k">then</span>
<a id="ln-89" name="ln-89" href="#ln-89"></a><span class="k"> </span><span class="n">secondloop_serial</span><span class="p">:</span><span class="w"> </span><span class="k">DO </span><span class="n">fread</span><span class="o">=</span><span class="n">startnum</span><span class="p">,</span><span class="n">endnum</span><span class="p">,</span><span class="n">skipnum</span>
<a id="ln-90" name="ln-90" href="#ln-90"></a><span class="w"> </span><span class="k">IF</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="n">to_omit</span><span class="p">(</span><span class="n">fread</span><span class="p">)</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="k">THEN</span>
<a id="ln-91" name="ln-91" href="#ln-91"></a><span class="k"> CALL </span><span class="n">PRINT_SKIP_LOG</span><span class="p">(</span><span class="n">fread</span><span class="p">)</span>
<a id="ln-92" name="ln-92" href="#ln-92"></a><span class="w"> </span><span class="k">ELSE</span>
<a id="ln-93" name="ln-93" href="#ln-93"></a><span class="k"> </span><span class="n">nprogress</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">nprogress</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span>
<a id="ln-94" name="ln-94" href="#ln-94"></a><span class="w"> </span><span class="k">CALL </span><span class="n">READ_FILE</span><span class="p">(</span><span class="n">fread</span><span class="p">)</span>
<a id="ln-95" name="ln-95" href="#ln-95"></a><span class="w"> </span><span class="k">CALL </span><span class="n">m_terms_calculate_pass2</span><span class="p">(</span><span class="n">fread</span><span class="p">)</span>
<a id="ln-96" name="ln-96" href="#ln-96"></a><span class="w"> </span><span class="k">END IF</span>
<a id="ln-97" name="ln-97" href="#ln-97"></a><span class="k"> END DO </span><span class="n">secondloop_serial</span>
<a id="ln-98" name="ln-98" href="#ln-98"></a><span class="w"> </span><span class="k">else</span>
<a id="ln-99" name="ln-99" href="#ln-99"></a><span class="k"> </span><span class="n">tag</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">2</span>
<a id="ln-100" name="ln-100" href="#ln-100"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">iammaster</span><span class="p">)</span><span class="w"> </span><span class="k">then</span>
<a id="ln-101" name="ln-101" href="#ln-101"></a><span class="k"> </span><span class="n">dispatchloop2</span><span class="p">:</span><span class="w"> </span><span class="k">DO </span><span class="n">fread</span><span class="o">=</span><span class="n">startnum</span><span class="p">,</span><span class="n">endnum</span><span class="p">,</span><span class="n">skipnum</span>
<a id="ln-102" name="ln-102" href="#ln-102"></a><span class="w"> </span><span class="k">IF</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="n">to_omit</span><span class="p">(</span><span class="n">fread</span><span class="p">)</span><span class="w"> </span><span class="p">)</span><span class="w"> </span><span class="k">THEN</span>
<a id="ln-103" name="ln-103" href="#ln-103"></a><span class="k"> CALL </span><span class="n">PRINT_SKIP_LOG</span><span class="p">(</span><span class="n">fread</span><span class="p">)</span>
<a id="ln-104" name="ln-104" href="#ln-104"></a><span class="w"> </span><span class="k">ELSE</span>
<a id="ln-105" name="ln-105" href="#ln-105"></a><span class="k"> CALL </span><span class="n">MPI_RECV</span><span class="p">(</span><span class="n">id_to</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">MPI_INTEGER</span><span class="p">,</span><span class="w"> </span><span class="n">MPI_ANY_SOURCE</span><span class="p">,</span><span class="w"> </span><span class="n">tag</span><span class="p">,</span><span class="w"> </span><span class="n">MPI_COMM_TASK</span><span class="p">,</span><span class="w"> </span><span class="n">mpi_status</span><span class="p">,</span><span class="w"> </span><span class="n">mpi_err</span><span class="p">)</span>
<a id="ln-106" name="ln-106" href="#ln-106"></a><span class="w"> </span><span class="k">CALL </span><span class="n">MPI_SEND</span><span class="p">(</span><span class="n">fread</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">MPI_INTEGER8</span><span class="p">,</span><span class="w"> </span><span class="n">id_to</span><span class="p">,</span><span class="w"> </span><span class="n">tag</span><span class="p">,</span><span class="w"> </span><span class="n">MPI_COMM_TASK</span><span class="p">,</span><span class="w"> </span><span class="n">mpi_err</span><span class="p">)</span>
<a id="ln-107" name="ln-107" href="#ln-107"></a><span class="w"> </span><span class="k">ENDIF</span>
<a id="ln-108" name="ln-108" href="#ln-108"></a><span class="k"> END DO </span><span class="n">dispatchloop2</span>
<a id="ln-109" name="ln-109" href="#ln-109"></a>
<a id="ln-110" name="ln-110" href="#ln-110"></a><span class="w"> </span><span class="n">end_of_dispatch2</span><span class="p">:</span><span class="w"> </span><span class="k">DO </span><span class="n">i</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">numprocs</span><span class="o">-</span><span class="mi">1</span>
<a id="ln-111" name="ln-111" href="#ln-111"></a><span class="w"> </span><span class="k">CALL </span><span class="n">MPI_RECV</span><span class="p">(</span><span class="n">id_to</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">MPI_INTEGER</span><span class="p">,</span><span class="w"> </span><span class="n">MPI_ANY_SOURCE</span><span class="p">,</span><span class="w"> </span><span class="n">tag</span><span class="p">,</span><span class="w"> </span><span class="n">MPI_COMM_TASK</span><span class="p">,</span><span class="w"> </span><span class="n">mpi_status</span><span class="p">,</span><span class="w"> </span><span class="n">mpi_err</span><span class="p">)</span>
<a id="ln-112" name="ln-112" href="#ln-112"></a><span class="w"> </span><span class="k">CALL </span><span class="n">MPI_SEND</span><span class="p">(</span><span class="n">eofread</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">MPI_INTEGER8</span><span class="p">,</span><span class="w"> </span><span class="n">id_to</span><span class="p">,</span><span class="w"> </span><span class="n">tag</span><span class="p">,</span><span class="w"> </span><span class="n">MPI_COMM_TASK</span><span class="p">,</span><span class="w"> </span><span class="n">mpi_err</span><span class="p">)</span>
<a id="ln-113" name="ln-113" href="#ln-113"></a><span class="w"> </span><span class="k">END DO </span><span class="n">end_of_dispatch2</span>
<a id="ln-114" name="ln-114" href="#ln-114"></a><span class="w"> </span><span class="k">else</span>
<a id="ln-115" name="ln-115" href="#ln-115"></a><span class="k"> </span><span class="n">fetchloop2</span><span class="p">:</span><span class="w"> </span><span class="k">do</span>
<a id="ln-116" name="ln-116" href="#ln-116"></a><span class="k"> CALL </span><span class="n">MPI_SEND</span><span class="p">(</span><span class="n">myid</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">MPI_INTEGER</span><span class="p">,</span><span class="w"> </span><span class="n">master</span><span class="p">,</span><span class="w"> </span><span class="n">tag</span><span class="p">,</span><span class="w"> </span><span class="n">MPI_COMM_TASK</span><span class="p">,</span><span class="w"> </span><span class="n">mpi_err</span><span class="p">)</span>
<a id="ln-117" name="ln-117" href="#ln-117"></a><span class="w"> </span><span class="k">CALL </span><span class="n">MPI_RECV</span><span class="p">(</span><span class="n">fread</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">MPI_INTEGER8</span><span class="p">,</span><span class="w"> </span><span class="n">master</span><span class="p">,</span><span class="w"> </span><span class="n">tag</span><span class="p">,</span><span class="w"> </span><span class="n">MPI_COMM_TASK</span><span class="p">,</span><span class="w"> </span><span class="n">mpi_status</span><span class="p">,</span><span class="w"> </span><span class="n">mpi_err</span><span class="p">)</span>
<a id="ln-118" name="ln-118" href="#ln-118"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">fread</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="k">exit</span>
<a id="ln-119" name="ln-119" href="#ln-119"></a><span class="k"> </span><span class="n">nprogress</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">nprogress</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span>
<a id="ln-120" name="ln-120" href="#ln-120"></a><span class="w"> </span><span class="k">CALL </span><span class="n">READ_FILE</span><span class="p">(</span><span class="n">fread</span><span class="p">)</span>
<a id="ln-121" name="ln-121" href="#ln-121"></a><span class="w"> </span><span class="k">CALL </span><span class="n">m_terms_calculate_pass2</span><span class="p">(</span><span class="n">fread</span><span class="p">)</span>
<a id="ln-122" name="ln-122" href="#ln-122"></a><span class="w"> </span><span class="k">end do </span><span class="n">fetchloop2</span>
<a id="ln-123" name="ln-123" href="#ln-123"></a><span class="w"> </span><span class="k">end if</span>
<a id="ln-124" name="ln-124" href="#ln-124"></a><span class="k"> end if</span>
<a id="ln-125" name="ln-125" href="#ln-125"></a>
<a id="ln-126" name="ln-126" href="#ln-126"></a><span class="k"> CALL </span><span class="n">m_terms_average_pass2</span><span class="p">(</span><span class="n">countnum</span><span class="p">)</span>
<a id="ln-127" name="ln-127" href="#ln-127"></a><span class="w"> </span><span class="k">ENDIF </span><span class="n">optional_pass2</span>
<a id="ln-128" name="ln-128" href="#ln-128"></a>
<a id="ln-129" name="ln-129" href="#ln-129"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">iammaster</span><span class="p">)</span><span class="w"> </span><span class="k">then</span>
<a id="ln-130" name="ln-130" href="#ln-130"></a><span class="k"> CALL </span><span class="n">m_terms_write_result</span>
<a id="ln-131" name="ln-131" href="#ln-131"></a><span class="w"> </span><span class="k">WRITE</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="o">*</span><span class="p">)</span><span class="w"> </span><span class="s1">&#39; Avergaing RAW data is FINISHED&#39;</span>
<a id="ln-132" name="ln-132" href="#ln-132"></a><span class="w"> </span><span class="k">WRITE</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="o">*</span><span class="p">)</span><span class="w"> </span><span class="s1">&#39;qEdge_X.dat is generated&#39;</span>
<a id="ln-133" name="ln-133" href="#ln-133"></a><span class="w"> </span><span class="k">end if</span>
<a id="ln-134" name="ln-134" href="#ln-134"></a>
<a id="ln-135" name="ln-135" href="#ln-135"></a><span class="k"> CALL </span><span class="n">DEALLOCATES_CLOSE</span>
<a id="ln-136" name="ln-136" href="#ln-136"></a>
<a id="ln-137" name="ln-137" href="#ln-137"></a><span class="w"> </span><span class="k">END SUBROUTINE </span><span class="n">main</span>
<a id="ln-138" name="ln-138" href="#ln-138"></a>
<a id="ln-139" name="ln-139" href="#ln-139"></a><span class="w"> </span><span class="k">SUBROUTINE </span><span class="n">PRINT_SKIP_LOG</span><span class="p">(</span><span class="n">fread</span><span class="p">)</span>
<a id="ln-140" name="ln-140" href="#ln-140"></a><span class="w"> </span><span class="kt">INTEGER</span><span class="p">,</span><span class="w"> </span><span class="k">INTENT</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span><span class="w"> </span><span class="kd">::</span><span class="w"> </span><span class="n">fread</span>
<a id="ln-141" name="ln-141" href="#ln-141"></a><span class="w"> </span><span class="kt">INTEGER</span><span class="w"> </span><span class="kd">::</span><span class="w"> </span><span class="n">idx</span>
<a id="ln-142" name="ln-142" href="#ln-142"></a>
<a id="ln-143" name="ln-143" href="#ln-143"></a><span class="w"> </span><span class="k">WRITE</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="s1">&#39;(a47,i7,a4,i5,a3,i5)&#39;</span><span class="p">)</span><span class="w"> </span><span class="p">&amp;</span>
<a id="ln-144" name="ln-144" href="#ln-144"></a><span class="w"> </span><span class="s1">&#39; Current fullsavenum = &#39;</span><span class="p">,</span><span class="w"> </span><span class="n">fread</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39; || &#39;</span><span class="p">,</span><span class="w"> </span><span class="p">(</span><span class="n">fread</span><span class="o">-</span><span class="n">startnum</span><span class="o">+</span><span class="mi">1</span><span class="p">),</span><span class="w"> </span><span class="s1">&#39; / &#39;</span><span class="p">,</span><span class="w"> </span><span class="p">(</span><span class="n">endnum</span><span class="o">-</span><span class="n">startnum</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span>
<a id="ln-145" name="ln-145" href="#ln-145"></a>
<a id="ln-146" name="ln-146" href="#ln-146"></a><span class="w"> </span><span class="k">DO </span><span class="n">idx</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">omitnum</span>
<a id="ln-147" name="ln-147" href="#ln-147"></a><span class="w"> </span><span class="k">IF</span><span class="w"> </span><span class="p">(</span><span class="n">fread</span><span class="p">.</span><span class="n">ge</span><span class="p">.</span><span class="n">omit_t</span><span class="p">(</span><span class="n">idx</span><span class="p">,</span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="p">.</span><span class="nb">and</span><span class="p">.</span><span class="w"> </span><span class="n">fread</span><span class="p">.</span><span class="n">le</span><span class="p">.</span><span class="n">omit_t</span><span class="p">(</span><span class="n">idx</span><span class="p">,</span><span class="mi">2</span><span class="p">))</span><span class="w"> </span><span class="k">THEN</span>
<a id="ln-148" name="ln-148" href="#ln-148"></a><span class="k"> WRITE</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="s1">&#39;(a12,i6,a20,i6)&#39;</span><span class="p">)</span><span class="w"> </span><span class="p">&amp;</span>
<a id="ln-149" name="ln-149" href="#ln-149"></a><span class="w"> </span><span class="s1">&#39; Skip. &#39;</span><span class="p">,</span><span class="w"> </span><span class="n">omit_t</span><span class="p">(</span><span class="n">idx</span><span class="p">,</span><span class="mi">1</span><span class="p">),</span><span class="w"> </span><span class="s1">&#39; &lt;= fullsavenum &lt;= &#39;</span><span class="p">,</span><span class="w"> </span><span class="n">omit_t</span><span class="p">(</span><span class="n">idx</span><span class="p">,</span><span class="mi">2</span><span class="p">)</span>
<a id="ln-150" name="ln-150" href="#ln-150"></a><span class="w"> </span><span class="k">EXIT</span>
<a id="ln-151" name="ln-151" href="#ln-151"></a><span class="k"> END IF</span>
<a id="ln-152" name="ln-152" href="#ln-152"></a><span class="k"> END DO</span>
<a id="ln-153" name="ln-153" href="#ln-153"></a><span class="k"> END SUBROUTINE </span><span class="n">PRINT_SKIP_LOG</span>
<a id="ln-154" name="ln-154" href="#ln-154"></a>
<a id="ln-155" name="ln-155" href="#ln-155"></a><span class="c">!========================================================================================</span>
<a id="ln-156" name="ln-156" href="#ln-156"></a><span class="c">! End of main routine</span>
<a id="ln-157" name="ln-157" href="#ln-157"></a><span class="c">!========================================================================================</span>
<a id="ln-158" name="ln-158" href="#ln-158"></a>
<a id="ln-159" name="ln-159" href="#ln-159"></a><span class="w"> </span><span class="k">SUBROUTINE </span><span class="n">PRINT_BANNER</span>
<a id="ln-160" name="ln-160" href="#ln-160"></a><span class="w"> </span><span class="k">WRITE</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="o">*</span><span class="p">)</span><span class="w"> </span><span class="s1">&#39; This program, x-edge-cold-bc-5-hybrid, is written by D. Kim, 2018&#39;</span>
<a id="ln-161" name="ln-161" href="#ln-161"></a><span class="w"> </span><span class="k">WRITE</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="o">*</span><span class="p">)</span><span class="w"> </span><span class="s1">&#39; It is to study the statistics of the flame parameters at the leading edge&#39;</span>
<a id="ln-162" name="ln-162" href="#ln-162"></a><span class="w"> </span><span class="k">WRITE</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="o">*</span><span class="p">)</span><span class="w"> </span><span class="s1">&#39; in turbulent premixed flames.&#39;</span>
<a id="ln-163" name="ln-163" href="#ln-163"></a><span class="w"> </span><span class="k">WRITE</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="s1">&#39;(a40,i5,a11,i5,a1)&#39;</span><span class="p">)</span><span class="w"> </span><span class="s1">&#39; Postprocess will be done from &quot;FORT.&#39;</span><span class="p">,</span><span class="n">startnum</span><span class="p">,</span><span class="s1">&#39;&quot; to &quot;FORT.&#39;</span><span class="p">,</span><span class="n">endnum</span><span class="p">,</span><span class="s1">&#39;&quot;&#39;</span>
<a id="ln-164" name="ln-164" href="#ln-164"></a><span class="w"> </span><span class="k">END SUBROUTINE </span><span class="n">PRINT_BANNER</span>
<a id="ln-165" name="ln-165" href="#ln-165"></a>
<a id="ln-166" name="ln-166" href="#ln-166"></a>
<a id="ln-167" name="ln-167" href="#ln-167"></a><span class="w"> </span><span class="k">SUBROUTINE </span><span class="n">READ_FILE</span><span class="p">(</span><span class="n">num</span><span class="p">)</span>
<a id="ln-168" name="ln-168" href="#ln-168"></a><span class="w"> </span><span class="kt">INTEGER</span><span class="p">,</span><span class="w"> </span><span class="k">INTENT</span><span class="p">(</span><span class="n">IN</span><span class="p">)</span><span class="w"> </span><span class="kd">::</span><span class="w"> </span><span class="n">num</span>
<a id="ln-169" name="ln-169" href="#ln-169"></a><span class="w"> </span><span class="kt">real</span><span class="p">(</span><span class="n">real64</span><span class="p">),</span><span class="w"> </span><span class="k">DIMENSION</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="kd">::</span><span class="w"> </span><span class="n">tmpr</span>
<a id="ln-170" name="ln-170" href="#ln-170"></a><span class="w"> </span><span class="kt">INTEGER</span><span class="w"> </span><span class="kd">::</span><span class="w"> </span><span class="n">nx</span><span class="p">,</span><span class="w"> </span><span class="n">ny</span><span class="p">,</span><span class="w"> </span><span class="n">nz</span>
<a id="ln-171" name="ln-171" href="#ln-171"></a><span class="w"> </span><span class="kt">real</span><span class="p">(</span><span class="n">real64</span><span class="p">)</span><span class="w"> </span><span class="kd">::</span><span class="w"> </span><span class="n">tmp1</span><span class="p">,</span><span class="n">tmp2</span>
<a id="ln-172" name="ln-172" href="#ln-172"></a><span class="w"> </span><span class="kt">real</span><span class="p">(</span><span class="n">real64</span><span class="p">)</span><span class="w"> </span><span class="kd">::</span><span class="w"> </span><span class="n">dt</span><span class="p">,</span><span class="n">dummyu</span>
<a id="ln-173" name="ln-173" href="#ln-173"></a><span class="w"> </span><span class="kt">INTEGER</span><span class="w"> </span><span class="kd">::</span><span class="w"> </span><span class="n">ncyc</span>
<a id="ln-174" name="ln-174" href="#ln-174"></a><span class="w"> </span><span class="kt">INTEGER</span><span class="w"> </span><span class="kd">::</span><span class="w"> </span><span class="n">u_num</span>
<a id="ln-175" name="ln-175" href="#ln-175"></a><span class="w"> </span><span class="kt">CHARACTER</span><span class="p">(</span><span class="nb">len</span><span class="o">=</span><span class="mi">64</span><span class="p">)</span><span class="w"> </span><span class="kd">::</span><span class="w"> </span><span class="n">filename</span>
<a id="ln-176" name="ln-176" href="#ln-176"></a>
<a id="ln-177" name="ln-177" href="#ln-177"></a><span class="w"> </span><span class="kt">character</span><span class="p">(</span><span class="nb">len</span><span class="o">=</span><span class="mi">30</span><span class="p">)</span><span class="w"> </span><span class="kd">::</span><span class="w"> </span><span class="n">date</span>
<a id="ln-178" name="ln-178" href="#ln-178"></a><span class="w"> </span><span class="kt">integer</span><span class="w"> </span><span class="kd">::</span><span class="w"> </span><span class="n">date_values</span><span class="p">(</span><span class="mi">8</span><span class="p">)</span>
<a id="ln-179" name="ln-179" href="#ln-179"></a>
<a id="ln-180" name="ln-180" href="#ln-180"></a><span class="w"> </span><span class="k">WRITE</span><span class="p">(</span><span class="n">filename</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;(A,I0)&#39;</span><span class="p">)</span><span class="w"> </span><span class="s1">&#39;fort.&#39;</span><span class="p">,</span><span class="w"> </span><span class="n">num</span>
<a id="ln-181" name="ln-181" href="#ln-181"></a><span class="w"> </span><span class="k">OPEN</span><span class="p">(</span><span class="n">newunit</span><span class="o">=</span><span class="n">u_num</span><span class="p">,</span><span class="w"> </span><span class="k">FILE</span><span class="o">=</span><span class="nb">trim</span><span class="p">(</span><span class="n">filename</span><span class="p">),</span><span class="w"> </span><span class="n">FORM</span><span class="o">=</span><span class="s1">&#39;unformatted&#39;</span><span class="p">,</span><span class="w"> </span><span class="n">STATUS</span><span class="o">=</span><span class="s1">&#39;unknown&#39;</span><span class="p">)</span>
<a id="ln-182" name="ln-182" href="#ln-182"></a>
<a id="ln-183" name="ln-183" href="#ln-183"></a><span class="w"> </span><span class="k">READ</span><span class="w"> </span><span class="p">(</span><span class="n">u_num</span><span class="p">)</span><span class="w"> </span><span class="n">tnow</span><span class="p">,</span><span class="n">nx</span><span class="p">,</span><span class="n">ny</span><span class="p">,</span><span class="n">nz</span><span class="p">,</span><span class="n">tmp1</span><span class="p">,</span><span class="n">tmp2</span>
<a id="ln-184" name="ln-184" href="#ln-184"></a>
<a id="ln-185" name="ln-185" href="#ln-185"></a><span class="w"> </span><span class="k">IF</span><span class="w"> </span><span class="p">((</span><span class="n">nx</span><span class="w"> </span><span class="p">.</span><span class="n">ne</span><span class="p">.</span><span class="w"> </span><span class="n">nxp</span><span class="p">)</span><span class="w"> </span><span class="p">.</span><span class="nb">or</span><span class="p">.</span><span class="w"> </span><span class="p">(</span><span class="n">ny</span><span class="w"> </span><span class="p">.</span><span class="n">ne</span><span class="p">.</span><span class="w"> </span><span class="n">nyp</span><span class="p">)</span><span class="w"> </span><span class="p">.</span><span class="nb">or</span><span class="p">.</span><span class="w"> </span><span class="p">(</span><span class="n">nz</span><span class="w"> </span><span class="p">.</span><span class="n">ne</span><span class="p">.</span><span class="w"> </span><span class="n">nzp</span><span class="p">))</span><span class="w"> </span><span class="k">THEN</span>
<a id="ln-186" name="ln-186" href="#ln-186"></a><span class="k"> WRITE</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="o">*</span><span class="p">)</span><span class="w"> </span><span class="s2">&quot;Array dimension mismatch&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">nx</span><span class="p">,</span><span class="w"> </span><span class="n">ny</span><span class="p">,</span><span class="w"> </span><span class="n">nz</span><span class="p">,</span><span class="w"> </span><span class="s2">&quot; != &quot;</span><span class="p">,</span><span class="w"> </span><span class="n">nxp</span><span class="p">,</span><span class="w"> </span><span class="n">nyp</span><span class="p">,</span><span class="w"> </span><span class="n">nzp</span>
<a id="ln-187" name="ln-187" href="#ln-187"></a><span class="w"> </span><span class="k">STOP</span><span class="w"> </span><span class="o">-</span><span class="mi">1</span>
<a id="ln-188" name="ln-188" href="#ln-188"></a><span class="w"> </span><span class="k">ENDIF</span>
<a id="ln-189" name="ln-189" href="#ln-189"></a>
<a id="ln-190" name="ln-190" href="#ln-190"></a><span class="k"> READ</span><span class="w"> </span><span class="p">(</span><span class="n">u_num</span><span class="p">)</span><span class="w"> </span><span class="n">ncyc</span><span class="p">,</span><span class="n">dt</span><span class="p">,</span><span class="n">dummyu</span>
<a id="ln-191" name="ln-191" href="#ln-191"></a><span class="w"> </span><span class="k">READ</span><span class="w"> </span><span class="p">(</span><span class="n">u_num</span><span class="p">)</span><span class="w"> </span><span class="n">tmpr</span><span class="p">(</span><span class="mi">1</span><span class="p">:</span><span class="mi">2</span><span class="p">)</span>
<a id="ln-192" name="ln-192" href="#ln-192"></a><span class="w"> </span><span class="k">READ</span><span class="w"> </span><span class="p">(</span><span class="n">u_num</span><span class="p">)</span><span class="w"> </span><span class="n">tmpr</span><span class="p">(</span><span class="mi">1</span><span class="p">:</span><span class="mi">2</span><span class="p">)</span>
<a id="ln-193" name="ln-193" href="#ln-193"></a><span class="w"> </span><span class="k">READ</span><span class="w"> </span><span class="p">(</span><span class="n">u_num</span><span class="p">)</span><span class="w"> </span><span class="n">tmpr</span><span class="p">(</span><span class="mi">1</span><span class="p">:</span><span class="mi">2</span><span class="p">)</span>
<a id="ln-194" name="ln-194" href="#ln-194"></a>
<a id="ln-195" name="ln-195" href="#ln-195"></a><span class="w"> </span><span class="n">num_</span><span class="o">=</span><span class="n">num</span>
<a id="ln-196" name="ln-196" href="#ln-196"></a>
<a id="ln-197" name="ln-197" href="#ln-197"></a><span class="w"> </span><span class="k">IF</span><span class="p">(</span><span class="n">num</span><span class="p">.</span><span class="n">le</span><span class="p">.</span><span class="n">shiftnum</span><span class="p">)</span><span class="w"> </span><span class="k">THEN</span>
<a id="ln-198" name="ln-198" href="#ln-198"></a><span class="w"> </span><span class="c">! WRITE(*,*) &#39; with an old fort data from Nueman-0X&#39;</span>
<a id="ln-199" name="ln-199" href="#ln-199"></a><span class="w"> </span><span class="k">READ</span><span class="w"> </span><span class="p">(</span><span class="n">u_num</span><span class="p">)</span><span class="w"> </span><span class="n">u</span><span class="p">,</span><span class="n">v</span><span class="p">,</span><span class="n">w</span><span class="p">,</span><span class="n">old_scalar</span>
<a id="ln-200" name="ln-200" href="#ln-200"></a><span class="w"> </span><span class="n">y</span><span class="p">(:,:,:)</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">old_scalar</span><span class="p">(</span><span class="mi">2</span><span class="p">,:,:,:)</span>
<a id="ln-201" name="ln-201" href="#ln-201"></a><span class="w"> </span><span class="k">ELSE</span>
<a id="ln-202" name="ln-202" href="#ln-202"></a><span class="w"> </span><span class="c">! WRITE(*,*) &#39; with a new fort data from Comb-Cluster&#39;</span>
<a id="ln-203" name="ln-203" href="#ln-203"></a><span class="w"> </span><span class="k">READ</span><span class="w"> </span><span class="p">(</span><span class="n">u_num</span><span class="p">)</span><span class="w"> </span><span class="n">u</span><span class="p">,</span><span class="n">v</span><span class="p">,</span><span class="n">w</span><span class="p">,</span><span class="n">new_scalar</span>
<a id="ln-204" name="ln-204" href="#ln-204"></a><span class="w"> </span><span class="n">u</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">u</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">dummyu</span>
<a id="ln-205" name="ln-205" href="#ln-205"></a><span class="w"> </span><span class="n">y</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">new_scalar</span><span class="p">(:,:,:,</span><span class="mi">2</span><span class="p">)</span>
<a id="ln-206" name="ln-206" href="#ln-206"></a><span class="w"> </span><span class="k">ENDIF</span>
<a id="ln-207" name="ln-207" href="#ln-207"></a>
<a id="ln-208" name="ln-208" href="#ln-208"></a><span class="k"> CLOSE</span><span class="w"> </span><span class="p">(</span><span class="n">u_num</span><span class="p">)</span>
<a id="ln-209" name="ln-209" href="#ln-209"></a>
<a id="ln-210" name="ln-210" href="#ln-210"></a><span class="w"> </span><span class="k">call </span><span class="nb">date_and_time</span><span class="p">(</span><span class="n">values</span><span class="o">=</span><span class="n">date_values</span><span class="p">)</span>
<a id="ln-211" name="ln-211" href="#ln-211"></a><span class="w"> </span><span class="k">write</span><span class="p">(</span><span class="n">date</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;(I4.4,&quot;-&quot;,I2.2,&quot;-&quot;,I2.2,&quot; &quot;,I2.2,&quot;:&quot;,I2.2,&quot;:&quot;,I2.2)&#39;</span><span class="p">)</span><span class="w"> </span><span class="p">&amp;</span>
<a id="ln-212" name="ln-212" href="#ln-212"></a><span class="w"> </span><span class="n">date_values</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span><span class="w"> </span><span class="n">date_values</span><span class="p">(</span><span class="mi">2</span><span class="p">),</span><span class="w"> </span><span class="n">date_values</span><span class="p">(</span><span class="mi">3</span><span class="p">),</span><span class="w"> </span><span class="p">&amp;</span>
<a id="ln-213" name="ln-213" href="#ln-213"></a><span class="w"> </span><span class="n">date_values</span><span class="p">(</span><span class="mi">5</span><span class="p">),</span><span class="w"> </span><span class="n">date_values</span><span class="p">(</span><span class="mi">6</span><span class="p">),</span><span class="w"> </span><span class="n">date_values</span><span class="p">(</span><span class="mi">7</span><span class="p">)</span>
<a id="ln-214" name="ln-214" href="#ln-214"></a>
<a id="ln-215" name="ln-215" href="#ln-215"></a><span class="w"> </span><span class="k">WRITE</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="s1">&#39;(a,a,i2,a,i1,a,i4,a,i4,a,i4)&#39;</span><span class="p">)</span><span class="w"> </span><span class="p">&amp;</span>
<a id="ln-216" name="ln-216" href="#ln-216"></a><span class="w"> </span><span class="n">date</span><span class="p">,</span><span class="w"> </span><span class="s2">&quot;PID&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">myid</span><span class="p">,</span><span class="w"> </span><span class="s2">&quot;|PASS&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">ipass</span><span class="p">,</span><span class="w"> </span><span class="s2">&quot;|fort.&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">num</span><span class="p">,</span><span class="w"> </span><span class="p">&amp;</span>
<a id="ln-217" name="ln-217" href="#ln-217"></a><span class="w"> </span><span class="s2">&quot;|&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">nprogress</span><span class="p">,</span><span class="w"> </span><span class="s2">&quot;/&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">endnum</span><span class="o">-</span><span class="n">startnum</span><span class="o">+</span><span class="mi">1</span>
<a id="ln-218" name="ln-218" href="#ln-218"></a>
<a id="ln-219" name="ln-219" href="#ln-219"></a><span class="w"> </span><span class="k">END SUBROUTINE </span><span class="n">READ_FILE</span>
<a id="ln-220" name="ln-220" href="#ln-220"></a>
<a id="ln-221" name="ln-221" href="#ln-221"></a>
<a id="ln-222" name="ln-222" href="#ln-222"></a><span class="w"> </span><span class="k">SUBROUTINE </span><span class="n">ALLOCATE_ARRAYS</span>
<a id="ln-223" name="ln-223" href="#ln-223"></a>
<a id="ln-224" name="ln-224" href="#ln-224"></a><span class="w"> </span><span class="kt">INTEGER</span><span class="w"> </span><span class="kd">::</span><span class="w"> </span><span class="n">ierr</span>
<a id="ln-225" name="ln-225" href="#ln-225"></a>
<a id="ln-226" name="ln-226" href="#ln-226"></a><span class="w"> </span><span class="k">CALL </span><span class="n">m_arrays_init</span>
<a id="ln-227" name="ln-227" href="#ln-227"></a><span class="w"> </span><span class="k">CALL </span><span class="n">m_calculate_init</span>
<a id="ln-228" name="ln-228" href="#ln-228"></a><span class="w"> </span><span class="k">CALL </span><span class="n">m_terms_init</span>
<a id="ln-229" name="ln-229" href="#ln-229"></a>
<a id="ln-230" name="ln-230" href="#ln-230"></a><span class="w"> </span><span class="k">ALLOCATE</span><span class="p">(</span><span class="n">old_scalar</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="n">nxp</span><span class="p">,</span><span class="n">nyp</span><span class="p">,</span><span class="n">nzp</span><span class="p">),</span><span class="nb">STAT</span><span class="o">=</span><span class="n">ierr</span><span class="p">)</span>
<a id="ln-231" name="ln-231" href="#ln-231"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ierr</span><span class="w"> </span><span class="o">/=</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="k">then</span>
<a id="ln-232" name="ln-232" href="#ln-232"></a><span class="k"> write</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="o">*</span><span class="p">)</span><span class="w"> </span><span class="s2">&quot;Error: allocation of old_scalar failed on process&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">myid</span>
<a id="ln-233" name="ln-233" href="#ln-233"></a><span class="w"> </span><span class="k">call </span><span class="n">MPI_ABORT</span><span class="p">(</span><span class="n">MPI_COMM_TASK</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">mpi_err</span><span class="p">)</span>
<a id="ln-234" name="ln-234" href="#ln-234"></a><span class="w"> </span><span class="k">end if</span>
<a id="ln-235" name="ln-235" href="#ln-235"></a><span class="k"> </span><span class="n">old_scalar</span><span class="o">=</span><span class="mf">0.</span><span class="w"> </span><span class="c">! Main variables</span>
<a id="ln-236" name="ln-236" href="#ln-236"></a>
<a id="ln-237" name="ln-237" href="#ln-237"></a><span class="w"> </span><span class="k">ALLOCATE</span><span class="p">(</span><span class="n">new_scalar</span><span class="p">(</span><span class="n">nxp</span><span class="p">,</span><span class="n">nyp</span><span class="p">,</span><span class="n">nzp</span><span class="p">,</span><span class="mi">2</span><span class="p">),</span><span class="nb">STAT</span><span class="o">=</span><span class="n">ierr</span><span class="p">)</span>
<a id="ln-238" name="ln-238" href="#ln-238"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">ierr</span><span class="w"> </span><span class="o">/=</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="k">then</span>
<a id="ln-239" name="ln-239" href="#ln-239"></a><span class="k"> write</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="o">*</span><span class="p">)</span><span class="w"> </span><span class="s2">&quot;Error: allocation of new_scalar failed on process&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">myid</span>
<a id="ln-240" name="ln-240" href="#ln-240"></a><span class="w"> </span><span class="k">call </span><span class="n">MPI_ABORT</span><span class="p">(</span><span class="n">MPI_COMM_TASK</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">mpi_err</span><span class="p">)</span>
<a id="ln-241" name="ln-241" href="#ln-241"></a><span class="w"> </span><span class="k">end if</span>
<a id="ln-242" name="ln-242" href="#ln-242"></a><span class="k"> </span><span class="n">new_scalar</span><span class="o">=</span><span class="mf">0.</span>
<a id="ln-243" name="ln-243" href="#ln-243"></a>
<a id="ln-244" name="ln-244" href="#ln-244"></a><span class="w"> </span><span class="k">WRITE</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="s1">&#39;(a6,i3,a8,i3,a8,i3)&#39;</span><span class="p">)</span><span class="w"> </span><span class="s1">&#39; NX = &#39;</span><span class="p">,</span><span class="n">nxp</span><span class="p">,</span><span class="s1">&#39; / NY = &#39;</span><span class="p">,</span><span class="n">nyp</span><span class="p">,</span><span class="s1">&#39; / NZ = &#39;</span><span class="p">,</span><span class="n">nzp</span>
<a id="ln-245" name="ln-245" href="#ln-245"></a><span class="w"> </span><span class="k">WRITE</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="o">*</span><span class="p">)</span><span class="w"> </span><span class="s1">&#39; Preparing memory space for COMPACT SCHEME&#39;</span>
<a id="ln-246" name="ln-246" href="#ln-246"></a><span class="w"> </span><span class="c">! CALL ludcmp(nxp,nyp,nzp,1,0,0) ! 1,1,0</span>
<a id="ln-247" name="ln-247" href="#ln-247"></a>
<a id="ln-248" name="ln-248" href="#ln-248"></a><span class="w"> </span><span class="k">WRITE</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="s1">&#39;(a22,i3,a3,i3,a4,i3)&#39;</span><span class="p">)</span><span class="w"> </span><span class="s1">&#39; Grid number range : &#39;</span><span class="p">,</span><span class="n">syp</span><span class="p">,</span><span class="s1">&#39; ~ &#39;</span><span class="p">,</span><span class="n">eyp</span><span class="p">,</span><span class="s1">&#39; of &#39;</span><span class="p">,</span><span class="n">nyp</span>
<a id="ln-249" name="ln-249" href="#ln-249"></a><span class="w"> </span><span class="k">WRITE</span><span class="p">(</span><span class="o">*</span><span class="p">,</span><span class="o">*</span><span class="p">)</span>
<a id="ln-250" name="ln-250" href="#ln-250"></a>
<a id="ln-251" name="ln-251" href="#ln-251"></a><span class="w"> </span><span class="k">END SUBROUTINE </span><span class="n">ALLOCATE_ARRAYS</span>
<a id="ln-252" name="ln-252" href="#ln-252"></a>
<a id="ln-253" name="ln-253" href="#ln-253"></a>
<a id="ln-254" name="ln-254" href="#ln-254"></a><span class="w"> </span><span class="k">SUBROUTINE </span><span class="n">DEALLOCATES_CLOSE</span>
<a id="ln-255" name="ln-255" href="#ln-255"></a>
<a id="ln-256" name="ln-256" href="#ln-256"></a><span class="w"> </span><span class="k">CALL </span><span class="n">m_arrays_finalize</span>
<a id="ln-257" name="ln-257" href="#ln-257"></a><span class="w"> </span><span class="k">CALL </span><span class="n">m_calculate_finalize</span>
<a id="ln-258" name="ln-258" href="#ln-258"></a><span class="w"> </span><span class="k">CALL </span><span class="n">m_terms_finalize</span>
<a id="ln-259" name="ln-259" href="#ln-259"></a>
<a id="ln-260" name="ln-260" href="#ln-260"></a><span class="w"> </span><span class="k">DEALLOCATE</span><span class="p">(</span><span class="n">old_scalar</span><span class="p">)</span>
<a id="ln-261" name="ln-261" href="#ln-261"></a><span class="w"> </span><span class="k">DEALLOCATE</span><span class="p">(</span><span class="n">new_scalar</span><span class="p">)</span>
<a id="ln-262" name="ln-262" href="#ln-262"></a>
<a id="ln-263" name="ln-263" href="#ln-263"></a><span class="w"> </span><span class="k">IF</span><span class="p">(</span><span class="n">omitnum</span><span class="p">.</span><span class="n">gt</span><span class="p">.</span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="k">DEALLOCATE</span><span class="p">(</span><span class="n">omit_t</span><span class="p">)</span>
<a id="ln-264" name="ln-264" href="#ln-264"></a>
<a id="ln-265" name="ln-265" href="#ln-265"></a><span class="w"> </span><span class="k">DEALLOCATE</span><span class="p">(</span><span class="n">file_dist</span><span class="p">)</span>
<a id="ln-266" name="ln-266" href="#ln-266"></a><span class="w"> </span><span class="k">DEALLOCATE</span><span class="p">(</span><span class="n">export_offset</span><span class="p">)</span>
<a id="ln-267" name="ln-267" href="#ln-267"></a>
<a id="ln-268" name="ln-268" href="#ln-268"></a><span class="w"> </span><span class="k">END SUBROUTINE </span><span class="n">DEALLOCATES_CLOSE</span>
<a id="ln-269" name="ln-269" href="#ln-269"></a>
<a id="ln-270" name="ln-270" href="#ln-270"></a><span class="w"> </span><span class="k">END MODULE </span><span class="n">post</span>
</pre></div>
</section>
</div>
</div>
<hr>
</div> <!-- /container -->
<footer>
<div class="container">
<div class="row justify-content-between">
<div class="col">
<p>
HPC DNS Post-Processing Fortran Core
was developed by Google DeepMind Team & Ignis<br> &copy; 2026
</p>
</div>
<div class="col">
<p class="text-end">
Documentation generated by
<a href="https://github.com/Fortran-FOSS-Programmers/ford">FORD</a>
</p>
</div>
</div>
<br>
</div> <!-- /container -->
</footer>
</body>
</html>