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? >>> >>> >>> >> >
