Okay, thx for pointing out.

2009/11/30 Alberto Torres <[email protected]>

> Hi,
>
>    It seems that there is a problem in the FoX library, included in siesta,
> with some compilers.
>
> http://software.intel.com/en-us/forums/intel-fortran-compiler-for-linux-and-mac-os-x/topic/70208/
>
>    Try to switch to an older version or another compiler.
>
> Regards
>
>
> On Mon, Nov 30, 2009 at 6:19 AM, Ferdinand Rissner <[email protected]>wrote:
>
>> Hi,
>>
>> I think I observe the same problem here. Using the Intel Compiler 11.0 I
>> also had to modify siesta_force.F in order to compile siesta successfully.
>>
>> Jobs then abort almost immediately printing the error message
>>
>> "ERROR(FoX)
>> xml_AddAttribute: Invalid character in value" .
>>
>> I found that the error occurs in the loop
>>
>>   do i = 1,3
>>      call xml_NewElement(xf, "latticeVector")
>>      if (present(units)) then
>>        call xml_AddAttribute(xf, "units", units)
>>      else
>>        call xml_AddAttribute(xf, "units", U_ANGSTR)
>>      endif
>>      call xml_AddAttribute(xf, "dictRef", "cml:latticeVector")
>>      call xml_AddCharacters(xf, cell(:,i), fmt)
>>      call xml_EndElement(xf, "latticeVector")
>>    enddo
>>
>> in the subroutine cmlAddLatticedp in the file
>>
>> ~/siesta-3.0-b/Src/FoX/wcml/m_wcml_lattice.F90 .
>>
>> I inserted lines
>>
>>        write(6,*)"MYOUTPUT:",i,units
>>
>> before and after every call in this loop and found that "units" changes
>> from "siestaUnits:angstrom" to complete mess for i=1 after calling
>> xml_AddCharacters .
>>
>> Hope it helps,
>> Ferdinand
>>
>>
>> Ozan ARI wrote:
>>
>>> I digged around about the problem and found the file that causes the
>>> problem.
>>>
>>> The error comes from "m_wxml_core.f90" ...
>>> When i opened the file and search for error string then i found the
>>> if (.not.checkChars(value, xf%xds%xml_version)) call
>>> wxml_error("xml_AddAttribute: Invalid character in value")
>>>
>>> problem but i couldnot understand at all.
>>>
>>> But i think its about some subroutine so i am copying necessary parts of
>>> file again:
>>>
>>> subroutine xml_AddAttribute_Ch(xf, name, value, escape, type,
>>> ws_significant)
>>> type(xmlf_t), intent(inout) :: xf
>>> character(len=*), intent(in) :: name
>>> character(len=*), intent(in) :: value
>>> logical, intent(in), optional :: escape
>>> character(len=*), intent(in), optional :: type
>>> logical, intent(in), optional :: ws_significant
>>>
>>> #ifndef DUMMYLIB
>>> logical :: esc
>>> character, pointer :: type_(:)
>>>
>>> if (present(type)) then
>>> if
>>> (type/='CDATA'.and.type/='ID'.and.type/='IDREF'.and.type/='IDREFS'.and.type/='NMTOKEN'.and.type/='NMTOKENS'
>>> &
>>> .and.type/='ENTITY'.and.type/='ENTITIES'.and.type/='NOTATION') then
>>> call wxml_fatal("Invalid type in xml_AddAttribute: "//type)
>>> endif
>>> type_ => vs_str_alloc(type)
>>> else
>>> ! We assume CDATA, but need to worry about whether the caller cares about
>>> whitespace ...
>>> if (present(ws_significant)) then
>>> if (ws_significant) then
>>> type_ => vs_str_alloc('CDATA')
>>> else
>>> type_ => vs_str_alloc('CDANO') ! CDAta, whitespace Not significant
>>> endif
>>> else
>>> type_ => vs_str_alloc('CDAMB') ! CDAta, whitespace MayBe significant
>>> endif
>>> endif
>>>
>>> call check_xf(xf)
>>>
>>> if (.not.checkChars(value, xf%xds%xml_version)) call
>>> wxml_error("xml_AddAttribute: Invalid character in value")
>>>
>>> if (xf%namespace) then
>>> if (.not.checkQName(name, xf%xds%xml_version)) &
>>> call wxml_error("Invalid Attribute Name "//name)
>>> else
>>> if (.not.checkName(name, xf%xds%xml_version)) &
>>> call wxml_error("Invalid Attribute Name "//name)
>>> endif
>>>
>>> if (present(escape)) then
>>> esc = escape
>>> else
>>> esc = .true.
>>> endif
>>>
>>> if (name=="xml:space") then
>>> ! The value can only be "default" or "preserve", by 2.10
>>> if (.not.esc) then
>>> if (value/="default".and.value/="preserve") &
>>> call wxml_fatal("Invalid value for xml:space attrbute")
>>> endif
>>> endif
>>>
>>> ! FIXME when escape is false we should still do full verification
>>> ! where possible.
>>> ! Currently - minimal check: only extra allowed is character entity
>>> references.
>>> ! We check they exist, and are not unparsed.
>>> ! Ideally we would fully expand all entity references (at least for
>>> ! a standalone document where we can) and then
>>> ! match the resultant production against [XML]-3.3.1. This is
>>> ! initially too much work though, so we just check simple
>>> ! syntactic constraint.
>>>
>>> if (.not.esc) then
>>> if (.not.checkAttValue(value, xf%xds%xml_version)) &
>>> call wxml_error(xf, "Invalid attribute value: "//value)
>>> if (index(value, '&') > 0) then
>>> ! There are entity references
>>> ! They should exist (unless we are not standalone) and they must not be
>>> unparsed.
>>> if (.not.checkExistingRefsInAttValue()) then
>>> if (xf%xds%standalone) then
>>> call wxml_error(xf, "outputting unknown entity. Cannot guarantee
>>> validity.")
>>> else
>>> call wxml_warning(xf, "Warning: outputting unknown entity. Cannot
>>> guarantee validity.")
>>> endif
>>> endif
>>> if (.not.checkParsedRefsInAttValue()) &
>>> call wxml_error(xf, "Warning: outputting unknown entity. Cannot guarantee
>>> validity.")
>>> endif
>>> endif
>>>
>>> if (xf%state_2 /= WXML_STATE_2_INSIDE_ELEMENT) &
>>> call wxml_error(xf, "attributes outside element content: "//name)
>>>
>>> if (hasKey(xf%dict,name)) then
>>> call wxml_error(xf, "duplicate att name: "//name)
>>> elseif (xf%namespace) then
>>> if (hasKey(xf%dict, &
>>> getnamespaceURI(xf%nsDict,prefixOfQname(name)), localpartofQname(name)))
>>> then
>>> call wxml_error(xf, "duplicate att after namespace processing: "//name)
>>> endif
>>> endif
>>>
>>> if (xf%namespace) then
>>> if (len(prefixOfQName(name))>0) then
>>> if (prefixOfQName(name)/="xml".and.prefixOfQName(name)/="xmlns") then
>>> if (.not.isPrefixInForce(xf%nsDict, prefixOfQName(name))) &
>>> call wxml_error(xf, "namespace prefix not registered:
>>> "//prefixOfQName(name))
>>> endif
>>> if (esc) then
>>> call add_item_to_dict(xf%dict, localpartofQname(name),
>>> escape_string(value, xf%xds%xml_version), prefixOfQName(name), &
>>> getnamespaceURI(xf%nsDict,prefixOfQname(name)), type=str_vs(type_))
>>> else
>>> call add_item_to_dict(xf%dict, localpartofQname(name), value,
>>> prefixOfQName(name), &
>>> getnamespaceURI(xf%nsDict,prefixOfQName(name)), type=str_vs(type_))
>>> endif
>>> else
>>> if (esc) then
>>> call add_item_to_dict(xf%dict, name, escape_string(value,
>>> xf%xds%xml_version), type=str_vs(type_))
>>> else
>>> call add_item_to_dict(xf%dict, name, value, type=str_vs(type_))
>>> endif
>>> endif
>>> else
>>> if (esc) then
>>> call add_item_to_dict(xf%dict, name, escape_string(value,
>>> xf%xds%xml_version), type=str_vs(type_))
>>> else
>>> call add_item_to_dict(xf%dict, name, value, type=str_vs(type_))
>>> endif
>>> endif
>>>
>>> !FIXME need to deallocate this when we move to better error handling
>>> deallocate(type_)
>>>
>>> contains
>>> function checkExistingRefsInAttValue() result(p)
>>> logical :: p
>>>
>>> integer :: i1, i2
>>>
>>> ! Here we assume we have syntactic well-formedness as
>>> ! checked by checkAttValue.
>>> ! We also assume we do not have simply one entity as
>>> ! the contents - that is checked by checkAttValueEntity
>>>
>>> p = .false.
>>> i1 = index(value, '&')
>>> i2 = 0
>>> do while (i1 > 0)
>>> i1 = i2 + i1
>>> i2 = index(value(i1+1:),';')
>>> if (i2 == 0) return
>>> i2 = i1 + i2
>>> if (.not.existing_entity(xf%xds%entityList, value(i1+1:i2-1)) .and. &
>>> .not.checkCharacterEntityReference(value(i1+1:i2-1), xf%xds%xml_version))
>>> &
>>> return
>>> i1 = index(value(i2+1:), '&')
>>> enddo
>>> p = .true.
>>>
>>> end function checkExistingRefsInAttValue
>>>
>>> function checkParsedRefsInAttValue() result(p)
>>> logical :: p
>>>
>>> integer :: i1, i2
>>>
>>> ! Here we assume we have syntactic well-formedness as
>>> ! checked by checkAttValue.
>>>
>>> p = .false.
>>> i1 = index(value, '&')
>>> i2 = 0
>>> do while (i1 > 0)
>>> i1 = i1 + i2
>>> i2 = index(value(i1+1:),';')
>>> if (i2 == 0) return
>>> i2 = i1 + i2
>>> if (is_unparsed_entity(xf%xds%entityList, value(i1+1:i2-1))) &
>>> return
>>> i1 = index(value(i2+1:), '&')
>>> enddo
>>> p = .true.
>>>
>>> end function checkParsedRefsInAttValue
>>> #endif
>>> end subroutine xml_AddAttribute_Ch
>>>
>>>
>>>
>>>
>>> Any idea people?
>>>
>>>
>>> 2009/11/28 Ozan ARI <[email protected] <mailto:[email protected]>>
>>>
>>>    Thanx for your reply,
>>>
>>>    I changed the siesta_forces.F file and it fixed compiling problem
>>>    but now i get some wierd error while i try to run any test or my
>>>    calculations.
>>>
>>>
>>>                                   mpirun -n 8 siesta <input.fdf > out.fdf
>>>    ERROR(FoX)
>>>    xml_AddAttribute: Invalid character in value
>>>
>>>
>>>
>>>    when i check the out file it seems the PAO.basis block is well done
>>>    but the next lines are
>>>
>>>
>>>    prinput:
>>>    ----------------------------------------------------------------------
>>>
>>>    coor:   Atomic-coordinates input format  =     Cartesian coordinates
>>>    coor:                                          (in Angstroms)
>>>
>>>    siesta: Atomic coordinates (Bohr) and species
>>>    siesta:      1.30391   2.25844   0.00000  1        1
>>>    siesta:      2.60782   0.00000   0.00000  1        2
>>>    siesta:      1.30391  -2.25844   0.00000  1        3
>>>    siesta:     -1.30391  -2.25844   0.00000  1        4
>>>    siesta:     -2.60782   0.00000   0.00000  1        5
>>>    siesta:     -1.30391   2.25844   0.00000  1        6
>>>    siesta:      2.30547   3.99319   0.00000  2        7
>>>    siesta:      4.61093   0.00000   0.00000  2        8
>>>    siesta:      2.30547  -3.99319   0.00000  2        9
>>>    siesta:     -2.30547  -3.99319   0.00000  2       10
>>>    siesta:     -4.61093   0.00000   0.00000  2       11
>>>    siesta:     -2.30547   3.99319   0.00000  2       12
>>>
>>>    siesta: System type = molecule    rank 0 in job 19  tuz_42241   caused
>>> collective abort of all ranks
>>>      exit status of rank 0: killed by signal 9
>>>
>>>
>>>    Thanks for help again. I could not understand the error here, may be
>>>    system type?
>>>
>>>
>>>
>>
>

Responder a