smooth_interior_vtx Module Procedure

module procedure smooth_interior_vtx module subroutine smooth_interior_vtx(iv, msh, c2v, shared_flag, all_tets)

Uses

  • proc~~smooth_interior_vtx~~UsesGraph proc~smooth_interior_vtx smooth_interior_vtx module~class_cell class_cell proc~smooth_interior_vtx->module~class_cell module~class_keytable class_keytable proc~smooth_interior_vtx->module~class_keytable module~class_vector class_vector proc~smooth_interior_vtx->module~class_vector module~tools_mesh_optimize tools_mesh_optimize proc~smooth_interior_vtx->module~tools_mesh_optimize module~tools_mesh_basics tools_mesh_basics proc~smooth_interior_vtx->module~tools_mesh_basics module~class_connectivity class_connectivity proc~smooth_interior_vtx->module~class_connectivity module~tools_mesh_check tools_mesh_check proc~smooth_interior_vtx->module~tools_mesh_check module~class_psblas class_psblas proc~smooth_interior_vtx->module~class_psblas module~class_vertex class_vertex proc~smooth_interior_vtx->module~class_vertex module~class_mesh class_mesh proc~smooth_interior_vtx->module~class_mesh module~class_cell->module~class_psblas module~class_vector->module~class_psblas module~tools_mesh_optimize->module~class_connectivity module~tools_mesh_optimize->module~class_vertex module~tools_mesh_optimize->module~class_mesh module~class_bc class_bc module~tools_mesh_optimize->module~class_bc module~class_iterating class_iterating module~tools_mesh_optimize->module~class_iterating module~tools_mesh_basics->module~class_connectivity module~class_connectivity->module~class_psblas module~tools_mesh_check->module~class_psblas module~tools_mesh_check->module~class_mesh module~class_scalar_field class_scalar_field module~tools_mesh_check->module~class_scalar_field module~class_stopwatch class_stopwatch module~class_psblas->module~class_stopwatch module~tools_psblas tools_psblas module~class_psblas->module~tools_psblas module~class_vertex->module~class_vector module~class_vertex->module~class_psblas module~class_mesh->module~class_cell module~class_mesh->module~class_keytable module~class_mesh->module~class_vector module~class_mesh->module~class_connectivity module~class_mesh->module~class_psblas module~class_mesh->module~class_vertex module~class_surface class_surface module~class_mesh->module~class_surface module~class_least_squares class_least_squares module~class_mesh->module~class_least_squares psb_base_mod psb_base_mod module~class_mesh->psb_base_mod module~grid_interface grid_interface module~class_mesh->module~grid_interface module~class_face class_face module~class_mesh->module~class_face module~class_stopwatch->module~tools_psblas module~class_stopwatch->psb_base_mod module~tools_psblas->psb_base_mod psb_krylov_mod psb_krylov_mod module~tools_psblas->psb_krylov_mod psb_prec_mod psb_prec_mod module~tools_psblas->psb_prec_mod module~class_bc->module~class_psblas module~class_motion class_motion module~class_bc->module~class_motion module~class_bc_math class_bc_math module~class_bc->module~class_bc_math module~class_bc_wall class_bc_wall module~class_bc->module~class_bc_wall module~class_surface->module~class_connectivity module~class_cylinder class_cylinder module~class_surface->module~class_cylinder module~class_plane class_plane module~class_surface->module~class_plane module~class_least_squares->module~class_connectivity module~class_least_squares->module~class_psblas module~class_scalar_field->module~class_psblas module~class_scalar_field->module~class_mesh module~class_scalar_field->module~class_bc module~class_field class_field module~class_scalar_field->module~class_field module~class_dimensions class_dimensions module~class_scalar_field->module~class_dimensions module~class_material class_material module~class_scalar_field->module~class_material module~class_iterating->module~class_psblas module~units_interface units_interface module~grid_interface->module~units_interface module~object_interface object_interface module~grid_interface->module~object_interface module~class_face->module~class_psblas module~class_motion->module~class_vector module~class_motion->module~class_psblas module~class_cylinder->module~class_vector module~class_cylinder->module~class_psblas module~class_cylinder->module~class_vertex module~class_field->module~class_psblas module~class_field->module~class_mesh module~class_field->module~class_bc module~class_field->module~grid_interface module~class_field->module~class_dimensions module~class_field->module~class_material module~class_dimensions->module~class_psblas module~class_bc_math->module~class_psblas module~class_material->module~class_psblas matlib matlib module~class_material->matlib module~class_bc_wall->module~class_vector module~class_bc_wall->module~class_psblas module~class_bc_wall->module~class_mesh module~class_bc_wall->module~class_dimensions module~class_bc_wall->module~class_bc_math module~class_bc_wall->module~class_material module~units_interface->module~object_interface module~class_plane->module~class_vector module~class_plane->module~class_psblas

$ j = 0 $ random_iteration: do $ j = j + 1 $ $ ! set up connectivity array and check if any cells are tangled $ local_tangled = 0 $ $ update_volume: do itet = 1,num_incident_tet $ $ if ( shared_flag(iv) ) then ! use global id's set above $ ic = ic2v(itet) $ $ !lookup vertex numbers, global cell and vertex id's $ call get_kt_row (msh%ov2c_sup, ic, iv2c) $ $ ! make a copy to dereference iv2c $ index_copy(1:4) = iv2c(1:4) $

$ call psb_glob_to_loc(index_copy,msh%desc_v,info) $ $ else $ ic = ic2v(itet) ! look up cell id number from ith conn $ $ !get the vertices for this cell $ call get_ith_conn(iv2c,msh%v2c,ic) $ $ ! make a copy to dereference iv2c $ index_copy(1:4) = iv2c(1:4) $ endif $ $ ! check to see if the cell is inverted $ iv1 = index_copy(1) $ iv2 = index_copy(2) $ iv3 = index_copy(3) $ iv4 = index_copy(4) $ $ valid_flag = right_handed(vtx1, vtx2, vtx3, vtx4) $ $ if ( valid_flag /= 1 ) local_tangled = 1 $ end do update_volume $ $ if ( ( local_tangled == 0 ) .or. (j >=50 ) ) exit $ $ if ( local_tangled == 1 ) call optimize_vertex_rand(msh,c2v,iv) $

$ end do random_iteration $ $ deallocate(relative_numbering) $ $ deallocate( tet_pos,tet_verts) $ $ if ( allocated(idloc) ) deallocate(idloc) $ $ if ( allocated(idglob) ) deallocate(idglob) $

Arguments

Type IntentOptional AttributesName
integer, intent(in) :: iv
type(mesh), intent(inout) :: msh
type(connectivity), intent(in) :: c2v
logical, intent(in) :: shared_flag(:)
logical, intent(in) :: all_tets(:)

Calls

proc~~smooth_interior_vtx~~CallsGraph proc~smooth_interior_vtx smooth_interior_vtx interface~vector_ vector_ proc~smooth_interior_vtx->interface~vector_ interface~abort_psblas abort_psblas proc~smooth_interior_vtx->interface~abort_psblas interface~call_smooth call_smooth proc~smooth_interior_vtx->interface~call_smooth psb_glob_to_loc psb_glob_to_loc proc~smooth_interior_vtx->psb_glob_to_loc loc_to_glob_ loc_to_glob_ proc~smooth_interior_vtx->loc_to_glob_ interface~mypnum_ mypnum_ proc~smooth_interior_vtx->interface~mypnum_ interface~right_handed right_handed proc~smooth_interior_vtx->interface~right_handed psb_loc_to_glob psb_loc_to_glob proc~smooth_interior_vtx->psb_loc_to_glob proc~vector_ vector_ interface~vector_->proc~vector_ proc~abort_psblas abort_psblas interface~abort_psblas->proc~abort_psblas proc~mypnum_ mypnum_ interface~mypnum_->proc~mypnum_ psb_abort psb_abort proc~abort_psblas->psb_abort

Called by

proc~~smooth_interior_vtx~~CalledByGraph proc~smooth_interior_vtx smooth_interior_vtx interface~smooth_interior_vtx smooth_interior_vtx interface~smooth_interior_vtx->proc~smooth_interior_vtx

Contents

None