Nodes of different colours represent the following:
Solid arrows point from a procedure to one which it calls. Dashed
arrows point from an interface to procedures which implement that interface.
This could include the module procedures in a generic interface or the
implementation in a submodule of an interface in a parent module.
Where possible, edges connecting nodes are
given different colours to make them easier to distinguish in
large graphs.
Source Code
function union_platform(a,b,rc)type(obs_platform)::union_platformtype(obs_platform),intent(in)::atype(obs_platform),intent(in)::binteger,optional,intent(out)::rccharacter(len=ESMF_MAXSTR),allocatable::field_name_loc(:,:)integer::nfield,nentry_nameinteger,allocatable::tag(:)integer::i,j,kinteger::statusunion_platform=copy_platform_nckeys(a,_RC)nfield=a%ngeoval+b%ngeovalallocate(tag(b%ngeoval))tag(:)=1! truek=nfielddo j=1,b%ngeovaldo i=1,a%ngeovalif(trim(b%field_name(1,j))==trim(a%field_name(1,i)))thentag(j)=0endif enddo if(tag(j)==0)k=k-1enddounion_platform%ngeoval=knfield=knentry_name=union_platform%nentry_nameif(allocated(union_platform%field_name))deallocate(union_platform%field_name)allocate(union_platform%field_name(nentry_name,nfield))do i=1,a%ngeovalunion_platform%field_name(:,i)=a%field_name(:,i)enddo if(nfield>a%ngeoval)thenk=a%ngeovaldo j=1,b%ngeovalif(tag(j)==1)thenk=k+1union_platform%field_name(:,k)=b%field_name(:,j)end if enddo end if_RETURN(_SUCCESS)end function union_platform