158 character(len=255) :: info
159 character(len=MPI_MAX_PROCESSOR_NAME) :: cpu_name(ig_ncpu)
164 call mpi_gather(cg_cpu_name,mpi_max_processor_name,mpi_character,cpu_name,mpi_max_processor_name,mpi_character,0,mpi_comm_world,ios)
166 write(info,
'(a)')
"error while gathering cpus' name"
167 call error_stop(info)
170 if (ig_myrank == 0)
then
172 open(unit=ig_lst_unit,file=trim(cg_prefix)//
".lst")
173 write(ig_lst_unit,
'(a)')
"**************************************************************************************************"
174 write(ig_lst_unit,
'(a)')
"*** ***"
175 write(ig_lst_unit,
'(a)')
"*** EFISPEC3D ***"
176 write(ig_lst_unit,
'(a)')
"*** (Elements FInis SPECtraux 3D) ***"
177 write(ig_lst_unit,
'(a)')
"*** ***"
178 write(ig_lst_unit,
'(a)')
"*** version 1.0 ***"
179 write(ig_lst_unit,
'(a)')
"*** ***"
180 write(ig_lst_unit,
'(a)')
"*** http://efispec.free.fr ***"
181 write(ig_lst_unit,
'(a)')
"*** ***"
182 write(ig_lst_unit,
'(a)')
"*** Developpers ***"
183 write(ig_lst_unit,
'(a)')
"*** --> Florent DE MARTIN ***"
184 write(ig_lst_unit,
'(a)')
"*** --> David MICHEA ***"
185 write(ig_lst_unit,
'(a)')
"*** --> Philippe THIERRY ***"
186 write(ig_lst_unit,
'(a)')
"*** ***"
187 write(ig_lst_unit,
'(a)')
"*** Copyright 2009 BRGM (French Geological Survey) ***"
188 write(ig_lst_unit,
'(a)')
"*** ***"
189 write(ig_lst_unit,
'(a)')
"**************************************************************************************************"
193 write(ig_lst_unit,
'("",/,a)')
"name of the cpus used for computation"
195 write(ig_lst_unit,
'(2a)')
" --> ",trim(adjustl(cpu_name(icpu)))
200 write(ig_lst_unit,
'("",/,a)')
"epsilon machine"
201 write(ig_lst_unit,
'(a,es15.7)')
" -->",epsilon_machine
205 write(ig_lst_unit,
'("",/,a)')
"smallest positive (non zero) number of the type real"
206 write(ig_lst_unit,
'(a,es15.7)')
" -->",tiny_real
210 if (lg_async_mpi_comm)
then
211 write(ig_lst_unit,
'("",/,a)')
"communication between cpus"
212 write(ig_lst_unit,
'(a)')
" --> asynchrone"
214 write(ig_lst_unit,
'("",/,a)')
"communication between cpus"
215 write(ig_lst_unit,
'(a)')
" --> synchrone"
220 write(ig_lst_unit,
'("",/,a,I0 )')
"spectral elements use Lagrange polynomial of order ",ig_lagrange_order
221 write(ig_lst_unit,
'( a,I0,a)')
" --> ",ig_ngll**3,
" GLL nodes per hexa"
225 if (.not.lg_visco)
then
226 write(ig_lst_unit,
'(" ",/,a)')
"rheology of simulation"
227 write(ig_lst_unit,
'(a)')
" --> elastic"
229 write(ig_lst_unit,
'(" ",/,a)')
"rheology of simulation"
230 write(ig_lst_unit,
'( a,I0,a)')
" --> viscoelastic using ",ig_nrelax,
" memory variables"
259 if (ig_myrank == 0)
then
261 if (rg_dt > tiny_real)
then
263 write(ig_lst_unit,
'("",/,a)')
"time domain information found in the file "//trim(cg_prefix)//
".cfg"
264 write(ig_lst_unit,
'(a,f10.6)')
"--> duration of simulation = ",rg_simu_total_time
265 write(ig_lst_unit,
'(a,i10)')
"--> number of time step = ",ig_ndt
266 write(ig_lst_unit,
'(a,es15.6)')
"--> size of time step =" ,rg_dt
267 write(ig_lst_unit,
'(a)')
"--> the stability of the simulation will be checked with the Courant-Friedrichs-Lewy condition (see below)."
275 write(ig_lst_unit,
'("",/,a)')
"size of time step not found in the file "//trim(cg_prefix)//
".cfg or inferior to TINY_REAL"
276 write(ig_lst_unit,
'(a)')
"--> the optimal size will be set by EFISPEC3D with respect to the Courant-Friedrichs-Lewy condition"
298 ,ig_receiver_saving_incr
302 if (ig_myrank == 0)
then
304 write(ig_lst_unit,
'(a)')
" "
306 if (ig_receiver_saving_incr < ig_ndt)
then
308 write(ig_lst_unit,
'(a,i0,a)' )
"receivers' time history saved every ",ig_receiver_saving_incr,
" time steps"
312 write(ig_lst_unit,
'(a)' )
"receivers' time history are not saved"
335 ,ig_snapshot_saving_incr&
336 ,lg_snapshot_displacement&
337 ,lg_snapshot_velocity&
338 ,lg_snapshot_acceleration&
339 ,ig_snapshot_volume_saving_incr&
340 ,lg_snapshot_volume_displacement&
341 ,lg_snapshot_volume_velocity&
342 ,lg_snapshot_volume_acceleration
346 if (ig_myrank == 0)
then
348 write(ig_lst_unit,
'(a)')
" "
350 if (ig_snapshot_saving_incr < ig_ndt)
then
351 write(ig_lst_unit,
'(a,i0,a)' )
"surface snapshot saved every ",ig_snapshot_saving_incr,
" time steps"
353 write(ig_lst_unit,
'(a)' )
"surface snapshot are not saved"
355 if (lg_snapshot_displacement)
then
356 write(ig_lst_unit,
'(a)')
" --> displacement snapshot are saved"
358 write(ig_lst_unit,
'(a)')
" --> displacement snapshot are not saved"
360 if (lg_snapshot_velocity)
then
361 write(ig_lst_unit,
'(a)')
" --> velocity snapshot are saved"
363 write(ig_lst_unit,
'(a)')
" --> velocity snapshot are not saved"
365 if (lg_snapshot_acceleration)
then
366 write(ig_lst_unit,
'(a)')
" --> acceleration snapshot are saved"
368 write(ig_lst_unit,
'(a)')
" --> acceleration snapshot are not saved"
371 write(ig_lst_unit,
'(a)')
" "
373 if (ig_snapshot_volume_saving_incr < ig_ndt)
then
374 write(ig_lst_unit,
'(a,i0,a)' )
"volume snapshot saved every ",ig_snapshot_volume_saving_incr,
" time steps"
376 write(ig_lst_unit,
'(a)' )
"volume snapshot are not saved"
378 if (lg_snapshot_volume_displacement)
then
379 write(ig_lst_unit,
'(a)')
" --> displacement snapshot are saved"
381 write(ig_lst_unit,
'(a)')
" --> displacement snapshot are not saved"
383 if (lg_snapshot_volume_velocity)
then
384 write(ig_lst_unit,
'(a)')
" --> velocity snapshot are saved"
386 write(ig_lst_unit,
'(a)')
" --> velocity snapshot are not saved"
388 if (lg_snapshot_volume_acceleration)
then
389 write(ig_lst_unit,
'(a)')
" --> acceleration snapshot are saved"
391 write(ig_lst_unit,
'(a)')
" --> acceleration snapshot are not saved"
415 real,
intent(in) :: dt
417 if (ig_myrank == 0)
then
419 write(ig_lst_unit,
'("",/,a,es15.6,a)')
"Courant–Friedrichs–Lewy (CFL) condition has been checked. Simulation's time step size equal to ",dt,
" honors the CFL condition."
445 real,
intent(in) :: dt
447 if (ig_myrank == 0)
then
449 write(ig_lst_unit,
'("",/,a,es15.6,a)')
"Courant–Friedrichs–Lewy (CFL) condition has been checked. Simulation's time step size has been modified to ",dt
450 write(ig_lst_unit,
'(a,f10.6)')
"--> duration of simulation = ",rg_simu_total_time
451 write(ig_lst_unit,
'(a,i10)')
"--> number of time step = ",ig_ndt
452 write(ig_lst_unit,
'(a,es15.6)')
"--> size of time step =" ,rg_dt
subroutine, public write_cfl_condition_ok(dt)
subroutine that writes valid CFL condition in the listing file (*.lst).
subroutine, public write_header()
subroutine that writes the header of the listing file (*.lst).
This module defines all global variables of EFISPEC3D. Scalar variables are initialized directly in t...
subroutine, public write_temporal_domain_info()
subroutine that writes temporal information about the simulation in the listing file (*...
subroutine, public write_cfl_condition_ko(dt)
subroutine that writes invalid CFL condition in the listing file (*.lst).
This module contains subroutines to write information in the listing file *.lst.
subroutine, private write_receiver_saving_info()
subroutine that writes receivers information in the listing file (*.lst).
subroutine, private write_snapshot_saving_info()
subroutine that writes snapshots information in the listing file (*.lst).