dicmj.f
: Domain Integral CoMpute J¶
Description¶
domain_compute:
drive execution of element routine to compute j and i-integrals for a single domain
Calling Tree¶
c ***************************************************************
c * *
c * -dicmj.f *
c * -di_trans_nodvals *
c * -vec_ops (zero_vector.f) *
c * -dielem *
c * -dielem_a.f *
c * -dielem_b.f *
c * -dielem_c.f *
c * *
c ***************************************************************
Procedure¶
- loop over all structure elements. if element is involved in integral computations, call element dependent routine.
build copy of element coordinates, displacements, velocities, accelerations, q-values from global data. zero load terms that correspond to constrained dof. if we have temperature loadings, get temps for element nodes (node values + element uniform value). rotate displacements, velocities and accelerations from constraint-compatible to global coordinates. obtain element nodal values of stress work density and strain from structure node-value arrays.
e_coord(3,num_enodes)
: element nodal coordinatessnodes(num_enodes)
: element nodal numbersq_element(num_enodes)
: element nodal q-valuese_displ(3,num_enodes)
: element nodal displacementse_vel(3,num_enodes)
: element nodal velocitiese_accel(3,num_enodes)
: element nodal accelerationse(num_enodes)
: element nodal Young’s modulusnu(num_enodes)
: element nodal Poisson’s ratioe_force(num_enodes)
: element nodal forcee_node_temps(num_enodes)
: element nodal temperaturese_alpha_ij(6,num_enodes)
: element nodal thermal expansion coefficientselem_nod_swd(num_enodes)
: element nodal values of stress work densityelem_nod_strains(6,num_enodes)
: element nodal strains
if necessary, transform nodal values from constraint-compatible coordinates to global coordinates.
call di_trans_nodvals( e_displ(1,enode), trnmat(snode)%mat(1,1))
call di_trans_nodvals( e_vel(1,enode), trnmat(snode)%mat(1,1))
call di_trans_nodvals( e_accel(1,enode), trnmat(snode)%mat(1,1))
c***************************************************************
c *
c subroutine to transform a 3x1 vector of constraint- *
c compatible-coordinate-system values to global-coordinate- *
c system values. the routine premultiplies the incoming *
c constraint-compatible values by the transpose of the stored *
c global-to-constraint coordinate system rotation matrix. *
c *
c***************************************************************
- for problems with temperature loads, pull out temperatures of element nodes and set the thermal expansion coefficients at element nodes. remove reference temperatures of model nodes.
- crack-face tractions. the contribution to J arising from crack-face tractions is calculated element-by-element using the equivalent nodal loads on each element face computed during setup of load step for applied pressures, surface tractions and body forces. here we just get the element equiv. nodal forces. they are passed to element J routine which sorts out the loaded face. a similar procedure is used to compute the contribution to I.
call vec_ops( e_force,
& eq_node_forces(eq_node_force_indexes(elemno)),
& dummy, 3*num_enodes, 5 )
c ****************************************************************
c * *
c * perform simple vector-vector operations on single or *
c * double precision vectors (based on the port) *
c * *
c ****************************************************************
subroutine vec_ops( veca, vecb, vecc, n, opcode )
c opcode v: a = b
determine if we really need to process element based on q-values, nodal velocities, accelerations and specified temperature loadings.
gather element stresses, histories, properties and 3x3 rotation matrices from polar decompositions at each gauss point of element for geonl
e_stress(nstrs * num_gpts)
: element stresses at gauss pointselem_hist(hist_size * num_gpts)
: element histories at gauss pointse_props(mxelpr)
: element propertiese_rots(9*num_gpts)
: rotation matrices
gather element strains at integration points. and store in tensor form. convert engineering (total) strains of off-diagonal terms to tensor strains.
e_strain(9,num_gpts)
: element strains at gauss points in tensor form
for crack-face loading, make a copy of the tractions input by the user in the domain definition. if none was input, dielem_c.f automatically uses the equivalent nodal loads used to solve the boundary value problem.
cf_load(1) = cf_tractions(1)
cf_load(2) = cf_tractions(2)
cf_load(3) = cf_tractions(3)
- call the element routine to compute contribution to the j-integral and or i-integral for domain
call dielem( e_coord, q_element, e_displ, e_vel, e_accel,
& e_force, e_stress, elem_hist, e_props, e_props,
& e_props, e_rots, hist_size, domain_rot, iout,
& e_jresults, e_node_temps, elem_temps, e_alpha_ij,
& ierr, element, debug_elements, one_point_rule,
& geonl, numrow_sig, snodes, elem_nod_swd,
& elem_nod_strains, omit_ct_elem, fgm_e, fgm_nu,
& e_strain, e, e_front, nu, nu_front, front_nodes,
& num_front_nodes, front_coords, domain_origin,
& domain_type, front_order, e_iresults, comput_i,
& comput_j, cf_traction_flags, cf_load,
& front_elem_flag, expanded_front_nodes,
& myid, numprocs, crack_curvature, face_loading,
& seg_curves_flag, process_temperatures,
& max_exp_front )
- print values as required based on user specified flags.
2a. J-integral results: calculate stress intensity factor K, from J
2b. interaction-integral results: calculate K from relationship with interaction integral
c the 8 terms for I-integral results are stored
c in array e_iresults(8,7) as follows:
c
c value auxiliary field
c
c iiterms(i,1): KI plane stress
c iiterms(i,2): KI plane stress
c iiterms(i,3): KII plane stress
c iiterms(i,4): KII plane stress
c iiterms(i,5): KIII anti-plane shear
c iiterms(i,6): T11,T33 plane stress
c iiterms(i,7): T11,T33 plane strain
c iiterms(i,8): T13 anti-plane strain
2c. compute J-values from K-values
- print sum of values from all elements in domain, and J, I for domain