Skip to content
Snippets Groups Projects
Commit ec4b92bd authored by Antoine Cyril David Hoffmann's avatar Antoine Cyril David Hoffmann :seedling:
Browse files

Add the units module

- takes as input ref. density temp etc.
- performs the transformation from dimensionless to physical units
- completely optional, everything can be postprocessed as well.
- new option for std output where the fluxes are in MW
parent 5b83eb6d
No related branches found
No related tags found
No related merge requests found
...@@ -6,14 +6,14 @@ all: dp ...@@ -6,14 +6,14 @@ all: dp
# Double precision version # Double precision version
dp: F90 = mpif90 dp: F90 = mpif90
dp: F90FLAGS = -DNOLAPACK -O3 -xHOST dp: F90FLAGS = -O3 -xHOST
dp: EXEC = $(BINDIR)/gyacomo23_dp dp: EXEC = $(BINDIR)/gyacomo23_dp
dp: dirs src/srcinfo.h dp: dirs src/srcinfo.h
dp: compile dp: compile
# Single precision version # Single precision version
sp: F90 = mpif90 sp: F90 = mpif90
sp: F90FLAGS = -DNOLAPACK -DSINGLE_PRECISION -O3 -xHOST sp: F90FLAGS = -DSINGLE_PRECISION -O3 -xHOST
sp: EXEC = $(BINDIR)/gyacomo23_sp sp: EXEC = $(BINDIR)/gyacomo23_sp
sp: dirs src/srcinfo.h sp: dirs src/srcinfo.h
sp: compile sp: compile
...@@ -41,21 +41,21 @@ debug: compile ...@@ -41,21 +41,21 @@ debug: compile
# For compiling on marconi # For compiling on marconi
marconi: F90 = mpiifort marconi: F90 = mpiifort
marconi: F90FLAGS = -DNOLAPACK -O3 -xHOST marconi: F90FLAGS = -O3 -xHOST
marconi: EXEC = $(BINDIR)/gyacomo23_dp marconi: EXEC = $(BINDIR)/gyacomo23_dp
marconi: dirs src/srcinfo.h marconi: dirs src/srcinfo.h
marconi: compile marconi: compile
# For compiling on marconi in single prec. # For compiling on marconi in single prec.
marconi_sp: F90 = mpiifort marconi_sp: F90 = mpiifort
marconi_sp: F90FLAGS = -DNOLAPACK -DSINGLE_PRECISION -O3 -xHOST marconi_sp: F90FLAGS = -DSINGLE_PRECISION -O3 -xHOST
marconi_sp: EXEC = $(BINDIR)/gyacomo23_sp marconi_sp: EXEC = $(BINDIR)/gyacomo23_sp
marconi_sp: dirs src/srcinfo.h marconi_sp: dirs src/srcinfo.h
marconi_sp: compile marconi_sp: compile
# For compiling on marconi in single prec. # For compiling on marconi in single prec.
marconi_dbg: F90 = mpiifort marconi_dbg: F90 = mpiifort
marconi_dbg: F90FLAGS = -DNOLAPACK -DSINGLE_PRECISION -g -traceback -ftrapuv -warn all -debug all marconi_dbg: F90FLAGS = -DSINGLE_PRECISION -g -traceback -ftrapuv -warn all -debug all
marconi_dbg: EXEC = $(BINDIR)/gyacomo23_dbg marconi_dbg: EXEC = $(BINDIR)/gyacomo23_dbg
marconi_dbg: dirs src/srcinfo.h marconi_dbg: dirs src/srcinfo.h
marconi_dbg: compile marconi_dbg: compile
...@@ -93,8 +93,7 @@ gdebug: compile ...@@ -93,8 +93,7 @@ gdebug: compile
# test SVD # test SVD
test_svd: F90 = mpif90 test_svd: F90 = mpif90
# test_svd: F90FLAGS = -DTEST_SVD -g -traceback -ftrapuv -warn all -debug all test_svd: F90FLAGS = -DLAPACK -DTEST_SVD -O3
test_svd: F90FLAGS = -DTEST_SVD -O3
test_svd: EXEC = $(BINDIR)/gyacomo23_test_svd test_svd: EXEC = $(BINDIR)/gyacomo23_test_svd
test_svd: dirs src/srcinfo.h test_svd: dirs src/srcinfo.h
test_svd: compile test_svd: compile
...@@ -133,7 +132,8 @@ $(OBJDIR)/moments_eq_rhs_mod.o $(OBJDIR)/numerics_mod.o $(OBJDIR)/parallel_mod.o ...@@ -133,7 +132,8 @@ $(OBJDIR)/moments_eq_rhs_mod.o $(OBJDIR)/numerics_mod.o $(OBJDIR)/parallel_mod.o
$(OBJDIR)/ppexit.o $(OBJDIR)/prec_const_mod.o \ $(OBJDIR)/ppexit.o $(OBJDIR)/prec_const_mod.o \
$(OBJDIR)/processing_mod.o $(OBJDIR)/readinputs.o $(OBJDIR)/restarts_mod.o \ $(OBJDIR)/processing_mod.o $(OBJDIR)/readinputs.o $(OBJDIR)/restarts_mod.o \
$(OBJDIR)/solve_EM_fields.o $(OBJDIR)/species_mod.o $(OBJDIR)/stepon.o $(OBJDIR)/tesend.o \ $(OBJDIR)/solve_EM_fields.o $(OBJDIR)/species_mod.o $(OBJDIR)/stepon.o $(OBJDIR)/tesend.o \
$(OBJDIR)/time_integration_mod.o $(OBJDIR)/utility_mod.o $(OBJDIR)/CLA_mod.o $(OBJDIR)/time_integration_mod.o $(OBJDIR)/utility_mod.o $(OBJDIR)/units_mod.o \
$(OBJDIR)/CLA_mod.o
# Add finally the definition of the Gyacomo directory # Add finally the definition of the Gyacomo directory
# (helps if the code needs to load a file as for the init Ricci) # (helps if the code needs to load a file as for the init Ricci)
...@@ -206,7 +206,7 @@ $(OBJDIR)/time_integration_mod.o $(OBJDIR)/utility_mod.o $(OBJDIR)/CLA_mod.o ...@@ -206,7 +206,7 @@ $(OBJDIR)/time_integration_mod.o $(OBJDIR)/utility_mod.o $(OBJDIR)/CLA_mod.o
$(OBJDIR)/prec_const_mod.o $(OBJDIR)/processing_mod.o $(OBJDIR)/array_mod.o \ $(OBJDIR)/prec_const_mod.o $(OBJDIR)/processing_mod.o $(OBJDIR)/array_mod.o \
$(OBJDIR)/basic_mod.o $(OBJDIR)/fields_mod.o \ $(OBJDIR)/basic_mod.o $(OBJDIR)/fields_mod.o \
$(OBJDIR)/grid_mod.o $(OBJDIR)/initial_mod.o $(OBJDIR)/model_mod.o \ $(OBJDIR)/grid_mod.o $(OBJDIR)/initial_mod.o $(OBJDIR)/model_mod.o \
$(OBJDIR)/time_integration_mod.o $(OBJDIR)/parallel_mod.o $(OBJDIR)/time_integration_mod.o $(OBJDIR)/parallel_mod.o $(OBJDIR)/units_mod.o
$(F90) -c $(F90FLAGS) $(FPPFLAGS) $(EXTMOD) $(EXTINC) src/diagnostics_mod.F90 -o $@ $(F90) -c $(F90FLAGS) $(FPPFLAGS) $(EXTMOD) $(EXTINC) src/diagnostics_mod.F90 -o $@
$(OBJDIR)/endrun.o : src/endrun.F90 \ $(OBJDIR)/endrun.o : src/endrun.F90 \
...@@ -307,7 +307,8 @@ $(OBJDIR)/time_integration_mod.o $(OBJDIR)/utility_mod.o $(OBJDIR)/CLA_mod.o ...@@ -307,7 +307,8 @@ $(OBJDIR)/time_integration_mod.o $(OBJDIR)/utility_mod.o $(OBJDIR)/CLA_mod.o
$(OBJDIR)/readinputs.o : src/readinputs.F90 \ $(OBJDIR)/readinputs.o : src/readinputs.F90 \
$(OBJDIR)/diagnostics_mod.o $(OBJDIR)/initial_mod.o $(OBJDIR)/model_mod.o \ $(OBJDIR)/diagnostics_mod.o $(OBJDIR)/initial_mod.o $(OBJDIR)/model_mod.o \
$(OBJDIR)/prec_const_mod.o $(OBJDIR)/grid_mod.o $(OBJDIR)/time_integration_mod.o $(OBJDIR)/prec_const_mod.o $(OBJDIR)/grid_mod.o $(OBJDIR)/time_integration_mod.o \
$(OBJDIR)/units_mod.o
$(F90) -c $(F90FLAGS) $(FPPFLAGS) $(EXTMOD) $(EXTINC) src/readinputs.F90 -o $@ $(F90) -c $(F90FLAGS) $(FPPFLAGS) $(EXTMOD) $(EXTINC) src/readinputs.F90 -o $@
$(OBJDIR)/restarts_mod.o : src/restarts_mod.F90 \ $(OBJDIR)/restarts_mod.o : src/restarts_mod.F90 \
...@@ -327,7 +328,7 @@ $(OBJDIR)/time_integration_mod.o $(OBJDIR)/utility_mod.o $(OBJDIR)/CLA_mod.o ...@@ -327,7 +328,7 @@ $(OBJDIR)/time_integration_mod.o $(OBJDIR)/utility_mod.o $(OBJDIR)/CLA_mod.o
$(OBJDIR)/stepon.o : src/stepon.F90 \ $(OBJDIR)/stepon.o : src/stepon.F90 \
$(OBJDIR)/initial_mod.o $(OBJDIR)/prec_const_mod.o $(OBJDIR)/advance_field_mod.o \ $(OBJDIR)/initial_mod.o $(OBJDIR)/prec_const_mod.o $(OBJDIR)/advance_field_mod.o \
$(OBJDIR)/basic_mod.o $(OBJDIR)/nonlinear_mod.o $(OBJDIR)/grid_mod.o \ $(OBJDIR)/basic_mod.o $(OBJDIR)/nonlinear_mod.o $(OBJDIR)/grid_mod.o \
$(OBJDIR)/array_mod.o $(OBJDIR)/numerics_mod.o $(OBJDIR)/fields_mod.o \ $(OBJDIR)/array_mod.o $(OBJDIR)/numerics_mod.o $(OBJDIR)/fields_mod.o \
$(OBJDIR)/ghosts_mod.o $(OBJDIR)/moments_eq_rhs_mod.o $(OBJDIR)/solve_EM_fields.o\ $(OBJDIR)/ghosts_mod.o $(OBJDIR)/moments_eq_rhs_mod.o $(OBJDIR)/solve_EM_fields.o\
$(OBJDIR)/utility_mod.o $(OBJDIR)/model_mod.o $(OBJDIR)/time_integration_mod.o \ $(OBJDIR)/utility_mod.o $(OBJDIR)/model_mod.o $(OBJDIR)/time_integration_mod.o \
...@@ -346,6 +347,10 @@ $(OBJDIR)/time_integration_mod.o $(OBJDIR)/utility_mod.o $(OBJDIR)/CLA_mod.o ...@@ -346,6 +347,10 @@ $(OBJDIR)/time_integration_mod.o $(OBJDIR)/utility_mod.o $(OBJDIR)/CLA_mod.o
$(OBJDIR)/basic_mod.o $(OBJDIR)/prec_const_mod.o $(OBJDIR)/time_integration_mod.o $(OBJDIR)/basic_mod.o $(OBJDIR)/prec_const_mod.o $(OBJDIR)/time_integration_mod.o
$(F90) -c $(F90FLAGS) $(FPPFLAGS) $(EXTMOD) $(EXTINC) src/utility_mod.F90 -o $@ $(F90) -c $(F90FLAGS) $(FPPFLAGS) $(EXTMOD) $(EXTINC) src/utility_mod.F90 -o $@
$(OBJDIR)/units_mod.o : src/units_mod.F90 \
$(OBJDIR)/basic_mod.o $(OBJDIR)/prec_const_mod.o $(OBJDIR)/geometry_mod.o
$(F90) -c $(F90FLAGS) $(FPPFLAGS) $(EXTMOD) $(EXTINC) src/units_mod.F90 -o $@
$(OBJDIR)/CLA_mod.o : src/CLA_mod.F90 \ $(OBJDIR)/CLA_mod.o : src/CLA_mod.F90 \
$(OBJDIR)/basic_mod.o $(OBJDIR)/prec_const_mod.o $(OBJDIR)/fields_mod.o $(OBJDIR)/grid_mod.o \ $(OBJDIR)/basic_mod.o $(OBJDIR)/prec_const_mod.o $(OBJDIR)/fields_mod.o $(OBJDIR)/grid_mod.o \
$(OBJDIR)/time_integration_mod.o $(OBJDIR)/time_integration_mod.o
......
...@@ -84,3 +84,13 @@ ...@@ -84,3 +84,13 @@
&TIME_INTEGRATION &TIME_INTEGRATION
numerical_scheme = 'RK4' ! numerical scheme for time integration (RK2,3,4 etc.) numerical_scheme = 'RK4' ! numerical scheme for time integration (RK2,3,4 etc.)
/ /
&UNITS
n_ref = 5.0 ! Electron density (x1e19) [m-3]
T_ref = 2.5 ! Electron temperature [keV]
R_ref = 1.7 ! Major Radius [m]
B_ref = 1.5 ! Magnetic field intensity [T]
m_ref = 1 ! Ion mass [proton mass]
q_ref = 1 ! Ion charge [elementary charge]
WRITE_MW = .false. ! Write in std the power output in MW
/
...@@ -71,6 +71,7 @@ CONTAINS ...@@ -71,6 +71,7 @@ CONTAINS
USE initial, ONLY: initial_outputinputs USE initial, ONLY: initial_outputinputs
USE time_integration,ONLY: time_integration_outputinputs USE time_integration,ONLY: time_integration_outputinputs
USE parallel, ONLY: parallel_outputinputs USE parallel, ONLY: parallel_outputinputs
USE units, ONLY: units_outputinputs
USE futils, ONLY: creatf, creatg, creatd, attach, putfile USE futils, ONLY: creatf, creatg, creatd, attach, putfile
IMPLICIT NONE IMPLICIT NONE
!input !input
...@@ -114,6 +115,7 @@ CONTAINS ...@@ -114,6 +115,7 @@ CONTAINS
CALL initial_outputinputs(fid) CALL initial_outputinputs(fid)
CALL time_integration_outputinputs(fid) CALL time_integration_outputinputs(fid)
CALL parallel_outputinputs(fid) CALL parallel_outputinputs(fid)
CALL units_outputinputs(fid)
! Save STDIN (input file) of this run ! Save STDIN (input file) of this run
IF(jobnum .LE. 99) THEN IF(jobnum .LE. 99) THEN
WRITE(str,'(a,i2.2)') "/files/STDIN.",jobnum WRITE(str,'(a,i2.2)') "/files/STDIN.",jobnum
...@@ -128,6 +130,7 @@ CONTAINS ...@@ -128,6 +130,7 @@ CONTAINS
USE basic, ONLY: lu_in, chrono_runt, cstep, time, display_h_min_s USE basic, ONLY: lu_in, chrono_runt, cstep, time, display_h_min_s
USE processing, ONLY: pflux_x, hflux_x USE processing, ONLY: pflux_x, hflux_x
USE parallel, ONLY: my_id USE parallel, ONLY: my_id
USE units, ONLY: WRITE_MW, pow_ref
IMPLICIT NONE IMPLICIT NONE
INTEGER, INTENT(in) :: kstep INTEGER, INTENT(in) :: kstep
!! Basic diagnose loop for reading input file, displaying advancement and ending !! Basic diagnose loop for reading input file, displaying advancement and ending
...@@ -150,14 +153,25 @@ CONTAINS ...@@ -150,14 +153,25 @@ CONTAINS
! Terminal info ! Terminal info
IF ((kstep .GE. 0) .AND. (MOD(cstep, nsave_0d) == 0) .AND. (my_id .EQ. 0)) THEN IF ((kstep .GE. 0) .AND. (MOD(cstep, nsave_0d) == 0) .AND. (my_id .EQ. 0)) THEN
if(SIZE(pflux_x) .GT. 1) THEN IF (WRITE_MW) THEN ! Display MW
WRITE(*,"(A,F8.2,A8,G10.3,A8,G10.3,A8,G10.3,A8,G10.3,A)")& if(SIZE(pflux_x) .GT. 1) THEN
'|t = ', time,'| Pxi = ',pflux_x(1),'| Qxi = ',hflux_x(1),'| Pxe = ',pflux_x(2),'| Qxe = ',hflux_x(2),'|' WRITE(*,"(A,F8.2,A8,G10.3,A14,G10.3,A7)")&
else '|t = ', time,'| Qxi = ',hflux_x(1)*pow_ref,' [MW] | Qxe = ',hflux_x(2)*pow_Ref,' [MW] |'
WRITE(*,"(A,F8.2,A8,G10.3,A8,G10.3,A)")& else
'|t = ', time,'| Px = ',pflux_x(1),'| Qx = ',hflux_x(1),'|' WRITE(*,"(A,F8.2,A8,G10.3,A8,G10.3,A)")&
endif '|t = ', time,'| Qxi = ',hflux_x(1)*pow_ref,' [MW]|'
endif
ELSE ! Display normalized code values
if(SIZE(pflux_x) .GT. 1) THEN
WRITE(*,"(A,F8.2,A8,G10.3,A8,G10.3,A8,G10.3,A8,G10.3,A)")&
'|t = ', time,'| Pxi = ',pflux_x(1),'| Qxi = ',hflux_x(1),'| Pxe = ',pflux_x(2),'| Qxe = ',hflux_x(2),'|'
else
WRITE(*,"(A,F8.2,A8,G10.3,A8,G10.3,A)")&
'|t = ', time,'| Pxi = ',pflux_x(1),'| Qxi = ',hflux_x(1),'|'
endif
ENDIF
ENDIF ENDIF
END SUBROUTINE diagnose END SUBROUTINE diagnose
SUBROUTINE diagnose_full(kstep) SUBROUTINE diagnose_full(kstep)
......
SUBROUTINE readinputs SUBROUTINE readinputs
! Additional data specific for a new run ! Additional data specific for a new run
USE grid, ONLY: grid_readinputs USE closure, ONLY: closure_readinputs
USE diagnostics, ONLY: diag_readinputs
USE collision, ONLY: collision_readinputs USE collision, ONLY: collision_readinputs
USE diagnostics, ONLY: diag_readinputs
USE geometry, ONLY: geometry_readinputs
USE grid, ONLY: grid_readinputs
USE initial, ONLY: initial_readinputs
USE model, ONLY: model_readinputs USE model, ONLY: model_readinputs
USE species, ONLY: species_readinputs USE species, ONLY: species_readinputs
USE initial, ONLY: initial_readinputs
USE time_integration, ONLY: time_integration_readinputs USE time_integration, ONLY: time_integration_readinputs
USE geometry, ONLY: geometry_readinputs USE units, ONLY: units_readinputs
USE closure, ONLY: closure_readinputs
USE prec_const USE prec_const
IMPLICIT NONE IMPLICIT NONE
...@@ -44,4 +45,7 @@ SUBROUTINE readinputs ...@@ -44,4 +45,7 @@ SUBROUTINE readinputs
! Load parameters for time integration from input file ! Load parameters for time integration from input file
CALL time_integration_readinputs CALL time_integration_readinputs
! Load reference profile data in phys. units
CALL units_readinputs
END SUBROUTINE readinputs END SUBROUTINE readinputs
MODULE units
USE prec_const
IMPLICIT NONE
PRIVATE
!! Define the reference values for transforming simulation data into physical units
! The default value, commented here, are corresponding to the #186473 DIII-D discharge at rho=0.95.
REAL(xp), PUBLIC, PROTECTED :: n_ref = -1!25 ! density (electrons) [1e19m-3]
REAL(xp), PUBLIC, PROTECTED :: T_ref = -1!0.3 ! temperature (electrons) [keV]
REAL(xp), PUBLIC, PROTECTED :: R_ref = -1!1.7 ! length (major radius) [m]
REAL(xp), PUBLIC, PROTECTED :: B_ref = -1!2.0 ! magnetic field [T]
REAL(xp), PUBLIC, PROTECTED :: m_ref = -1!1 ! mass [nucleid mass]
REAL(xp), PUBLIC, PROTECTED :: q_ref = -1!1 ! charge [elementary charge]
! Input flag to write heat flux in MW in the std terminal
LOGICAL, PUBLIC, PROTECTED :: WRITE_MW = .false.
! Physical constants
REAL(xp), PUBLIC, PROTECTED :: kB = 1.4e-23 ! Boltzmann constant [J/K]
REAL(xp), PUBLIC, PROTECTED :: mp = 1.7e-27 ! proton mass at rest [kg]
REAL(xp), PUBLIC, PROTECTED :: ec = 1.6e-19 ! elementary charge [C]
! Derived normalization quantities
REAL(xp), PUBLIC, PROTECTED :: c_s0 ! sound speed [m/s]
REAL(xp), PUBLIC, PROTECTED :: r_s0 ! sound Larmor radius [m/s]
REAL(xp), PUBLIC, PROTECTED :: w_ci ! ion cyclotron frequency [1/s]
REAL(xp), PUBLIC, PROTECTED :: A_fs ! flux surface area (torus approx) [m2]
! Physical unit converters
REAL(xp), PUBLIC, PROTECTED :: hf_ref ! heat flux [W/m2]
REAL(xp), PUBLIC, PROTECTED :: pf_ref ! particle flux [1/s/m2]
REAL(xp), PUBLIC, PROTECTED :: mf_ref ! momentum flux [kg (m/s)2]
REAL(xp), PUBLIC, PROTECTED :: ph_ref ! voltage [V]
REAL(xp), PUBLIC, PROTECTED :: pow_ref ! power [MW]
PUBLIC :: units_readinputs, units_outputinputs
CONTAINS
SUBROUTINE units_readinputs
! Read the input parameters
USE basic, ONLY: lu_in
USE geometry, ONLY: eps, geom
USE prec_const, ONLY: xp, pi
IMPLICIT NONE
REAL(xp) :: T0,n0, p0, m0, q0
INTEGER :: fu
! Define namelist to read
NAMELIST /UNITS/ n_ref, T_ref, R_ref, B_ref, m_ref, q_ref, WRITE_MW
! Read namelist in input file
READ(unit=lu_in,nml=units,iostat=fu)
! Convert in mksa
T0 = ec*(1000*T_ref)/kB ! temperature [K]
n0 = n_ref*1e19 ! density [m-3]
m0 = m_ref*mp ! mass [kg]
q0 = q_ref*ec ! charge [C]
! Setup derived normalization quantities
c_s0 = sqrt(kB*T0/m0) ! Sound speed [m/s]
w_ci = q0*B_ref/m0 ! Ion cyclotron frequ. [Hz]
r_s0 = c_s0/w_ci ! Ion Larmor radius [m]
SELECT CASE(geom)
CASE('z-pinch','Z-pinch','zpinch','Zpinch')
A_fs = 2*pi*R_ref*R_ref ! Area of a cylinder of height R_ref [m2]
CASE DEFAULT
A_fs = 4*pi**2*eps*R_ref**2 ! Area of the toroidal flux surface [m2]
END SELECT
! Setup physical unit converters
p0 = n0*kB*T0 ! pressure [Pa]
hf_ref = p0*c_s0*r_s0**2/R_ref**2 ! Gyrobohm heat flux [W/m2]
pow_ref = hf_ref*A_fs/1e6 ! Gyrobohm power [MW]
pf_ref = n0*c_s0*r_s0**2/R_ref**2 ! Particle flux [1/s/m2]
mf_ref = n0*m0*c_s0**2*r_s0**2/R_ref**2 ! Momentum flux [kg (m/s)2]
END SUBROUTINE units_readinputs
SUBROUTINE units_outputinputs(fid)
! Write the input parameters to the results_xx.h5 file
USE futils, ONLY: attach, creatd
IMPLICIT NONE
INTEGER, INTENT(in) :: fid
CHARACTER(len=256) :: str
WRITE(str,'(a)') '/data/input/units'
CALL creatd(fid, 0,(/0/),TRIM(str),'Units Input')
CALL attach(fid, TRIM(str), "density (electrons)", n_ref)
CALL attach(fid, TRIM(str), "temperature (electrons)", T_ref)
CALL attach(fid, TRIM(str), "length (major radius)",R_ref)
CALL attach(fid, TRIM(str), "magnetic field (electrons)", B_ref)
CALL attach(fid, TRIM(str), "mass (proton)", m_ref)
CALL attach(fid, TRIM(str), "charge (elementary)", q_ref)
! Write the mksa converter if units input are provided
if ( (hf_ref > 0) .AND. (pf_ref > 0) .AND. (mf_ref > 0)) THEN
CALL attach(fid, TRIM(str), "heat flux (gyroBohm)", hf_ref)
CALL attach(fid, TRIM(str), "power (gyroBohm)", pow_ref)
CALL attach(fid, TRIM(str), "particle flux (gyroBohm)", pf_ref)
CALL attach(fid, TRIM(str), "momentum flux (gyroBohm)", mf_ref)
ENDIF
END SUBROUTINE units_outputinputs
END MODULE units
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment