diff --git a/docs/references-support/ReleaseNotes/v3.4.0.md b/docs/references-support/ReleaseNotes/v3.4.0.md index 06c6a4d..cb9f45b 100755 --- a/docs/references-support/ReleaseNotes/v3.4.0.md +++ b/docs/references-support/ReleaseNotes/v3.4.0.md @@ -8,8 +8,16 @@ hero_height: is-hidden # FEHM Version 3.4.0 - September 2019 + + + + The major changes in the FEHM application from V3.3.1 to this release V3.4.0 are: salt and GDKM development, various modifications to improve the performance of FEHM simulation, fixing several known code bugs, and salt_test in V&V test suite was updated with improved theoretical solution (theoretical_result.txt). +See [PDF V3.4 Release Notes](ReleaseNotes_v3.4.0.pdf) for additional discussions: +- BOUNDARY CONDITIONS FOR THE AIR-WATER-HEAT MODULE IN FEHM AND A DESCRIPTION OF VERIFICATION PROBLEMS +- DEVELOPMENT OF A HIGH TEMPERATURE TABULAR WATER PROPERTIES CAPABILITY IN FEHM + ## Enhancements @@ -29,6 +37,315 @@ The major changes in the FEHM application from V3.3.1 to this release V3.4.0 are - Saved Zone capability. This allows zones to be saved once and for all. This allows sets of zones not to lose nodes because of overlapping nodes defined sequentially. Useful for setting stratigraphy and boundary conditions and for outputting separate contour zones. -- GDKM. This is a major update to the GDKM capability. Corrected known bugs, simplified input, and added models. +- GDKM. This is a major update to the GDKM capability. Corrected known bugs, simplified input, and added models. The models include the generic fracture model (similar to dpdp) and three directional fracture models. + +## Code Bugs Fixed + +1. varchk_2.f - fixed a bug in the variable update portion of routine for AWH and SC phase +2. resetv.f - fixed a bug. Now allows a timestep restart when a SC phase is present +3. Residual.f – bug fix so that 135 Xe concentration test passes +4. Sub_gmres1.f - bug fix so that 135 Xe concentration test passes +5. thrmwc.f- continued improvement of ngas physics (AWH) boundary conditions, debugged and modified high temperature table +6. vcon.f - bug fix for earlier implementation of thermal conductivity for porosity above 0.3873 to FEHM. Included temperature dependence calculation and accurate linear slope equation for porosity above 0.3873 situation. + + +## Known Issues + +08/29/2019: problems compiling FEHM with Intel Visual Fortran +Checking out the flag "Check Routine Interfaces" in the "Diagnostics" option of the Fortran workspace properties can let compilation of FEHM go through. There are two types of issues: 1) related to the setbit subroutine - the dummy arguments are all integer (4 bytes) while the third argument in the calling is of type real*8. Even if compilation goes through, it is not sure that results could be reliable; 2) there are many cases where the size of dummy arrays are larger than the ones in the calling sequence - but this is not a problem. + + +## Code Changes + +
+------------ Code changes 10/07/2017:
+  
+GRAV_TERM:
+comji.f - added array grav_wgt(:)
+flow_boundary_conditions.f - fixed error on specified air pressure
+geneqc.f - set grav wgt = 1 if one of the densities (i.e. rovf(i) le.0)
+varchk.f - adjustment to default saturation tolerance
+  
+SALT_OLivella:
+comai.f - added global parameter 'iaprf' to manage Olivella intrinsic permeability reduction function; added global para meters in support of code modifications
+comdi.f - added globalparameters k0f, bkf, por0ffor the Olivella intrinsic permeability reduction function
+data.f - zeroed parameter 'iaprf'
+porosi.f - Added coding to enable call to Olivella permeability function (including perm initialization); Corrected the number of loop calls and improved cpu.
+saltctr.f - Added input coding for Olivella thermal conductivity (and warning in model 4 or 5 are not used with salt). Also added input for Olivella intrinsic perm function. Appended subroutine perm_olivella to the end of saltctr.f. Added conditional to Olivella perm function to enable calculation of a single gridblock to be consistent with loop on porosi.
+fehmn_pcx.f - changed comment only near call to porosi()
+flow_boundary_conditions.f - added code so that a specified saturation entered in the boun macro works with Richards' equation
+vcon.f - Corrected existing model to implement Olivella thermal conductivity function.
+(still some question as to Temp units K or C (Olivella, 2011 seems to be C)
+Can't find a reference temperature.
+  
+PRINCIPAL_STRESS:
+write_avs_head_s.f - changed printout order of header for principal stresses
+SRC_CH2017:
+psatl.f - modified vapor pressure to use Sparrow for salt repository
+vaporl.f - added coding to include sparrows 2003 equation
+thrair.f - modified free drainage BC
+SV_ZONE:
+zone.f - added save zone capability. Can define zone and then use them later in the simulation.
+They won't disappear. Also supports special SoilVision output.
+write_avs_node_v.f - added coding to support SoilVision output
+write_avs_node_s.f - added output for gdkm with blanking and no dual grid
+write_avs_node_con.f - added output for gdkm with blanking and no dual grid. Added mods for SoilVision support.
+
+SRC_CH2017:
+psatl.f - modified vapor pressure to use Sparrow for salt repository
+vaporl.f - added coding to include sparrows 2003 equation
+thrair.f - modified free drainage BC
+  
+SV_ZONE:
+zone.f - added save zone capability. Can define zone and then use them later in the simulation.
+They won't disappear. Also supports special SoilVision output.
+write_avs_node_v.f - added coding to support SoilVision output
+write_avs_node_s.f - added output for gdkm with blanking and no dual grid
+write_avs_node_con.f - added output for gdkm with blanking and no dual grid. Added mods for SoilVision support.
+
+read_avs_io.f - enable SOIL VISION output
+initdata2.f - modified to use saved zones.
+fehmn_pcx.f - perform restart if equation normalization fails
+allocmem.f - added memory allocation for new features and also for SoilVision arrays.
+user_ymp.f - moved array elem_temp(:) to use module combi.f
+
+NONLIN_CP:
+comdi.f - added variables associated with rock melting
+enthp.f - modified for heat conduction only. (might have to set temperature with hflx macro)
+input.f - added input call to vrock_ctr.f for rock melting
+thermw.f - added coding for rock melting
+thrmwc.f - added coding for rock melting. Added coding to implement new humidity related boundary conditions.
+vrock_ctr,f - new controller for rock melting
+wrtout.f - corrected ethalpy output in *.out file for heat conduction
+inrock.f - changed default values to real*8 (i.e. 2500. to 2500.d0)
+  
+HUMIDITY:
+New humidity BC development:
+Note: most of the files were changed to support developments in humidity initialization, output and boundary conditions. 'humidity' is used for the relative humidity fraction.
+model_setup.f - added boun sub keywords 'huf' (flowing humidity),'hu' (fixed humidity),
+th (humidity temperature), ph (humidity pressure)
+co2ctr.f - set relative humidity fraction at input temperature for gas phase, print out relative humidity fraction
+flow_humidity_bc.f (new) - calculates the air and water mass fractions of an inflowing gas flow so that the inflow has a specified relative humidity.
+wrtcon.f - added coding to output more detail on SIA iterations
+flow_boun.f - added coding for new humidity boundary conditions.
+
+GDKM_MODS:
+add_gdpm.f - added input for newer gdkm directional models
+combi.f - added array for gdkm modifications
+coneq1.f - modified diffision/dispersion to have correct weighting with gdkm models
+check_rlp.f - made temp array sizes consistent with corresponding variable arrays
+dvacalc.f - move dva_save(:) to use module comci.f, Added GDKM weighting
+comci.f - added array dva_save(:)
+gdkm_connect.f - modified volume fraction calcs
+gdkm_volume_fraction_interface.f - used volume fractions to calculate gdkm inteface weights
+geneq1.f - modified for new gdkm models, modified grav term weighting for zero phase density
+geneq2.f - modified for new gdkm models, no gav weighting mods for isothermal
+ingdpm.f - modified input for new gdkm models, major mofification for gdkm input
+scanin.f - scan input for new gdkm input. Added coding to identify new humidity related keywords in the boun macro.
+startup.f - added and rearranged calls to gdkm calcs
+avsio.f - added parameter iogdkmblank for gdkm graphics
+setparams.f - added more checks for gdpm and gdkm problems
+innode.f - added more checks on input when gdkm not used
+solve_dual.f - changes some allocate/deallocate statements to clean up subroutine call
+csolve.f - corrected do loops for variable gdkm node number, modified to printout SIA iterations
+
+NEG_VOL:
+anonp.f - Added check and correction for negative volumes associated with inconsistent local element node ordering.
+gncf3.f - Added check and correction for negative volumes associated with inconsistent local element node ordering.
+-------- Code changes 10/29/2017:
+varchk.f - adjustment to default saturation tolerance. For pure water, calculated T for 2-phase conditions where s is the variable. Needed for rock melting.
+thermw.f - added coding for rock melting. Moved where rock internal energy is calculated.
+(so T is available for 2-phase problems)
+-------- Code changes 12/13/2017:
+bnswer.f - small change for managing "out of bounds restart" parameter (mlz)
+cntlin.f - added additional unit numbers for hi temp water data table (like co2 tables)
+comai.f - added parameters for tracking number of supercritical water nodes
+comsi.f - added variable arrays for tabular mechanical properties
+comxi.f - increase size of arrays that identify input tabular data (support for hi temp water data)
+dated.f - changed the name of the FEHM version to "FEHM V3.3.J HT 17-12-12" (just a suggestion)
+enthp.f - changed to compatibility with High Temp code
+psatl.f - added derivative wrt pressure for saturation temperature calculation
+fehmn_pcx.f - added another use module (use property_interpolate_1) for hi temp water. Added calls to manage "saved zones".
+h2o_properties_new.f - New routine to manage hi temp water properties. Based on Pawar's co2_properties.f
+inpres.f - added code to allow super critical water phase state
+inrlp.f90 - only a few comments but no active line changes
+interpolate_2.f90 - New routine for hi temp water property interpolation. Based on John Doherty's routine for CO2 property interpolation.
+iofile.f - added coding to manage opening of hi temp water interpolation table
+outbnd.f - corrected multiplier for permeability units. (outputted value only)
+psatl.f - added coding to include hi temp water table interpolation
+rlperm.f - added coding for supercritical water phase (1 line)
+scanin.f - initialized iwater_table = 0, determine if using hi temp table
+sther,f - set larger T and P bounds if using water interpolation table
+stress_mech_props.f - added coding for tabular input of mechanical properties
+stressctr.f - added coding for tabular mechanical properties
+thermw.f - added coding for hi temp tabular water properties and temperature dependent
+(including rock melting) rock/soil properties
+thrmwc.f - added coding for hi temp tabular water properties and temperature dependent
+(including rock melting) rock/soil properties
+varchk.f - checked for supercritical water phase and phase change
+writeio.f – added: use comco2, only: icarb
+wrtout.f - added output for supercritical water phase information
+Notes:
+1. The change to rlperm.f was simple: if (ieosd.eq.4) ieosd =1. Not sure, but this may be needed in routines that are related to the keyword 'rlpm'
+2. Parameter "iwater_table" refers to hi temp tabular water properties.
+
+--------- Code changes 02/10/2018:
+add_gdpm.f- modified geomtriv gpkm terms to be closer to dpdp
+geneq1.f - Modified connection between primary and secondary nodes to solve the heat conduction GDKM problem
+geneq2.f - general cleanup of primary and secondary connection for consistency
+geneqc.f - general cleanup of primary and secondary connection for consistency
+write_avs_node_s.f - Fixed overflow of gdkm output for infiltration_gdkm verification problem - now passes the tests
+-------- Code changes 03/19/2018:
+zone.f - changed definition of zone keyword 'all' from setting every node (including secondary porosity nodes) to the designated zone to just the primary nodes. The secondary node are set '+ 100' or '+ 1000' if primary zone number > 100
+infiles.f - modified so the zone file identified in the control file correctly sets the secondary porosity nodes.
+ingdpm.f - slight modification to insure old style gdkm input always matches the 'dpdp' non directional fracture type
+add_gdpm.f - corrected error to insure the correct area term is used in the non-directional fracture model (gdkm_dir = 0) when 'gdkm new' is used
+-------- Code changes 06/20/2018:
+geneq2_uz_wt.f - added GDKM coding
+write_avs_node_s.f - added blanking for more variables when GDKM used
+add_gdpm.f - tweaked some geometric factors for directional fracture models
+geneq1.f - changed permeability weighting for primary-secondary weighting for GDKM nodes
+geneqc.f - changed permeability weighting for primary-secondary weighting for GDKM nodes
+coneq1.f - small GDKM changes
+setparams.f - initialized some GDKM parameters
+geneq2.f - changed permeability weighting for primary-secondary weighting for GDKM nodes
+ingdpm.f - changed some input for new gdkm models
+gdkm_volume_fraction_interface.f - corrected some minor errors in GDKM interface weighting.
+-------- Code changes 09/09/18:
+fehmn_pcx.f - moved the following from startup
+if (ianpe.eq.0) then
+if (irun.eq.1.and.inobr.eq.0) call sx_combine(1)
+  else
+if (irun.eq.1.and.inobr.eq.0) call sx_combine_ani(1)
+endif
+so that beaking connections between sources or sinks is done consist with boun macro and the flow macro
+startup.f - moved the same lines above from startup to fehmn_pcx
+model_setup.f - added boun keyword 'fen' for flowing enthalpy. Definition is analogous to flowing temperature
+scanin.f - added search for boun keyword 'fen'
+zone.f - corrected some coding when creating 'saved' zones; not in common usage yet
+---------- Code changes 09/25/18:
+thrmwc.f - Added coding so that if, on a gridblock with a specified total pressure, the air partial pressure becomes greater than the specified total pressure is released.
+Significant change for ngas problems.
+varchk.f - phase_mult_hma : changed from 1.15 to 1.15
+comai.f - added a few global variables
+rlperm.f - added coding so that macro rlp can be called multiple times
+scanin.f - added coding to support multiple rlp calls.
+initdata2.f - added coding (padding) to support multiple rlp calls
+data.f - add and initialize some variables associated with multiple rlp calls
+setparams.f - initialized counter for nultiple rlp calls
+-------- Code changes 10/26/18:
+zone.f - corrected mismatched header lines in calls to zone_elem (a subroutine in zone.f); separated arrays in deallocate statement to check in allocated; changed zonesavename to character*30
+input.f - corrected header line in call to zone_elem; changed zonesavename to character*30
+initdata2.f - changed zonesavename to character*30
+write_avs_node_con.f - changed zonesavename to character*30
+write_avs_node_s.f - changed zonesavename to character*30
+write_avs_node_v.f - changed zonesavename to character*30
+saltctr.f - changed variable in initdata2 call to include macroread(23) in header; added line 'macroread(23) = .false.' before call to initdata2
+comai_1.f - only added comment line to identify macroread(23) as associated with perm_olivella
+-------- Code changes 11/01/2018 – 11/27/2018:
+thrmwc_2.f - added coding to support new uses of boun keywords and improve numerical performance in the "source term code" section
+flow_boun.f - added and used array qaxf(i) to store boun air fraction data
+flow_boundary_conditions.f - Implemented array qafx() for applying air fraction boundary conditions. (boun keyword xfa)
+model_setup.f - modified array usage for 'fxa' boun keyword
+comdi.f - added an allocatable array sk_temp used in thrmwc.f; added an allocatable array qaxf used in flow_boun.f.
+comai_1.f - added comment for macroread(24) for macro den
+saltctr.f - added macroread(23) = .true. to indicate perm_olive read
+hydiss.f - changed macroread(7) to macroread(25)
+den_vis_spatial.f - changed macroread(12) to macroread(24)
+--------- Code changes 11/30/2018:
+flow_boundary_conditions.f - fixed logic that allowed access to an unallocated array when fixed temperatures and fixed enthalpy flows occur in the same simulation.
+--------- Code changes 12/10/2018:
+thrmwc.f- continued improvement of ngas physics (AWH) boundary conditions
+debugged and modified high temperature table
+varchk.f - improved phase change code for ngas physics with high temperature table
+--------- Code changes 12/30/2018:
+thrmwc_5.f - continued improvement of ngas physics (AWH) boundary conditions- fixed some more problems with the supercritical water phase
+varchk_2.f - fixed a bug in the varible update portion of routine for AWH and SC phase
+resetv.f - fixed a bug, now allows a timestep restart when a SC phase is present.
+air_cp.f - attached a subroutine air_sol to air_cp to manage solubility models of air in liquid water. For now limited to the original Henry's law.
+--------- Code changes 01/12/2019 (merge with Peter Johnson’s development):
+allocmem.f - OK to merge, extra variables only
+cappr.f - OK to merge, extra code for main PJ stuff fixed problem with ifblock for cap model 1
+comdi.f- merged newer code with PJ's now identical in src after 102518
+rlperm_1a.f - added PJ code (extra relperm models)
+saltctr.f - OK to merge, minor extra PJ code
+vcon.f - OK to merge, minor extra PJ code
+air_cp.f - added maximum liquid air mass fraction (xnl = 0.1)
+varchk_2a.f - small change to phase change criteria
+--------- Code changes 01/12/2019:
+air_cp.f - corrected henry's law constant
+vcon.f - corrected model 4 (PJ merge)
+thrmwc_6.f - more tweaks of derivatives for ngas physics
+--------- Code changes 01/28/2019:
+model_setup.f - changed coding to distinguish between dsa and fxa keywords when multiple boun models exist with sa and fxa respectively
+flow_boun.f - added more models that allow the use of ti_linear and corrected an error with distributed source air (dsa). keywords allowed with ti_linear: fd, sw, dsw, dsco2, sa, dsa, se, dse, t
+--------- Code changes 02/17/2019:
+flow_boun.f - added more models that allow the use of ti_linear and corrected an error with distributed source air (dsa). keywords allowed with ti_linear: fd, sw, dsw, dsco2, sa, dsa, se, dse, t, ft, hd, hdo, s
+--------- Code changes 03/01/2019 – 05/22/2019:
+startup_1.f-no substantive changes (a debug line)
+write_avs_node_s.f - added threshhold for saturation
+thrair_1.f - modified seepage face boundary condition (flo3 input) for use with Richards equation solution
+steady.f - modified tolerance changing algorithm when using flowrate to determine steady state
+comsteady.f - added global variables to support changes made to steady.f
+user_ymp1.f - added some operations for manipulating zones. (these do not affect any tests)
+fehmn_pcx_1.f - comment lines only
+comai_1.f - added some variables
+incoord.f - small change to indicate bad grid
+wrtout_1.f - added output (additional columns) for zone numbers and phase state for water. Improved accuracy of phase change count.
+flxz_2.f - added output (additional column) for average zone saturation in output for water
+gradctr_1.f - corrected error in visualization when grad macro is used. Does not affect simulation but only zones in some contour output files when grad macro is used
+--------- Code changes 05/22/2019 – 06/11/2019:
+user_ymp.f - Changed the general 'a' format, allowed in Intel Fortran, to a format that specifies the number of characters (ie a8) so that the routine compiles in linux.
+--------- Code changes 06/13/2019:
+residual.f - line 187, anorm_tol change to 1.d-90
+sub_gmres1.f - line 370 change tols = 1.d-30, line 427 change 1.d-20 to 1.d-60
+--------- Code changes 06/27/2019:
+wrtout_1.f - added output (additional columns) for zone numbers and phase state for water. Improved accuracy of phase change count. Added output for zone and phase state information for printout nodes
+flxz_2.f - added output (additional column) for average zone saturation in output for water. Corrected memory error when idof = 13 (s always=1)
+setconnarray_1.f - added code that writes a file (red_fac_itfc.txt) for visualization of the interface nodes.
+--------- Code changes 07/08/2019:
+combi.f - added global variables for the number of interface connections affected by itfc macro.
+scanin.f - saved the actual number of classes (lines) of interface connections values entered on input for itfc macro.
+setconnarray.f - fixed error in colloid part of itfc. The code was previously going through the colloid loop even if there was no colloid input. Added vtk output along with text file for visualizing the interface positions for the reduction factors.
+---------- Code changes 08/06/2019:
+flxz_2.f - added output (additional column) for average zone saturation in output for water. Corrected memory error when idof = 13 (s always=1)
+airctr_2.f - modified phase change criteria 2-phase to gas
+combi_1.f - added variables associated with itfc macro (visualization)
+gradctr_1.f - correction for case of reading gradient info from aux file.
+(As happens when gradctr used multiple times.)
+pest_1.f - added for information for flowrate columns
+scanin_1.f - added logical variables associated with itfc macro
+setconnarray_3.f - added option to find all connections to a particular zone for setting interface multipliers
+write_avs_node_con_2.f - significant changes for transport species to get heading correct for tec files. (This could cause some problems.)
+wrtout_1.f - write out additional columns with zone number and phase state (minor tweaks over last version)
+reset_1.f - reset saturation = 0 ti ieos=2 for Richard’s Eq only (could be significant)
+steady_1.f - minor improvements to steady macro. Forced variable tolerance to be monotonic.
+comsteady_1.f - added variable which saves last timestep tolerance
+comdi_1.f - added last timestep source array
+thrair_2.f - added capability to manage maximum source changes for constant pressure nodes and seepage faces (currently disabled).
+---------- Code changes 08/28/2019:
+vcon.f - bug fix for pjjohnson's implementation of thermal conductivity for porosity above 0.3873 to FEHM. Included temperature dependence calculation and accurate linear slope equation for porosity above 0.3873 situation.
+---------- Code changes 09/03/2019:
+airctr.f - only comments
+comai.f - changed sat_ich from integer to real*8 (sat value below which head is set to zero for output)
+comdi.f - added allocatable arrays for renubering algorithms
+comsteady.f - added parameters related for improved algorithm for changing eq tolerance
+contr.f - corrected errors when using macro 'chea' for output in head for non-head problems
+convctr.f - fixed conflict with with crl(1,1) usage for density in isothermal problems and output using subroutine water_density.
+diagnostics.f - added zone id to timestep restart information
+fehmn_pcx.f - eliminated negative porosity node (eliminated nodes) from phase change count
+headctr.f - implimented a saturation id for head output when "chea" macro used
+input.f - corrected "chea" default saturation for zero head designation
+pest.f - added output for zone id, average sat of a zone, and velocity
+renum.f - added infrastructure for some renumbering algorithms
+reset.f - if richard's eq enabled, only allow reset to liquid or two-phase condition (gas phase included in two phase)
+startup.f - added some comments
+steady.f - improved the algorithm for reducing eq tolerance as flow balance converges. Added input parameters:
+"tstr" : specify time(days) to start new tolerance reduction algorithm
+"sacc" : set tolerance for nodal mass change
+thrair.f - added some comments
+  
+
 
 
+