|
| subroutine | cv_advection::cv_assemb (state, packed_state, final_phase, Mdims, CV_GIdims, CV_funs, Mspars, ndgln, Mdisopt, Mmat, upwnd, tracer, velocity, density, multi_absorp, DIAG_SCALE_PRES, DIAG_SCALE_PRES_COUP, INV_B, DEN_ALL, DENOLD_ALL, CV_DISOPT, CV_DG_VEL_INT_OPT, DT, CV_THETA, CV_BETA, SUF_SIG_DIAGTEN_BC, DERIV, CV_P, SOURCT_ALL, ABSORBT_ALL, VOLFRA_PORE, VOLFRA_PORE_TOTAL, GETCV_DISC, GETCT, IGOT_T2, IGOT_THETA_FLUX, GET_THETA_FLUX, USE_THETA_FLUX, THETA_FLUX, ONE_M_THETA_FLUX, THETA_FLUX_J, ONE_M_THETA_FLUX_J, THETA_GDIFF, MEAN_PORE_CV, MEAN_PORE_CV_TOTAL, MASS_MN_PRES, THERMAL, got_free_surf, MASS_SUF, MASS_ELE_TRANSP, TDIFFUSION, saturation, VAD_parameter, Phase_with_Pc, Courant_number, Permeability_tensor_field, calculate_mass_delta, eles_with_pipe, pipes_aux, porous_heat_coef, porous_heat_coef_old, outfluxes, solving_compositional, nonlinear_iteration, assemble_collapsed_to_one_phase) |
| | This subroutines generates the transport equation for a cv field. It also can generate the Continuity equation if GETCT = .true. and also generate the gradient matrix of the momentum equation for the DCVFE method if the option is activated. More...
|
| |
| subroutine | apply_eno_2_t (LIMF, T_ALL, TOLD_ALL, FEMT_ALL, FEMTOLD_ALL, INCOME, INCOMEOLD, IGOT_T_PACK, CV_NODI, CV_NODJ, X_NODI, X_NODJ, CV_ILOC, CV_JLOC, ELE, CV_NONODS, NDIM, NPHASE, CV_NLOC, TOTELE, X_NDGLN, CV_NDGLN, X_ALL, FACE_ELE, NFACE, BETWEEN_ELEMENTS, SCVFEN, SCVFENx, GI, INV_JAC, UGI, on_domain_boundary) |
| |
| subroutine | tri_tet_loccords (Xpt, LOCCORDS, X_CORNERS_ALL, NDIM, CV_NLOC) |
| |
| subroutine | dump_multiphase (prefix, icp) |
| |
| logical function | has_anisotropic_diffusion (tracer) |
| |
| subroutine | get_int_t_den_new (LIMF) |
| | Computes the flux between CVs. More...
|
| |
| subroutine | get_int_vel_orig_new (NDOTQNEW, NDOTQ, INCOME, LOC_T_I, LOC_T_J, LOC_DEN_I, LOC_DEN_J, LOC_NU, LOC2_NU, NUGI_ALL, UGI_COEF_ELE_ALL, UGI_COEF_ELE2_ALL, not_OLD_VEL) |
| | Computes the flux between CVs. More...
|
| |
| subroutine | get_int_vel_porous_vel (NDOTQNEW, NDOTQ, INCOME, LOC_T_I, LOC_T_J, LOC_FEMT, LOC_NU, LOC2_NU, SLOC_NU, UGI_COEF_ELE_ALL, UGI_COEF_ELE2_ALL, I_adv_coef, I_adv_coef_grad, J_adv_coef, J_adv_coef_grad, I_inv_adv_coef, J_inv_adv_coef, UDGI_ALL, MASS_CV_I, MASS_CV_J, TUPWIND_IN, TUPWIND_OUT, not_OLD_VEL) |
| | Computes the flux between CVs for porous media. NDOTQNEW contains the fluxes for a given gauss integration point. More...
|
| |
| subroutine | face_theta_many (FTHETA, INTERFACE_TRACK, T_NODJ_IPHA, T_NODI_IPHA, TOLD_NODJ_IPHA, TOLD_NODI_IPHA) |
| |
| subroutine | get_neigbouring_lists (JCOUNT_KLOC, ICOUNT_KLOC, JCOUNT_KLOC2, ICOUNT_KLOC2, C_JCOUNT_KLOC, C_ICOUNT_KLOC, C_JCOUNT_KLOC2, C_ICOUNT_KLOC2) |
| |
| subroutine | mass_conservation_check_and_outfluxes (calculate_mass_delta, outfluxes, DEN_ALL, flag) |
| |
| pure subroutine | cv_advection::onvdlim_ano_many (NFIELD, TDLIM, TDCEN, INCOME, ETDNEW_PELE, ETDNEW_PELEOT, XI_LIMIT, TUPWIN, TUPWI2, DENOIN, CTILIN, DENOOU, CTILOU, FTILIN, FTILOU) |
| | This sub calculates the limited face values TDADJ(1...SNGI) from the central difference face values TDCEN(1...SNGI) using a NVD shceme. INCOME(1...SNGI)=1 for incomming to element ELE else =0. LIBETA is the flux limiting parameter. TDMAX(PELE)=maximum of the surrounding 6 element values of element PELE. TDMIN(PELE)=minimum of the surrounding 6 element values of element PELE. PELEOT=element at other side of current face. ELEOT2=element at other side of the element ELEOTH. ELESID=element next to oposing current face. DENOIN, CTILIN, DENOOU, CTILOU, FTILIN, FTILOU => memory The elements are arranged in this order: ELEOT2,ELE, PELEOT, ELESID. More...
|
| |
| subroutine | cv_advection::is_field_constant (IGOT_T_CONST, IGOT_T_CONST_VALUE, T_ALL, CV_NONODS) |
| | Checks whether a field is constant or not. Although I think this check is terrible, no alternatives have provided the same functionality so far. More...
|
| |
| subroutine | cv_advection::pack_loc (LOC_F, T_ALL, NPHASE, IPT, IGOT_T_PACK) |
| | Copies memory into the same large array to then perform a projection from CV to FE. More...
|
| |
| subroutine | cv_advection::unpack_loc (LOC_F, T_ALL, NPHASE, IPT, IGOT_T_PACK, IGOT_T_CONST, IGOT_T_CONST_VALUE) |
| | If PACK then UNpack loc_f into T_ALL as long at IGOT_T==1 and STORE and not already in storage. More...
|
| |
| subroutine | cv_advection::pack_or_unpack_loc (LOC_F, T_ALL, NPHASE, NFIELD, IPT, PACK, STORE, IGOT_T) |
| | If PACK then pack T_ALL into LOC_F as long at IGOT_T==1 and STORE and not already in storage. More...
|
| |
| subroutine | cv_advection::pack_loc_all1 (LOC_F, field1, oldfield1, field2, oldfield2, field3, oldfield3, IGOT_T_PACK, use_volume_frac_T2, nfield) |
| | This subroutine is for fields that have already size final_phase - 1 Checks if the fields are constant or not, stored in IGOT_T_PACK, based on that introduces the field into LOC_F to later on apply the limiters on all the fields at once. More...
|
| |
| subroutine | cv_advection::pack_loc_all2 (LOC_F, field1, oldfield1, field2, oldfield2, field3, oldfield3, IGOT_T_PACK, use_volume_frac_T2, start_phase, final_phase, nodi) |
| | This subrotuine is for fields that are bigger than final_phase - start_phase Checks if the fields are constant or not, stored in IGOT_T_PACK, based on that introduces the field into LOC_F to later on apply the limiters on all the fields at once. More...
|
| |
| subroutine | cv_advection::pack_loc_all3 (LOC_F, field1, oldfield1, field2, oldfield2, field3, oldfield3, IGOT_T_PACK, use_volume_frac_T2, start_phase, final_phase, nodi) |
| | This subrotuine is for fields that are bigger than final_phase - start_phase Checks if the fields are constant or not, stored in IGOT_T_PACK, based on that introduces the field into LOC_F to later on apply the limiters on all the fields at once. This one is for integer fields. More...
|
| |
| subroutine | i_pack_loc (LOC_F, T_ALL, NPHASE, IPT, IGOT_T_PACK) |
| | If PACK then pack T_ALL into LOC_F as long at IGOT_T==1 and STORE and not already in storage. More...
|
| |
| subroutine | cv_advection::i_pack_loc (LOC_F, T_ALL, NPHASE, IPT, IGOT_T_PACK) |
| | If PACK then pack T_ALL into LOC_F as long at IGOT_T==1 and STORE and not already in storage. More...
|
| |
| subroutine | cv_advection::unpack_loc_all (LOC_F, field1, oldfield1, field2, oldfield2, field3, oldfield3, IGOT_T_PACK, IGOT_T_CONST, IGOT_T_CONST_VALUE, use_volume_frac_T2, nfield) |
| | If PACK then UNpack loc_f into T_ALL as long at IGOT_T==1 and STORE and not already in storage. Checks if the fields are constant or not, stored in IGOT_T_PACK, based on that introduces the LOC_F into the field or use a constant value. This is after the limiters have been applied. More...
|
| |
| integer function | cv_advection::cv_count_faces (Mdims, CV_ELE_TYPE, CV_GIdims) |
| | This subroutine counts then number of faces in the control volume space. More...
|
| |
| subroutine | cv_advection::find_other_side_fast (CV_OTHER_LOC, CV_NLOC, INTEGRAT_AT_GI, X_NLOC, X_NDGLN, CV_SNLOC, CVFEM_ON_FACE, X_SHARE, ELE, ELE2, FINELE, COLELE, DISTCONTINUOUS_METHOD) |
| | We are on the boundary or next to another element. Determine CV_OTHER_LOC CVFEM_ON_FACE(CV_KLOC,GI)=.TRUE. if CV_KLOC is on the face that GI is centred on. Look for these nodes on the other elements. ELE2=0 also when we are between elements but are trying to integrate across the middle of a CV. More...
|
| |
| subroutine | cv_advection::find_other_side (CV_OTHER_LOC, CV_NLOC, U_OTHER_LOC, U_NLOC, MAT_OTHER_LOC, INTEGRAT_AT_GI, X_NLOC, XU_NLOC, X_NDGLN, XU_NDGLN, CV_SNLOC, CVFEM_ON_FACE, X_SHARE, ELE, ELE2, FINELE, COLELE, DISTCONTINUOUS_METHOD) |
| | We are on the boundary or next to another element. Determine CV_OTHER_LOC, U_OTHER_LOC. CVFEM_ON_FACE(CV_KLOC,GI)=.TRUE. if CV_KLOC is on the face that GI is centred on. Look for these nodes on the other elements. ELE2=0 also when we are between elements but are trying to integrate across the middle of a CV. More...
|
| |
| subroutine | cv_advection::proj_cv_to_fem (packed_state, fempsi, psi, Mdims, CV_GIdims, CV_funs, Mspars, ndgln, igetct, X, mass_ele, mass_mn_pres, tracer, psi_ave, psi_int, activate_limiters) |
| | Calls to generate the transport equation for the saturation. Embeded an FPI with backtracking method is uncluded Subroutine description: (1) determine FEMT (finite element wise) etc from T (control volume wise) (2) (optional) calculate psi_int (area) and psi_ave (barycentre) over each CV. More...
|
| |
| subroutine | cv_advection::dg_derivs_all1 (FEMT, FEMTOLD, DTX_ELE, DTOLDX_ELE, NDIM, NPHASE, NCOMP, TOTELE, CV_NDGLN, XCV_NDGLN, X_NLOC, X_NDGLN, CV_NGI, CV_NLOC, CVWEIGHT, N, NLX, NLY, NLZ, X_N, X_NLX, X_NLY, X_NLZ, X_NONODS, X, Y, Z, NFACE, FACE_ELE, CV_SLOCLIST, X_SLOCLIST, CV_SNLOC, X_SNLOC, WIC_T_BC, SUF_T_BC, SBCVNGI, SBCVFEN, SBWEIGH, X_SBCVFEN, X_SBCVFENSLX, X_SBCVFENSLY, get_gradU, state, P0Mesh) |
| | calculates derivatives of vector fields More...
|
| |
| subroutine | cv_advection::dg_derivs_all2 (FEMT, FEMTOLD, DTX_ELE, DTOLDX_ELE, NDIM, NPHASE, TOTELE, CV_NDGLN, XCV_NDGLN, X_NLOC, X_NDGLN, CV_NGI, CV_NLOC, CVWEIGHT, N, NLX, NLY, NLZ, X_N, X_NLX, X_NLY, X_NLZ, X_NONODS, X, Y, Z, NFACE, FACE_ELE, CV_SLOCLIST, X_SLOCLIST, CV_SNLOC, X_SNLOC, WIC_T_BC, SUF_T_BC, SBCVNGI, SBCVFEN, SBWEIGH, X_SBCVFEN, X_SBCVFENSLX, X_SBCVFENSLY, P0Mesh) |
| | Computes the derivatives of vector fields. More...
|
| |
| subroutine | cv_advection::diffus_cal_coeff (DIFF_COEF_DIVDX, DIFF_COEFOLD_DIVDX, CV_NLOC, MAT_NLOC, NPHASE, MAT_NDGLN, SMATFEN, SCVFEN, GI, NDIM, TDIFFUSION, HDC, T_CV_NODJ, T_CV_NODI, TOLD_CV_NODJ, TOLD_CV_NODI, ELE, ELE2, CVNORMX_ALL, LOC_DTX_ELE_ALL, LOC_DTOLDX_ELE_ALL, LOC2_DTX_ELE_ALL, LOC2_DTOLDX_ELE_ALL, LOC_WIC_T_BC, CV_OTHER_LOC, MAT_OTHER_LOC, CV_SNLOC, CV_SLOC2LOC, on_domain_boundary, between_elements, has_anisotropic_diffusivity) |
| | This sub calculates the effective diffusion coefficientd DIFF_COEF_DIVDX, DIFF_COEFOLD_DIVDX based on a non-linear method and a non-oscillating scheme. It requires the derivatives of the field obtained using DG_DERIVS_ALL DG_DERIVS_ALL. More...
|
| |
| subroutine | cv_advection::linear_high_diffus_cal_coeff_stress_or_tensor (STRESS_IJ_ELE_EXT, S_INV_NNX_MAT12, STRESS_FORM, STRESS_FORM_STAB, ZERO_OR_TWO_THIRDS, U_SNLOC, U_NLOC, CV_SNLOC, NPHASE, SBUFEN_REVERSED, SBCVFEN_REVERSED, SDETWEI, SBCVNGI, NDIM, SLOC_UDIFFUSION, SLOC_UDIFFUSION_VOL, SLOC2_UDIFFUSION, SLOC2_UDIFFUSION_VOL, DIFF_GI_ADDED, ON_BOUNDARY, SNORMXN_ALL) |
| | This sub calculates the effective diffusion coefficientd STRESS_IJ_ELE_EXT it only works for between element contributions. based on a high order scheme. The matrix S_INV_NNX_MAT12 is used to calculate the rows of the matrix with STRESS_IJ_ELE_EXT. This implements the stress and tensor form of diffusion and calculates a jump conidition. which is in DIFF_COEF_DIVDX, DIFF_COEFOLD_DIVDX The coefficient are in N_DOT_DKDU, N_DOT_DKDUOLD. look at the manual DG treatment of viscocity. More...
|
| |
| subroutine | cv_advection::calc_stress_ten (STRESS_IJ, ZERO_OR_TWO_THIRDS, NDIM, UFENX_ILOC, UFENX_JLOC, TEN_XX, TEN_VOL) |
| | determine stress form of viscocity... More...
|
| |
| subroutine | cv_advection::calc_stress_ten_reduce (STRESS_IJ, ZERO_OR_TWO_THIRDS, NDIM, FEN_TEN_XX, FEN_TEN_VOL, UFENX_JLOC) |
| | determine stress form of viscocity... More...
|
| |
| subroutine | cv_advection::cal_lim_vol_adjust (TMIN_STORE, TMIN, T, TMIN_NOD, RESET_STORE, MASS_CV, CV_NODI_IPHA, CV_NODJ_IPHA, IPHASE, CV_NONODS, INCOME) |
| | Adjust TMIN to take into account different sized CV's. if RESET_STORE then reset TMIN to orginal values. More...
|
| |
| subroutine | cv_advection::dgsimplnorm_all (NLOC, SNLOC, NDIM, XL_ALL, XSL_ALL, NORMX_ALL) |
| | Form approximate surface normal (NORMX_ALL(1),NORMX_ALL(2),NORMX_ALL(3)) More...
|
| |
| subroutine | cv_advection::dgsimplnorm (ELE, SILOC2ILOC, NLOC, SNLOC, XONDGL, X, Y, Z, NORMX, NORMY, NORMZ) |
| | Form approximate surface normal (NORMX,NORMY,NORMZ) More...
|
| |
| subroutine | cv_advection::isotropic_limiter_all (T_ALL, TOLD_ALL, T2_ALL, T2OLD_ALL, DEN_ALL, DENOLD_ALL, IGOT_T2, NPHASE, CV_NONODS, nsmall_colm, SMALL_CENTRM, SMALL_FINDRM, SMALL_COLM, STOTEL, CV_SNLOC, CV_SNDGLN, SUF_T_BC_ALL, SUF_T2_BC_ALL, SUF_D_BC_ALL, WIC_T_BC_ALL, WIC_T2_BC_ALL, WIC_D_BC_ALL, MASS_CV, TOLDUPWIND_MAT_ALL, DENOLDUPWIND_MAT_ALL, T2OLDUPWIND_MAT_ALL, TUPWIND_MAT_ALL, DENUPWIND_MAT_ALL, T2UPWIND_MAT_ALL) |
| | Computes the limited values at the interface, not as generic as the anisotropic one and never used actually... More...
|
| |
| subroutine | surro_cv_minmax (TMAX_ALL, TMIN_ALL, TOLDMAX_ALL, TOLDMIN_ALL, DENMAX_ALL, DENMIN_ALL, DENOLDMAX_ALL, DENOLDMIN_ALL, T2MAX_ALL, T2MIN_ALL, T2OLDMAX_ALL, T2OLDMIN_ALL, T_ALL, TOLD_ALL, T2_ALL, T2OLD_ALL, DEN_ALL, DENOLD_ALL, IGOT_T2, NPHASE, CV_NONODS, FINACV, COLACV, STOTEL, CV_SNLOC, CV_SNDGLN, SUF_T_BC_ALL, SUF_T2_BC_ALL, SUF_D_BC_ALL, WIC_T_BC_ALL, WIC_T2_BC_ALL, WIC_D_BC_ALL, TMIN_NOD_ALL, TMAX_NOD_ALL, TOLDMIN_NOD_ALL, TOLDMAX_NOD_ALL, T2MIN_NOD_ALL, T2MAX_NOD_ALL, T2OLDMIN_NOD_ALL, T2OLDMAX_NOD_ALL, DENMIN_NOD_ALL, DENMAX_NOD_ALL, DENOLDMIN_NOD_ALL, DENOLDMAX_NOD_ALL) |
| | For each node, find the largest and smallest value of T and DENSITY for both the current and previous timestep, out of the node value and all its surrounding nodes including Dirichlet b.c's. More...
|
| |
| subroutine | calc_limit_matrix_max_min (TMAX_ALL, TMIN_ALL, DENMAX_ALL, DENMIN_ALL, T2MAX_ALL, T2MIN_ALL, T_ALL, T2_ALL, DEN_ALL, IGOT_T2, NPHASE, CV_NONODS, TMIN_NOD_ALL, TMAX_NOD_ALL, T2MIN_NOD_ALL, T2MAX_NOD_ALL, DENMIN_NOD_ALL, DENMAX_NOD_ALL, NSMALL_COLM, SMALL_FINDRM, SMALL_COLM, TUPWIND_MAT_ALL, DENUPWIND_MAT_ALL, T2UPWIND_MAT_ALL, MASS_CV) |
| | Populate limiting matrix based on max and min values For each node, find the largest and smallest value of T and DENSITY for both the current and previous timestep, out of the node value and all its surrounding nodes including Dirichlet b.c's. More...
|
| |
| subroutine | cv_advection::calc_sele (ELE, ELE3, SELE, CV_SILOC, CV_ILOC, U_SLOC2LOC, CV_SLOC2LOC, FACE_ELE, gi, CV_funs, Mdims, CV_GIdims, CV_NDGLN, U_NDGLN, CV_SNDGLN, U_SNDGLN) |
| | Calculate surface element, surface control volume: SELE, CV_SILOC, U_SLOC2LOC, CV_SLOC2LOC for a face on the boundary of the domain. More...
|
| |
| subroutine | cv_advection::put_in_ct_rhs (GET_C_IN_CV_ADVDIF_AND_CALC_C_CV, ct_rhs_phase_cv_nodi, ct_rhs_phase_cv_nodj, final_phase, Mdims, CV_funs, ndgln, Mmat, GI, between_elements, on_domain_boundary, ELE, ELE2, SELE, HDC, MASS_ELE, JCOUNT_KLOC, JCOUNT_KLOC2, ICOUNT_KLOC, ICOUNT_KLOC2, C_JCOUNT_KLOC, C_JCOUNT_KLOC2, C_ICOUNT_KLOC, C_ICOUNT_KLOC2, U_OTHER_LOC, U_SLOC2LOC, CV_SLOC2LOC, SCVDETWEI, CVNORMX_ALL, DEN_ALL, CV_NODI, CV_NODJ, WIC_U_BC_ALL, WIC_P_BC_ALL, SUF_P_BC_ALL, UGI_COEF_ELE_ALL, UGI_COEF_ELE2_ALL, NDOTQ, NDOTQOLD, LIMT, LIMDT, LIMDTOLD, LIMT_HAT, NDOTQ_HAT, FTHETA_T2, ONE_M_FTHETA_T2OLD, FTHETA_T2_J, ONE_M_FTHETA_T2OLD_J, integrate_other_side_and_not_boundary, loc_u, THETA_VEL, UDGI_IMP_ALL, RCON, RCON_J, NDOTQ_IMP, X_ALL, SUF_D_BC_ALL, gravty) |
| | This subroutine caculates the discretised cty eqn acting on the velocities i.e. MmatCT, MmatCT_RHS It also computes the gradient matrix using the DCVFE method. More...
|
| |
| subroutine | introduce_c_cv_boundary_conditions (Bound_ele_correct) |
| | This subroutine populates Bound_ele_correct and Bound_ele2_correct to properly apply the BCs when creating the MmatC_CV matrix. More...
|
| |
| subroutine | cv_advection::calc_anisotrop_lim (Mmat, T_ALL, TOLD_ALL, DEN_ALL, DENOLD_ALL, T2_ALL, T2OLD_ALL, FEMT_ALL, FEMTOLD_ALL, FEMDEN_ALL, FEMDENOLD_ALL, FEMT2_ALL, FEMT2OLD_ALL, USE_FEMT, TUPWIND_MAT_ALL, TOLDUPWIND_MAT_ALL, DENUPWIND_MAT_ALL, DENOLDUPWIND_MAT_ALL, T2UPWIND_MAT_ALL, T2OLDUPWIND_MAT_ALL, IGOT_T2, NPHASE, CV_NONODS, CV_NLOC, TOTELE, CV_NDGLN, SMALL_FINDRM, SMALL_CENTRM, SMALL_COLM, NSMALL_COLM, X_NDGLN, X_NONODS, NDIM, X_ALL, XC_CV_ALL, use_reflect) |
| | For the anisotropic limiting scheme we find the upwind values by interpolation using the subroutine FINPTS or IFINPTS; the upwind value for each node pair is stored in the matrices TUPWIND AND. More...
|
| |
| subroutine | calc_anisotrop_lim_vals (Mmat, T_ALL, FEMT_ALL, USE_FEMT, TUPWIND_ALL, NFIELD, NONODS, CV_NLOC, TOTELE, CV_NDGLN, SMALL_FINDRM, SMALL_COLM, NSMALL_COLM, X_NDGLN, X_NONODS, NDIM, X_ALL, XC_CV_ALL, use_reflect) |
| |
| subroutine | calc_anisotrop_lim_vals2 (Mmat, T_ALL, FEMT_ALL, USE_FEMT, TUPWIND_ALL, NFIELD, NONODS, NLOC, NGI, TOTELE, NDGLNO, FINDRM, COLM, NCOLM, X_NDGLN, X_NONODS, NDIM, X_ALL, XC_CV_ALL, N, NLX_ALL, WEIGHT, use_reflect) |
| |
| subroutine | getstoreelewei (PSI_ALL, NFIELD, NONODS, NLOC, TOTELE, NDGLNO, MATPSI_ALL, FINDRM, COLM, NCOLM, BOUND, ELEMATPSI, ELEMATWEI) |
| | use the stored interpolation coeffs to caclulate MATPSI. This sub finds the matrix values MATPSI for a given point on the stencil More...
|
| |
| subroutine | minmaxelewic (PSI_ALL, NONODS, NLOC, TOTELE, NDGLNO, FINDRM, COLM, NCOLM, MINPSI, MAXPSI) |
| | This sub calculates the max and min values of PSI in local vacinity of an element. More...
|
| |
| subroutine | finptsstore (PSI_ALL, FEMPSI_ALL, USE_FEMPSI, NFIELD, NONODS, NLOC, NGI, TOTELE, NDGLNO, MATPSI_ALL, FINDRM, COLM, NCOLM, NDIM, X_NDGLN, X_NONODS, X_ALL, XC_CV_ALL, N, NLX_ALL, WEIGHT, FINDELE, COLELE, NCOLEL, ELEMATPSI, ELEMATWEI, IGETSTOR, BOUND, REFLECT) |
| | This sub finds the matrix values MATPSI for a given point on the stencil IF IGETSTOR=1 then get ELEMATPSI,ELEMATWEI. More...
|
| |
| subroutine | matptsstore (MATPSI_ALL, COUNT, NFIELD, NOD, XNOD, PSI_ALL, FEMPSI_ALL, USE_FEMPSI, NONODS, X_NONODS, NLOC, TOTELE, X_NDGLN, NDGLNO, X1_ALL, X2_ALL, NORMX1_ALL, X_ALL, FINDELE, COLELE, NCOLEL, MINPSI, MAXPSI, ELEWIC, LOCCORDSK, BOUND, REFLECT, NDIM) |
| | This sub calculates the value of PSI that would be at the other side of the stencil if we had a linear variation and within a single element. IF BOUND then make locally bounded. More...
|
| |
| subroutine | philnodele (NONODS, FINDELE, COLELE, NCOLEL, MXNCOLEL, TOTELE, NLOC, NDGLNO, NLIST, INLIST) |
| | This sub calculates the node to element list FINDELE,COLELE. More...
|
| |
| subroutine | conv_quad_to_lin_tri_tet (ndgln_p2top1, nloc_lin, cv_nloc, sub_lin_totele) |
| | convert quadratic element into a series of linear elements... More...
|
| |
| subroutine | cv_advection::triloccords (Xp, Yp, Zp, N1, N2, N3, N4, X1, Y1, Z1, X2, Y2, Z2, X3, Y3, Z3, X4, Y4, Z4) |
| |
| subroutine | cv_advection::triloccords2d (Xp, Yp, N1, N2, N3, X1, Y1, X2, Y2, X3, Y3) |
| |
| logical function | cv_advection::shock_front_in_ele (ele, Mdims, sat, ndgln, Imble_frac) |
| | Detects whether the element has a shockfront or not. More...
|
| |
| subroutine | cv_advection::generate_laplacian_system (Mdims, packed_state, ndgln, Mmat, Mspars, CV_funs, CV_GIdims, Sigma_field, Solution, K_fields, F_fields, intface_val_type) |
| | : In this method we assemble and solve the Laplacian system using at least P1 elements The equation solved is the following: Div sigma Grad X = - SUM (Div K Grad F) with Neuman BCs = 0 where K and F are passed down as a vector. Therefore for n entries the SUM will be performed over n fields Example: F = (3, nphase, cv_nonods) would include three terms in the RHS and the same for K If harmonic average then we perform the harmonic average of sigma and K IMPORTANT: This subroutine requires the PHsparsity to be generated Note that this method solves considering FE fields. If using CV you may incur in an small error. More...
|
| |
| real function | get_diff_coef_divdx (intface_type, HDC, W_i, W_j, Value_i, Value_j, sigma_i, sigma_j) |
| | : Computes the effective value of K or sigma. at the interface between CVs Based on the intface_type integer: 0 = no interpolation; 1 Harmonic mean; !20 for SelfPotential solver, harmonic mean considering charge; negative normal mean More...
|
| |
| subroutine | cv_advection::scvdetnx (Mdims, ndgln, X_ALL, CV_funs, CV_GIdims, on_domain_boundary, between_elements, ELE, GI, SCVDETWEI, CVNORMX_ALL, XC_ALL, X_NOD, X_NODJ) |
| |
| subroutine | cv_advection::saturation_assemb (petsc_ACV, state, packed_state, final_phase, Mdims, CV_GIdims, CV_funs, Mspars, ndgln, Mdisopt, Mmat, upwnd, saturation, sat_prev, velocity, density, DEN_ALL, DENOLD_ALL, DT, SUF_SIG_DIAGTEN_BC, CV_P, SOURCT_ALL, VOLFRA_PORE, VAD_parameter, Phase_with_Pc, eles_with_pipe, pipes_aux, assemble_collapsed_to_one_phase, getResidual) |
| |
| subroutine | get_int_vel_porous_vel (NDOTQNEW, NDOTQ, INCOME, LOC_T_I, LOC_T_J, LOC_NU, SLOC_NU, UGI_COEF_ELE_ALL, I_inv_adv_coef, J_inv_adv_coef, UDGI_ALL, MASS_CV_I, MASS_CV_J) |
| | Computes the flux between CVs for porous media. NDOTQNEW contains the fluxes for a given gauss integration point. More...
|
| |
| subroutine | get_neigbouring_lists (JCOUNT_KLOC, ICOUNT_KLOC, C_JCOUNT_KLOC, C_ICOUNT_KLOC) |
| |