@@ -83,9 +83,16 @@ module boundary_conditions
8383 end interface extract_scalar_surface_field
8484
8585 interface has_surface_field
86- module procedure has_scalar_surface_field_specific, &
87- has_vector_surface_field_specific
86+ module procedure has_scalar_surface_field_by_bc_number, &
87+ has_vector_surface_field_by_bc_number, &
88+ has_scalar_surface_field_by_bc_name, &
89+ has_vector_surface_field_by_bc_name
8890 end interface
91+
92+ interface has_scalar_surface_field
93+ module procedure vector_has_scalar_surface_field_by_bc_number, &
94+ vector_has_scalar_surface_field_by_bc_name
95+ end interface has_scalar_surface_field
8996
9097 interface get_boundary_condition_count
9198 module procedure get_scalar_boundary_condition_count, &
@@ -792,9 +799,9 @@ function extract_vector_scalar_surface_field_by_name(field, bc_name, name, stat)
792799
793800 end function extract_vector_scalar_surface_field_by_name
794801
795- function has_scalar_surface_field_specific (field , n , name )
802+ function has_scalar_surface_field_by_bc_number (field , n , name )
796803 ! !< Tells whether a surface_field with the given is present
797- logical :: has_scalar_surface_field_specific
804+ logical :: has_scalar_surface_field_by_bc_number
798805 type (scalar_field), intent (in ):: field
799806 integer , intent (in ):: n
800807 character (len=* ), intent (in ):: name
@@ -808,19 +815,19 @@ function has_scalar_surface_field_specific(field, n, name)
808815 if (associated (bc% surface_fields)) then
809816 do i= 1 , size (bc% surface_fields)
810817 if (bc% surface_fields(i)% name== name) then
811- has_scalar_surface_field_specific = .true.
818+ has_scalar_surface_field_by_bc_number = .true.
812819 return
813820 end if
814821 end do
815822 end if
816823
817- has_scalar_surface_field_specific = .false.
824+ has_scalar_surface_field_by_bc_number = .false.
818825
819- end function has_scalar_surface_field_specific
826+ end function has_scalar_surface_field_by_bc_number
820827
821- function has_vector_surface_field_specific (field , n , name )
828+ function has_vector_surface_field_by_bc_number (field , n , name )
822829 ! !< Tells whether a surface_field with the given is present
823- logical :: has_vector_surface_field_specific
830+ logical :: has_vector_surface_field_by_bc_number
824831 type (vector_field), intent (in ):: field
825832 integer , intent (in ):: n
826833 character (len=* ), intent (in ):: name
@@ -834,19 +841,19 @@ function has_vector_surface_field_specific(field, n, name)
834841 if (associated (bc% surface_fields)) then
835842 do i= 1 , size (bc% surface_fields)
836843 if (bc% surface_fields(i)% name== name) then
837- has_vector_surface_field_specific = .true.
844+ has_vector_surface_field_by_bc_number = .true.
838845 return
839846 end if
840847 end do
841848 end if
842849
843- has_vector_surface_field_specific = .false.
850+ has_vector_surface_field_by_bc_number = .false.
844851
845- end function has_vector_surface_field_specific
852+ end function has_vector_surface_field_by_bc_number
846853
847- function has_scalar_surface_field (field , n , name )
854+ function vector_has_scalar_surface_field_by_bc_number (field , n , name )
848855 ! !< Tells whether a surface_field with the given is present
849- logical :: has_scalar_surface_field
856+ logical :: vector_has_scalar_surface_field_by_bc_number
850857 type (vector_field), intent (in ):: field
851858 integer , intent (in ):: n
852859 character (len=* ), intent (in ):: name
@@ -860,16 +867,79 @@ function has_scalar_surface_field(field, n, name)
860867 if (associated (bc% scalar_surface_fields)) then
861868 do i= 1 , size (bc% scalar_surface_fields)
862869 if (bc% scalar_surface_fields(i)% name== name) then
863- has_scalar_surface_field = .true.
870+ vector_has_scalar_surface_field_by_bc_number = .true.
864871 return
865872 end if
866873 end do
867874 end if
868875
869- has_scalar_surface_field = .false.
876+ vector_has_scalar_surface_field_by_bc_number = .false.
870877
871- end function has_scalar_surface_field
878+ end function vector_has_scalar_surface_field_by_bc_number
879+
880+ function has_scalar_surface_field_by_bc_name (field , bc_name , name )
881+ ! !< Tells whether a surface_field with the given name is present
882+ ! !< If the bc_name does not exist an error is given
883+ logical :: has_scalar_surface_field_by_bc_name
884+ type (scalar_field), intent (in ):: field
885+ character (len=* ), intent (in ):: bc_name, name
872886
887+ integer i
888+
889+ do i= 1 , size (field% bc% boundary_condition)
890+ if (field% bc% boundary_condition(i)% name== bc_name) then
891+ has_scalar_surface_field_by_bc_name = has_scalar_surface_field_by_bc_number(field, i, name)
892+ return
893+ end if
894+ end do
895+
896+ ewrite(- 1 ,* ) ' Unknown boundary condition: ' , name
897+ FLAbort(" Sorry!" )
898+
899+ end function has_scalar_surface_field_by_bc_name
900+
901+ function has_vector_surface_field_by_bc_name (field , bc_name , name )
902+ ! !< Tells whether a surface_field with the given name is present
903+ ! !< If the bc_name does not exist an error is given
904+ logical :: has_vector_surface_field_by_bc_name
905+ type (vector_field), intent (in ):: field
906+ character (len=* ), intent (in ):: bc_name, name
907+
908+ integer i
909+
910+ do i= 1 , size (field% bc% boundary_condition)
911+ if (field% bc% boundary_condition(i)% name== bc_name) then
912+ has_vector_surface_field_by_bc_name = has_vector_surface_field_by_bc_number(field, i, name)
913+ return
914+ end if
915+ end do
916+
917+ ewrite(- 1 ,* ) ' Unknown boundary condition: ' , name
918+ FLAbort(" Sorry!" )
919+
920+ end function has_vector_surface_field_by_bc_name
921+
922+ function vector_has_scalar_surface_field_by_bc_name (field , bc_name , name )
923+ ! !< Tells whether a scalar surface_field with the given name is present under a vector field bc
924+ ! !< If the bc_name does not exist an error is given
925+ logical :: vector_has_scalar_surface_field_by_bc_name
926+ type (vector_field), intent (in ):: field
927+ character (len=* ), intent (in ):: bc_name, name
928+
929+ integer i
930+
931+ do i= 1 , size (field% bc% boundary_condition)
932+ if (field% bc% boundary_condition(i)% name== bc_name) then
933+ vector_has_scalar_surface_field_by_bc_name = vector_has_scalar_surface_field_by_bc_number(field, i, name)
934+ return
935+ end if
936+ end do
937+
938+ ewrite(- 1 ,* ) ' Unknown boundary condition: ' , name
939+ FLAbort(" Sorry!" )
940+
941+ end function vector_has_scalar_surface_field_by_bc_name
942+
873943 integer function get_scalar_boundary_condition_count (field )
874944 ! !< Get number of boundary conditions of a scalar field
875945 type (scalar_field), intent (in ):: field
0 commit comments